From 56cc254d63de3a7f2ffd6983b05a4f0d2d1bab66 Mon Sep 17 00:00:00 2001 From: Michael Johnson Date: Fri, 5 Jan 2018 14:39:03 -0800 Subject: [PATCH] Re-enable octavia functional tests This patch re-enables the octavia functional tests for openstacksdk. This patch fixes a bug in the l7rule l7policy URI parameter. This patch also fixes the test_inventory functional test that fails if there are multiple networks in the tenant. Change-Id: Iacdc92ec78a9ca0ad3a82172f426ed91a4b9023d --- .zuul.yaml | 25 +++++++++++++++++++ openstack/load_balancer/v2/_proxy.py | 12 ++++----- openstack/load_balancer/v2/l7_rule.py | 11 ++++---- .../tests/functional/cloud/test_devstack.py | 1 + .../tests/functional/cloud/test_inventory.py | 2 +- .../tests/unit/load_balancer/test_l7rule.py | 2 +- .../tests/unit/load_balancer/test_proxy.py | 12 ++++----- 7 files changed, 46 insertions(+), 19 deletions(-) diff --git a/.zuul.yaml b/.zuul.yaml index b28f069c9..92983a485 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -121,10 +121,35 @@ parent: openstacksdk-functional-devstack-base description: | Run openstacksdk functional tests against a master devstack + required-projects: + - openstack/octavia vars: devstack_localrc: Q_SERVICE_PLUGIN_CLASSES: qos Q_ML2_PLUGIN_EXT_DRIVERS: qos,port_security + DISABLE_AMP_IMAGE_BUILD: True + devstack_local_conf: + post-config: + $OCTAVIA_CONF: + DEFAULT: + debug: True + controller_worker: + amphora_driver: amphora_noop_driver + compute_driver: compute_noop_driver + network_driver: network_noop_driver + certificates: + cert_manager: local_cert_manager + devstack_plugins: + octavia: https://git.openstack.org/openstack/octavia + devstack_services: + octavia: true + o-api: true + o-cw: true + o-hm: true + o-hk: true + neutron-qos: true + tox_environment: + OPENSTACKSDK_HAS_OCTAVIA: 1 - job: name: openstacksdk-functional-devstack-python3 diff --git a/openstack/load_balancer/v2/_proxy.py b/openstack/load_balancer/v2/_proxy.py index 575cbcc4d..8f02b1cd1 100644 --- a/openstack/load_balancer/v2/_proxy.py +++ b/openstack/load_balancer/v2/_proxy.py @@ -570,7 +570,7 @@ class Proxy(proxy2.BaseProxy): :rtype: :class:`~openstack.load_balancer.v2.l7_rule.L7Rule` """ l7policyobj = self._get_resource(_l7policy.L7Policy, l7_policy) - return self._create(_l7rule.L7Rule, l7_policy_id=l7policyobj.id, + return self._create(_l7rule.L7Rule, l7policy_id=l7policyobj.id, **attrs) def delete_l7_rule(self, l7rule, l7_policy, ignore_missing=True): @@ -592,7 +592,7 @@ class Proxy(proxy2.BaseProxy): """ l7policyobj = self._get_resource(_l7policy.L7Policy, l7_policy) self._delete(_l7rule.L7Rule, l7rule, ignore_missing=ignore_missing, - l7_policy_id=l7policyobj.id) + l7policy_id=l7policyobj.id) def find_l7_rule(self, name_or_id, l7_policy, ignore_missing=True): """Find a single l7rule @@ -613,7 +613,7 @@ class Proxy(proxy2.BaseProxy): l7policyobj = self._get_resource(_l7policy.L7Policy, l7_policy) return self._find(_l7rule.L7Rule, name_or_id, ignore_missing=ignore_missing, - l7_policy_id=l7policyobj.id) + l7policy_id=l7policyobj.id) def get_l7_rule(self, l7rule, l7_policy): """Get a single l7rule @@ -631,7 +631,7 @@ class Proxy(proxy2.BaseProxy): """ l7policyobj = self._get_resource(_l7policy.L7Policy, l7_policy) return self._get(_l7rule.L7Rule, l7rule, - l7_policy_id=l7policyobj.id) + l7policy_id=l7policyobj.id) def l7_rules(self, l7_policy, **query): """Return a generator of l7rules @@ -647,7 +647,7 @@ class Proxy(proxy2.BaseProxy): """ l7policyobj = self._get_resource(_l7policy.L7Policy, l7_policy) return self._list(_l7rule.L7Rule, paginated=True, - l7_policy_id=l7policyobj.id, **query) + l7policy_id=l7policyobj.id, **query) def update_l7_rule(self, l7rule, l7_policy, **attrs): """Update a l7rule @@ -666,4 +666,4 @@ class Proxy(proxy2.BaseProxy): """ l7policyobj = self._get_resource(_l7policy.L7Policy, l7_policy) return self._update(_l7rule.L7Rule, l7rule, - l7_policy_id=l7policyobj.id, **attrs) + l7policy_id=l7policyobj.id, **attrs) diff --git a/openstack/load_balancer/v2/l7_rule.py b/openstack/load_balancer/v2/l7_rule.py index f9dca5432..bc6af906e 100644 --- a/openstack/load_balancer/v2/l7_rule.py +++ b/openstack/load_balancer/v2/l7_rule.py @@ -17,7 +17,7 @@ from openstack import resource2 as resource class L7Rule(resource.Resource): resource_key = 'rule' resources_key = 'rules' - base_path = '/v2.0/lbaas/l7policies/%(l7_policy_id)s/rules' + base_path = '/v2.0/lbaas/l7policies/%(l7policy_id)s/rules' service = lb_service.LoadBalancerService() # capabilities @@ -28,9 +28,10 @@ class L7Rule(resource.Resource): allow_delete = True _query_mapping = resource.QueryParameters( - 'compare_type', 'created_at', 'invert', 'key', 'l7_policy_id', - 'project_id', 'provisioning_status', 'type', 'updated_at', - 'rule_value', 'operating_status', is_admin_state_up='admin_state_up', + 'compare_type', 'created_at', 'invert', 'key', 'project_id', + 'provisioning_status', 'type', 'updated_at', 'rule_value', + 'operating_status', is_admin_state_up='admin_state_up', + l7_policy_id='l7policy_id', ) #: Properties @@ -46,7 +47,7 @@ class L7Rule(resource.Resource): #: The key to use for the comparison. key = resource.Body('key') #: The ID of the associated l7 policy - l7_policy_id = resource.URI('l7_policy_id') + l7_policy_id = resource.URI('l7policy_id') #: The operating status of this l7rule operating_status = resource.Body('operating_status') #: The ID of the project this l7policy is associated with. diff --git a/openstack/tests/functional/cloud/test_devstack.py b/openstack/tests/functional/cloud/test_devstack.py index e84d7745d..1a58b703d 100644 --- a/openstack/tests/functional/cloud/test_devstack.py +++ b/openstack/tests/functional/cloud/test_devstack.py @@ -34,6 +34,7 @@ class TestDevstack(base.BaseFunctionalTestCase): ('heat', dict(env='HEAT', service='orchestration')), ('magnum', dict(env='MAGNUM', service='container-infra')), ('neutron', dict(env='NEUTRON', service='network')), + ('octavia', dict(env='OCTAVIA', service='load-balancer')), ('swift', dict(env='SWIFT', service='object-store')), ] diff --git a/openstack/tests/functional/cloud/test_inventory.py b/openstack/tests/functional/cloud/test_inventory.py index 219594742..263d20250 100644 --- a/openstack/tests/functional/cloud/test_inventory.py +++ b/openstack/tests/functional/cloud/test_inventory.py @@ -40,7 +40,7 @@ class TestInventory(base.BaseFunctionalTestCase): self.addCleanup(self._cleanup_server) server = self.operator_cloud.create_server( name=self.server_name, image=self.image, flavor=self.flavor, - wait=True, auto_ip=True) + wait=True, auto_ip=True, network='public') self.server_id = server['id'] def _cleanup_server(self): diff --git a/openstack/tests/unit/load_balancer/test_l7rule.py b/openstack/tests/unit/load_balancer/test_l7rule.py index fd2e3cf81..70046c9b2 100644 --- a/openstack/tests/unit/load_balancer/test_l7rule.py +++ b/openstack/tests/unit/load_balancer/test_l7rule.py @@ -38,7 +38,7 @@ class TestL7Rule(testtools.TestCase): test_l7rule = l7_rule.L7Rule() self.assertEqual('rule', test_l7rule.resource_key) self.assertEqual('rules', test_l7rule.resources_key) - self.assertEqual('/v2.0/lbaas/l7policies/%(l7_policy_id)s/rules', + self.assertEqual('/v2.0/lbaas/l7policies/%(l7policy_id)s/rules', test_l7rule.base_path) self.assertEqual('load-balancer', test_l7rule.service.service_type) self.assertTrue(test_l7rule.allow_create) diff --git a/openstack/tests/unit/load_balancer/test_proxy.py b/openstack/tests/unit/load_balancer/test_proxy.py index f3690d827..4db9ad239 100644 --- a/openstack/tests/unit/load_balancer/test_proxy.py +++ b/openstack/tests/unit/load_balancer/test_proxy.py @@ -203,33 +203,33 @@ class TestLoadBalancerProxy(test_proxy_base2.TestProxyBase): l7_rule.L7Rule, paginated=True, method_kwargs={'l7_policy': self.L7_POLICY_ID}, - expected_kwargs={'l7_policy_id': self.L7_POLICY_ID}) + expected_kwargs={'l7policy_id': self.L7_POLICY_ID}) def test_l7_rule_get(self): self.verify_get(self.proxy.get_l7_rule, l7_rule.L7Rule, method_kwargs={'l7_policy': self.L7_POLICY_ID}, - expected_kwargs={'l7_policy_id': self.L7_POLICY_ID}) + expected_kwargs={'l7policy_id': self.L7_POLICY_ID}) def test_l7_rule_create(self): self.verify_create(self.proxy.create_l7_rule, l7_rule.L7Rule, method_kwargs={'l7_policy': self.L7_POLICY_ID}, - expected_kwargs={'l7_policy_id': self.L7_POLICY_ID}) + expected_kwargs={'l7policy_id': self.L7_POLICY_ID}) def test_l7_rule_delete(self): self.verify_delete(self.proxy.delete_l7_rule, l7_rule.L7Rule, True, method_kwargs={'l7_policy': self.L7_POLICY_ID}, - expected_kwargs={'l7_policy_id': self.L7_POLICY_ID}) + expected_kwargs={'l7policy_id': self.L7_POLICY_ID}) def test_l7_rule_find(self): self._verify2('openstack.proxy2.BaseProxy._find', self.proxy.find_l7_rule, method_args=["RULE", self.L7_POLICY_ID], expected_args=[l7_rule.L7Rule, "RULE"], - expected_kwargs={"l7_policy_id": self.L7_POLICY_ID, + expected_kwargs={"l7policy_id": self.L7_POLICY_ID, "ignore_missing": True}) def test_l7_rule_update(self): @@ -237,4 +237,4 @@ class TestLoadBalancerProxy(test_proxy_base2.TestProxyBase): self.proxy.update_l7_rule, method_args=["RULE", self.L7_POLICY_ID], expected_args=[l7_rule.L7Rule, "RULE"], - expected_kwargs={"l7_policy_id": self.L7_POLICY_ID}) + expected_kwargs={"l7policy_id": self.L7_POLICY_ID})