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  }