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 }