From 7708ecbe64e226e5829ec323c749ce7ad9914ed1 Mon Sep 17 00:00:00 2001 From: Bryan Strassner Date: Tue, 5 Jun 2018 16:20:10 -0500 Subject: [PATCH] Add Keystone options to registration of config When registering options, the list_options was not returning the appropriate options for keystone. This adds those options. Aslo changes to use a more direct/generic adding of keystone options. Related to this, a change was required to the service_endpoints module to generate an auth object used to get a session. In addition, the zuul gates for py35 were resolving to a non-existent target. The changes to tox.ini files addresses making it so the unit test gates are restored to functionality. This change also uncovered a misconfigured unit test, and corrects that test. Change-Id: Ibc1c6c217ac7396390e7a881afbb9ef1c5ab7091 --- .gitignore | 2 ++ docs/source/_static/shipyard.conf.sample | 20 +++++++++++++++++++ .../etc/shipyard/shipyard.conf.sample | 20 +++++++++++++++++++ .../shipyard_airflow/conf/config.py | 9 ++++----- .../control/service_endpoints.py | 5 +++-- .../unit/control/test_action_validators.py | 7 ++++++- src/bin/shipyard_airflow/tox.ini | 4 ++-- src/bin/shipyard_client/tox.ini | 4 ++-- 8 files changed, 59 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 8d02ee84..48e45def 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ __pycache__/ *.py[cod] *$py.class +**/.pytest_cache/ + # C extensions *.so diff --git a/docs/source/_static/shipyard.conf.sample b/docs/source/_static/shipyard.conf.sample index 7362bb69..b8c4aaae 100644 --- a/docs/source/_static/shipyard.conf.sample +++ b/docs/source/_static/shipyard.conf.sample @@ -277,6 +277,26 @@ # Config Section from which to load plugin specific options (string value) #auth_section = +# +# From shipyard_api +# + +# PEM encoded Certificate Authority to use when verifying HTTPs connections. +# (string value) +#cafile = + +# PEM encoded client certificate cert file (string value) +#certfile = + +# PEM encoded client certificate key file (string value) +#keyfile = + +# Verify HTTPS connections. (boolean value) +#insecure = false + +# Timeout value for http requests (integer value) +#timeout = + [logging] diff --git a/src/bin/shipyard_airflow/etc/shipyard/shipyard.conf.sample b/src/bin/shipyard_airflow/etc/shipyard/shipyard.conf.sample index 7362bb69..b8c4aaae 100644 --- a/src/bin/shipyard_airflow/etc/shipyard/shipyard.conf.sample +++ b/src/bin/shipyard_airflow/etc/shipyard/shipyard.conf.sample @@ -277,6 +277,26 @@ # Config Section from which to load plugin specific options (string value) #auth_section = +# +# From shipyard_api +# + +# PEM encoded Certificate Authority to use when verifying HTTPs connections. +# (string value) +#cafile = + +# PEM encoded client certificate cert file (string value) +#certfile = + +# PEM encoded client certificate key file (string value) +#keyfile = + +# Verify HTTPS connections. (boolean value) +#insecure = false + +# Timeout value for http requests (integer value) +#timeout = + [logging] diff --git a/src/bin/shipyard_airflow/shipyard_airflow/conf/config.py b/src/bin/shipyard_airflow/shipyard_airflow/conf/config.py index 712cbe05..0af7d1b9 100644 --- a/src/bin/shipyard_airflow/shipyard_airflow/conf/config.py +++ b/src/bin/shipyard_airflow/shipyard_airflow/conf/config.py @@ -241,18 +241,17 @@ def register_opts(conf): help=section.help)) conf.register_opts(section.options, group=section.name) - conf.register_opts( - ks_loading.get_auth_plugin_conf_options('password'), - group='keystone_authtoken' - ) + ks_loading.register_auth_conf_options(conf, group='keystone_authtoken') def list_opts(): """ List the options identified by this configuration """ - return { + all_opts = { section.name: section.options for section in SECTIONS } + all_opts['keystone_authtoken'] = ks_loading.get_session_conf_options() + return all_opts def parse_args(args=None, usage=None, default_config_files=None): diff --git a/src/bin/shipyard_airflow/shipyard_airflow/control/service_endpoints.py b/src/bin/shipyard_airflow/shipyard_airflow/control/service_endpoints.py index 36bbc4de..3b6678bd 100644 --- a/src/bin/shipyard_airflow/shipyard_airflow/control/service_endpoints.py +++ b/src/bin/shipyard_airflow/shipyard_airflow/control/service_endpoints.py @@ -22,6 +22,7 @@ import logging import falcon from keystoneauth1 import exceptions as exc from keystoneauth1 import loading +from keystoneauth1 import session from oslo_config import cfg from shipyard_airflow.errors import AppError @@ -113,8 +114,8 @@ def get_session(): def _get_ks_session(): # Establishes a keystone session try: - return loading.load_session_from_conf_options( - CONF, group="keystone_authtoken") + auth = loading.load_auth_from_conf_options(CONF, "keystone_authtoken") + return session.Session(auth=auth) except exc.AuthorizationFailure as aferr: LOG.error('Could not authorize against keystone: %s', str(aferr)) diff --git a/src/bin/shipyard_airflow/tests/unit/control/test_action_validators.py b/src/bin/shipyard_airflow/tests/unit/control/test_action_validators.py index fba741ac..7b96a899 100644 --- a/src/bin/shipyard_airflow/tests/unit/control/test_action_validators.py +++ b/src/bin/shipyard_airflow/tests/unit/control/test_action_validators.py @@ -139,7 +139,12 @@ class TestActionValidator: # any exception is a failure assert False - def test_validate_site_missing_rev(self): + @mock.patch("shipyard_airflow.control.service_clients.deckhand_client", + return_value=fake_dh_doc_client('clean'), ds_name='defaulted') + @mock.patch("shipyard_airflow.control.validators." + "validate_deployment_strategy._get_node_lookup", + return_value=node_lookup) + def test_validate_site_missing_rev(self, *args): """Test the function that runs the validator class with a deployment strategy that has a cycle in the groups """ diff --git a/src/bin/shipyard_airflow/tox.ini b/src/bin/shipyard_airflow/tox.ini index b9b467c1..498d79ad 100644 --- a/src/bin/shipyard_airflow/tox.ini +++ b/src/bin/shipyard_airflow/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = unit, pep8, bandit +envlist = py35, pep8, bandit [testenv] setenv= @@ -8,7 +8,7 @@ basepython=python3.5 deps = -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt -[testenv:unit] +[testenv:py35] skipsdist=True commands = pytest \ diff --git a/src/bin/shipyard_client/tox.ini b/src/bin/shipyard_client/tox.ini index 03cf1ff8..80249c2c 100644 --- a/src/bin/shipyard_client/tox.ini +++ b/src/bin/shipyard_client/tox.ini @@ -1,6 +1,6 @@ [tox] skipsdist=True -envlist = unit, pep8, bandit +envlist = py35, pep8, bandit [testenv] setenv= @@ -9,7 +9,7 @@ basepython=python3.5 deps = -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt -[testenv:unit] +[testenv:py35] commands = pytest \ {posargs} \