From e099d074da974fa9cf1db499f0a6960870f92565 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Tr=C4=99bski?= Date: Mon, 15 May 2017 07:10:42 +0200 Subject: [PATCH] Fix broken help commands for monasca-* Call for: * monasca-collector -h * monasca-forwader -h * monasca-statsd -h was broken, as described in [1]. Commits removes usage of deprecated optparse in favor of argparse. Ref: [1] https://storyboard.openstack.org/#!/story/2000995 Story: 2000998 Task: 4180 Change-Id: I8879f1f11a2502c180407c93e13d22451f6f2fa2 --- monasca_agent/collector/daemon.py | 2 +- monasca_agent/common/util.py | 27 ++++++++++++--------------- tests/test_config.py | 19 +++++++++++-------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/monasca_agent/collector/daemon.py b/monasca_agent/collector/daemon.py index 5620240e..fe807dda 100644 --- a/monasca_agent/collector/daemon.py +++ b/monasca_agent/collector/daemon.py @@ -163,7 +163,7 @@ class CollectorDaemon(monasca_agent.common.daemon.Daemon): def main(): - options, args = util.get_parsed_args() + options, args = util.get_parsed_args(prog='monasca-collector') config = cfg.Config() collector_config = config.get_config(['Main', 'Api', 'Logging']) autorestart = collector_config.get('autorestart', False) diff --git a/monasca_agent/common/util.py b/monasca_agent/common/util.py index db3da55c..7b397d90 100644 --- a/monasca_agent/common/util.py +++ b/monasca_agent/common/util.py @@ -1,12 +1,12 @@ # (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP +import argparse import glob import hashlib import imp import inspect import itertools import math -import optparse import os import platform import re @@ -444,21 +444,18 @@ def get_hostname(): return hostname -def get_parsed_args(): - parser = optparse.OptionParser() - parser.add_option('-c', '--clean', action='store_true', default=False, dest='clean') - parser.add_option('-v', '--verbose', action='store_true', default=False, dest='verbose', - help='Print out stacktraces for errors in checks') - parser.add_option('-f', '--config-file', default=None, dest='config_file', - help='Location for an alternate config rather than ' - 'using the default config location.') +def get_parsed_args(prog=None): + parser = argparse.ArgumentParser(prog=prog) + parser.add_argument('-c', '--clean', action='store_true', default=False, dest='clean') + parser.add_argument('-v', '--verbose', action='store_true', default=False, dest='verbose', + help='Print out stacktraces for errors in checks') + parser.add_argument('-f', '--config-file', default=None, dest='config_file', + help='Location for an alternate config rather than ' + 'using the default config location.') - try: - options, args = parser.parse_args() - except SystemExit: - # Ignore parse errors - options, args = optparse.Values({'clean': False}), [] - return options, args + options = parser.parse_known_args(sys.argv[1:]) + + return options def load_check_directory(): diff --git a/tests/test_config.py b/tests/test_config.py index 3b82de79..d4fc1e71 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1,12 +1,13 @@ # -*- coding: latin-1 -*- -import unittest + import mock import os.path import tempfile +import unittest from monasca_agent.common import config from monasca_agent.common.config import Config -from monasca_agent.common.util import PidFile, is_valid_hostname +from monasca_agent.common import util class TestConfig(unittest.TestCase): @@ -30,7 +31,7 @@ class TestConfig(unittest.TestCase): pid_f.write(pid) pid_f.close() - p = PidFile(program, pid_dir) + p = util.PidFile(program, pid_dir) self.assertEqual(p.get_pid(), 666) # clean up @@ -57,10 +58,10 @@ class TestConfig(unittest.TestCase): ] for hostname in valid_hostnames: - self.assertTrue(is_valid_hostname(hostname), hostname) + self.assertTrue(util.is_valid_hostname(hostname), hostname) for hostname in not_valid_hostnames: - self.assertFalse(is_valid_hostname(hostname), hostname) + self.assertFalse(util.is_valid_hostname(hostname), hostname) def testConfigIsSingleton(self): # create a temp conf file @@ -112,6 +113,8 @@ class TestConfig(unittest.TestCase): self.assertEqual(config.DEFAULT_CONFIG_FILE, conf._configFile) mock_os.path.exists.assert_called_once_with(config.DEFAULT_CONFIG_FILE) - -if __name__ == '__main__': - unittest.main() + def test_verify_common_config_opts(self): + opts = util.get_parsed_args(prog='test') + opts_dict = vars(opts[0]) + self.assertItemsEqual(['config_file', 'clean', 'verbose'], + opts_dict.keys())