def run(self, args): """run the command with its specific arguments""" appid = args[0] configs = [ cwcfg.config_for(appid, configname) for configname in cwcfg.possible_configurations(appid) ] if not configs: raise ExecutionError('unable to guess configuration for %s' % appid) for config in configs: helper = self.config_helper(config, required=False) if helper: helper.cleanup() # remove home rm(config.apphome) # remove instance data directory try: rm(config.appdatahome) except OSError as ex: import errno if ex.errno != errno.ENOENT: raise confignames = ', '.join([config.name for config in configs]) print('-> instance %s (%s) deleted.' % (appid, confignames))
def run(self, args): """run the command with its specific arguments""" if not args: mode = 'all' elif len(args) == 1: mode = args[0] else: raise BadCommandUsage('Too many arguments') from cubicweb.migration import ConfigurationProblem if mode == 'all': print('CubicWeb %s (%s mode)' % (cwcfg.cubicweb_version(), cwcfg.mode)) print() if mode in ('all', 'config', 'configurations'): cwcfg.load_available_configs() print('Available configurations:') for config in CONFIGURATIONS: print('*', config.name) for line in config.__doc__.splitlines(): line = line.strip() if not line: continue print(' ', line) print() if mode in ('all', 'cubes'): cfgpb = ConfigurationProblem(cwcfg) try: cube_names = available_cube_names(cwcfg) namesize = max(len(x) for x in cube_names) except ConfigurationError as ex: print('No cubes available:', ex) except ValueError: print('No cubes available') else: print('Available cubes:') for cube in cube_names: try: tinfo = cwcfg.cube_pkginfo(cube) tversion = tinfo.version cfgpb.add_cube(cube, tversion) except (ConfigurationError, AttributeError) as ex: tinfo = None tversion = '[missing cube information: %s]' % ex print('* %s %s' % (cube.ljust(namesize), tversion)) if self.config.verbose: if tinfo: descr = getattr(tinfo, 'description', '') if not descr: descr = tinfo.__doc__ if descr: print(' ' + ' \n'.join(descr.splitlines())) modes = detect_available_modes(cwcfg.cube_dir(cube)) print(' available modes: %s' % ', '.join(modes)) print() if mode in ('all', 'instances'): try: regdir = cwcfg.instances_dir() except ConfigurationError as ex: print('No instance available:', ex) print() return instances = list_instances(regdir) if instances: print('Available instances (%s):' % regdir) for appid in instances: modes = cwcfg.possible_configurations(appid) if not modes: print('* %s (BROKEN instance, no configuration found)' % appid) continue print('* %s (%s)' % (appid, ', '.join(modes))) try: config = cwcfg.config_for(appid, modes[0]) except Exception as exc: print(' (BROKEN instance, %s)' % exc) continue else: print('No instance available in %s' % regdir) print() if mode == 'all': # configuration management problem solving cfgpb.solve() if cfgpb.warnings: print('Warnings:\n', '\n'.join('* ' + txt for txt in cfgpb.warnings)) if cfgpb.errors: print('Errors:') for op, cube, version, src in cfgpb.errors: if op == 'add': print('* cube', cube, end=' ') if version: print(' version', version, end=' ') print('is not installed, but required by %s' % src) else: print( '* cube %s version %s is installed, but version %s is required by %s' % (cube, cfgpb.cubes[cube], version, src) )