1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 """
19 main for flumotion-command
20 """
21
22 import sys
23
24 from twisted.internet import reactor, defer
25
26 from flumotion.common import errors, log
27 from flumotion.admin import connections, admin
28
29 from flumotion.monitor.nagios import util
30
31 from flumotion.admin.command import component, manager, worker, common
32
33 from flumotion.common.common import version
34
35 __version__ = "$Rev: 6562 $"
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
54 usage = "%prog %command"
55 description = "Run commands on Flumotion manager."
56
57 loginDeferred = None
58 medium = None
59
60 subCommandClasses = [component.Component, manager.Manager, worker.Worker]
61
63 self.parser.add_option('-v', '--version',
64 action="store_true", dest="version",
65 help="show version information")
66 default = "user:test@localhost:7531"
67 self.parser.add_option('-m', '--manager',
68 action="store", type="string", dest="manager",
69 help="the manager connection string, " \
70 "in the form [username[:password]@]host:port " \
71 "(defaults to %s)" % default,
72 default=default)
73 self.parser.add_option('-T', '--transport',
74 action="store", type="string", dest="transport",
75 help="transport protocol to use (tcp/ssl) [default ssl]",
76 default="ssl")
77
83
85
86 self.loginDeferred = defer.Deferred()
87
88 self.debug('parse: chain up')
89
90
91 ret = util.LogCommand.parse(self, argv)
92
93 if ret is None:
94 self.debug('parse returned None, help/usage printed')
95 return ret
96
97 if ret:
98 self.debug('parse returned %r' % ret)
99 return ret
100
101 if self.parser.help_printed or self.parser.usage_printed:
102 return 0
103
104
105 self.debug('parse: connect')
106 self.connect(self.options)
107
108
109
110 def cb(result):
111 self.debug('parse: cb: done')
112 reactor.callLater(0, reactor.stop)
113
114 def eb(failure):
115 self.debug('parse: eb: failure %s' %
116 log.getFailureMessage(failure))
117 if failure.check(common.Exited):
118 sys.stderr.write(failure.value.msg + '\n')
119 reactor.exitStatus = failure.value.code
120 else:
121 sys.stderr.write(log.getFailureMessage(failure) + '\n')
122 reactor.exitStatus = 1
123
124 reactor.callLater(0, reactor.stop)
125 return
126
127 self.loginDeferred.addCallback(cb)
128 self.loginDeferred.addErrback(eb)
129
130
131 self.debug('parse: run the reactor')
132 self.run()
133 self.debug('parse: ran the reactor')
134
135 return reactor.exitStatus
136
138 """
139 Run the reactor.
140
141 Resets .exitStatus, and returns its value after running the reactor.
142 """
143
144
145 self.debug('running reactor')
146
147 reactor.exitStatus = 0
148 reactor.run()
149 self.debug('ran reactor')
150
151 return reactor.exitStatus
152
177
181
188
189
191 c = Command()
192 try:
193 ret = c.parse(args[1:])
194 except common.Exited, e:
195 ret = e.code
196 if ret == 0:
197 sys.stdout.write(e.msg + '\n')
198 else:
199 sys.stderr.write(e.msg + '\n')
200
201 return ret
202