~themue/juju-core/053-env-more-script-friendly

« back to all changes in this revision

Viewing changes to worker/machiner/machiner.go

Merge trunk and resolve conflicts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 
3
3
import (
4
4
        "fmt"
 
5
        "launchpad.net/juju-core/log"
5
6
        "launchpad.net/juju-core/state"
 
7
        "launchpad.net/juju-core/state/api/params"
6
8
        "launchpad.net/juju-core/state/watcher"
7
9
        "launchpad.net/juju-core/worker"
8
10
        "launchpad.net/tomb"
41
43
}
42
44
 
43
45
func (mr *Machiner) loop() error {
 
46
        // Find which machine we're responsible for.
44
47
        m, err := mr.st.Machine(mr.id)
45
48
        if state.IsNotFound(err) {
46
49
                return worker.ErrTerminateAgent
47
50
        } else if err != nil {
48
51
                return err
49
52
        }
 
53
 
 
54
        // Announce our presence to the world.
 
55
        pinger, err := m.SetAgentAlive()
 
56
        if err != nil {
 
57
                return err
 
58
        }
 
59
        defer watcher.Stop(pinger, &mr.tomb)
 
60
        log.Debugf("worker/machiner: agent for machine %q is now alive", m)
 
61
 
 
62
        // Mark the machine as started and log it.
 
63
        if err := m.SetStatus(params.StatusStarted, ""); err != nil {
 
64
                return err
 
65
        }
 
66
        log.Noticef("worker/machiner: machine %q started", m)
 
67
 
50
68
        w := m.Watch()
51
69
        defer watcher.Stop(w, &mr.tomb)
52
70
        for {
60
78
                                return err
61
79
                        }
62
80
                        if m.Life() != state.Alive {
 
81
                                log.Debugf("worker/machiner: machine %q is now %s", m, m.Life())
 
82
                                if err := m.SetStatus(params.StatusStopped, ""); err != nil {
 
83
                                        return err
 
84
                                }
63
85
                                // If the machine is Dying, it has no units,
64
86
                                // and can be safely set to Dead.
65
87
                                if err := m.EnsureDead(); err != nil {
66
88
                                        return err
67
89
                                }
 
90
                                log.Noticef("worker/machiner: machine %q shutting down", m)
68
91
                                return worker.ErrTerminateAgent
69
92
                        }
70
93
                }