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 }