launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/state/api/common/life.go (about) 1 // Copyright 2012, 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package common 5 6 import ( 7 "launchpad.net/errgo/errors" 8 "launchpad.net/juju-core/state/api/base" 9 "launchpad.net/juju-core/state/api/params" 10 ) 11 12 // Life requests the life cycle of the given entity from the given 13 // server-side API facade via the given caller. 14 func Life(caller base.Caller, facadeName, tag string) (params.Life, error) { 15 var result params.LifeResults 16 args := params.Entities{ 17 Entities: []params.Entity{{Tag: tag}}, 18 } 19 err := caller.Call(facadeName, "", "Life", args, &result) 20 if err != nil { 21 return "", base.WrapError(err) 22 } 23 if len(result.Results) != 1 { 24 return "", errors.Newf("expected one result, got %d", len(result.Results)) 25 } 26 if err := result.Results[0].Error; err != nil { 27 return "", base.WrapError(err) 28 } 29 return result.Results[0].Life, nil 30 }