Skip to content

Commit

Permalink
Update pki-server to use ArgumentParser
Browse files Browse the repository at this point in the history
The PKIServerCLI has been modified to create a main parser
using ArgumentParser then create a subparser for each sub-
command.

The CLI.create_parser() has been modified to take an optional
subparsers object and pass it down to the modules.

The PKICLI, PasswordGenerateCLI, and PKCS12ImportCLI will be
updated separately later.
  • Loading branch information
edewata committed Jan 21, 2025
1 parent 07ddd03 commit bb22542
Show file tree
Hide file tree
Showing 33 changed files with 377 additions and 390 deletions.
4 changes: 2 additions & 2 deletions base/common/python/pki/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,10 @@ def find_module(self, command):
if not module or not command:
return module

def create_parser(self):
def create_parser(self, subparsers=None):

for module in self.modules.values():
module.create_parser()
module.create_parser(subparsers=subparsers)

def parse_command(self, command):

Expand Down
2 changes: 1 addition & 1 deletion base/common/python/pki/cli/password.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class PasswordGenerateCLI(pki.cli.CLI):
def __init__(self):
super().__init__('generate', 'Generate secure random password')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.get_full_name(),
Expand Down
2 changes: 1 addition & 1 deletion base/common/python/pki/cli/pkcs12.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def __init__(self):
super(PKCS12ImportCLI, self).__init__(
'import', 'Import PKCS #12 file into NSS database')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.get_full_name(),
Expand Down
88 changes: 52 additions & 36 deletions base/server/python/pki/server/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
#

import argparse
import getopt
import logging
import socket
import sys
Expand Down Expand Up @@ -99,6 +98,31 @@ def __init__(self):

self.add_module(pki.server.cli.upgrade.UpgradeCLI())

def create_parser(self, subparsers=None):

# create main parser
self.parser = argparse.ArgumentParser(
prog=self.name,
add_help=False)
self.parser.add_argument(
'-i',
'--instance',
default='pki-tomcat')
self.parser.add_argument(
'-v',
'--verbose',
action='store_true')
self.parser.add_argument(
'--debug',
action='store_true')
self.parser.add_argument(
'--help',
action='store_true')

# create subparsers
subparsers = self.parser.add_subparsers(dest='command')
super().create_parser(subparsers=subparsers)

def get_full_module_name(self, module_name):
return module_name

Expand All @@ -113,34 +137,26 @@ def print_help(self):
super().print_help()

def execute(self, argv, args=None):
try:
opts, args = getopt.getopt(argv, 'v', [
'verbose', 'debug', 'help'])
if not args:
args = self.parser.parse_args(args=argv)

except getopt.GetoptError as e:
logger.error(e)
if args.help:
self.print_help()
sys.exit(1)

for o, _ in opts:
if o in ('-v', '--verbose'):
logging.getLogger().setLevel(logging.INFO)
return

elif o == '--debug':
logging.getLogger().setLevel(logging.DEBUG)
if args.debug:
logging.getLogger().setLevel(logging.DEBUG)

elif o == '--help':
self.print_help()
sys.exit()
elif args.verbose:
logging.getLogger().setLevel(logging.INFO)

else:
logger.error('Unknown option %s', o)
self.print_help()
sys.exit(1)
command = args.command
logger.debug('Command: %s', command)

logger.debug('Command: %s', ' '.join(args))
module = self.find_module(command)
logger.debug('Module: %s', module.get_full_name())

super().execute(args)
module.execute(argv, args=args)

@staticmethod
def print_status(instance):
Expand Down Expand Up @@ -294,9 +310,9 @@ class CreateCLI(pki.cli.CLI):
def __init__(self):
super().__init__('create', 'Create PKI server')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument('--user')
Expand Down Expand Up @@ -391,9 +407,9 @@ class RemoveCLI(pki.cli.CLI):
def __init__(self):
super().__init__('remove', 'Remove PKI server')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -470,9 +486,9 @@ class StatusCLI(pki.cli.CLI):
def __init__(self):
super().__init__('status', 'Display PKI service status')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -531,9 +547,9 @@ class StartCLI(pki.cli.CLI):
def __init__(self):
super().__init__('start', 'Start PKI service')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -610,9 +626,9 @@ class StopCLI(pki.cli.CLI):
def __init__(self):
super().__init__('stop', 'Stop PKI service')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -689,9 +705,9 @@ class RestartCLI(pki.cli.CLI):
def __init__(self):
super().__init__('restart', 'Restart PKI service')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -764,9 +780,9 @@ class RunCLI(pki.cli.CLI):
def __init__(self):
super().__init__('run', 'Run PKI server in foreground')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down
49 changes: 24 additions & 25 deletions base/server/python/pki/server/cli/acme.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
#

import argparse
import logging
import os

Expand Down Expand Up @@ -40,9 +39,9 @@ class ACMECreateCLI(pki.cli.CLI):
def __init__(self):
super().__init__('create', 'Create ACME subsystem')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -109,9 +108,9 @@ class ACMERemoveCLI(pki.cli.CLI):
def __init__(self):
super().__init__('remove', 'Remove ACME subsystem')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -193,9 +192,9 @@ class ACMEDeployCLI(pki.cli.CLI):
def __init__(self):
super().__init__('deploy', 'Deploy ACME subsystem')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -285,9 +284,9 @@ class ACMEUndeployCLI(pki.cli.CLI):
def __init__(self):
super().__init__('undeploy', 'Undeploy ACME subsystem')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -379,9 +378,9 @@ class ACMEMetadataShowCLI(pki.cli.CLI):
def __init__(self):
super().__init__('show', 'Show ACME metadata configuration')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -466,9 +465,9 @@ class ACMEMetadataModifyCLI(pki.cli.CLI):
def __init__(self):
super().__init__('mod', 'Modify ACME metadata configuration')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -578,9 +577,9 @@ class ACMEDatabaseShowCLI(pki.cli.CLI):
def __init__(self):
super().__init__('show', 'Show ACME database configuration')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -698,9 +697,9 @@ class ACMEDatabaseModifyCLI(pki.cli.CLI):
def __init__(self):
super().__init__('mod', 'Modify ACME database configuration')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -916,9 +915,9 @@ class ACMEIssuerShowCLI(pki.cli.CLI):
def __init__(self):
super().__init__('show', 'Show ACME issuer configuration')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -1031,9 +1030,9 @@ class ACMEIssuerModifyCLI(pki.cli.CLI):
def __init__(self):
super().__init__('mod', 'Modify ACME issuer configuration')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -1244,9 +1243,9 @@ class ACMERealmShowCLI(pki.cli.CLI):
def __init__(self):
super().__init__('show', 'Show ACME realm configuration')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down Expand Up @@ -1374,9 +1373,9 @@ class ACMERealmModifyCLI(pki.cli.CLI):
def __init__(self):
super().__init__('mod', 'Modify ACME realm configuration')

def create_parser(self):
def create_parser(self, subparsers=None):

self.parser = argparse.ArgumentParser(
self.parser = subparsers.add_parser(
self.get_full_name(),
add_help=False)
self.parser.add_argument(
Expand Down
Loading

0 comments on commit bb22542

Please sign in to comment.