Skip to content

Commit

Permalink
Replace optparse with argparse
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
William-Brown5515 committed Sep 11, 2024
1 parent 0539eb6 commit 869ae73
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 36 deletions.
48 changes: 27 additions & 21 deletions bin/receiver.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@
import ssm.agents
from ssm import __version__, LOG_BREAK

from argparse import ArgumentParser

Check warning on line 24 in bin/receiver.py

View check run for this annotation

Codecov / codecov/patch

bin/receiver.py#L24

Added line #L24 was not covered by tests
import logging
import os
import sys
from optparse import OptionParser

try:
import ConfigParser
Expand All @@ -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__)

Check warning on line 40 in bin/receiver.py

View check run for this annotation

Codecov / codecov/patch

bin/receiver.py#L40

Added line #L40 was not covered by tests

arg_parser.add_argument('-c', '--config',

Check warning on line 42 in bin/receiver.py

View check run for this annotation

Codecov / codecov/patch

bin/receiver.py#L42

Added line #L42 was not covered by tests
help='location of config file, default path: '
'%s' % default_conf_location,
default=default_conf_location)
arg_parser.add_argument('-l', '--log_config',

Check warning on line 46 in bin/receiver.py

View check run for this annotation

Codecov / codecov/patch

bin/receiver.py#L46

Added line #L46 was not covered by tests
help='DEPRECATED - location of logging config '
'file (optional)',
default=None)
arg_parser.add_argument('-d', '--dn_file',

Check warning on line 50 in bin/receiver.py

View check run for this annotation

Codecov / codecov/patch

bin/receiver.py#L50

Added line #L50 was not covered by tests
help='location of the file containing valid DNs, '
'default path: %s' % default_dns_location,
default=default_dns_location)
arg_parser.add_argument('-v', '--version',

Check warning on line 54 in bin/receiver.py

View check run for this annotation

Codecov / codecov/patch

bin/receiver.py#L54

Added line #L54 was not covered by tests
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())

Check warning on line 59 in bin/receiver.py

View check run for this annotation

Codecov / codecov/patch

bin/receiver.py#L59

Added line #L59 was not covered by tests

# 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 warning on line 67 in bin/receiver.py

View check run for this annotation

Codecov / codecov/patch

bin/receiver.py#L67

Added line #L67 was not covered by tests

# 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'])

Check warning on line 72 in bin/receiver.py

View check run for this annotation

Codecov / codecov/patch

bin/receiver.py#L72

Added line #L72 was not covered by tests
else:
print("Config file not found at", options.config)
print("Config file not found at", options['config'])

Check warning on line 74 in bin/receiver.py

View check run for this annotation

Codecov / codecov/patch

bin/receiver.py#L74

Added line #L74 was not covered by tests
sys.exit(1)

# Check for pidfile
Expand All @@ -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__':
Expand Down
36 changes: 21 additions & 15 deletions bin/sender.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
import ssm.agents
from ssm import __version__, LOG_BREAK

from argparse import ArgumentParser

Check warning on line 24 in bin/sender.py

View check run for this annotation

Codecov / codecov/patch

bin/sender.py#L24

Added line #L24 was not covered by tests
import logging
from optparse import OptionParser
import os
import sys

Expand All @@ -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__)

Check warning on line 39 in bin/sender.py

View check run for this annotation

Codecov / codecov/patch

bin/sender.py#L39

Added line #L39 was not covered by tests

arg_parser.add_argument('-c', '--config',

Check warning on line 41 in bin/sender.py

View check run for this annotation

Codecov / codecov/patch

bin/sender.py#L41

Added line #L41 was not covered by tests
help=('location of config file, default path: '
'%s' % default_conf_location),
default=default_conf_location)
arg_parser.add_argument('-l', '--log_config',

Check warning on line 45 in bin/sender.py

View check run for this annotation

Codecov / codecov/patch

bin/sender.py#L45

Added line #L45 was not covered by tests
help='DEPRECATED - location of logging config'
'file (optional)',
default=None)
arg_parser.add_argument('-v', '--version',

Check warning on line 49 in bin/sender.py

View check run for this annotation

Codecov / codecov/patch

bin/sender.py#L49

Added line #L49 was not covered by tests
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())

Check warning on line 54 in bin/sender.py

View check run for this annotation

Codecov / codecov/patch

bin/sender.py#L54

Added line #L54 was not covered by tests

# 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'])

Check warning on line 64 in bin/sender.py

View check run for this annotation

Codecov / codecov/patch

bin/sender.py#L64

Added line #L64 was not covered by tests
else:
print("Config file not found at", options.config)
print("Config file not found at", options['config'])

Check warning on line 66 in bin/sender.py

View check run for this annotation

Codecov / codecov/patch

bin/sender.py#L66

Added line #L66 was not covered by tests
sys.exit(1)

ssm.agents.logging_helper(cp)
Expand Down

0 comments on commit 869ae73

Please sign in to comment.