github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/api/caasagent/client.go (about) 1 // Copyright 2018 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package caasagent 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/api/base" 10 "github.com/juju/juju/api/common" 11 "github.com/juju/juju/api/common/cloudspec" 12 ) 13 14 // Client provides access to an agent's view of state. 15 type Client struct { 16 facade base.FacadeCaller 17 *cloudspec.CloudSpecAPI 18 *common.ModelWatcher 19 } 20 21 // NewClient returns a version of an api client that provides functionality 22 // required by caas agent code. 23 func NewClient(caller base.APICaller) (*Client, error) { 24 modelTag, isModel := caller.ModelTag() 25 if !isModel { 26 return nil, errors.New("expected model specific API connection") 27 } 28 facadeCaller := base.NewFacadeCaller(caller, "CAASAgent") 29 return &Client{ 30 facade: facadeCaller, 31 CloudSpecAPI: cloudspec.NewCloudSpecAPI(facadeCaller, modelTag), 32 ModelWatcher: common.NewModelWatcher(facadeCaller), 33 }, nil 34 }