163 |
163 |
164 def run_arg(self, appid): |
164 def run_arg(self, appid): |
165 cmdmeth = getattr(self, '%s_instance' % self.name) |
165 cmdmeth = getattr(self, '%s_instance' % self.name) |
166 try: |
166 try: |
167 status = cmdmeth(appid) |
167 status = cmdmeth(appid) |
168 except (ExecutionError, ConfigurationError), ex: |
168 except (ExecutionError, ConfigurationError) as ex: |
169 sys.stderr.write('instance %s not %s: %s\n' % ( |
169 sys.stderr.write('instance %s not %s: %s\n' % ( |
170 appid, self.actionverb, ex)) |
170 appid, self.actionverb, ex)) |
171 status = 4 |
171 status = 4 |
172 except Exception, ex: |
172 except Exception as ex: |
173 import traceback |
173 import traceback |
174 traceback.print_exc() |
174 traceback.print_exc() |
175 sys.stderr.write('instance %s not %s: %s\n' % ( |
175 sys.stderr.write('instance %s not %s: %s\n' % ( |
176 appid, self.actionverb, ex)) |
176 appid, self.actionverb, ex)) |
177 status = 8 |
177 status = 8 |
232 print |
232 print |
233 cfgpb = ConfigurationProblem(cwcfg) |
233 cfgpb = ConfigurationProblem(cwcfg) |
234 try: |
234 try: |
235 cubesdir = pathsep.join(cwcfg.cubes_search_path()) |
235 cubesdir = pathsep.join(cwcfg.cubes_search_path()) |
236 namesize = max(len(x) for x in cwcfg.available_cubes()) |
236 namesize = max(len(x) for x in cwcfg.available_cubes()) |
237 except ConfigurationError, ex: |
237 except ConfigurationError as ex: |
238 print 'No cubes available:', ex |
238 print 'No cubes available:', ex |
239 except ValueError: |
239 except ValueError: |
240 print 'No cubes available in %s' % cubesdir |
240 print 'No cubes available in %s' % cubesdir |
241 else: |
241 else: |
242 print 'Available cubes (%s):' % cubesdir |
242 print 'Available cubes (%s):' % cubesdir |
243 for cube in cwcfg.available_cubes(): |
243 for cube in cwcfg.available_cubes(): |
244 try: |
244 try: |
245 tinfo = cwcfg.cube_pkginfo(cube) |
245 tinfo = cwcfg.cube_pkginfo(cube) |
246 tversion = tinfo.version |
246 tversion = tinfo.version |
247 cfgpb.add_cube(cube, tversion) |
247 cfgpb.add_cube(cube, tversion) |
248 except (ConfigurationError, AttributeError), ex: |
248 except (ConfigurationError, AttributeError) as ex: |
249 tinfo = None |
249 tinfo = None |
250 tversion = '[missing cube information: %s]' % ex |
250 tversion = '[missing cube information: %s]' % ex |
251 print '* %s %s' % (cube.ljust(namesize), tversion) |
251 print '* %s %s' % (cube.ljust(namesize), tversion) |
252 if self.config.verbose: |
252 if self.config.verbose: |
253 if tinfo: |
253 if tinfo: |
264 modes = detect_available_modes(cwcfg.cube_dir(cube)) |
264 modes = detect_available_modes(cwcfg.cube_dir(cube)) |
265 print ' available modes: %s' % ', '.join(modes) |
265 print ' available modes: %s' % ', '.join(modes) |
266 print |
266 print |
267 try: |
267 try: |
268 regdir = cwcfg.instances_dir() |
268 regdir = cwcfg.instances_dir() |
269 except ConfigurationError, ex: |
269 except ConfigurationError as ex: |
270 print 'No instance available:', ex |
270 print 'No instance available:', ex |
271 print |
271 print |
272 return |
272 return |
273 instances = list_instances(regdir) |
273 instances = list_instances(regdir) |
274 if instances: |
274 if instances: |
279 print '* %s (BROKEN instance, no configuration found)' % appid |
279 print '* %s (BROKEN instance, no configuration found)' % appid |
280 continue |
280 continue |
281 print '* %s (%s)' % (appid, ', '.join(modes)) |
281 print '* %s (%s)' % (appid, ', '.join(modes)) |
282 try: |
282 try: |
283 config = cwcfg.config_for(appid, modes[0]) |
283 config = cwcfg.config_for(appid, modes[0]) |
284 except Exception, exc: |
284 except Exception as exc: |
285 print ' (BROKEN instance, %s)' % exc |
285 print ' (BROKEN instance, %s)' % exc |
286 continue |
286 continue |
287 else: |
287 else: |
288 print 'No instance available in %s' % regdir |
288 print 'No instance available in %s' % regdir |
289 print |
289 print |
363 helper = self.config_helper(config) |
363 helper = self.config_helper(config) |
364 # check the cube exists |
364 # check the cube exists |
365 try: |
365 try: |
366 templdirs = [cwcfg.cube_dir(cube) |
366 templdirs = [cwcfg.cube_dir(cube) |
367 for cube in cubes] |
367 for cube in cubes] |
368 except ConfigurationError, ex: |
368 except ConfigurationError as ex: |
369 print ex |
369 print ex |
370 print '\navailable cubes:', |
370 print '\navailable cubes:', |
371 print ', '.join(cwcfg.available_cubes()) |
371 print ', '.join(cwcfg.available_cubes()) |
372 return |
372 return |
373 # create the registry directory for this instance |
373 # create the registry directory for this instance |
464 # remove home |
464 # remove home |
465 rm(config.apphome) |
465 rm(config.apphome) |
466 # remove instance data directory |
466 # remove instance data directory |
467 try: |
467 try: |
468 rm(config.appdatahome) |
468 rm(config.appdatahome) |
469 except OSError, ex: |
469 except OSError as ex: |
470 import errno |
470 import errno |
471 if ex.errno != errno.ENOENT: |
471 if ex.errno != errno.ENOENT: |
472 raise |
472 raise |
473 confignames = ', '.join([config.name for config in configs]) |
473 confignames = ', '.join([config.name for config in configs]) |
474 print '-> instance %s (%s) deleted.' % (appid, confignames) |
474 print '-> instance %s (%s) deleted.' % (appid, confignames) |
559 except Exception: |
559 except Exception: |
560 sys.stderr.write("process %s seems already dead.\n" % pid) |
560 sys.stderr.write("process %s seems already dead.\n" % pid) |
561 else: |
561 else: |
562 try: |
562 try: |
563 wait_process_end(pid) |
563 wait_process_end(pid) |
564 except ExecutionError, ex: |
564 except ExecutionError as ex: |
565 sys.stderr.write('%s\ntrying SIGKILL\n' % ex) |
565 sys.stderr.write('%s\ntrying SIGKILL\n' % ex) |
566 try: |
566 try: |
567 kill(pid, signal.SIGKILL) |
567 kill(pid, signal.SIGKILL) |
568 except Exception: |
568 except Exception: |
569 # probably dead now |
569 # probably dead now |
903 from cubicweb.server.migractions import ServerMigrationHelper |
903 from cubicweb.server.migractions import ServerMigrationHelper |
904 while True: |
904 while True: |
905 try: |
905 try: |
906 login, pwd = manager_userpasswd(msg=None) |
906 login, pwd = manager_userpasswd(msg=None) |
907 cnx = connect(appuri, login=login, password=pwd, mulcnx=False) |
907 cnx = connect(appuri, login=login, password=pwd, mulcnx=False) |
908 except AuthenticationError, ex: |
908 except AuthenticationError as ex: |
909 print ex |
909 print ex |
910 except (KeyboardInterrupt, EOFError): |
910 except (KeyboardInterrupt, EOFError): |
911 print |
911 print |
912 sys.exit(0) |
912 sys.exit(0) |
913 else: |
913 else: |
1011 sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) |
1011 sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) |
1012 sys.stderr = os.fdopen(sys.stderr.fileno(), 'w', 0) |
1012 sys.stderr = os.fdopen(sys.stderr.fileno(), 'w', 0) |
1013 cwcfg.load_cwctl_plugins() |
1013 cwcfg.load_cwctl_plugins() |
1014 try: |
1014 try: |
1015 CWCTL.run(args) |
1015 CWCTL.run(args) |
1016 except ConfigurationError, err: |
1016 except ConfigurationError as err: |
1017 print 'ERROR: ', err |
1017 print 'ERROR: ', err |
1018 sys.exit(1) |
1018 sys.exit(1) |
1019 except ExecutionError, err: |
1019 except ExecutionError as err: |
1020 print err |
1020 print err |
1021 sys.exit(2) |
1021 sys.exit(2) |
1022 |
1022 |
1023 if __name__ == '__main__': |
1023 if __name__ == '__main__': |
1024 run(sys.argv[1:]) |
1024 run(sys.argv[1:]) |