~juju-qa/ubuntu/xenial/juju/xenial-2.0-beta3

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/apiserver/instancepoller/instancepoller.go

  • Committer: Martin Packman
  • Date: 2016-03-30 19:31:08 UTC
  • mfrom: (1.1.41)
  • Revision ID: martin.packman@canonical.com-20160330193108-h9iz3ak334uk0z5r
Merge new upstream source 2.0~beta3

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
import (
7
7
        "fmt"
8
8
 
9
 
        "github.com/juju/loggo"
10
9
        "github.com/juju/names"
11
10
 
12
11
        "github.com/juju/juju/apiserver/common"
13
12
        "github.com/juju/juju/apiserver/params"
14
13
        "github.com/juju/juju/state"
 
14
        "github.com/juju/juju/status"
15
15
)
16
16
 
17
17
func init() {
18
18
        common.RegisterStandardFacade("InstancePoller", 2, NewInstancePollerAPI)
19
19
}
20
20
 
21
 
var logger = loggo.GetLogger("juju.apiserver.instancepoller")
22
 
 
23
21
// InstancePollerAPI provides access to the InstancePoller API facade.
24
22
type InstancePollerAPI struct {
25
23
        *common.LifeGetter
156
154
 
157
155
// InstanceStatus returns the instance status for each given entity.
158
156
// Only machine tags are accepted.
159
 
func (a *InstancePollerAPI) InstanceStatus(args params.Entities) (params.StringResults, error) {
160
 
        result := params.StringResults{
161
 
                Results: make([]params.StringResult, len(args.Entities)),
 
157
func (a *InstancePollerAPI) InstanceStatus(args params.Entities) (params.StatusResults, error) {
 
158
        result := params.StatusResults{
 
159
                Results: make([]params.StatusResult, len(args.Entities)),
162
160
        }
163
161
        canAccess, err := a.accessMachine()
164
162
        if err != nil {
167
165
        for i, arg := range args.Entities {
168
166
                machine, err := a.getOneMachine(arg.Tag, canAccess)
169
167
                if err == nil {
170
 
                        result.Results[i].Result, err = machine.InstanceStatus()
 
168
                        var statusInfo status.StatusInfo
 
169
                        statusInfo, err = machine.InstanceStatus()
 
170
                        result.Results[i].Status = statusInfo.Status
 
171
                        result.Results[i].Info = statusInfo.Message
 
172
                        result.Results[i].Data = statusInfo.Data
 
173
                        result.Results[i].Since = statusInfo.Since
171
174
                }
172
175
                result.Results[i].Error = common.ServerError(err)
173
176
        }
176
179
 
177
180
// SetInstanceStatus updates the instance status for each given
178
181
// entity. Only machine tags are accepted.
179
 
func (a *InstancePollerAPI) SetInstanceStatus(args params.SetInstancesStatus) (params.ErrorResults, error) {
 
182
func (a *InstancePollerAPI) SetInstanceStatus(args params.SetStatus) (params.ErrorResults, error) {
180
183
        result := params.ErrorResults{
181
184
                Results: make([]params.ErrorResult, len(args.Entities)),
182
185
        }
187
190
        for i, arg := range args.Entities {
188
191
                machine, err := a.getOneMachine(arg.Tag, canAccess)
189
192
                if err == nil {
190
 
                        err = machine.SetInstanceStatus(arg.Status)
 
193
                        err = machine.SetInstanceStatus(arg.Status, arg.Info, arg.Data)
191
194
                }
192
195
                result.Results[i].Error = common.ServerError(err)
193
196
        }