diff -r 328c24289253 -r f98d1c46ed9f cwctl.py --- a/cwctl.py Fri May 24 14:02:45 2013 +0200 +++ b/cwctl.py Fri May 24 13:00:28 2013 +0200 @@ -38,10 +38,9 @@ def getpgid(): """win32 getpgid implementation""" - - from logilab.common.clcommands import CommandLine from logilab.common.shellutils import ASK +from logilab.common.configuration import merge_options from cubicweb import ConfigurationError, ExecutionError, BadCommandUsage from cubicweb.utils import support_args @@ -846,7 +845,6 @@ for key in sorted(vcconf): print key+': %s.%s.%s' % vcconf[key] - class ShellCommand(Command): """Run an interactive migration shell on an instance. This is a python shell with enhanced migration commands predefined in the namespace. An additional @@ -1013,6 +1011,33 @@ for cube in cwcfg.available_cubes(): print cube +class ConfigureInstanceCommand(InstanceCommand): + """Configure instance. + + ... + identifier of the instance to configure. + """ + name = 'configure' + actionverb = 'configured' + + options = merge_options(InstanceCommand.options + + (('param', + {'short': 'p', 'type' : 'named', 'metavar' : 'key1:value1,key2:value2', + 'default': None, + 'help': 'set to in configuration file.', + }), + )) + + def configure_instance(self, appid): + if self.config.param is not None: + appcfg = cwcfg.config_for(appid) + for key, value in self.config.param.iteritems(): + try: + appcfg.global_set_option(key, value) + except KeyError: + raise ConfigurationError('unknown configuration key "%s" for mode %s' % (key, appcfg.name)) + appcfg.save() + for cmdcls in (ListCommand, CreateInstanceCommand, DeleteInstanceCommand, StartInstanceCommand, StopInstanceCommand, RestartInstanceCommand, @@ -1022,10 +1047,10 @@ ShellCommand, RecompileInstanceCatalogsCommand, ListInstancesCommand, ListCubesCommand, + ConfigureInstanceCommand, ): CWCTL.register(cmdcls) - def run(args): """command line tool""" import os