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

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/worker/provisioner/provisioner_task.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:
24
24
        "github.com/juju/juju/environs/simplestreams"
25
25
        "github.com/juju/juju/instance"
26
26
        "github.com/juju/juju/network"
 
27
        "github.com/juju/juju/status"
27
28
        "github.com/juju/juju/storage"
28
29
        coretools "github.com/juju/juju/tools"
29
 
        "github.com/juju/juju/version"
 
30
        jujuversion "github.com/juju/juju/version"
30
31
        "github.com/juju/juju/watcher"
31
32
        "github.com/juju/juju/worker"
32
33
        "github.com/juju/juju/worker/catacomb"
 
34
        "github.com/juju/version"
33
35
)
34
36
 
35
37
type ProvisionerTask interface {
196
198
        }
197
199
        logger.Tracef("processMachinesWithTransientErrors(%v)", statusResults)
198
200
        var pending []*apiprovisioner.Machine
199
 
        for i, status := range statusResults {
200
 
                if status.Error != nil {
201
 
                        logger.Errorf("cannot retry provisioning of machine %q: %v", status.Id, status.Error)
 
201
        for i, statusResult := range statusResults {
 
202
                if statusResult.Error != nil {
 
203
                        logger.Errorf("cannot retry provisioning of machine %q: %v", statusResult.Id, statusResult.Error)
202
204
                        continue
203
205
                }
204
206
                machine := machines[i]
205
 
                if err := machine.SetStatus(params.StatusPending, "", nil); err != nil {
206
 
                        logger.Errorf("cannot reset status of machine %q: %v", status.Id, err)
 
207
                if err := machine.SetStatus(status.StatusPending, "", nil); err != nil {
 
208
                        logger.Errorf("cannot reset status of machine %q: %v", statusResult.Id, err)
207
209
                        continue
208
210
                }
209
211
                task.machines[machine.Tag().String()] = machine
355
357
        Life() params.Life
356
358
        InstanceId() (instance.Id, error)
357
359
        EnsureDead() error
358
 
        Status() (params.Status, string, error)
 
360
        Status() (status.Status, string, error)
359
361
        Id() string
360
362
}
361
363
 
389
391
                if !params.IsCodeNotProvisioned(err) {
390
392
                        return None, errors.Annotatef(err, "failed to load machine id:%s, details:%v", machine.Id(), machine)
391
393
                }
392
 
                status, _, err := machine.Status()
 
394
                machineStatus, _, err := machine.Status()
393
395
                if err != nil {
394
396
                        logger.Infof("cannot get machine id:%s, details:%v, err:%v", machine.Id(), machine, err)
395
397
                        return None, nil
396
398
                }
397
 
                if status == params.StatusPending {
 
399
                if machineStatus == status.StatusPending {
398
400
                        logger.Infof("found machine pending provisioning id:%s, details:%v", machine.Id(), machine)
399
401
                        return Pending, nil
400
402
                }
597
599
                SubnetsToZones:    subnetsToZones,
598
600
                EndpointBindings:  endpointBindings,
599
601
                ImageMetadata:     possibleImageMetadata,
 
602
                StatusCallback:    machine.SetInstanceStatus,
600
603
        }, nil
601
604
}
602
605
 
634
637
                }
635
638
 
636
639
                possibleTools, err := task.toolsFinder.FindTools(
637
 
                        version.Current,
 
640
                        jujuversion.Current,
638
641
                        pInfo.Series,
639
642
                        arch,
640
643
                )
661
664
 
662
665
func (task *provisionerTask) setErrorStatus(message string, machine *apiprovisioner.Machine, err error) error {
663
666
        logger.Errorf(message, machine, err)
664
 
        if err1 := machine.SetStatus(params.StatusError, err.Error(), nil); err1 != nil {
 
667
        if err1 := machine.SetStatus(status.StatusError, err.Error(), nil); err1 != nil {
665
668
                // Something is wrong with this machine, better report it back.
666
669
                return errors.Annotatef(err1, "cannot set error status for machine %q", machine)
667
670
        }