github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/apiserver/instancepoller/state.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/juju/instance"
     8  	"github.com/juju/juju/network"
     9  	"github.com/juju/juju/state"
    10  	"github.com/juju/juju/status"
    11  )
    12  
    13  type StateMachine interface {
    14  	state.Entity
    15  
    16  	Id() string
    17  	InstanceId() (instance.Id, error)
    18  	ProviderAddresses() []network.Address
    19  	SetProviderAddresses(...network.Address) error
    20  	InstanceStatus() (status.StatusInfo, error)
    21  	SetInstanceStatus(status.Status, string, map[string]interface{}) error
    22  	String() string
    23  	Refresh() error
    24  	Life() state.Life
    25  	Status() (status.StatusInfo, error)
    26  	IsManual() (bool, error)
    27  }
    28  
    29  type StateInterface interface {
    30  	state.ModelAccessor
    31  	state.ModelMachinesWatcher
    32  	state.EntityFinder
    33  
    34  	Machine(id string) (StateMachine, error)
    35  }
    36  
    37  type stateShim struct {
    38  	*state.State
    39  }
    40  
    41  func (s stateShim) Machine(id string) (StateMachine, error) {
    42  	return s.State.Machine(id)
    43  }
    44  
    45  var getState = func(st *state.State) StateInterface {
    46  	return stateShim{st}
    47  }