// getAllUnits returns a list of all principal and subordinate units // assigned to the given machine. func getAllUnits(st *state.State, machineTag string) ([]string, error) { machine, err := st.Machine(state.MachineIdFromTag(machineTag)) if err != nil { return nil, err } // Start a watcher on machine's units, read the initial event and stop it. watch := machine.WatchUnits() defer watch.Stop() if units, ok := <-watch.Changes(); ok { return units, nil } return nil, fmt.Errorf("cannot obtain units of machine %q: %v", machineTag, watch.Err()) }
func (a *MachineAgent) Entity(st *state.State) (AgentState, error) { m, err := st.Machine(a.MachineId) if err != nil { return nil, err } // Check the machine nonce as provisioned matches the agent.Conf value. if !m.CheckProvisioned(a.Conf.MachineNonce) { // The agent is running on a different machine to the one it // should be according to state. It must stop immediately. log.Errorf("running machine %v agent on inappropriate instance", m) return nil, worker.ErrTerminateAgent } return m, nil }
func (a *MachineAgent) Entity(st *state.State) (AgentState, error) { return st.Machine(a.MachineId) }