LEFT | RIGHT |
1 package main | 1 package main |
2 | 2 |
3 import ( | 3 import ( |
4 "fmt" | 4 "fmt" |
5 "launchpad.net/gnuflag" | 5 "launchpad.net/gnuflag" |
6 "launchpad.net/juju-core/cmd" | 6 "launchpad.net/juju-core/cmd" |
7 "launchpad.net/juju-core/environs" | 7 "launchpad.net/juju-core/environs" |
8 "launchpad.net/juju-core/log" | 8 "launchpad.net/juju-core/log" |
9 "launchpad.net/juju-core/state" | 9 "launchpad.net/juju-core/state" |
10 "launchpad.net/juju-core/worker/machiner" | 10 "launchpad.net/juju-core/worker/machiner" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 return a.tomb.Wait() | 43 return a.tomb.Wait() |
44 } | 44 } |
45 | 45 |
46 // Run runs a machine agent. | 46 // Run runs a machine agent. |
47 func (a *MachineAgent) Run(_ *cmd.Context) error { | 47 func (a *MachineAgent) Run(_ *cmd.Context) error { |
48 defer a.tomb.Done() | 48 defer a.tomb.Done() |
49 for a.tomb.Err() == tomb.ErrStillAlive { | 49 for a.tomb.Err() == tomb.ErrStillAlive { |
50 log.Printf("machine agent starting") | 50 log.Printf("machine agent starting") |
51 err := a.runOnce() | 51 err := a.runOnce() |
52 if ug, ok := err.(*UpgradedError); ok { | 52 if ug, ok := err.(*UpgradedError); ok { |
53 » » » tools, err1 := environs.ChangeAgentTools(a.Conf.VarDir,
"machine", ug.Binary) | 53 » » » tools, err1 := environs.ChangeAgentTools(a.Conf.DataDir,
"machine", ug.Binary) |
54 if err1 == nil { | 54 if err1 == nil { |
55 log.Printf("exiting to upgrade to %v from %q", t
ools.Binary, tools.URL) | 55 log.Printf("exiting to upgrade to %v from %q", t
ools.Binary, tools.URL) |
56 // Return and let upstart deal with the restart. | 56 // Return and let upstart deal with the restart. |
57 return nil | 57 return nil |
58 } | 58 } |
59 err = err1 | 59 err = err1 |
60 } | 60 } |
61 select { | 61 select { |
62 case <-a.tomb.Dying(): | 62 case <-a.tomb.Dying(): |
63 a.tomb.Kill(err) | 63 a.tomb.Kill(err) |
64 case <-time.After(retryDelay): | 64 case <-time.After(retryDelay): |
65 log.Printf("restarting machiner after error: %v", err) | 65 log.Printf("restarting machiner after error: %v", err) |
66 } | 66 } |
67 } | 67 } |
68 return a.tomb.Err() | 68 return a.tomb.Err() |
69 } | 69 } |
70 | 70 |
71 func (a *MachineAgent) runOnce() error { | 71 func (a *MachineAgent) runOnce() error { |
72 st, err := state.Open(&a.Conf.StateInfo) | 72 st, err := state.Open(&a.Conf.StateInfo) |
73 if err != nil { | 73 if err != nil { |
74 return err | 74 return err |
75 } | 75 } |
76 defer st.Close() | 76 defer st.Close() |
77 m, err := st.Machine(a.MachineId) | 77 m, err := st.Machine(a.MachineId) |
78 if err != nil { | 78 if err != nil { |
79 return err | 79 return err |
80 } | 80 } |
81 return runTasks(a.tomb.Dying(), | 81 return runTasks(a.tomb.Dying(), |
82 » » machiner.NewMachiner(m, &a.Conf.StateInfo, a.Conf.VarDir), | 82 » » machiner.NewMachiner(m, &a.Conf.StateInfo, a.Conf.DataDir), |
83 » » NewUpgrader(st, m, a.Conf.VarDir), | 83 » » NewUpgrader(st, m, a.Conf.DataDir), |
84 ) | 84 ) |
85 } | 85 } |
LEFT | RIGHT |