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  }