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