Example #1
0
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
Example #2
0
    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__()
Example #3
0
    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)
Example #4
0
    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])
Example #5
0
    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])
Example #6
0
    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')
Example #7
0
    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)
Example #8
0
    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