From 869ae73a25064b7736f72877d747bef381b88e0c Mon Sep 17 00:00:00 2001 From: William-Brown5515 Date: Wed, 4 Sep 2024 13:15:12 +0100 Subject: [PATCH] Replace optparse with argparse Optparse is deprecated - no longer developed. Mostly a like-for-like replacement, but we use vars on the argparse object to output the values in a similar way to optparse. The old version option on the constructor is unavailable, and so it has been replaced by adding an argument with the 'version' action. --- bin/receiver.py | 48 +++++++++++++++++++++++++++--------------------- bin/sender.py | 36 +++++++++++++++++++++--------------- 2 files changed, 48 insertions(+), 36 deletions(-) diff --git a/bin/receiver.py b/bin/receiver.py index 82674495..ce764731 100644 --- a/bin/receiver.py +++ b/bin/receiver.py @@ -21,10 +21,10 @@ import ssm.agents from ssm import __version__, LOG_BREAK +from argparse import ArgumentParser import logging import os import sys -from optparse import OptionParser try: import ConfigParser @@ -37,35 +37,41 @@ def main(): ver = "SSM %s.%s.%s" % __version__ default_conf_location = '/etc/apel/receiver.cfg' default_dns_location = '/etc/apel/dns' - op = OptionParser(description=__doc__, version=ver) - op.add_option('-c', '--config', - help=('location of config file, ' - 'default path: ' + default_conf_location), - default=default_conf_location) - op.add_option('-l', '--log_config', - help='DEPRECATED - location of logging config file (optional)', - default=None) - op.add_option('-d', '--dn_file', - help=('location of the file containing valid DNs, ' - 'default path: ' + default_dns_location), - default=default_dns_location) - - options, unused_args = op.parse_args() + arg_parser = ArgumentParser(description=__doc__) + + arg_parser.add_argument('-c', '--config', + help='location of config file, default path: ' + '%s' % default_conf_location, + default=default_conf_location) + arg_parser.add_argument('-l', '--log_config', + help='DEPRECATED - location of logging config ' + 'file (optional)', + default=None) + arg_parser.add_argument('-d', '--dn_file', + help='location of the file containing valid DNs, ' + 'default path: %s' % default_dns_location, + default=default_dns_location) + arg_parser.add_argument('-v', '--version', + action='version', + version='ver: %s' % ver) + + # Using the vars function to output a dict-like view rather than Namespace object. + options = vars(arg_parser.parse_args()) # Deprecating functionality. old_log_config_default_path = '/etc/apel/logging.cfg' - if (os.path.exists(old_log_config_default_path) or options.log_config is not None): + if (os.path.exists(old_log_config_default_path) or options['log_config'] is not None): logging.warning('Separate logging config file option has been deprecated.') # Absolute file path required when refreshing dn_file, relative path resulted in an error. - options.dn_file = os.path.abspath(options.dn_file) + options['dn_file'] = os.path.abspath(options['dn_file']) # Check if config file exists using os.path.isfile function. - if os.path.isfile(options.config): + if os.path.isfile(options['config']): cp = ConfigParser.ConfigParser({'use_ssl': 'true'}) - cp.read(options.config) + cp.read(options['config']) else: - print("Config file not found at", options.config) + print("Config file not found at", options['config']) sys.exit(1) # Check for pidfile @@ -88,7 +94,7 @@ def main(): brokers, project, token = ssm.agents.get_ssm_args(protocol, cp, log) ssm.agents.run_receiver(protocol, brokers, project, token, - cp, log, options.dn_file) + cp, log, options['dn_file']) if __name__ == '__main__': diff --git a/bin/sender.py b/bin/sender.py index a058bbc4..142a5f5f 100644 --- a/bin/sender.py +++ b/bin/sender.py @@ -21,8 +21,8 @@ import ssm.agents from ssm import __version__, LOG_BREAK +from argparse import ArgumentParser import logging -from optparse import OptionParser import os import sys @@ -36,28 +36,34 @@ def main(): """Set up connection, send all messages and quit.""" ver = "SSM %s.%s.%s" % __version__ default_conf_location = '/etc/apel/sender.cfg' - op = OptionParser(description=__doc__, version=ver) - op.add_option('-c', '--config', - help=('location of config file, ' - 'default path: ' + default_conf_location), - default=default_conf_location) - op.add_option('-l', '--log_config', - help='DEPRECATED - location of logging config file (optional)', - default=None) - - options, unused_args = op.parse_args() + arg_parser = ArgumentParser(description=__doc__) + + arg_parser.add_argument('-c', '--config', + help=('location of config file, default path: ' + '%s' % default_conf_location), + default=default_conf_location) + arg_parser.add_argument('-l', '--log_config', + help='DEPRECATED - location of logging config' + 'file (optional)', + default=None) + arg_parser.add_argument('-v', '--version', + action='version', + version='ver: %s' % ver) + + # Using the vars function to output a dict-like view rather than Namespace object. + options = vars(arg_parser.parse_args()) # Deprecating functionality. old_log_config_default_path = '/etc/apel/logging.cfg' - if (os.path.exists(old_log_config_default_path) or options.log_config is not None): + if (os.path.exists(old_log_config_default_path) or options['log_config'] is not None): logging.warning('Separate logging config file option has been deprecated.') # Check if config file exists using os.path.isfile function. - if os.path.isfile(options.config): + if os.path.isfile(options['config']): cp = ConfigParser.ConfigParser({'use_ssl': 'true'}) - cp.read(options.config) + cp.read(options['config']) else: - print("Config file not found at", options.config) + print("Config file not found at", options['config']) sys.exit(1) ssm.agents.logging_helper(cp)