diff options
author | Endi S. Dewata <edewata@redhat.com> | 2015-10-27 02:56:21 +0100 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2015-10-30 19:02:56 +0100 |
commit | c7bc6eb94aa64c89467f9394554f860dc485ad94 (patch) | |
tree | c2de2f28f0195a2d4c0744f660252ebb5a568fb1 /base | |
parent | 8b5c3cf9b37e5b3be44b777545fb1887c2fb75d2 (diff) | |
download | pki-c7bc6eb94aa64c89467f9394554f860dc485ad94.tar.gz pki-c7bc6eb94aa64c89467f9394554f860dc485ad94.tar.xz pki-c7bc6eb94aa64c89467f9394554f860dc485ad94.zip |
Added automatic Tomcat migration.
The pki-core.spec has been modified to execute pki-server migrate
when the package is installed. This way when upgrading from F22 to
F23 all PKI instances will be migrated automatically to Tomcat 8.
The pki-server migrate command has been modified such that if there
is no specific Tomcat version specified it will use the current
Tomcat version.
The top attribute in the CLI class was not functioning properly,
so it has been replaced with get_top_module() method.
The getopt() invocations in pki-server subcommands have been
replaced with gnu_getopt() to allow intermixing options and
arguments.
https://fedorahosted.org/pki/ticket/1310
Diffstat (limited to 'base')
-rw-r--r-- | base/common/python/pki/cli.py | 7 | ||||
-rw-r--r-- | base/server/python/pki/server/__init__.py | 18 | ||||
-rw-r--r-- | base/server/python/pki/server/cli/instance.py | 28 | ||||
-rw-r--r-- | base/server/python/pki/server/cli/migrate.py | 16 | ||||
-rw-r--r-- | base/server/python/pki/server/cli/nuxwdog.py | 4 | ||||
-rw-r--r-- | base/server/python/pki/server/cli/subsystem.py | 14 |
6 files changed, 58 insertions, 29 deletions
diff --git a/base/common/python/pki/cli.py b/base/common/python/pki/cli.py index 802ef01aa..6c51c2384 100644 --- a/base/common/python/pki/cli.py +++ b/base/common/python/pki/cli.py @@ -34,7 +34,6 @@ class CLI(object): self.name = name self.description = description self.parent = None - self.top = self self.verbose = False self.debug = False @@ -62,11 +61,15 @@ class CLI(object): def add_module(self, module): self.modules[module.name] = module module.parent = self - module.top = self.top def get_module(self, name): return self.modules.get(name) + def get_top_module(self): + if self.parent: + return self.parent.get_top_module() + return self + def print_message(self, message): print('-' * len(message)) print(message) diff --git a/base/server/python/pki/server/__init__.py b/base/server/python/pki/server/__init__.py index 01f1e9427..0d522084c 100644 --- a/base/server/python/pki/server/__init__.py +++ b/base/server/python/pki/server/__init__.py @@ -456,3 +456,21 @@ class PKIServerException(pki.PKIException): self.instance = instance self.subsystem = subsystem + + +class Tomcat(object): + + @classmethod + def get_major_version(self): + + # run "tomcat version" + output = subprocess.check_output(['/usr/sbin/tomcat', 'version']) + + # find "Server version: Apache Tomcat/<major version>.<minor version>" + match = re.search(r'^Server version:[^/]*/(\d+).*$', output, re.MULTILINE) + + if not match: + raise Exception('Unable to determine Tomcat version') + + # return major version + return match.group(1) diff --git a/base/server/python/pki/server/cli/instance.py b/base/server/python/pki/server/cli/instance.py index f74d251ca..fe50b605d 100644 --- a/base/server/python/pki/server/cli/instance.py +++ b/base/server/python/pki/server/cli/instance.py @@ -65,7 +65,7 @@ class InstanceFindCLI(pki.cli.CLI): def execute(self, argv): try: - opts, _ = getopt.getopt(argv, 'i:v', [ + opts, _ = getopt.gnu_getopt(argv, 'i:v', [ 'verbose', 'help']) except getopt.GetoptError as e: @@ -125,7 +125,7 @@ class InstanceShowCLI(pki.cli.CLI): def execute(self, argv): try: - opts, args = getopt.getopt(argv, 'i:v', [ + opts, args = getopt.gnu_getopt(argv, 'i:v', [ 'verbose', 'help']) except getopt.GetoptError as e: @@ -174,7 +174,7 @@ class InstanceStartCLI(pki.cli.CLI): def execute(self, argv): try: - opts, args = getopt.getopt(argv, 'i:v', [ + opts, args = getopt.gnu_getopt(argv, 'i:v', [ 'verbose', 'help']) except getopt.GetoptError as e: @@ -224,7 +224,7 @@ class InstanceStopCLI(pki.cli.CLI): def execute(self, argv): try: - opts, args = getopt.getopt(argv, 'i:v', [ + opts, args = getopt.gnu_getopt(argv, 'i:v', [ 'verbose', 'help']) except getopt.GetoptError as e: @@ -276,7 +276,7 @@ class InstanceMigrateCLI(pki.cli.CLI): def execute(self, argv): try: - opts, args = getopt.getopt(argv, 'i:v', [ + opts, args = getopt.gnu_getopt(argv, 'i:v', [ 'tomcat=', 'verbose', 'debug', 'help']) except getopt.GetoptError as e: @@ -313,11 +313,12 @@ class InstanceMigrateCLI(pki.cli.CLI): sys.exit(1) if not tomcat_version: - print('ERROR: missing Tomcat version') - self.print_help() - sys.exit(1) + tomcat_version = pki.server.Tomcat.get_major_version() + + if self.verbose: + print('Migrating to Tomcat %s' % tomcat_version) - module = self.top.find_module('migrate') + module = self.get_top_module().find_module('migrate') module.set_verbose(self.verbose) module.set_debug(self.debug) @@ -347,7 +348,7 @@ class InstanceNuxwdogEnableCLI(pki.cli.CLI): def execute(self, argv): try: - opts, args = getopt.getopt(argv, 'i:v', [ + opts, args = getopt.gnu_getopt(argv, 'i:v', [ 'verbose', 'help']) except getopt.GetoptError as e: @@ -373,7 +374,7 @@ class InstanceNuxwdogEnableCLI(pki.cli.CLI): self.print_help() sys.exit(1) - # module = self.top.find_module('nuxwdog-enable') + module = self.get_top_module().find_module('nuxwdog-enable') module = pki.server.cli.nuxwdog.NuxwdogEnableCLI() module.set_verbose(self.verbose) @@ -402,7 +403,7 @@ class InstanceNuxwdogDisableCLI(pki.cli.CLI): def execute(self, argv): try: - opts, args = getopt.getopt(argv, 'i:v', [ + opts, args = getopt.gnu_getopt(argv, 'i:v', [ 'verbose', 'help']) except getopt.GetoptError as e: @@ -428,8 +429,7 @@ class InstanceNuxwdogDisableCLI(pki.cli.CLI): self.print_help() sys.exit(1) - # module = self.top.find_module('nuxwdog-disable') - module = pki.server.cli.nuxwdog.NuxwdogDisableCLI() + module = self.get_top_module().find_module('nuxwdog-disable') module.set_verbose(self.verbose) instance = pki.server.PKIInstance(instance_name) diff --git a/base/server/python/pki/server/cli/migrate.py b/base/server/python/pki/server/cli/migrate.py index ba5e63116..09427974e 100644 --- a/base/server/python/pki/server/cli/migrate.py +++ b/base/server/python/pki/server/cli/migrate.py @@ -49,7 +49,7 @@ class MigrateCLI(pki.cli.CLI): def execute(self, argv): try: - opts, _ = getopt.getopt(argv, 'i:v', [ + opts, _ = getopt.gnu_getopt(argv, 'i:v', [ 'tomcat=', 'verbose', 'debug', 'help']) except getopt.GetoptError as e: @@ -80,9 +80,10 @@ class MigrateCLI(pki.cli.CLI): sys.exit(1) if not tomcat_version: - print('ERROR: missing Tomcat version') - self.print_help() - sys.exit(1) + tomcat_version = pki.server.Tomcat.get_major_version() + + if self.verbose: + print('Migrating to Tomcat %s' % tomcat_version) instances = pki.server.PKIServer.instances() @@ -96,6 +97,10 @@ class MigrateCLI(pki.cli.CLI): self.migrate_subsystems(instance, tomcat_version) def migrate_instance(self, instance, tomcat_version): + + if self.verbose: + print('Migrating %s instance' % instance.name) + server_xml = os.path.join(instance.conf_dir, 'server.xml') self.migrate_server_xml(server_xml, tomcat_version) @@ -373,6 +378,9 @@ class MigrateCLI(pki.cli.CLI): self.migrate_subsystem(subsystem, tomcat_version) def migrate_subsystem(self, subsystem, tomcat_version): + if self.verbose: + print('Migrating %s/%s subsystem' % (subsystem.instance.name, subsystem.name)) + self.migrate_context_xml(subsystem.context_xml, tomcat_version) def migrate_context_xml(self, filename, tomcat_version): diff --git a/base/server/python/pki/server/cli/nuxwdog.py b/base/server/python/pki/server/cli/nuxwdog.py index dd54f5683..dbdf973b6 100644 --- a/base/server/python/pki/server/cli/nuxwdog.py +++ b/base/server/python/pki/server/cli/nuxwdog.py @@ -68,7 +68,7 @@ class NuxwdogEnableCLI(pki.cli.CLI): def execute(self, argv): try: - opts, _ = getopt.getopt(argv, 'i:v', [ + opts, _ = getopt.gnu_getopt(argv, 'i:v', [ 'verbose', 'help']) except getopt.GetoptError as e: @@ -275,7 +275,7 @@ class NuxwdogDisableCLI(pki.cli.CLI): def execute(self, argv): try: - opts, _ = getopt.getopt(argv, 'i:v', [ + opts, _ = getopt.gnu_getopt(argv, 'i:v', [ 'verbose', 'help']) except getopt.GetoptError as e: diff --git a/base/server/python/pki/server/cli/subsystem.py b/base/server/python/pki/server/cli/subsystem.py index f72292a9d..3b9f9860f 100644 --- a/base/server/python/pki/server/cli/subsystem.py +++ b/base/server/python/pki/server/cli/subsystem.py @@ -67,7 +67,7 @@ class SubsystemFindCLI(pki.cli.CLI): def execute(self, args): try: - opts, _ = getopt.getopt(args, 'i:v', [ + opts, _ = getopt.gnu_getopt(args, 'i:v', [ 'instance=', 'verbose', 'help']) @@ -125,7 +125,7 @@ class SubsystemShowCLI(pki.cli.CLI): def execute(self, argv): try: - opts, args = getopt.getopt(argv, 'i:v', [ + opts, args = getopt.gnu_getopt(argv, 'i:v', [ 'instance=', 'verbose', 'help']) @@ -182,7 +182,7 @@ class SubsystemEnableCLI(pki.cli.CLI): def execute(self, argv): try: - opts, args = getopt.getopt(argv, 'i:v', [ + opts, args = getopt.gnu_getopt(argv, 'i:v', [ 'instance=', 'verbose', 'help']) @@ -244,7 +244,7 @@ class SubsystemDisableCLI(pki.cli.CLI): def execute(self, argv): try: - opts, args = getopt.getopt(argv, 'i:v', [ + opts, args = getopt.gnu_getopt(argv, 'i:v', [ 'instance=', 'verbose', 'help']) @@ -324,7 +324,7 @@ class SubsystemCertFindCLI(pki.cli.CLI): def execute(self, argv): try: - opts, args = getopt.getopt(argv, 'i:v', [ + opts, args = getopt.gnu_getopt(argv, 'i:v', [ 'instance=', 'verbose', 'help']) @@ -392,7 +392,7 @@ class SubsystemCertShowCLI(pki.cli.CLI): def execute(self, argv): try: - opts, args = getopt.getopt(argv, 'i:v', [ + opts, args = getopt.gnu_getopt(argv, 'i:v', [ 'instance=', 'verbose', 'help']) @@ -457,7 +457,7 @@ class SubsystemCertUpdateCLI(pki.cli.CLI): def execute(self, argv): try: - opts, args = getopt.getopt(argv, 'i:v', [ + opts, args = getopt.gnu_getopt(argv, 'i:v', [ 'instance=', 'verbose', 'help']) |