1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import os
23 import sys
24
25 import gettext
26 import gtk.glade
27
28 from twisted.internet import reactor, defer
29 from flumotion.admin import connections
30 from flumotion.admin.admin import AdminModel
31 from flumotion.admin.gtk import dialogs
32 from flumotion.admin.gtk.client import Window
33 from flumotion.common import log, errors, connection
34 from flumotion.configure import configure
35 from flumotion.twisted import pb as fpb
36 from flumotion.common.options import OptionParser
37
38
44
59
60 def refused(failure):
61 failure.trap(errors.ConnectionRefusedError)
62 dret = dialogs.connection_refused_message(greeter.state['host'],
63 greeter.window)
64 dret.addCallback(lambda _: startAdminFromGreeter(greeter))
65 return dret
66
67 def failed(failure):
68 failure.trap(errors.ConnectionFailedError)
69 message = "".join(failure.value.args)
70 dret = dialogs.connection_failed_message(_info[0], message,
71 greeter.window)
72 dret.addCallback(lambda _: startAdminFromGreeter(greeter))
73 return dret
74
75 def connected(model):
76 greeter.destroy()
77 return model
78
79 d = greeter.run_async()
80 d.addCallback(got_state)
81 d.addCallback(connected)
82 d.addErrback(refused)
83 d.addErrback(failed)
84 return d
85
90
92 parser = OptionParser(domain="flumotion-admin")
93 parser.add_option('-m', '--manager',
94 action="store", type="string", dest="manager",
95 help="the manager to connect to, e.g. localhost:7531")
96 parser.add_option('', '--no-ssl',
97 action="store_true", dest="no_ssl",
98 help="disable encryption when connecting to the manager")
99
100 options, args = parser.parse_args(args)
101
102
103 localedir = os.path.join(configure.localedatadir, 'locale')
104 log.debug("locale", "Loading locales from %s" % localedir)
105 gettext.bindtextdomain('flumotion', localedir)
106 gettext.textdomain('flumotion')
107 gtk.glade.bindtextdomain('flumotion', localedir)
108 gtk.glade.textdomain('flumotion')
109
110 if len(args) > 1:
111 log.error('flumotion-admin',
112 'too many arguments: %r' % (args[1:],))
113
114 if options.manager:
115 d = startAdminFromManagerString(options.manager,
116 not options.no_ssl)
117 else:
118 d = startAdminFromGreeter(Greeter())
119
120 from flumotion.ui.icons import register_icons
121 register_icons()
122
123 win = Window()
124
125 def adminStarted(admin):
126 win.setAdminModel(admin)
127 win.show()
128
129 def failure(failure):
130 message = "".join(failure.value.args)
131 log.warning('admin', "Failed to connect: %s",
132 log.getFailureMessage(failure))
133 sys.stderr.write("Connection to manager failed: %s\n" % message)
134 reactor.stop()
135
136 d.addCallbacks(adminStarted, failure)
137
138 reactor.run()
139