diff --git a/os_config_applier/os_config_applier.py b/os_config_applier/os_config_applier.py index 172701c..0928b6b 100755 --- a/os_config_applier/os_config_applier.py +++ b/os_config_applier/os_config_applier.py @@ -48,7 +48,8 @@ def print_key(config_path, key, type_name): try: config = config[key] except KeyError: - raise KeyError('key %s does not exist in %s' % (key, config_path)) + raise ConfigException( + 'key %s does not exist in %s' % (key, config_path)) ensure_type(config, type_name) print config @@ -197,10 +198,11 @@ def main(argv=sys.argv): logger.info("success") except ConfigException as e: logger.error(e) - sys.exit(1) - sys.exit(0) + return 1 + return 0 -# logginig + +# logging LOG_FORMAT = '[%(asctime)s] [%(levelname)s] %(message)s' DATE_FORMAT = '%Y/%m/%d %I:%M:%S %p' @@ -210,6 +212,6 @@ def add_handler(logger, handler): logger.addHandler(handler) logger = logging.getLogger('os-config-applier') logger.setLevel(logging.INFO) -add_handler(logger, logging.StreamHandler(sys.stdout)) +add_handler(logger, logging.StreamHandler()) if os.geteuid() == 0: add_handler(logger, logging.FileHandler('/var/log/os-config-applier.log')) diff --git a/os_config_applier/tests/test_os_config_applier.py b/os_config_applier/tests/test_os_config_applier.py index 5292a70..71305cd 100644 --- a/os_config_applier/tests/test_os_config_applier.py +++ b/os_config_applier/tests/test_os_config_applier.py @@ -15,7 +15,6 @@ import json import os -import subprocess import tempfile import fixtures @@ -76,34 +75,39 @@ class TestRunOSConfigApplier(testtools.TestCase): self.useFixture(fixtures.MonkeyPatch('sys.stdout', self.stdout)) stderr = self.useFixture(fixtures.StringStream('stderr')).stream self.useFixture(fixtures.MonkeyPatch('sys.stderr', stderr)) + self.logger = self.useFixture( + fixtures.FakeLogger(name="os-config-applier")) fd, self.path = tempfile.mkstemp() with os.fdopen(fd, 'w') as t: t.write(json.dumps(CONFIG)) t.flush() def test_print_key(self): - oca.main(['os-config-applier.py', '--metadata', self.path, '--key', - 'database.url', '--type', 'raw']) + self.assertEqual(0, oca.main( + ['os-config-applier.py', '--metadata', self.path, '--key', + 'database.url', '--type', 'raw'])) self.stdout.seek(0) self.assertEqual(CONFIG['database']['url'], self.stdout.read().strip()) + self.assertEqual('', self.logger.output) def test_print_key_missing(self): - self.assertRaises( - subprocess.CalledProcessError, oca.main, + self.assertEqual(1, oca.main( ['os-config-applier.py', '--metadata', self.path, '--key', - 'does.not.exist']) + 'does.not.exist'])) + self.assertIn('does not exist', self.logger.output) def test_print_key_wrong_type(self): - self.assertRaises( - subprocess.CalledProcessError, oca.main, + self.assertEqual(1, oca.main( ['os-config-applier.py', '--metadata', self.path, '--key', - 'x', '--type', 'int']) + 'x', '--type', 'int'])) + self.assertIn('cannot interpret value', self.logger.output) def test_print_templates(self): oca.main(['os-config-applier', '--print-templates']) self.stdout.seek(0) self.assertEqual(self.stdout.read().strip(), oca.TEMPLATES_DIR) + self.assertEqual('', self.logger.output) class OSConfigApplierTestCase(testtools.TestCase): diff --git a/requirements.txt b/requirements.txt index 7bd15e8..a9f8240 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ anyjson +argparse d2to1 pbr pystache