NSXv: Add unit tests for md_proxy
Change-Id: I699bd1ab2c6e28401c38a78e7479d0c3ba3a27f4
This commit is contained in:
parent
846ec955ab
commit
4ba3a7dbac
@ -403,7 +403,7 @@ class NsxVMetadataProxyHandler(object):
|
|||||||
'name': 'metadata_proxy_router',
|
'name': 'metadata_proxy_router',
|
||||||
'admin_state_up': True,
|
'admin_state_up': True,
|
||||||
'router_type': 'exclusive',
|
'router_type': 'exclusive',
|
||||||
'tenant_id': None}}
|
'tenant_id': nsxv_constants.INTERNAL_TENANT_ID}}
|
||||||
|
|
||||||
rtr = self.nsxv_plugin.create_router(
|
rtr = self.nsxv_plugin.create_router(
|
||||||
context,
|
context,
|
||||||
@ -432,7 +432,7 @@ class NsxVMetadataProxyHandler(object):
|
|||||||
'fixed_ips': constants.ATTR_NOT_SPECIFIED,
|
'fixed_ips': constants.ATTR_NOT_SPECIFIED,
|
||||||
'mac_address': constants.ATTR_NOT_SPECIFIED,
|
'mac_address': constants.ATTR_NOT_SPECIFIED,
|
||||||
'port_security_enabled': False,
|
'port_security_enabled': False,
|
||||||
'tenant_id': None}}
|
'tenant_id': nsxv_constants.INTERNAL_TENANT_ID}}
|
||||||
|
|
||||||
port = self.nsxv_plugin.base_create_port(context, port_data)
|
port = self.nsxv_plugin.base_create_port(context, port_data)
|
||||||
|
|
||||||
@ -660,7 +660,7 @@ class NsxVMetadataProxyHandler(object):
|
|||||||
'fixed_ips': constants.ATTR_NOT_SPECIFIED,
|
'fixed_ips': constants.ATTR_NOT_SPECIFIED,
|
||||||
'mac_address': constants.ATTR_NOT_SPECIFIED,
|
'mac_address': constants.ATTR_NOT_SPECIFIED,
|
||||||
'port_security_enabled': False,
|
'port_security_enabled': False,
|
||||||
'tenant_id': None}}
|
'tenant_id': nsxv_constants.INTERNAL_TENANT_ID}}
|
||||||
|
|
||||||
self.nsxv_plugin.base_create_port(ctx, port_data)
|
self.nsxv_plugin.base_create_port(ctx, port_data)
|
||||||
|
|
||||||
|
281
vmware_nsx/tests/unit/nsx_v/test_md_proxy.py
Normal file
281
vmware_nsx/tests/unit/nsx_v/test_md_proxy.py
Normal file
@ -0,0 +1,281 @@
|
|||||||
|
# Copyright (c) 2017 OpenStack Foundation.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
# implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
import mock
|
||||||
|
|
||||||
|
from oslo_config import cfg
|
||||||
|
|
||||||
|
from vmware_nsx.db import nsxv_db
|
||||||
|
from vmware_nsx.db import nsxv_models
|
||||||
|
from vmware_nsx.plugins.nsx_v.vshield import edge_utils
|
||||||
|
from vmware_nsx.tests.unit.nsx_v import test_plugin
|
||||||
|
|
||||||
|
|
||||||
|
PLUGIN_NAME = 'vmware_nsx.plugin.NsxVPlugin'
|
||||||
|
|
||||||
|
|
||||||
|
# Run all relevant plugin tests when the metadata proxy is enabled.
|
||||||
|
# Those tests does not specifically test the md_proxy. just verify that
|
||||||
|
# nothing gets broken.
|
||||||
|
class NsxVPluginWithMdV2TestCase(test_plugin.NsxVPluginV2TestCase):
|
||||||
|
|
||||||
|
def setUp(self, plugin=PLUGIN_NAME,
|
||||||
|
ext_mgr=None,
|
||||||
|
service_plugins=None):
|
||||||
|
# Add the metadata configuration
|
||||||
|
cfg.CONF.set_override('mgt_net_moid', 'net-1', group="nsxv")
|
||||||
|
cfg.CONF.set_override('mgt_net_proxy_ips', ['2.2.2.2'], group="nsxv")
|
||||||
|
cfg.CONF.set_override('mgt_net_proxy_netmask', '255.255.255.0',
|
||||||
|
group="nsxv")
|
||||||
|
cfg.CONF.set_override('mgt_net_default_gateway', '1.1.1.1',
|
||||||
|
group="nsxv")
|
||||||
|
cfg.CONF.set_override('nova_metadata_ips', ['3.3.3.3'], group="nsxv")
|
||||||
|
|
||||||
|
# Add some mocks required for the md code
|
||||||
|
mock_alloc_vnic = mock.patch.object(nsxv_db, 'allocate_edge_vnic')
|
||||||
|
mock_alloc_vnic_inst = mock_alloc_vnic.start()
|
||||||
|
mock_alloc_vnic_inst.return_value = nsxv_models.NsxvEdgeVnicBinding
|
||||||
|
mock.patch.object(edge_utils, "_update_internal_interface").start()
|
||||||
|
|
||||||
|
super(NsxVPluginWithMdV2TestCase, self).setUp(
|
||||||
|
plugin=plugin, ext_mgr=ext_mgr,
|
||||||
|
service_plugins=service_plugins)
|
||||||
|
|
||||||
|
|
||||||
|
class TestNetworksWithMdV2(test_plugin.TestNetworksV2,
|
||||||
|
NsxVPluginWithMdV2TestCase):
|
||||||
|
|
||||||
|
# Skip all the tests that count networks, as there is an
|
||||||
|
# additional internal network for metadata.
|
||||||
|
def test_list_networks_with_sort_native(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_networks_without_pk_in_fields_pagination_emulated(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_networks_with_sort_emulated(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_networks_with_shared(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_networks_without_pk_in_fields_pagination_native(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_networks_with_parameters(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_networks_with_pagination_native(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_networks_with_pagination_reverse_emulated(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_networks(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_networks_with_pagination_emulated(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_networks_with_pagination_reverse_native(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_networks_with_fields(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_create_networks_bulk_wrong_input(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_create_networks_bulk_native_plugin_failure(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_create_networks_bulk_native_quotas(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_create_networks_bulk_emulated_plugin_failure(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
|
||||||
|
class TestSubnetsWithMdV2(test_plugin.TestSubnetsV2,
|
||||||
|
NsxVPluginWithMdV2TestCase):
|
||||||
|
# Skip all the tests that count subnets, as there is an
|
||||||
|
# additional internal subnet for metadata.
|
||||||
|
def test_list_subnets_with_sort_native(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_subnets_with_sort_emulated(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_subnets_with_pagination_native(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_subnets_with_parameter(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_subnets_with_pagination_emulated(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_subnets_shared(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_list_subnets(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_create_subnets_bulk_native_plugin_failure(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_create_subnets_bulk_native_quotas(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_create_subnets_bulk_emulated_plugin_failure(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
|
||||||
|
class TestExclusiveRouterWithMdTestCase(
|
||||||
|
test_plugin.TestExclusiveRouterTestCase,
|
||||||
|
NsxVPluginWithMdV2TestCase):
|
||||||
|
|
||||||
|
# Skip all the tests that count firewall rules, as there are
|
||||||
|
# some MD specific rules
|
||||||
|
def test_router_set_gateway_with_nosnat(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_interfaces_different_tenants_update_firewall(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_interfaces_with_update_firewall(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
# Skip all the tests that count routers or ports, as there is
|
||||||
|
# an additional router for the md proxy
|
||||||
|
def test_router_list_with_pagination_reverse(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_list_with_sort(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_list_with_pagination(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_list(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_add_interface_delete_port_after_failure(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_create_router_fail_at_the_backend(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_floatingip_delete_router_intf_with_subnet_id_returns_409(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_floatingip_delete_router_intf_with_port_id_returns_409(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
|
||||||
|
class TestVdrWithMdTestCase(test_plugin.TestVdrTestCase,
|
||||||
|
NsxVPluginWithMdV2TestCase):
|
||||||
|
# Skip all the tests that count firewall rules, as there are
|
||||||
|
# some MD specific rules
|
||||||
|
def test_router_set_gateway_with_nosnat(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_interfaces_different_tenants_update_firewall(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_interfaces_with_update_firewall(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
# Skip all the tests that count routers or ports, as there is
|
||||||
|
# an additional router for the md proxy
|
||||||
|
def test_router_list_with_pagination_reverse(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_list_with_sort(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_list_with_pagination(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_list(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_add_interface_delete_port_after_failure(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_create_router_fail_at_the_backend(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_floatingip_delete_router_intf_with_subnet_id_returns_409(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_floatingip_delete_router_intf_with_port_id_returns_409(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
#TODO(asarfaty): fix some mocks so those tests will pass
|
||||||
|
def test_router_plr_binding_default_size(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_plr_binding_configured_size(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_plr_binding_default_az(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_plr_binding_with_az(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
|
||||||
|
class TestSharedRouterWithMdTestCase(test_plugin.TestSharedRouterTestCase,
|
||||||
|
NsxVPluginWithMdV2TestCase):
|
||||||
|
# Skip all the tests that count firewall rules, as there are
|
||||||
|
# some MD specific rules
|
||||||
|
def test_router_set_gateway_with_nosnat(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_routers_set_gateway_with_nosnat(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_interfaces_different_tenants_update_firewall(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_interfaces_with_update_firewall(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
# Skip all the tests that count routers or ports, as there is
|
||||||
|
# an additional router for the md proxy
|
||||||
|
def test_router_list_with_pagination_reverse(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_list_with_sort(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_list_with_pagination(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_list(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_router_add_interface_delete_port_after_failure(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_create_router_fail_at_the_backend(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_floatingip_delete_router_intf_with_subnet_id_returns_409(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
||||||
|
|
||||||
|
def test_floatingip_delete_router_intf_with_port_id_returns_409(self):
|
||||||
|
self.skipTest("The test is not suitable for the metadata test case")
|
@ -177,6 +177,8 @@ class NsxVPluginV2TestCase(test_plugin.NeutronDbPluginV2TestCase):
|
|||||||
plugin_instance._get_edge_id_by_rtr_id = mock.Mock()
|
plugin_instance._get_edge_id_by_rtr_id = mock.Mock()
|
||||||
plugin_instance._get_edge_id_by_rtr_id.return_value = False
|
plugin_instance._get_edge_id_by_rtr_id.return_value = False
|
||||||
plugin_instance.edge_manager.is_dhcp_opt_enabled = True
|
plugin_instance.edge_manager.is_dhcp_opt_enabled = True
|
||||||
|
# call init_complete manually. The event is not called in unit tests
|
||||||
|
plugin_instance.init_complete(None, None, {})
|
||||||
|
|
||||||
def _get_core_plugin_with_dvs(self):
|
def _get_core_plugin_with_dvs(self):
|
||||||
# enable dvs features to allow policy with QOS
|
# enable dvs features to allow policy with QOS
|
||||||
|
@ -72,6 +72,9 @@ class FakeVcns(object):
|
|||||||
self._spoofguard_policies = []
|
self._spoofguard_policies = []
|
||||||
self._ipam_pools = {}
|
self._ipam_pools = {}
|
||||||
|
|
||||||
|
def do_request(self, method, uri, params=None, format='json', **kwargs):
|
||||||
|
pass
|
||||||
|
|
||||||
def set_fake_nsx_api(self, fake_nsx_api):
|
def set_fake_nsx_api(self, fake_nsx_api):
|
||||||
self._fake_nsx_api = fake_nsx_api
|
self._fake_nsx_api = fake_nsx_api
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user