diff options
author | Endi S. Dewata <edewata@redhat.com> | 2015-03-05 23:05:40 -0500 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2015-04-21 16:53:28 -0400 |
commit | 79c5627ae28840756d99928fd33701552cc93322 (patch) | |
tree | 88850429369d2478a4c28697226a2c4a0831d30f /base/server/python/pki/server/cli/instance.py | |
parent | 42667acb21cee0ce73c58aaf55aea8fee19620ff (diff) | |
download | pki-79c5627ae28840756d99928fd33701552cc93322.tar.gz pki-79c5627ae28840756d99928fd33701552cc93322.tar.xz pki-79c5627ae28840756d99928fd33701552cc93322.zip |
Added server migration command.
New pki-server CLI commands have been added to migrate the server
configuration from Tomcat 7 to Tomcat 8 and vice versa. These
commands can be used later during system upgrade to migrate
existing instances from Tomcat 7 in F22 to Tomcat 8 in F23.
The Python CLI framework has been refactored to provide a way to
find other CLI modules by the command names.
https://fedorahosted.org/pki/ticket/1264
Diffstat (limited to 'base/server/python/pki/server/cli/instance.py')
-rw-r--r-- | base/server/python/pki/server/cli/instance.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/base/server/python/pki/server/cli/instance.py b/base/server/python/pki/server/cli/instance.py index c1ec9ddd7..b4a9ec05a 100644 --- a/base/server/python/pki/server/cli/instance.py +++ b/base/server/python/pki/server/cli/instance.py @@ -36,6 +36,7 @@ class InstanceCLI(pki.cli.CLI): self.add_module(InstanceShowCLI()) self.add_module(InstanceStartCLI()) self.add_module(InstanceStopCLI()) + self.add_module(InstanceMigrateCLI()) @staticmethod def print_instance(instance): @@ -250,3 +251,72 @@ class InstanceStopCLI(pki.cli.CLI): instance.stop() self.print_message('%s instance stopped' % instance_name) + +class InstanceMigrateCLI(pki.cli.CLI): + + def __init__(self): + super(InstanceMigrateCLI, self).__init__('migrate', 'Migrate instance') + + def print_help(self): + print 'Usage: pki-server instance-migrate [OPTIONS] <instance ID>' + print + print ' --tomcat <version> Use the specified Tomcat version.' + print ' -v, --verbose Run in verbose mode.' + print ' --debug Show debug messages.' + print ' --help Show help message.' + print + + def execute(self, argv): + + try: + opts, args = getopt.getopt(argv, 'i:v', [ + 'tomcat=', 'verbose', 'debug', 'help']) + + except getopt.GetoptError as e: + print 'ERROR: ' + str(e) + self.print_help() + sys.exit(1) + + if len(args) != 1: + print 'ERROR: missing instance ID' + self.print_help() + sys.exit(1) + + instance_name = args[0] + tomcat_version = None + + for o, a in opts: + if o == '--tomcat': + tomcat_version = a + + elif o in ('-v', '--verbose'): + self.set_verbose(True) + + elif o == '--debug': + self.set_verbose(True) + self.set_debug(True) + + elif o == '--help': + self.print_help() + sys.exit() + + else: + print 'ERROR: unknown option ' + o + self.print_help() + sys.exit(1) + + if not tomcat_version: + print 'ERROR: missing Tomcat version' + self.print_help() + sys.exit(1) + + module = self.top.find_module('migrate') + module.set_verbose(self.verbose) + module.set_debug(self.debug) + + instance = pki.server.PKIInstance(instance_name) + instance.load() + + module.migrate(instance, tomcat_version) # pylint: disable=no-member,maybe-no-member + + self.print_message('%s instance migrated' % instance_name) |