summaryrefslogtreecommitdiffstats
path: root/base/server/python/pki/server/cli/instance.py
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2015-03-05 23:05:40 -0500
committerEndi S. Dewata <edewata@redhat.com>2015-04-21 16:53:28 -0400
commit79c5627ae28840756d99928fd33701552cc93322 (patch)
tree88850429369d2478a4c28697226a2c4a0831d30f /base/server/python/pki/server/cli/instance.py
parent42667acb21cee0ce73c58aaf55aea8fee19620ff (diff)
downloadpki-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.py70
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)