12
12
"github.com/juju/juju/apiserver/params"
13
13
"github.com/juju/juju/instance"
14
14
"github.com/juju/juju/network"
15
"github.com/juju/juju/status"
17
18
// Machine represents a juju machine as seen by an instancepoller
119
120
// InstanceStatus returns the machine's instance status.
120
func (m *Machine) InstanceStatus() (string, error) {
121
var results params.StringResults
121
func (m *Machine) InstanceStatus() (params.StatusResult, error) {
122
var results params.StatusResults
122
123
args := params.Entities{Entities: []params.Entity{
123
124
{Tag: m.tag.String()},
125
126
err := m.facade.FacadeCall("InstanceStatus", args, &results)
127
return "", errors.Trace(err)
128
return params.StatusResult{}, errors.Trace(err)
129
130
if len(results.Results) != 1 {
130
131
err := errors.Errorf("expected 1 result, got %d", len(results.Results))
132
return params.StatusResult{}, err
133
134
result := results.Results[0]
134
135
if result.Error != nil {
135
return "", result.Error
136
return params.StatusResult{}, result.Error
137
return result.Result, nil
140
141
// SetInstanceStatus sets the instance status of the machine.
141
func (m *Machine) SetInstanceStatus(status string) error {
142
func (m *Machine) SetInstanceStatus(status status.Status, message string, data map[string]interface{}) error {
142
143
var result params.ErrorResults
143
args := params.SetInstancesStatus{Entities: []params.InstanceStatus{
144
{Tag: m.tag.String(), Status: status},
144
args := params.SetStatus{Entities: []params.EntityStatusArgs{
145
{Tag: m.tag.String(), Status: status, Info: message, Data: data},
146
147
err := m.facade.FacadeCall("SetInstanceStatus", args, &result)