OLD | NEW |
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" | |
8 "launchpad.net/juju-core/state" | 7 "launchpad.net/juju-core/state" |
9 "regexp" | 8 "regexp" |
10 "strings" | 9 "strings" |
11 ) | 10 ) |
12 | 11 |
13 // requiredError is useful when complaining about missing command-line options. | 12 // requiredError is useful when complaining about missing command-line options. |
14 func requiredError(name string) error { | 13 func requiredError(name string) error { |
15 return fmt.Errorf("--%s option must be set", name) | 14 return fmt.Errorf("--%s option must be set", name) |
16 } | 15 } |
17 | 16 |
(...skipping 24 matching lines...) Expand all Loading... |
42 } | 41 } |
43 | 42 |
44 // stateInfoVar sets up a gnuflag flag analagously to FlagSet.*Var methods. | 43 // stateInfoVar sets up a gnuflag flag analagously to FlagSet.*Var methods. |
45 func stateInfoVar(fs *gnuflag.FlagSet, target *state.Info, name string, value []
string, usage string) { | 44 func stateInfoVar(fs *gnuflag.FlagSet, target *state.Info, name string, value []
string, usage string) { |
46 target.Addrs = value | 45 target.Addrs = value |
47 fs.Var((*stateInfoValue)(target), name, usage) | 46 fs.Var((*stateInfoValue)(target), name, usage) |
48 } | 47 } |
49 | 48 |
50 // AgentConf handles command-line flags shared by all agents. | 49 // AgentConf handles command-line flags shared by all agents. |
51 type AgentConf struct { | 50 type AgentConf struct { |
52 » JujuDir string | 51 » DataDir string |
53 StateInfo state.Info | 52 StateInfo state.Info |
54 } | 53 } |
55 | 54 |
56 // addFlags injects common agent flags into f. | 55 // addFlags injects common agent flags into f. |
57 func (c *AgentConf) addFlags(f *gnuflag.FlagSet) { | 56 func (c *AgentConf) addFlags(f *gnuflag.FlagSet) { |
58 » f.StringVar(&c.JujuDir, "juju-directory", environs.VarDir, "juju working
directory") | 57 » f.StringVar(&c.DataDir, "data-dir", "/var/lib/juju", "directory for juju
data") |
59 stateInfoVar(f, &c.StateInfo, "zookeeper-servers", nil, "zookeeper serve
rs to connect to") | 58 stateInfoVar(f, &c.StateInfo, "zookeeper-servers", nil, "zookeeper serve
rs to connect to") |
60 } | 59 } |
61 | 60 |
62 // checkArgs checks that required flags have been set and that args is empty. | 61 // checkArgs checks that required flags have been set and that args is empty. |
63 func (c *AgentConf) checkArgs(args []string) error { | 62 func (c *AgentConf) checkArgs(args []string) error { |
64 » if c.JujuDir == "" { | 63 » if c.DataDir == "" { |
65 » » return requiredError("juju-directory") | 64 » » return requiredError("data-dir") |
66 } | 65 } |
67 if c.StateInfo.Addrs == nil { | 66 if c.StateInfo.Addrs == nil { |
68 return requiredError("zookeeper-servers") | 67 return requiredError("zookeeper-servers") |
69 } | 68 } |
70 return cmd.CheckEmpty(args) | 69 return cmd.CheckEmpty(args) |
71 } | 70 } |
72 | 71 |
73 type task interface { | 72 type task interface { |
74 Stop() error | 73 Stop() error |
75 Wait() error | 74 Wait() error |
(...skipping 21 matching lines...) Expand all Loading... |
97 break waiting | 96 break waiting |
98 } | 97 } |
99 } | 98 } |
100 for _, t := range tasks { | 99 for _, t := range tasks { |
101 if terr := t.Stop(); terr != nil && err == nil { | 100 if terr := t.Stop(); terr != nil && err == nil { |
102 err = terr | 101 err = terr |
103 } | 102 } |
104 } | 103 } |
105 return | 104 return |
106 } | 105 } |
OLD | NEW |