github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/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  	"github.com/juju/names"
     9  
    10  	"github.com/juju/juju/api/base"
    11  	"github.com/juju/juju/api/common"
    12  	"github.com/juju/juju/api/watcher"
    13  	"github.com/juju/juju/apiserver/params"
    14  )
    15  
    16  const instancePollerFacade = "InstancePoller"
    17  
    18  // API provides access to the InstancePoller API facade.
    19  type API struct {
    20  	*common.EnvironWatcher
    21  
    22  	facade base.FacadeCaller
    23  }
    24  
    25  // NewAPI creates a new client-side InstancePoller facade.
    26  func NewAPI(caller base.APICaller) *API {
    27  	if caller == nil {
    28  		panic("caller is nil")
    29  	}
    30  	facadeCaller := base.NewFacadeCaller(caller, instancePollerFacade)
    31  	return &API{
    32  		EnvironWatcher: common.NewEnvironWatcher(facadeCaller),
    33  		facade:         facadeCaller,
    34  	}
    35  }
    36  
    37  // Machine provides access to methods of a state.Machine through the
    38  // facade.
    39  func (api *API) Machine(tag names.MachineTag) (*Machine, error) {
    40  	life, err := common.Life(api.facade, tag)
    41  	if err != nil {
    42  		return nil, errors.Trace(err)
    43  	}
    44  	return &Machine{api.facade, tag, life}, nil
    45  }
    46  
    47  var newStringsWatcher = watcher.NewStringsWatcher
    48  
    49  // WatchEnvironMachines return a StringsWatcher reporting waiting for the
    50  // environment configuration to change.
    51  func (api *API) WatchEnvironMachines() (watcher.StringsWatcher, error) {
    52  	var result params.StringsWatchResult
    53  	err := api.facade.FacadeCall("WatchEnvironMachines", nil, &result)
    54  	if err != nil {
    55  		return nil, err
    56  	}
    57  	if result.Error != nil {
    58  		return nil, result.Error
    59  	}
    60  	return newStringsWatcher(api.facade.RawAPICaller(), result), nil
    61  }