github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/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  	SetStatus(status.StatusInfo) error
    24  	String() string
    25  	Refresh() error
    26  	Life() state.Life
    27  	Status() (status.StatusInfo, error)
    28  	IsManual() (bool, error)
    29  }
    30  
    31  type StateInterface interface {
    32  	state.ModelAccessor
    33  	state.ModelMachinesWatcher
    34  	state.EntityFinder
    35  
    36  	Machine(id string) (StateMachine, error)
    37  }
    38  
    39  type stateShim struct {
    40  	*state.State
    41  }
    42  
    43  func (s stateShim) Machine(id string) (StateMachine, error) {
    44  	return s.State.Machine(id)
    45  }
    46  
    47  var getState = func(st *state.State) StateInterface {
    48  	return stateShim{st}
    49  }