def _get_default_api_cluster(): global _DEFAULT_API_CLUSTER if _DEFAULT_API_CLUSTER is None: # removes circular ref between client / cluster import vmware_nsx.nsxlib.v3.cluster as nsx_cluster _DEFAULT_API_CLUSTER = nsx_cluster.NSXClusteredAPI() return _DEFAULT_API_CLUSTER
def __init__(self, username=None, password=None, retries=None, insecure=None, ca_file=None, concurrent_connections=None, http_timeout=None, http_read_timeout=None, conn_idle_timeout=None, http_provider=None, max_attempts=DEFAULT_MAX_ATTEMPTS): self.max_attempts = max_attempts self.cluster = cluster.NSXClusteredAPI( username=username, password=password, retries=retries, insecure=insecure, ca_file=ca_file, concurrent_connections=concurrent_connections, http_timeout=http_timeout, http_read_timeout=http_read_timeout, conn_idle_timeout=conn_idle_timeout, http_provider=http_provider) self.client = client.NSX3Client(self.cluster) super(NsxLib, self).__init__()
def _test_health(self, validate_fn, expected_health): conf_managers = ['8.9.10.11', '9.10.11.12'] cfg.CONF.set_override('nsx_api_managers', conf_managers, 'nsx_v3') mock_provider = mock.Mock() mock_provider.default_scheme = 'https' mock_provider.validate_connection = validate_fn api = cluster.NSXClusteredAPI(http_provider=mock_provider) self.assertEqual(api.health, expected_health)
def test_conf_providers_with_scheme(self): conf_managers = ['http://8.9.10.11:8080', 'https://9.10.11.12:4433'] cfg.CONF.set_override('nsx_api_managers', conf_managers, 'nsx_v3') mock_provider = mock.Mock() mock_provider.default_scheme = 'https' mock_provider.validate_connection = _validate_conn_up api = cluster.NSXClusteredAPI(http_provider=mock_provider) self._assert_providers(api, [(urlparse.urlparse(p).netloc, p) for p in conf_managers])
def test_conf_providers_no_scheme(self): conf_managers = ['8.9.10.11', '9.10.11.12:4433'] cfg.CONF.set_override('nsx_api_managers', conf_managers, 'nsx_v3') mock_provider = mock.Mock() mock_provider.default_scheme = 'https' mock_provider.validate_connection = _validate_conn_up api = cluster.NSXClusteredAPI(http_provider=mock_provider) self._assert_providers(api, [(p, "https://%s" % p) for p in conf_managers])
def test_cluster_validate_with_exception(self): conf_managers = ['8.9.10.11', '9.10.11.12', '10.11.12.13'] cfg.CONF.set_override('nsx_api_managers', conf_managers, 'nsx_v3') mock_provider = mock.Mock() mock_provider.default_scheme = 'https' mock_provider.validate_connection = _validate_conn_down api = cluster.NSXClusteredAPI(http_provider=mock_provider) self.assertEqual(len(api.endpoints), 3) self.assertRaises(nsxlib_exc.ServiceClusterUnavailable, api.get, 'api/v1/transport-zones')
def test_conns_per_pool(self): cfg.CONF.set_override('concurrent_connections', 11, 'nsx_v3') conf_managers = ['8.9.10.11', '9.10.11.12:4433'] cfg.CONF.set_override('nsx_api_managers', conf_managers, 'nsx_v3') mock_provider = mock.Mock() mock_provider.default_scheme = 'https' mock_provider.validate_connection = _validate_conn_up api = cluster.NSXClusteredAPI(http_provider=mock_provider) for ep_id, ep in api.endpoints.items(): self.assertEqual(ep.pool.max_size, 11)
def setUp(self, plugin=PLUGIN_NAME, ext_mgr=None, service_plugins=None): self._patchers = [] self.mock_api = nsx_v3_mocks.MockRequestSessionApi() nsxlib_testcase.NsxClientTestCase.setup_conf_overrides() self.cluster = nsx_cluster.NSXClusteredAPI( http_provider=nsxlib_testcase.MemoryMockAPIProvider(self.mock_api)) def _patch_object(*args, **kwargs): patcher = mock.patch.object(*args, **kwargs) patcher.start() self._patchers.append(patcher) def _new_cluster(*args, **kwargs): return self.cluster self.mocked_rest_fns(nsx_plugin.security.firewall, 'nsxclient', mock_cluster=self.cluster) self.mocked_rest_fns(nsx_plugin.router.nsxlib, 'client', mock_cluster=self.cluster) mock_client_module = mock.Mock() mock_cluster_module = mock.Mock() mocked_client = self.new_mocked_client(nsx_client.NSX3Client, mock_cluster=self.cluster) mock_cluster_module.NSXClusteredAPI.return_value = self.cluster mock_client_module.NSX3Client.return_value = mocked_client _patch_object(nsx_plugin, 'nsx_client', new=mock_client_module) _patch_object(nsx_plugin, 'nsx_cluster', new=mock_cluster_module) # populate pre-existing mock resources cluster_id = uuidutils.generate_uuid() self.mock_api.post('api/v1/logical-routers', data=jsonutils.dumps({ 'display_name': nsx_v3_mocks.DEFAULT_TIER0_ROUTER_UUID, 'router_type': "TIER0", 'id': nsx_v3_mocks.DEFAULT_TIER0_ROUTER_UUID, 'edge_cluster_id': cluster_id }), headers=nsx_client.JSONRESTClient._DEFAULT_HEADERS) self.mock_api.post('api/v1/edge-clusters', data=jsonutils.dumps({ 'id': cluster_id, 'members': [{ 'member_index': 0 }, { 'member_index': 1 }] }), headers=nsx_client.JSONRESTClient._DEFAULT_HEADERS) self.mock_api.post('api/v1/switching-profiles', data=jsonutils.dumps({ 'id': uuidutils.generate_uuid(), 'display_name': nsx_plugin.NSX_V3_NO_PSEC_PROFILE_NAME }), headers=nsx_client.JSONRESTClient._DEFAULT_HEADERS) self.mock_api.post('api/v1/transport-zones', data=jsonutils.dumps({ 'id': uuidutils.generate_uuid(), 'display_name': nsxlib_testcase.NSX_TZ_NAME }), headers=nsx_client.JSONRESTClient._DEFAULT_HEADERS) self.mock_api.post('api/v1/bridge-clusters', data=jsonutils.dumps({ 'id': uuidutils.generate_uuid(), 'display_name': nsx_v3_mocks.NSX_BRIDGE_CLUSTER_NAME }), headers=nsx_client.JSONRESTClient._DEFAULT_HEADERS) super(NsxV3PluginTestCaseMixin, self).setUp(plugin=plugin, ext_mgr=ext_mgr) self.maxDiff = None