Ejemplo n.º 1
0
 def _prepare_nat_rules_for_delete_tests(self):
     lrouter = routerlib.create_lrouter(self.fake_cluster,
                                        uuidutils.generate_uuid(), 'pippo',
                                        'fake-lrouter', '10.0.0.1')
     # v2 or v3 makes no difference for this test
     with mock.patch.object(self.fake_cluster.api_client,
                            'get_nvp_version',
                            new=lambda: NvpApiClient.NVPVersion('2.0')):
         routerlib.create_lrouter_snat_rule(
             self.fake_cluster,
             lrouter['uuid'],
             '10.0.0.2',
             '10.0.0.2',
             order=220,
             match_criteria={'source_ip_addresses': '192.168.0.0/24'})
         routerlib.create_lrouter_snat_rule(
             self.fake_cluster,
             lrouter['uuid'],
             '10.0.0.3',
             '10.0.0.3',
             order=200,
             match_criteria={'source_ip_addresses': '192.168.0.2/32'})
         routerlib.create_lrouter_dnat_rule(
             self.fake_cluster,
             lrouter['uuid'],
             '192.168.0.2',
             order=200,
             match_criteria={'destination_ip_addresses': '10.0.0.3'})
     return lrouter
Ejemplo n.º 2
0
    def setUp(self):
        self.fc = fake.FakeClient(STUBS_PATH)
        self.mock_nsxapi = mock.patch(NSXAPI_NAME, autospec=True)
        instance = self.mock_nsxapi.start()
        instance.return_value.login.return_value = "the_cookie"
        # Choose 3.0, but the version is irrelevant for the aim of
        # these tests as calls are throwing up errors anyway
        fake_version = getattr(self, 'fake_version', "3.0")
        instance.return_value.get_nvp_version.return_value = (
            api_client.NVPVersion(fake_version))

        def _faulty_request(*args, **kwargs):
            raise api_client.NvpApiException

        instance.return_value.request.side_effect = _faulty_request
        self.fake_cluster = cluster.NSXCluster(name='fake-cluster',
                                               nsx_controllers=['1.1.1.1:999'],
                                               default_tz_uuid=_uuid(),
                                               nsx_user='******',
                                               nsx_password='******')
        self.fake_cluster.api_client = api_client.NVPApiHelper(
            ('1.1.1.1', '999', True), self.fake_cluster.nsx_user,
            self.fake_cluster.nsx_password, self.fake_cluster.req_timeout,
            self.fake_cluster.http_timeout, self.fake_cluster.retries,
            self.fake_cluster.redirects)

        super(NsxlibNegativeBaseTestCase, self).setUp()
        self.addCleanup(self.fc.reset_all)
        self.addCleanup(self.mock_nsxapi.stop)
Ejemplo n.º 3
0
    def _test_version_dependent_update_lrouter(self, version):
        def foo(*args, **kwargs):
            return version

        foo_func_dict = {
            'update_lrouter': {
                2: {
                    -1: foo
                },
                3: {
                    -1: foo,
                    2: foo
                }
            }
        }

        with mock.patch.object(self.fake_cluster.api_client,
                               'get_nvp_version',
                               return_value=NvpApiClient.NVPVersion(version)):
            with mock.patch.dict(routerlib.ROUTER_FUNC_DICT,
                                 foo_func_dict,
                                 clear=True):
                return routerlib.update_lrouter(
                    self.fake_cluster,
                    'foo_router_id',
                    'foo_router_name',
                    'foo_nexthop',
                    routes={'foo_destination': 'foo_address'})
Ejemplo n.º 4
0
 def test_agentless_extensions_version_fail(self):
     q_config.parse(['--config-file', NVP_BASE_CONF_PATH,
                     '--config-file', NVP_INI_AGENTLESS_PATH])
     cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
     self.assertEqual(config.AgentModes.AGENTLESS,
                      cfg.CONF.NVP.agent_mode)
     with mock.patch.object(nvp_client.NVPApiHelper,
                            'get_nvp_version',
                            return_value=nvp_client.NVPVersion("3.2")):
         self.assertRaises(exceptions.NvpPluginException, NeutronManager)
Ejemplo n.º 5
0
 def _create_lrouter(self, version, neutron_id=None, distributed=None):
     with mock.patch.object(
         self.fake_cluster.api_client, 'get_nvp_version',
         return_value=api_client.NVPVersion(version)):
         if not neutron_id:
             neutron_id = uuidutils.generate_uuid()
         lrouter = routerlib.create_lrouter(
             self.fake_cluster, neutron_id, 'pippo',
             'fake-lrouter', '10.0.0.1', distributed=distributed)
         return routerlib.get_lrouter(self.fake_cluster,
                                      lrouter['uuid'])
