github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/api/instancepoller/instancepoller.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package instancepoller
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	"gopkg.in/juju/names.v2"
     9  
    10  	"github.com/juju/juju/api/base"
    11  	"github.com/juju/juju/api/common"
    12  	apiwatcher "github.com/juju/juju/api/watcher"
    13  	"github.com/juju/juju/apiserver/params"
    14  	"github.com/juju/juju/watcher"
    15  )
    16  
    17  const instancePollerFacade = "InstancePoller"
    18  
    19  // API provides access to the InstancePoller API facade.
    20  type API struct {
    21  	*common.ModelWatcher
    22  
    23  	facade base.FacadeCaller
    24  }
    25  
    26  // NewAPI creates a new client-side InstancePoller facade.
    27  func NewAPI(caller base.APICaller) *API {
    28  	if caller == nil {
    29  		panic("caller is nil")
    30  	}
    31  	facadeCaller := base.NewFacadeCaller(caller, instancePollerFacade)
    32  	return &API{
    33  		ModelWatcher: common.NewModelWatcher(facadeCaller),
    34  		facade:       facadeCaller,
    35  	}
    36  }
    37  
    38  // Machine provides access to methods of a state.Machine through the
    39  // facade.
    40  func (api *API) Machine(tag names.MachineTag) (*Machine, error) {
    41  	life, err := common.Life(api.facade, tag)
    42  	if err != nil {
    43  		return nil, errors.Trace(err)
    44  	}
    45  	return &Machine{api.facade, tag, life}, nil
    46  }
    47  
    48  var newStringsWatcher = apiwatcher.NewStringsWatcher
    49  
    50  // WatchModelMachines return a StringsWatcher reporting waiting for the
    51  // model configuration to change.
    52  func (api *API) WatchModelMachines() (watcher.StringsWatcher, error) {
    53  	var result params.StringsWatchResult
    54  	err := api.facade.FacadeCall("WatchModelMachines", nil, &result)
    55  	if err != nil {
    56  		return nil, err
    57  	}
    58  	if result.Error != nil {
    59  		return nil, result.Error
    60  	}
    61  	return newStringsWatcher(api.facade.RawAPICaller(), result), nil
    62  }