From dc79712d49286d4a1d7e44f94c93bcc9f04c6946 Mon Sep 17 00:00:00 2001 From: David Ames Date: Fri, 18 May 2018 15:31:37 -0700 Subject: [PATCH] Create DRAgentRelationAdapters Override the amqp adapter the correct way by creating a new relation adapters class. Use the newer transport_url rather than the older rabbit_* settings for amqp messaging. Change-Id: I22b81e25d0e9fc227de4e000540d350c2a635765 --- .gitreview | 4 ++++ src/lib/charm/openstack/dragent.py | 23 ++++++++++++++----- src/templates/neutron.conf | 8 +++---- src/tests/tests.yaml | 10 ++++---- src/tox.ini | 4 +++- tox.ini | 6 ++--- unit_tests/__init__.py | 11 +++++++++ .../test_lib_charm_openstack_dragent.py | 4 ++-- 8 files changed, 49 insertions(+), 21 deletions(-) create mode 100644 .gitreview diff --git a/.gitreview b/.gitreview new file mode 100644 index 0000000..27311b2 --- /dev/null +++ b/.gitreview @@ -0,0 +1,4 @@ +[gerrit] +host=review.openstack.org +port=29418 +project=openstack/charm-neutron-dynamic-routing.git diff --git a/src/lib/charm/openstack/dragent.py b/src/lib/charm/openstack/dragent.py index b7fb7ef..457f9a7 100644 --- a/src/lib/charm/openstack/dragent.py +++ b/src/lib/charm/openstack/dragent.py @@ -118,6 +118,11 @@ class TransportURLAdapter(os_adapters.RabbitMQRelationAdapter): TODO: Move to charms.openstack.adapters """ + DEFAULT_PORT = '5672' + + def __init__(self, relation): + super(TransportURLAdapter, self).__init__(relation) + @property def transport_url(self): """Return the transport URL for communicating with rabbitmq @@ -143,7 +148,17 @@ class TransportURLAdapter(os_adapters.RabbitMQRelationAdapter): :returns: int port number """ - return self.ssl_port or 5672 + return self.ssl_port or self.DEFAULT_PORT + + +class DRAgentRelationAdapters(os_adapters.OpenStackRelationAdapters): + + """ + Adapters collection to append specific adapters for Neutron Dynamic Routing + """ + relation_adapters = { + 'amqp': TransportURLAdapter, + } class DRAgentCharm(charms_openstack.charm.OpenStackCharm): @@ -157,11 +172,7 @@ class DRAgentCharm(charms_openstack.charm.OpenStackCharm): default_service = 'neutron-bgp-dragent' services = [default_service] required_relations = ['amqp'] - - adapters_class = os_adapters.OpenStackRelationAdapters - adapters_class.relation_adapters = { - 'amqp': TransportURLAdapter, - } + adapters_class = DRAgentRelationAdapters restart_map = { NEUTRON_CONF: services, diff --git a/src/templates/neutron.conf b/src/templates/neutron.conf index fe8b73e..d049af7 100644 --- a/src/templates/neutron.conf +++ b/src/templates/neutron.conf @@ -6,12 +6,12 @@ verbose = {{ options.verbose }} debug = {{ options.debug }} +{% if amqp.transport_url -%} +transport_url = {{ amqp.transport_url }} +{% endif -%} + [agent] root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf -{% include "parts/section-rabbitmq-oslo" %} - -{% include "parts/section-oslo-notifications" %} - [oslo_concurrency] lock_path = /var/lock/neutron diff --git a/src/tests/tests.yaml b/src/tests/tests.yaml index dbd08df..2dbbe73 100644 --- a/src/tests/tests.yaml +++ b/src/tests/tests.yaml @@ -4,9 +4,9 @@ tests: configure: - zaza.charm_tests.dragent.configure.setup gate_bundles: - - xenial-queens-functional - - xenial-pike-functional -smoke_bundles: - - xenial-queens-functional -dev_bundles: - bionic-queens-functional + - xenial-pike-functional + - xenial-queens-functional +smoke_bundles: + - bionic-queens-functional +dev_bundles: diff --git a/src/tox.ini b/src/tox.ini index 6f7622b..51d0555 100644 --- a/src/tox.ini +++ b/src/tox.ini @@ -6,7 +6,9 @@ skipsdist = True setenv = VIRTUAL_ENV={envdir} PYTHONHASHSEED=0 whitelist_externals = juju -passenv = HOME TERM CS_API_* +passenv = + HOME TERM CS_API_* FIP_RANGE AMULET_* MOJO_* NET_ID GATEWAY NAME_SERVER + CIDR_EXT FIP_RANGE VIP_RANGE deps = -r{toxinidir}/test-requirements.txt install_command = pip install {opts} {packages} diff --git a/tox.ini b/tox.ini index d3a870d..99157f8 100644 --- a/tox.ini +++ b/tox.ini @@ -3,7 +3,7 @@ # within individual charm repos. [tox] skipsdist = True -envlist = pep8,py3 +envlist = pep8,py35 skip_missing_interpreters = True [testenv] @@ -32,13 +32,13 @@ basepython = python2.7 whitelist_externals = true commands = true -[testenv:py3] +[testenv:py35] basepython = python3 deps = -r{toxinidir}/test-requirements.txt commands = ostestr {posargs} [testenv:pep8] -basepython = python3.5 +basepython = python3 deps = -r{toxinidir}/test-requirements.txt commands = flake8 {posargs} src unit_tests diff --git a/unit_tests/__init__.py b/unit_tests/__init__.py index 7b5dac4..298636b 100644 --- a/unit_tests/__init__.py +++ b/unit_tests/__init__.py @@ -20,3 +20,14 @@ sys.path.append('src/lib') # Mock out charmhelpers so that we can test without it. import charms_openstack.test_mocks # noqa charms_openstack.test_mocks.mock_charmhelpers() + + +def mock_more_stuff(): + charmhelpers = charms_openstack.test_mocks.charmhelpers + sys.modules['charmhelpers.core.hookenv.charm_dir'] = ( + charmhelpers.core.hookenv.charm_dir + ) + charmhelpers.core.hookenv.charm_dir.return_value = "/tmp" + + +mock_more_stuff() diff --git a/unit_tests/test_lib_charm_openstack_dragent.py b/unit_tests/test_lib_charm_openstack_dragent.py index bc80df5..9f802b8 100644 --- a/unit_tests/test_lib_charm_openstack_dragent.py +++ b/unit_tests/test_lib_charm_openstack_dragent.py @@ -85,8 +85,8 @@ class TestTransportURLAdapter(Helper): self.assertEqual(tua.transport_url, _expected) def test_port(self): - _ssl_port = 2765 - _port = 5672 + _ssl_port = '2765' + _port = '5672' amqp = mock.MagicMock() tua = dragent.TransportURLAdapter(amqp) # Default Port