Ejemplo n.º 6
0
    def setUp(self):
        # mock nvp api client
        self.fc = fake_nvpapiclient.FakeClient(STUBS_PATH)
        mock_nvpapi = mock.patch(NVPAPI_NAME, autospec=True)
        # Avoid runs of the synchronizer looping call
        # These unit tests will excplicitly invoke synchronization
        patch_sync = mock.patch.object(sync, '_start_loopingcall')
        self.mock_nvpapi = mock_nvpapi.start()
        patch_sync.start()
        self.mock_nvpapi.return_value.login.return_value = "the_cookie"
        # Emulate tests against NVP 3.x
        self.mock_nvpapi.return_value.get_nvp_version.return_value = (
            NvpApiClient.NVPVersion("3.1"))

        def _fake_request(*args, **kwargs):
            return self.fc.fake_request(*args, **kwargs)

        self.mock_nvpapi.return_value.request.side_effect = _fake_request
        self.fake_cluster = nsx_cluster.NSXCluster(
            name='fake-cluster',
            nsx_controllers=['1.1.1.1:999'],
            default_tz_uuid=_uuid(),
            nsx_user='******',
            nsx_password='******')
        self.fake_cluster.api_client = NvpApiClient.NVPApiHelper(
            ('1.1.1.1', '999', True), self.fake_cluster.nsx_user,
            self.fake_cluster.nsx_password, self.fake_cluster.req_timeout,
            self.fake_cluster.http_timeout, self.fake_cluster.retries,
            self.fake_cluster.redirects)
        # Instantiate Neutron plugin
        # and setup needed config variables
        args = [
            '--config-file',
            get_fake_conf('neutron.conf.test'), '--config-file',
            get_fake_conf('nsx.ini.test')
        ]
        config.parse(args=args)
        cfg.CONF.set_override('allow_overlapping_ips', True)
        self._plugin = NeutronPlugin.NvpPluginV2()
        # Mock neutron manager plugin load functions to speed up tests
        mock_nm_get_plugin = mock.patch('neutron.manager.NeutronManager.'
                                        'get_plugin')
        mock_nm_get_service_plugins = mock.patch(
            'neutron.manager.NeutronManager.get_service_plugins')
        self.mock_nm_get_plugin = mock_nm_get_plugin.start()
        self.mock_nm_get_plugin.return_value = self._plugin
        mock_nm_get_service_plugins.start()
        super(NvpSyncTestCase, self).setUp()
        self.addCleanup(self.fc.reset_all)
        self.addCleanup(patch_sync.stop)
        self.addCleanup(mock_nvpapi.stop)
        self.addCleanup(mock_nm_get_plugin.stop)
        self.addCleanup(mock_nm_get_service_plugins.stop)
Ejemplo n.º 7
0
 def test_agentless_extensions_unmet_deps_fail(self):
     q_config.parse([
         '--config-file', BASE_CONF_PATH, '--config-file',
         NSX_INI_AGENTLESS_PATH
     ])
     cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
     self.assertEqual(config.AgentModes.AGENTLESS, cfg.CONF.NSX.agent_mode)
     with mock.patch.object(api_client.NVPApiHelper,
                            'get_nvp_version',
                            return_value=api_client.NVPVersion("3.2")):
         with mock.patch.object(lsnlib,
                                'service_cluster_exists',
                                return_value=False):
             self.assertRaises(exceptions.NvpPluginException,
                               NeutronManager)
Ejemplo n.º 8
0
 def _test_create_router_nosnat_rule(self, version, expected=1):
     lrouter = routerlib.create_lrouter(self.fake_cluster,
                                        uuidutils.generate_uuid(), 'pippo',
                                        'fake-lrouter', '10.0.0.1')
     with mock.patch.object(self.fake_cluster.api_client,
                            'get_nvp_version',
                            new=lambda: NvpApiClient.NVPVersion(version)):
         routerlib.create_lrouter_nosnat_rule(
             self.fake_cluster,
             lrouter['uuid'],
             order=100,
             match_criteria={'destination_ip_addresses': '192.168.0.0/24'})
         rules = routerlib.query_nat_rules(self.fake_cluster,
                                           lrouter['uuid'])
         # NoSNAT rules do not exist in V2
         self.assertEqual(len(rules), expected)
Ejemplo n.º 9
0
 def _test_create_router_dnat_rule(self, version, dest_port=None):
     lrouter = routerlib.create_lrouter(self.fake_cluster,
                                        uuidutils.generate_uuid(),
                                        'pippo',
                                        'fake-lrouter',
                                        '10.0.0.1')
     with mock.patch.object(self.fake_cluster.api_client,
                            'get_nvp_version',
                            return_value=api_client.NVPVersion(version)):
         routerlib.create_lrouter_dnat_rule(
             self.fake_cluster, lrouter['uuid'], '192.168.0.2', order=200,
             dest_port=dest_port,
             match_criteria={'destination_ip_addresses': '10.0.0.3'})
         rules = routerlib.query_nat_rules(
             self.fake_cluster, lrouter['uuid'])
         self.assertEqual(len(rules), 1)
