cwctl.py
changeset 8695 358d8bed9626
parent 8682 20bd1cdf86ae
child 8718 9e7847dcbd94
equal deleted inserted replaced
8694:d901c36bcfce 8695:358d8bed9626
   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:])