Ejemplo n.º 10
0
 def _test_create_router_snat_rule(self, version):
     lrouter = routerlib.create_lrouter(self.fake_cluster,
                                        uuidutils.generate_uuid(),
                                        'pippo',
                                        'fake-lrouter',
                                        '10.0.0.1')
     with mock.patch.object(self.fake_cluster.api_client,
                            'get_nvp_version',
                            new=lambda: api_client.NVPVersion(version)):
         routerlib.create_lrouter_snat_rule(
             self.fake_cluster, lrouter['uuid'],
             '10.0.0.2', '10.0.0.2', order=200,
             match_criteria={'source_ip_addresses': '192.168.0.24'})
         rules = routerlib.query_nat_rules(
             self.fake_cluster, lrouter['uuid'])
         self.assertEqual(len(rules), 1)
Ejemplo n.º 11
0
 def test_agentless_extensions(self):
     q_config.parse(['--config-file', NVP_BASE_CONF_PATH,
                     '--config-file', NVP_INI_AGENTLESS_PATH])
     cfg.CONF.set_override('core_plugin', PLUGIN_NAME)
     self.assertEqual(config.AgentModes.AGENTLESS,
                      cfg.CONF.NVP.agent_mode)
     # The version returned from NVP does not really matter here
     with mock.patch.object(nvp_client.NVPApiHelper,
                            'get_nvp_version',
                            return_value=nvp_client.NVPVersion("9.9")):
         with mock.patch.object(lsnlib,
                                'service_cluster_exists',
                                return_value=True):
             plugin = NeutronManager().get_plugin()
             self.assertNotIn('agent',
                              plugin.supported_extension_aliases)
             self.assertNotIn('dhcp_agent_scheduler',
                              plugin.supported_extension_aliases)
Ejemplo n.º 12
0
 def _test_create_lrouter_dnat_rule(self, version):
     with mock.patch.object(self.fake_cluster.api_client,
                            'get_nvp_version',
                            new=lambda: NvpApiClient.NVPVersion(version)):
         tenant_id = 'pippo'
         lrouter = routerlib.create_lrouter(self.fake_cluster,
                                            uuidutils.generate_uuid(),
                                            tenant_id, 'fake_router',
                                            '192.168.0.1')
         nat_rule = routerlib.create_lrouter_dnat_rule(
             self.fake_cluster,
             lrouter['uuid'],
             '10.0.0.99',
             match_criteria={'destination_ip_addresses': '192.168.0.5'})
         uri = nvplib._build_uri_path(routerlib.LROUTERNAT_RESOURCE,
                                      nat_rule['uuid'], lrouter['uuid'])
         resp_obj = nvplib.do_request("GET", uri, cluster=self.fake_cluster)
         self.assertEqual('DestinationNatRule', resp_obj['type'])
         self.assertEqual('192.168.0.5',
                          resp_obj['match']['destination_ip_addresses'])
Ejemplo n.º 13
0
    def setUp(self):
        self.fc = fake.FakeClient(STUBS_PATH)
        self.mock_nsxapi = mock.patch(NSXAPI_NAME, autospec=True)
        instance = self.mock_nsxapi.start()
        instance.return_value.login.return_value = "the_cookie"
        fake_version = getattr(self, 'fake_version', "3.0")
        instance.return_value.get_nvp_version.return_value = (
            api_client.NVPVersion(fake_version))

        instance.return_value.request.side_effect = self.fc.fake_request
        self.fake_cluster = cluster.NSXCluster(name='fake-cluster',
                                               nsx_controllers=['1.1.1.1:999'],
                                               default_tz_uuid=_uuid(),
                                               nsx_user='******',
                                               nsx_password='******')
        self.fake_cluster.api_client = api_client.NVPApiHelper(
            ('1.1.1.1', '999', True), self.fake_cluster.nsx_user,
            self.fake_cluster.nsx_password, self.fake_cluster.req_timeout,
            self.fake_cluster.http_timeout, self.fake_cluster.retries,
            self.fake_cluster.redirects)

        super(NsxlibTestCase, self).setUp()
        self.addCleanup(self.fc.reset_all)
        self.addCleanup(self.mock_nsxapi.stop)
Ejemplo n.º 14
0
 def test_function_handling_with_obsolete_major(self):
     version = api_client.NVPVersion('1.2')
     self.assertRaises(NotImplementedError,
                       versioning.get_function_by_version,
                       routerlib.ROUTER_FUNC_DICT,
                       'create_lrouter', version)
Ejemplo n.º 15
0
 def test_function_handling_with_newer_major(self):
     version = api_client.NVPVersion('5.2')
     function = versioning.get_function_by_version(
         routerlib.ROUTER_FUNC_DICT, 'create_lrouter', version)
     self.assertEqual(routerlib.create_explicit_routing_lrouter,
                      function)
Ejemplo n.º 16
0
 def test_function_handling_missing_minor(self):
     version = api_client.NVPVersion('2.0')
     function = versioning.get_function_by_version(
         routerlib.ROUTER_FUNC_DICT, 'create_lrouter', version)
     self.assertEqual(routerlib.create_implicit_routing_lrouter,
                      function)
Ejemplo n.º 17
0
 def test_function_handling_with_both_major_and_minor(self):
     version = NvpApiClient.NVPVersion('3.2')
     function = versioning.get_function_by_version(
         routerlib.ROUTER_FUNC_DICT, 'create_lrouter', version)
     self.assertEqual(routerlib.create_explicit_routing_lrouter,
                      function)