Fix H302 violations in unit tests

H302 violation is reported by flake8 when importing separated objects from
modules instead of importing the whole module.
e.g.   from package.module import function
       function()
is changed to
       from package import module
       module.function()

Change-Id: Ic6975f39c755ded54149a9c01fcdcfaf78c596fc
Partial-Bug: #1291032
This commit is contained in:
Jakub Libosvar 2014-04-18 15:30:32 +02:00
parent 26182d6819
commit c2634fa580
80 changed files with 1372 additions and 1295 deletions

View File

@ -17,7 +17,7 @@
import eventlet import eventlet
import fixtures import fixtures
from six.moves import xrange from six import moves
from neutron.agent.linux import async_process from neutron.agent.linux import async_process
from neutron.tests import base from neutron.tests import base
@ -29,7 +29,7 @@ class TestAsyncProcess(base.BaseTestCase):
super(TestAsyncProcess, self).setUp() super(TestAsyncProcess, self).setUp()
self.test_file_path = self.useFixture( self.test_file_path = self.useFixture(
fixtures.TempDir()).join("test_async_process.tmp") fixtures.TempDir()).join("test_async_process.tmp")
self.data = [str(x) for x in xrange(4)] self.data = [str(x) for x in moves.xrange(4)]
with file(self.test_file_path, 'w') as f: with file(self.test_file_path, 'w') as f:
f.writelines('%s\n' % item for item in self.data) f.writelines('%s\n' % item for item in self.data)

View File

@ -26,7 +26,7 @@ from webob import exc
from neutron import context from neutron import context
from neutron.extensions import portbindings from neutron.extensions import portbindings
from neutron.manager import NeutronManager from neutron import manager
from neutron.tests.unit import test_db_plugin from neutron.tests.unit import test_db_plugin
@ -75,7 +75,7 @@ class PortBindingsTestCase(test_db_plugin.NeutronDbPluginV2TestCase):
self._check_response_no_portbindings(non_admin_port) self._check_response_no_portbindings(non_admin_port)
def test_ports_vif_details(self): def test_ports_vif_details(self):
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
cfg.CONF.set_default('allow_overlapping_ips', True) cfg.CONF.set_default('allow_overlapping_ips', True)
with contextlib.nested(self.port(), self.port()): with contextlib.nested(self.port(), self.port()):
ctx = context.get_admin_context() ctx = context.get_admin_context()

View File

@ -12,10 +12,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
try: import collections
from collections import OrderedDict
except ImportError:
from ordereddict import OrderedDict
import mock import mock
from oslo.config import cfg from oslo.config import cfg
import testtools import testtools
@ -29,6 +26,12 @@ from neutron.plugins.openvswitch.common import constants
from neutron.tests import base from neutron.tests import base
from neutron.tests import tools from neutron.tests import tools
try:
OrderedDict = collections.OrderedDict
except AttributeError:
import ordereddict
OrderedDict = ordereddict.OrderedDict
OVS_LINUX_KERN_VERS_WITHOUT_VXLAN = "3.12.0" OVS_LINUX_KERN_VERS_WITHOUT_VXLAN = "3.12.0"

View File

@ -17,7 +17,7 @@
# #
# @author Kevin Benton # @author Kevin Benton
from contextlib import nested import contextlib
import mock import mock
from neutron.tests.unit.bigswitch import test_router_db from neutron.tests.unit.bigswitch import test_router_db
@ -32,7 +32,7 @@ HTTPCON = SERVERMANAGER + '.httplib.HTTPConnection'
class CapabilitiesTests(test_router_db.RouterDBTestBase): class CapabilitiesTests(test_router_db.RouterDBTestBase):
def test_floating_ip_capability(self): def test_floating_ip_capability(self):
with nested( with contextlib.nested(
mock.patch(SERVERRESTCALL, mock.patch(SERVERRESTCALL,
return_value=(200, None, None, '["floatingip"]')), return_value=(200, None, None, '["floatingip"]')),
mock.patch(SERVERPOOL + '.rest_create_floatingip', mock.patch(SERVERPOOL + '.rest_create_floatingip',
@ -51,7 +51,7 @@ class CapabilitiesTests(test_router_db.RouterDBTestBase):
) )
def test_floating_ip_capability_neg(self): def test_floating_ip_capability_neg(self):
with nested( with contextlib.nested(
mock.patch(SERVERRESTCALL, mock.patch(SERVERRESTCALL,
return_value=(200, None, None, '[""]')), return_value=(200, None, None, '[""]')),
mock.patch(SERVERPOOL + '.rest_update_network', mock.patch(SERVERPOOL + '.rest_update_network',

View File

@ -15,7 +15,7 @@
# #
# @author: Kevin Benton, Big Switch Networks # @author: Kevin Benton, Big Switch Networks
from contextlib import nested import contextlib
import mock import mock
@ -164,7 +164,7 @@ class TestRestProxyAgent(BaseAgentTestCase):
'CONF.RESTPROXYAGENT.polling_interval': 5, 'CONF.RESTPROXYAGENT.polling_interval': 5,
'CONF.RESTPROXYAGENT.virtual_switch_type': 'ovs', 'CONF.RESTPROXYAGENT.virtual_switch_type': 'ovs',
'CONF.AGENT.root_helper': 'helper'} 'CONF.AGENT.root_helper': 'helper'}
with nested( with contextlib.nested(
mock.patch(AGENTMOD + '.cfg', **cfg_attrs), mock.patch(AGENTMOD + '.cfg', **cfg_attrs),
mock.patch(NEUTRONCFG), mock.patch(NEUTRONCFG),
mock.patch(PLCONFIG), mock.patch(PLCONFIG),

View File

@ -15,7 +15,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from contextlib import nested import contextlib
import mock import mock
from oslo.config import cfg from oslo.config import cfg
import webob.exc import webob.exc
@ -23,7 +23,7 @@ import webob.exc
from neutron.common import constants from neutron.common import constants
from neutron import context from neutron import context
from neutron.extensions import portbindings from neutron.extensions import portbindings
from neutron.manager import NeutronManager from neutron import manager
from neutron.tests.unit import _test_extension_portbindings as test_bindings from neutron.tests.unit import _test_extension_portbindings as test_bindings
from neutron.tests.unit.bigswitch import fake_server from neutron.tests.unit.bigswitch import fake_server
from neutron.tests.unit.bigswitch import test_base from neutron.tests.unit.bigswitch import test_base
@ -106,7 +106,7 @@ class TestBigSwitchProxyPortsV2(test_plugin.TestPortsV2,
self._list_ports('json', netid=netid))['ports'] self._list_ports('json', netid=netid))['ports']
def test_rollback_for_port_create(self): def test_rollback_for_port_create(self):
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
with self.subnet() as s: with self.subnet() as s:
# stop normal patch # stop normal patch
self.httpPatch.stop() self.httpPatch.stop()
@ -183,7 +183,7 @@ class TestBigSwitchProxyPortsV2(test_plugin.TestPortsV2,
def test_create404_triggers_sync(self): def test_create404_triggers_sync(self):
# allow async port thread for this patch # allow async port thread for this patch
self.spawn_p.stop() self.spawn_p.stop()
with nested( with contextlib.nested(
self.subnet(), self.subnet(),
patch(HTTPCON, create=True, patch(HTTPCON, create=True,
new=fake_server.HTTPConnectionMock404), new=fake_server.HTTPConnectionMock404),
@ -192,7 +192,7 @@ class TestBigSwitchProxyPortsV2(test_plugin.TestPortsV2,
) as (s, mock_http, mock_send_all): ) as (s, mock_http, mock_send_all):
with self.port(subnet=s, device_id='somedevid') as p: with self.port(subnet=s, device_id='somedevid') as p:
# wait for the async port thread to finish # wait for the async port thread to finish
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
plugin.evpool.waitall() plugin.evpool.waitall()
call = mock.call( call = mock.call(
send_routers=True, send_ports=True, send_floating_ips=True, send_routers=True, send_ports=True, send_floating_ips=True,
@ -259,7 +259,7 @@ class TestBigSwitchProxyNetworksV2(test_plugin.TestNetworksV2,
def _get_networks(self, tenant_id): def _get_networks(self, tenant_id):
ctx = context.Context('', tenant_id) ctx = context.Context('', tenant_id)
return NeutronManager.get_plugin().get_networks(ctx) return manager.NeutronManager.get_plugin().get_networks(ctx)
def test_rollback_on_network_create(self): def test_rollback_on_network_create(self):
tid = test_api_v2._uuid() tid = test_api_v2._uuid()
@ -306,7 +306,7 @@ class TestBigSwitchProxySubnetsV2(test_plugin.TestSubnetsV2,
class TestBigSwitchProxySync(BigSwitchProxyPluginV2TestCase): class TestBigSwitchProxySync(BigSwitchProxyPluginV2TestCase):
def test_send_data(self): def test_send_data(self):
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
result = plugin_obj._send_all_data() result = plugin_obj._send_all_data()
self.assertEqual(result[0], 200) self.assertEqual(result[0], 200)

View File

@ -21,15 +21,15 @@
import contextlib import contextlib
import copy import copy
from mock import patch import mock
from oslo.config import cfg from oslo.config import cfg
from six.moves import xrange from six import moves
from webob import exc from webob import exc
from neutron.common.test_lib import test_config from neutron.common import test_lib
from neutron import context from neutron import context
from neutron.extensions import l3 from neutron.extensions import l3
from neutron.manager import NeutronManager from neutron import manager
from neutron.openstack.common import uuidutils from neutron.openstack.common import uuidutils
from neutron.plugins.bigswitch.extensions import routerrule from neutron.plugins.bigswitch.extensions import routerrule
from neutron.tests.unit.bigswitch import fake_server from neutron.tests.unit.bigswitch import fake_server
@ -79,12 +79,12 @@ class RouterDBTestBase(test_base.BigSwitchTestBase,
super(RouterDBTestBase, self).setUp(plugin=self._plugin_name, super(RouterDBTestBase, self).setUp(plugin=self._plugin_name,
ext_mgr=ext_mgr) ext_mgr=ext_mgr)
cfg.CONF.set_default('allow_overlapping_ips', False) cfg.CONF.set_default('allow_overlapping_ips', False)
self.plugin_obj = NeutronManager.get_plugin() self.plugin_obj = manager.NeutronManager.get_plugin()
self.startHttpPatch() self.startHttpPatch()
def tearDown(self): def tearDown(self):
super(RouterDBTestBase, self).tearDown() super(RouterDBTestBase, self).tearDown()
del test_config['config_files'] del test_lib.test_config['config_files']
class RouterDBTestCase(RouterDBTestBase, class RouterDBTestCase(RouterDBTestBase,
@ -172,7 +172,7 @@ class RouterDBTestCase(RouterDBTestBase,
port_id=p1['port']['id'], port_id=p1['port']['id'],
tenant_id=tenant1_id) tenant_id=tenant1_id)
self.httpPatch.stop() self.httpPatch.stop()
multiFloatPatch = patch( multiFloatPatch = mock.patch(
HTTPCON, HTTPCON,
new=fake_server.VerifyMultiTenantFloatingIP) new=fake_server.VerifyMultiTenantFloatingIP)
multiFloatPatch.start() multiFloatPatch.start()
@ -301,7 +301,7 @@ class RouterDBTestCase(RouterDBTestBase,
def test_send_data(self): def test_send_data(self):
fmt = 'json' fmt = 'json'
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
with self.router() as r: with self.router() as r:
r_id = r['router']['id'] r_id = r['router']['id']
@ -502,7 +502,7 @@ class RouterDBTestCase(RouterDBTestBase,
cfg.CONF.set_override('max_router_rules', 10, 'ROUTER') cfg.CONF.set_override('max_router_rules', 10, 'ROUTER')
with self.router() as r: with self.router() as r:
rules = [] rules = []
for i in xrange(1, 12): for i in moves.xrange(1, 12):
rule = {'source': 'any', 'nexthops': [], rule = {'source': 'any', 'nexthops': [],
'destination': '1.1.1.' + str(i) + '/32', 'destination': '1.1.1.' + str(i) + '/32',
'action': 'permit'} 'action': 'permit'}
@ -514,7 +514,7 @@ class RouterDBTestCase(RouterDBTestBase,
def test_rollback_on_router_create(self): def test_rollback_on_router_create(self):
tid = test_api_v2._uuid() tid = test_api_v2._uuid()
self.httpPatch.stop() self.httpPatch.stop()
with patch(HTTPCON, new=fake_server.HTTPConnectionMock500): with mock.patch(HTTPCON, new=fake_server.HTTPConnectionMock500):
self._create_router('json', tid) self._create_router('json', tid)
self.assertTrue(len(self._get_routers(tid)) == 0) self.assertTrue(len(self._get_routers(tid)) == 0)
@ -522,7 +522,7 @@ class RouterDBTestCase(RouterDBTestBase,
with self.router() as r: with self.router() as r:
data = {'router': {'name': 'aNewName'}} data = {'router': {'name': 'aNewName'}}
self.httpPatch.stop() self.httpPatch.stop()
with patch(HTTPCON, new=fake_server.HTTPConnectionMock500): with mock.patch(HTTPCON, new=fake_server.HTTPConnectionMock500):
self.new_update_request( self.new_update_request(
'routers', data, r['router']['id']).get_response(self.api) 'routers', data, r['router']['id']).get_response(self.api)
self.httpPatch.start() self.httpPatch.start()
@ -533,7 +533,7 @@ class RouterDBTestCase(RouterDBTestBase,
def test_rollback_on_router_delete(self): def test_rollback_on_router_delete(self):
with self.router() as r: with self.router() as r:
self.httpPatch.stop() self.httpPatch.stop()
with patch(HTTPCON, new=fake_server.HTTPConnectionMock500): with mock.patch(HTTPCON, new=fake_server.HTTPConnectionMock500):
self._delete('routers', r['router']['id'], self._delete('routers', r['router']['id'],
expected_code=exc.HTTPInternalServerError.code) expected_code=exc.HTTPInternalServerError.code)
self.httpPatch.start() self.httpPatch.start()

View File

@ -14,7 +14,7 @@
# #
# @author: Kevin Benton, kevin.benton@bigswitch.com # @author: Kevin Benton, kevin.benton@bigswitch.com
# #
from contextlib import nested import contextlib
import httplib import httplib
import socket import socket
import ssl import ssl
@ -22,7 +22,7 @@ import ssl
import mock import mock
from oslo.config import cfg from oslo.config import cfg
from neutron.manager import NeutronManager from neutron import manager
from neutron.openstack.common import importutils from neutron.openstack.common import importutils
from neutron.plugins.bigswitch import servermanager from neutron.plugins.bigswitch import servermanager
from neutron.tests.unit.bigswitch import test_restproxy_plugin as test_rp from neutron.tests.unit.bigswitch import test_restproxy_plugin as test_rp
@ -61,7 +61,7 @@ class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
'[ABCD:EF01:2345:6789:ABCD:EF01:2345:6789]') '[ABCD:EF01:2345:6789:ABCD:EF01:2345:6789]')
def test_sticky_cert_fetch_fail(self): def test_sticky_cert_fetch_fail(self):
pl = NeutronManager.get_plugin() pl = manager.NeutronManager.get_plugin()
pl.servers.ssl = True pl.servers.ssl = True
with mock.patch( with mock.patch(
'ssl.get_server_certificate', 'ssl.get_server_certificate',
@ -75,10 +75,10 @@ class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
sslgetmock.assert_has_calls([mock.call(('example.org', 443))]) sslgetmock.assert_has_calls([mock.call(('example.org', 443))])
def test_consistency_watchdog(self): def test_consistency_watchdog(self):
pl = NeutronManager.get_plugin() pl = manager.NeutronManager.get_plugin()
pl.servers.capabilities = [] pl.servers.capabilities = []
self.watch_p.stop() self.watch_p.stop()
with nested( with contextlib.nested(
mock.patch('eventlet.sleep'), mock.patch('eventlet.sleep'),
mock.patch( mock.patch(
SERVERMANAGER + '.ServerPool.rest_call', SERVERMANAGER + '.ServerPool.rest_call',
@ -119,7 +119,7 @@ class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
'HASH2') 'HASH2')
def test_file_put_contents(self): def test_file_put_contents(self):
pl = NeutronManager.get_plugin() pl = manager.NeutronManager.get_plugin()
with mock.patch(SERVERMANAGER + '.open', create=True) as omock: with mock.patch(SERVERMANAGER + '.open', create=True) as omock:
pl.servers._file_put_contents('somepath', 'contents') pl.servers._file_put_contents('somepath', 'contents')
omock.assert_has_calls([mock.call('somepath', 'w')]) omock.assert_has_calls([mock.call('somepath', 'w')])
@ -128,7 +128,7 @@ class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
]) ])
def test_combine_certs_to_file(self): def test_combine_certs_to_file(self):
pl = NeutronManager.get_plugin() pl = manager.NeutronManager.get_plugin()
with mock.patch(SERVERMANAGER + '.open', create=True) as omock: with mock.patch(SERVERMANAGER + '.open', create=True) as omock:
omock.return_value.__enter__().read.return_value = 'certdata' omock.return_value.__enter__().read.return_value = 'certdata'
pl.servers._combine_certs_to_file(['cert1.pem', 'cert2.pem'], pl.servers._combine_certs_to_file(['cert1.pem', 'cert2.pem'],
@ -248,7 +248,7 @@ class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
self.assertEqual(resp, (0, None, None, None)) self.assertEqual(resp, (0, None, None, None))
def test_cert_get_fail(self): def test_cert_get_fail(self):
pl = NeutronManager.get_plugin() pl = manager.NeutronManager.get_plugin()
pl.servers.ssl = True pl.servers.ssl = True
with mock.patch('os.path.exists', return_value=False): with mock.patch('os.path.exists', return_value=False):
self.assertRaises(cfg.Error, self.assertRaises(cfg.Error,
@ -256,11 +256,11 @@ class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
*('example.org', 443)) *('example.org', 443))
def test_cert_make_dirs(self): def test_cert_make_dirs(self):
pl = NeutronManager.get_plugin() pl = manager.NeutronManager.get_plugin()
pl.servers.ssl = True pl.servers.ssl = True
cfg.CONF.set_override('ssl_sticky', False, 'RESTPROXY') cfg.CONF.set_override('ssl_sticky', False, 'RESTPROXY')
# pretend base dir exists, 3 children don't, and host cert does # pretend base dir exists, 3 children don't, and host cert does
with nested( with contextlib.nested(
mock.patch('os.path.exists', side_effect=[True, False, False, mock.patch('os.path.exists', side_effect=[True, False, False,
False, True]), False, True]),
mock.patch('os.makedirs'), mock.patch('os.makedirs'),
@ -279,7 +279,7 @@ class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
self.assertEqual(makemock.call_count, 3) self.assertEqual(makemock.call_count, 3)
def test_no_cert_error(self): def test_no_cert_error(self):
pl = NeutronManager.get_plugin() pl = manager.NeutronManager.get_plugin()
pl.servers.ssl = True pl.servers.ssl = True
cfg.CONF.set_override('ssl_sticky', False, 'RESTPROXY') cfg.CONF.set_override('ssl_sticky', False, 'RESTPROXY')
# pretend base dir exists and 3 children do, but host cert doesn't # pretend base dir exists and 3 children do, but host cert doesn't
@ -296,18 +296,18 @@ class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
self.assertEqual(exmock.call_count, 5) self.assertEqual(exmock.call_count, 5)
def test_action_success(self): def test_action_success(self):
pl = NeutronManager.get_plugin() pl = manager.NeutronManager.get_plugin()
self.assertTrue(pl.servers.action_success((200,))) self.assertTrue(pl.servers.action_success((200,)))
def test_server_failure(self): def test_server_failure(self):
pl = NeutronManager.get_plugin() pl = manager.NeutronManager.get_plugin()
self.assertTrue(pl.servers.server_failure((404,))) self.assertTrue(pl.servers.server_failure((404,)))
# server failure has an ignore codes option # server failure has an ignore codes option
self.assertFalse(pl.servers.server_failure((404,), self.assertFalse(pl.servers.server_failure((404,),
ignore_codes=[404])) ignore_codes=[404]))
def test_conflict_triggers_sync(self): def test_conflict_triggers_sync(self):
pl = NeutronManager.get_plugin() pl = manager.NeutronManager.get_plugin()
with mock.patch( with mock.patch(
SERVERMANAGER + '.ServerProxy.rest_call', SERVERMANAGER + '.ServerProxy.rest_call',
return_value=(httplib.CONFLICT, 0, 0, 0) return_value=(httplib.CONFLICT, 0, 0, 0)
@ -322,7 +322,7 @@ class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
]) ])
def test_conflict_sync_raises_error_without_topology(self): def test_conflict_sync_raises_error_without_topology(self):
pl = NeutronManager.get_plugin() pl = manager.NeutronManager.get_plugin()
pl.servers.get_topo_function = None pl.servers.get_topo_function = None
with mock.patch( with mock.patch(
SERVERMANAGER + '.ServerProxy.rest_call', SERVERMANAGER + '.ServerProxy.rest_call',
@ -337,7 +337,7 @@ class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
) )
def test_floating_calls(self): def test_floating_calls(self):
pl = NeutronManager.get_plugin() pl = manager.NeutronManager.get_plugin()
with mock.patch(SERVERMANAGER + '.ServerPool.rest_action') as ramock: with mock.patch(SERVERMANAGER + '.ServerPool.rest_action') as ramock:
pl.servers.rest_create_floatingip('tenant', {'id': 'somefloat'}) pl.servers.rest_create_floatingip('tenant', {'id': 'somefloat'})
pl.servers.rest_update_floatingip('tenant', {'name': 'myfl'}, 'id') pl.servers.rest_update_floatingip('tenant', {'name': 'myfl'}, 'id')

View File

@ -14,7 +14,7 @@
# #
# @author: Kevin Benton, kevin.benton@bigswitch.com # @author: Kevin Benton, kevin.benton@bigswitch.com
# #
from contextlib import nested import contextlib
import os import os
import mock import mock
@ -101,7 +101,7 @@ class TestSslSticky(test_ssl_certificate_base):
def test_sticky_cert(self): def test_sticky_cert(self):
# SSL connection should be successful and cert should be cached # SSL connection should be successful and cert should be cached
with nested( with contextlib.nested(
mock.patch(HTTPS, new=fake_server.HTTPSHostValidation), mock.patch(HTTPS, new=fake_server.HTTPSHostValidation),
self.network() self.network()
): ):
@ -241,7 +241,7 @@ class TestSslNoValidation(test_ssl_certificate_base):
def test_validation_disabled(self): def test_validation_disabled(self):
# SSL connection should be successful without any certificates # SSL connection should be successful without any certificates
# If not, attempting to create a network will raise an exception # If not, attempting to create a network will raise an exception
with nested( with contextlib.nested(
mock.patch(HTTPS, new=fake_server.HTTPSNoValidation), mock.patch(HTTPS, new=fake_server.HTTPSNoValidation),
self.network() self.network()
): ):

View File

@ -19,7 +19,7 @@
from neutron.openstack.common import log as logging from neutron.openstack.common import log as logging
from neutron.plugins.cisco.common import cisco_exceptions as c_exc from neutron.plugins.cisco.common import cisco_exceptions as c_exc
from neutron.plugins.cisco.n1kv.n1kv_client import Client as n1kv_client from neutron.plugins.cisco.n1kv import n1kv_client
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
@ -31,7 +31,7 @@ _resource_metadata = {'port': ['id', 'macAddress', 'ipAddress', 'subnetId'],
'ipAddress', 'subnetId']} 'ipAddress', 'subnetId']}
class TestClient(n1kv_client): class TestClient(n1kv_client.Client):
def __init__(self, **kwargs): def __init__(self, **kwargs):
self.broken = False self.broken = False

View File

@ -18,7 +18,7 @@
# @author: Abhishek Raut, Cisco Systems Inc. # @author: Abhishek Raut, Cisco Systems Inc.
# @author: Rudrajit Tapadar, Cisco Systems Inc. # @author: Rudrajit Tapadar, Cisco Systems Inc.
from six.moves import xrange from six import moves
from sqlalchemy.orm import exc as s_exc from sqlalchemy.orm import exc as s_exc
from testtools import matchers from testtools import matchers
@ -147,7 +147,7 @@ class VlanAllocationsTest(base.BaseTestCase):
def test_vlan_pool(self): def test_vlan_pool(self):
vlan_ids = set() vlan_ids = set()
for x in xrange(VLAN_MIN, VLAN_MAX + 1): for x in moves.xrange(VLAN_MIN, VLAN_MAX + 1):
(physical_network, seg_type, (physical_network, seg_type,
vlan_id, m_ip) = n1kv_db_v2.reserve_vlan(self.session, self.net_p) vlan_id, m_ip) = n1kv_db_v2.reserve_vlan(self.session, self.net_p)
self.assertEqual(physical_network, PHYS_NET) self.assertEqual(physical_network, PHYS_NET)
@ -242,7 +242,7 @@ class VxlanAllocationsTest(base.BaseTestCase,
def test_vxlan_pool(self): def test_vxlan_pool(self):
vxlan_ids = set() vxlan_ids = set()
for x in xrange(VXLAN_MIN, VXLAN_MAX + 1): for x in moves.xrange(VXLAN_MIN, VXLAN_MAX + 1):
vxlan = n1kv_db_v2.reserve_vxlan(self.session, self.net_p) vxlan = n1kv_db_v2.reserve_vxlan(self.session, self.net_p)
vxlan_id = vxlan[2] vxlan_id = vxlan[2]
self.assertThat(vxlan_id, matchers.GreaterThan(VXLAN_MIN - 1)) self.assertThat(vxlan_id, matchers.GreaterThan(VXLAN_MIN - 1))

View File

@ -18,7 +18,7 @@
# @author: Abhishek Raut, Cisco Systems Inc. # @author: Abhishek Raut, Cisco Systems Inc.
# @author: Sourabh Patwardhan, Cisco Systems Inc. # @author: Sourabh Patwardhan, Cisco Systems Inc.
from mock import patch import mock
from neutron.api import extensions as neutron_extensions from neutron.api import extensions as neutron_extensions
from neutron.api.v2 import attributes from neutron.api.v2 import attributes
@ -184,7 +184,7 @@ class N1kvPluginTestCase(test_plugin.NeutronDbPluginV2TestCase):
# in the unit tests, we need to 'fake' it by patching the HTTP library # in the unit tests, we need to 'fake' it by patching the HTTP library
# itself. We install a patch for a fake HTTP connection class. # itself. We install a patch for a fake HTTP connection class.
# Using __name__ to avoid having to enter the full module path. # Using __name__ to avoid having to enter the full module path.
http_patcher = patch(n1kv_client.httplib2.__name__ + ".Http") http_patcher = mock.patch(n1kv_client.httplib2.__name__ + ".Http")
FakeHttpConnection = http_patcher.start() FakeHttpConnection = http_patcher.start()
# Now define the return values for a few functions that may be called # Now define the return values for a few functions that may be called
# on any instance of the fake HTTP connection class. # on any instance of the fake HTTP connection class.
@ -201,13 +201,14 @@ class N1kvPluginTestCase(test_plugin.NeutronDbPluginV2TestCase):
# in the background. # in the background.
# Return a dummy VSM IP address # Return a dummy VSM IP address
get_vsm_hosts_patcher = patch(n1kv_client.__name__ + get_vsm_hosts_patcher = mock.patch(n1kv_client.__name__ +
".Client._get_vsm_hosts") ".Client._get_vsm_hosts")
fake_get_vsm_hosts = get_vsm_hosts_patcher.start() fake_get_vsm_hosts = get_vsm_hosts_patcher.start()
fake_get_vsm_hosts.return_value = ["127.0.0.1"] fake_get_vsm_hosts.return_value = ["127.0.0.1"]
# Return dummy user profiles # Return dummy user profiles
get_cred_name_patcher = patch(cdb.__name__ + ".get_credential_name") get_cred_name_patcher = mock.patch(cdb.__name__ +
".get_credential_name")
fake_get_cred_name = get_cred_name_patcher.start() fake_get_cred_name = get_cred_name_patcher.start()
fake_get_cred_name.return_value = {"user_name": "admin", fake_get_cred_name.return_value = {"user_name": "admin",
"password": "admin_password"} "password": "admin_password"}
@ -495,8 +496,8 @@ class TestN1kvPorts(test_plugin.TestPortsV2,
"""Test parameters for first port create sent to the VSM.""" """Test parameters for first port create sent to the VSM."""
profile_obj = self._make_test_policy_profile(name='test_profile') profile_obj = self._make_test_policy_profile(name='test_profile')
with self.network() as network: with self.network() as network:
client_patch = patch(n1kv_client.__name__ + ".Client", client_patch = mock.patch(n1kv_client.__name__ + ".Client",
new=fake_client.TestClientInvalidRequest) new=fake_client.TestClientInvalidRequest)
client_patch.start() client_patch.start()
data = {'port': {n1kv.PROFILE_ID: profile_obj.id, data = {'port': {n1kv.PROFILE_ID: profile_obj.id,
'tenant_id': self.tenant_id, 'tenant_id': self.tenant_id,
@ -510,8 +511,8 @@ class TestN1kvPorts(test_plugin.TestPortsV2,
def test_create_next_port_invalid_parameters_fail(self): def test_create_next_port_invalid_parameters_fail(self):
"""Test parameters for subsequent port create sent to the VSM.""" """Test parameters for subsequent port create sent to the VSM."""
with self.port() as port: with self.port() as port:
client_patch = patch(n1kv_client.__name__ + ".Client", client_patch = mock.patch(n1kv_client.__name__ + ".Client",
new=fake_client.TestClientInvalidRequest) new=fake_client.TestClientInvalidRequest)
client_patch.start() client_patch.start()
data = {'port': {n1kv.PROFILE_ID: port['port']['n1kv:profile_id'], data = {'port': {n1kv.PROFILE_ID: port['port']['n1kv:profile_id'],
'tenant_id': port['port']['tenant_id'], 'tenant_id': port['port']['tenant_id'],
@ -524,8 +525,8 @@ class TestN1kvPorts(test_plugin.TestPortsV2,
class TestN1kvPolicyProfiles(N1kvPluginTestCase): class TestN1kvPolicyProfiles(N1kvPluginTestCase):
def test_populate_policy_profile(self): def test_populate_policy_profile(self):
client_patch = patch(n1kv_client.__name__ + ".Client", client_patch = mock.patch(n1kv_client.__name__ + ".Client",
new=fake_client.TestClient) new=fake_client.TestClient)
client_patch.start() client_patch.start()
instance = n1kv_neutron_plugin.N1kvNeutronPluginV2() instance = n1kv_neutron_plugin.N1kvNeutronPluginV2()
instance._populate_policy_profiles() instance._populate_policy_profiles()
@ -537,11 +538,11 @@ class TestN1kvPolicyProfiles(N1kvPluginTestCase):
def test_populate_policy_profile_delete(self): def test_populate_policy_profile_delete(self):
# Patch the Client class with the TestClient class # Patch the Client class with the TestClient class
with patch(n1kv_client.__name__ + ".Client", with mock.patch(n1kv_client.__name__ + ".Client",
new=fake_client.TestClient): new=fake_client.TestClient):
# Patch the _get_total_profiles() method to return a custom value # Patch the _get_total_profiles() method to return a custom value
with patch(fake_client.__name__ + with mock.patch(fake_client.__name__ +
'.TestClient._get_total_profiles') as obj_inst: '.TestClient._get_total_profiles') as obj_inst:
# Return 3 policy profiles # Return 3 policy profiles
obj_inst.return_value = 3 obj_inst.return_value = 3
plugin = manager.NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()

View File

@ -31,7 +31,7 @@ from neutron.db import db_base_plugin_v2 as base_plugin
from neutron.db import l3_db from neutron.db import l3_db
from neutron.extensions import portbindings from neutron.extensions import portbindings
from neutron.extensions import providernet as provider from neutron.extensions import providernet as provider
from neutron.manager import NeutronManager from neutron import manager
from neutron.openstack.common import gettextutils from neutron.openstack.common import gettextutils
from neutron.plugins.cisco.common import cisco_constants as const from neutron.plugins.cisco.common import cisco_constants as const
from neutron.plugins.cisco.common import cisco_exceptions as c_exc from neutron.plugins.cisco.common import cisco_exceptions as c_exc
@ -136,7 +136,7 @@ class CiscoNetworkPluginV2TestCase(test_db_plugin.NeutronDbPluginV2TestCase):
new=NEXUS_IP_ADDR).start() new=NEXUS_IP_ADDR).start()
def _get_plugin_ref(self): def _get_plugin_ref(self):
return getattr(NeutronManager.get_plugin(), return getattr(manager.NeutronManager.get_plugin(),
"_model")._plugins[const.VSWITCH_PLUGIN] "_model")._plugins[const.VSWITCH_PLUGIN]
@contextlib.contextmanager @contextlib.contextmanager
@ -239,7 +239,7 @@ class TestCiscoGetAttribute(CiscoNetworkPluginV2TestCase):
This test also checks that this operation does not cause This test also checks that this operation does not cause
excessive nesting of calls to deepcopy. excessive nesting of calls to deepcopy.
""" """
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
def _lazy_gettext(msg): def _lazy_gettext(msg):
return gettextutils.Message(msg, domain='neutron') return gettextutils.Message(msg, domain='neutron')

View File

@ -21,8 +21,7 @@ from oslo.config import cfg
import testtools import testtools
import webob.exc import webob.exc
from neutron.api.extensions import ExtensionMiddleware from neutron.api import extensions
from neutron.api.extensions import PluginAwareExtensionManager
from neutron.common import config from neutron.common import config
from neutron import context from neutron import context
import neutron.db.l3_db # noqa import neutron.db.l3_db # noqa
@ -34,9 +33,7 @@ from neutron.plugins.common import constants
from neutron.services.loadbalancer import ( from neutron.services.loadbalancer import (
plugin as loadbalancer_plugin plugin as loadbalancer_plugin
) )
from neutron.services.loadbalancer.drivers import ( from neutron.services.loadbalancer.drivers import abstract_driver
abstract_driver
)
from neutron.services import provider_configuration as pconf from neutron.services import provider_configuration as pconf
from neutron.tests.unit import test_db_plugin from neutron.tests.unit import test_db_plugin
@ -324,12 +321,12 @@ class LoadBalancerPluginDbTestCase(LoadBalancerTestMixin,
if not ext_mgr: if not ext_mgr:
self.plugin = loadbalancer_plugin.LoadBalancerPlugin() self.plugin = loadbalancer_plugin.LoadBalancerPlugin()
ext_mgr = PluginAwareExtensionManager( ext_mgr = extensions.PluginAwareExtensionManager(
extensions_path, extensions_path,
{constants.LOADBALANCER: self.plugin} {constants.LOADBALANCER: self.plugin}
) )
app = config.load_paste_app('extensions_test_app') app = config.load_paste_app('extensions_test_app')
self.ext_api = ExtensionMiddleware(app, ext_mgr=ext_mgr) self.ext_api = extensions.ExtensionMiddleware(app, ext_mgr=ext_mgr)
get_lbaas_agent_patcher = mock.patch( get_lbaas_agent_patcher = mock.patch(
'neutron.services.loadbalancer.agent_scheduler' 'neutron.services.loadbalancer.agent_scheduler'

View File

@ -19,8 +19,7 @@ import logging
import webob.exc import webob.exc
from neutron.api.extensions import ExtensionMiddleware from neutron.api import extensions
from neutron.api.extensions import PluginAwareExtensionManager
from neutron.common import config from neutron.common import config
from neutron import context from neutron import context
import neutron.extensions import neutron.extensions
@ -136,12 +135,12 @@ class MeteringPluginDbTestCase(test_db_plugin.NeutronDbPluginV2TestCase,
) )
self.plugin = metering_plugin.MeteringPlugin() self.plugin = metering_plugin.MeteringPlugin()
ext_mgr = PluginAwareExtensionManager( ext_mgr = extensions.PluginAwareExtensionManager(
extensions_path, extensions_path,
{constants.METERING: self.plugin} {constants.METERING: self.plugin}
) )
app = config.load_paste_app('extensions_test_app') app = config.load_paste_app('extensions_test_app')
self.ext_api = ExtensionMiddleware(app, ext_mgr=ext_mgr) self.ext_api = extensions.ExtensionMiddleware(app, ext_mgr=ext_mgr)
def test_create_metering_label(self): def test_create_metering_label(self):
name = 'my label' name = 'my label'

View File

@ -23,8 +23,7 @@ import os
from oslo.config import cfg from oslo.config import cfg
import webob.exc import webob.exc
from neutron.api.extensions import ExtensionMiddleware from neutron.api import extensions as api_extensions
from neutron.api.extensions import PluginAwareExtensionManager
from neutron.common import config from neutron.common import config
from neutron import context from neutron import context
from neutron.db import agentschedulers_db from neutron.db import agentschedulers_db
@ -441,13 +440,13 @@ class VPNPluginDbTestCase(VPNTestMixin,
self._subnet_id = uuidutils.generate_uuid() self._subnet_id = uuidutils.generate_uuid()
self.core_plugin = TestVpnCorePlugin self.core_plugin = TestVpnCorePlugin
self.plugin = vpn_plugin.VPNPlugin() self.plugin = vpn_plugin.VPNPlugin()
ext_mgr = PluginAwareExtensionManager( ext_mgr = api_extensions.PluginAwareExtensionManager(
extensions_path, extensions_path,
{constants.CORE: self.core_plugin, {constants.CORE: self.core_plugin,
constants.VPN: self.plugin} constants.VPN: self.plugin}
) )
app = config.load_paste_app('extensions_test_app') app = config.load_paste_app('extensions_test_app')
self.ext_api = ExtensionMiddleware(app, ext_mgr=ext_mgr) self.ext_api = api_extensions.ExtensionMiddleware(app, ext_mgr=ext_mgr)
class TestVpnaas(VPNPluginDbTestCase): class TestVpnaas(VPNPluginDbTestCase):

View File

@ -23,7 +23,7 @@ from neutron.extensions import servicetype
from neutron import manager from neutron import manager
from neutron.openstack.common import uuidutils from neutron.openstack.common import uuidutils
from neutron.plugins.common import constants from neutron.plugins.common import constants
from neutron.services.service_base import ServicePluginBase from neutron.services import service_base
DUMMY_PLUGIN_NAME = "dummy_plugin" DUMMY_PLUGIN_NAME = "dummy_plugin"
@ -85,7 +85,7 @@ class Dummy(object):
controller)] controller)]
class DummyServicePlugin(ServicePluginBase): class DummyServicePlugin(service_base.ServicePluginBase):
"""This is a simple plugin for managing instantes of a fictional 'dummy' """This is a simple plugin for managing instantes of a fictional 'dummy'
service. This plugin is provided as a proof-of-concept of how service. This plugin is provided as a proof-of-concept of how
advanced service might leverage the service type extension. advanced service might leverage the service type extension.

View File

@ -14,7 +14,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from abc import abstractmethod import abc
from neutron.api import extensions from neutron.api import extensions
from neutron import wsgi from neutron import wsgi
@ -60,7 +60,7 @@ class ExtensionExpectingPluginInterface(StubExtension):
class StubPluginInterface(extensions.PluginInterface): class StubPluginInterface(extensions.PluginInterface):
@abstractmethod @abc.abstractmethod
def get_foo(self, bar=None): def get_foo(self, bar=None):
pass pass

View File

@ -18,7 +18,7 @@
# @author: Kaiwei Fan, VMware, Inc # @author: Kaiwei Fan, VMware, Inc
# #
from abc import abstractmethod import abc
from neutron.api import extensions from neutron.api import extensions
from neutron.api.v2 import base from neutron.api.v2 import base
@ -101,10 +101,10 @@ class Extensionattribute(extensions.ExtensionDescriptor):
class ExtensionObjectTestPluginBase(object): class ExtensionObjectTestPluginBase(object):
@abstractmethod @abc.abstractmethod
def create_ext_test_resource(self, context, router): def create_ext_test_resource(self, context, router):
pass pass
@abstractmethod @abc.abstractmethod
def get_ext_test_resource(self, context, id, fields=None): def get_ext_test_resource(self, context, id, fields=None):
pass pass

View File

@ -15,7 +15,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from abc import abstractmethod import abc
from neutron.api import extensions from neutron.api import extensions
from neutron.openstack.common import jsonutils from neutron.openstack.common import jsonutils
@ -30,7 +30,7 @@ class FoxInSocksController(wsgi.Controller):
class FoxInSocksPluginInterface(extensions.PluginInterface): class FoxInSocksPluginInterface(extensions.PluginInterface):
@abstractmethod @abc.abstractmethod
def method_to_support_foxnsox_extension(self): def method_to_support_foxnsox_extension(self):
pass pass

View File

@ -22,7 +22,7 @@ from oslo.config import cfg
from neutron import context from neutron import context
from neutron.extensions import portbindings from neutron.extensions import portbindings
from neutron.manager import NeutronManager from neutron import manager
from neutron.tests.unit import test_db_plugin as test_plugin from neutron.tests.unit import test_db_plugin as test_plugin
@ -54,7 +54,7 @@ class TestHyperVVirtualSwitchPortsV2(
def test_ports_vif_details(self): def test_ports_vif_details(self):
cfg.CONF.set_default('allow_overlapping_ips', True) cfg.CONF.set_default('allow_overlapping_ips', True)
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
with contextlib.nested(self.port(), self.port()) as (port1, port2): with contextlib.nested(self.port(), self.port()) as (port1, port2):
ctx = context.get_admin_context() ctx = context.get_admin_context()
ports = plugin.get_ports(ctx) ports = plugin.get_ports(ctx)

View File

@ -14,7 +14,7 @@
# limitations under the License. # limitations under the License.
from oslo.config import cfg from oslo.config import cfg
from six.moves import xrange from six import moves
import testtools import testtools
from testtools import matchers from testtools import matchers
@ -108,7 +108,7 @@ class NetworkStatesTest(base.BaseTestCase):
def test_network_pool(self): def test_network_pool(self):
vlan_ids = set() vlan_ids = set()
for x in xrange(VLAN_MIN, VLAN_MAX + 1): for x in moves.xrange(VLAN_MIN, VLAN_MAX + 1):
physical_network, vlan_id = lb_db.reserve_network(self.session) physical_network, vlan_id = lb_db.reserve_network(self.session)
self.assertEqual(physical_network, PHYS_NET) self.assertEqual(physical_network, PHYS_NET)
self.assertThat(vlan_id, matchers.GreaterThan(VLAN_MIN - 1)) self.assertThat(vlan_id, matchers.GreaterThan(VLAN_MIN - 1))

View File

@ -13,8 +13,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from neutron.tests.unit.metaplugin.test_metaplugin import setup_metaplugin_conf from neutron.tests.unit.metaplugin import test_metaplugin
from neutron.tests.unit.metaplugin.test_metaplugin import unregister_meta_hooks
from neutron.tests.unit import test_db_plugin as test_plugin from neutron.tests.unit import test_db_plugin as test_plugin
from neutron.tests.unit import test_l3_plugin from neutron.tests.unit import test_l3_plugin
@ -30,9 +29,9 @@ class MetaPluginV2DBTestCase(test_plugin.NeutronDbPluginV2TestCase):
# as this class will always invoke super with self._plugin_name. # as this class will always invoke super with self._plugin_name.
# These keyword parameters ensure setUp methods always have the # These keyword parameters ensure setUp methods always have the
# same signature. # same signature.
setup_metaplugin_conf() test_metaplugin.setup_metaplugin_conf()
ext_mgr = ext_mgr or test_l3_plugin.L3TestExtensionManager() ext_mgr = ext_mgr or test_l3_plugin.L3TestExtensionManager()
self.addCleanup(unregister_meta_hooks) self.addCleanup(test_metaplugin.unregister_meta_hooks)
super(MetaPluginV2DBTestCase, self).setUp( super(MetaPluginV2DBTestCase, self).setUp(
plugin=self._plugin_name, ext_mgr=ext_mgr, plugin=self._plugin_name, ext_mgr=ext_mgr,
service_plugins=service_plugins) service_plugins=service_plugins)

View File

@ -27,10 +27,7 @@ from neutron.db import db_base_plugin_v2
from neutron.db import models_v2 from neutron.db import models_v2
from neutron.extensions import flavor as ext_flavor from neutron.extensions import flavor as ext_flavor
from neutron.openstack.common import uuidutils from neutron.openstack.common import uuidutils
from neutron.plugins.metaplugin.meta_neutron_plugin import ( from neutron.plugins.metaplugin import meta_neutron_plugin
FaildToAddFlavorBinding)
from neutron.plugins.metaplugin.meta_neutron_plugin import FlavorNotFound
from neutron.plugins.metaplugin.meta_neutron_plugin import MetaPluginV2
from neutron.tests import base from neutron.tests import base
CONF_FILE = "" CONF_FILE = ""
@ -112,9 +109,10 @@ class MetaNeutronPluginV2Test(base.BaseTestCase):
self.client_inst.delete_network.return_value = True self.client_inst.delete_network.return_value = True
self.client_inst.delete_port.return_value = True self.client_inst.delete_port.return_value = True
self.client_inst.delete_subnet.return_value = True self.client_inst.delete_subnet.return_value = True
plugin = MetaPluginV2.__module__ + '.' + MetaPluginV2.__name__ plugin = (meta_neutron_plugin.MetaPluginV2.__module__ + '.'
+ meta_neutron_plugin.MetaPluginV2.__name__)
self.setup_coreplugin(plugin) self.setup_coreplugin(plugin)
self.plugin = MetaPluginV2(configfile=None) self.plugin = meta_neutron_plugin.MetaPluginV2(configfile=None)
def _fake_network(self, flavor): def _fake_network(self, flavor):
data = {'network': {'name': flavor, data = {'network': {'name': flavor,
@ -311,7 +309,7 @@ class MetaNeutronPluginV2Test(base.BaseTestCase):
self.plugin.delete_router(self.context, router_ret1['id']) self.plugin.delete_router(self.context, router_ret1['id'])
self.plugin.delete_router(self.context, router_ret2['id']) self.plugin.delete_router(self.context, router_ret2['id'])
with testtools.ExpectedException(FlavorNotFound): with testtools.ExpectedException(meta_neutron_plugin.FlavorNotFound):
self.plugin.get_router(self.context, router_ret1['id']) self.plugin.get_router(self.context, router_ret1['id'])
def test_extension_method(self): def test_extension_method(self):
@ -333,7 +331,7 @@ class MetaNeutronPluginV2Test(base.BaseTestCase):
'add_network_flavor_binding', 'add_network_flavor_binding',
side_effect=Exception): side_effect=Exception):
network = self._fake_network('fake1') network = self._fake_network('fake1')
self.assertRaises(FaildToAddFlavorBinding, self.assertRaises(meta_neutron_plugin.FaildToAddFlavorBinding,
self.plugin.create_network, self.plugin.create_network,
self.context, self.context,
network) network)
@ -345,7 +343,7 @@ class MetaNeutronPluginV2Test(base.BaseTestCase):
'add_router_flavor_binding', 'add_router_flavor_binding',
side_effect=Exception): side_effect=Exception):
router = self._fake_router('fake1') router = self._fake_router('fake1')
self.assertRaises(FaildToAddFlavorBinding, self.assertRaises(meta_neutron_plugin.FaildToAddFlavorBinding,
self.plugin.create_router, self.plugin.create_router,
self.context, self.context,
router) router)
@ -383,7 +381,7 @@ class MetaNeutronPluginV2TestRpcFlavor(base.BaseTestCase):
def test_rpc_flavor(self): def test_rpc_flavor(self):
setup_metaplugin_conf() setup_metaplugin_conf()
cfg.CONF.set_override('rpc_flavor', 'fake1', 'META') cfg.CONF.set_override('rpc_flavor', 'fake1', 'META')
self.plugin = MetaPluginV2() self.plugin = meta_neutron_plugin.MetaPluginV2()
self.assertEqual(topics.PLUGIN, 'q-plugin') self.assertEqual(topics.PLUGIN, 'q-plugin')
ret = self.plugin.rpc_workers_supported() ret = self.plugin.rpc_workers_supported()
self.assertFalse(ret) self.assertFalse(ret)
@ -392,13 +390,13 @@ class MetaNeutronPluginV2TestRpcFlavor(base.BaseTestCase):
setup_metaplugin_conf() setup_metaplugin_conf()
cfg.CONF.set_override('rpc_flavor', 'fake-fake', 'META') cfg.CONF.set_override('rpc_flavor', 'fake-fake', 'META')
self.assertRaises(exc.Invalid, self.assertRaises(exc.Invalid,
MetaPluginV2) meta_neutron_plugin.MetaPluginV2)
self.assertEqual(topics.PLUGIN, 'q-plugin') self.assertEqual(topics.PLUGIN, 'q-plugin')
def test_rpc_flavor_multiple_rpc_workers(self): def test_rpc_flavor_multiple_rpc_workers(self):
setup_metaplugin_conf() setup_metaplugin_conf()
cfg.CONF.set_override('rpc_flavor', 'fake2', 'META') cfg.CONF.set_override('rpc_flavor', 'fake2', 'META')
self.plugin = MetaPluginV2() self.plugin = meta_neutron_plugin.MetaPluginV2()
self.assertEqual(topics.PLUGIN, 'q-plugin') self.assertEqual(topics.PLUGIN, 'q-plugin')
ret = self.plugin.rpc_workers_supported() ret = self.plugin.rpc_workers_supported()
self.assertTrue(ret) self.assertTrue(ret)

View File

@ -22,7 +22,7 @@ from neutron.api.v2 import base
from neutron.common import constants as n_const from neutron.common import constants as n_const
from neutron import context from neutron import context
from neutron.extensions import portbindings from neutron.extensions import portbindings
from neutron.manager import NeutronManager from neutron import manager
from neutron.openstack.common import log as logging from neutron.openstack.common import log as logging
from neutron.plugins.common import constants as p_const from neutron.plugins.common import constants as p_const
from neutron.plugins.ml2 import config as ml2_config from neutron.plugins.ml2 import config as ml2_config
@ -274,7 +274,7 @@ class TestCiscoPortsV2(CiscoML2MechanismTestCase,
with mock.patch('__builtin__.hasattr', with mock.patch('__builtin__.hasattr',
new=fakehasattr): new=fakehasattr):
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
orig = plugin_obj.create_port orig = plugin_obj.create_port
with mock.patch.object(plugin_obj, with mock.patch.object(plugin_obj,
'create_port') as patched_plugin: 'create_port') as patched_plugin:
@ -308,7 +308,7 @@ class TestCiscoPortsV2(CiscoML2MechanismTestCase,
self.skipTest("Plugin does not support native bulk port create") self.skipTest("Plugin does not support native bulk port create")
ctx = context.get_admin_context() ctx = context.get_admin_context()
with self.network() as net: with self.network() as net:
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
orig = plugin_obj.create_port orig = plugin_obj.create_port
with mock.patch.object(plugin_obj, with mock.patch.object(plugin_obj,
'create_port') as patched_plugin: 'create_port') as patched_plugin:
@ -605,7 +605,7 @@ class TestCiscoNetworksV2(CiscoML2MechanismTestCase,
return False return False
return real_has_attr(item, attr) return real_has_attr(item, attr)
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
orig = plugin_obj.create_network orig = plugin_obj.create_network
#ensures the API choose the emulation code path #ensures the API choose the emulation code path
with mock.patch('__builtin__.hasattr', with mock.patch('__builtin__.hasattr',
@ -627,7 +627,7 @@ class TestCiscoNetworksV2(CiscoML2MechanismTestCase,
def test_create_networks_bulk_native_plugin_failure(self): def test_create_networks_bulk_native_plugin_failure(self):
if self._skip_native_bulk: if self._skip_native_bulk:
self.skipTest("Plugin does not support native bulk network create") self.skipTest("Plugin does not support native bulk network create")
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
orig = plugin_obj.create_network orig = plugin_obj.create_network
with mock.patch.object(plugin_obj, with mock.patch.object(plugin_obj,
'create_network') as patched_plugin: 'create_network') as patched_plugin:
@ -659,7 +659,7 @@ class TestCiscoSubnetsV2(CiscoML2MechanismTestCase,
with mock.patch('__builtin__.hasattr', with mock.patch('__builtin__.hasattr',
new=fakehasattr): new=fakehasattr):
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
orig = plugin_obj.create_subnet orig = plugin_obj.create_subnet
with mock.patch.object(plugin_obj, with mock.patch.object(plugin_obj,
'create_subnet') as patched_plugin: 'create_subnet') as patched_plugin:
@ -682,7 +682,7 @@ class TestCiscoSubnetsV2(CiscoML2MechanismTestCase,
def test_create_subnets_bulk_native_plugin_failure(self): def test_create_subnets_bulk_native_plugin_failure(self):
if self._skip_native_bulk: if self._skip_native_bulk:
self.skipTest("Plugin does not support native bulk subnet create") self.skipTest("Plugin does not support native bulk subnet create")
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
orig = plugin_obj.create_subnet orig = plugin_obj.create_subnet
with mock.patch.object(plugin_obj, with mock.patch.object(plugin_obj,
'create_subnet') as patched_plugin: 'create_subnet') as patched_plugin:

View File

@ -15,17 +15,17 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from contextlib import nested import contextlib
import mock import mock
import webob.exc import webob.exc
from neutron.extensions import portbindings from neutron.extensions import portbindings
from neutron.manager import NeutronManager from neutron import manager
from neutron.plugins.bigswitch import servermanager from neutron.plugins.bigswitch import servermanager
from neutron.plugins.ml2 import config as ml2_config from neutron.plugins.ml2 import config as ml2_config
from neutron.plugins.ml2.drivers import type_vlan as vlan_config from neutron.plugins.ml2.drivers import type_vlan as vlan_config
import neutron.tests.unit.bigswitch.test_restproxy_plugin as trp import neutron.tests.unit.bigswitch.test_restproxy_plugin as trp
from neutron.tests.unit.ml2.test_ml2_plugin import PLUGIN_NAME as ML2_PLUGIN from neutron.tests.unit.ml2 import test_ml2_plugin
from neutron.tests.unit import test_db_plugin from neutron.tests.unit import test_db_plugin
PHYS_NET = 'physnet1' PHYS_NET = 'physnet1'
@ -53,7 +53,7 @@ class TestBigSwitchMechDriverBase(trp.BigSwitchProxyPluginV2TestCase):
[phys_vrange], [phys_vrange],
'ml2_type_vlan') 'ml2_type_vlan')
super(TestBigSwitchMechDriverBase, super(TestBigSwitchMechDriverBase,
self).setUp(ML2_PLUGIN) self).setUp(test_ml2_plugin.PLUGIN_NAME)
class TestBigSwitchMechDriverNetworksV2(test_db_plugin.TestNetworksV2, class TestBigSwitchMechDriverNetworksV2(test_db_plugin.TestNetworksV2,
@ -90,7 +90,7 @@ class TestBigSwitchMechDriverPortsV2(test_db_plugin.TestPortsV2,
def test_create404_triggers_background_sync(self): def test_create404_triggers_background_sync(self):
# allow the async background thread to run for this test # allow the async background thread to run for this test
self.spawn_p.stop() self.spawn_p.stop()
with nested( with contextlib.nested(
mock.patch(SERVER_POOL + '.rest_create_port', mock.patch(SERVER_POOL + '.rest_create_port',
side_effect=servermanager.RemoteRestError( side_effect=servermanager.RemoteRestError(
reason=servermanager.NXNETWORK, status=404)), reason=servermanager.NXNETWORK, status=404)),
@ -98,7 +98,7 @@ class TestBigSwitchMechDriverPortsV2(test_db_plugin.TestPortsV2,
self.port(**{'device_id': 'devid', 'binding:host_id': 'host'}) self.port(**{'device_id': 'devid', 'binding:host_id': 'host'})
) as (mock_http, mock_send_all, p): ) as (mock_http, mock_send_all, p):
# wait for thread to finish # wait for thread to finish
mm = NeutronManager.get_plugin().mechanism_manager mm = manager.NeutronManager.get_plugin().mechanism_manager
bigdriver = mm.mech_drivers['bigswitch'].obj bigdriver = mm.mech_drivers['bigswitch'].obj
bigdriver.evpool.waitall() bigdriver.evpool.waitall()
mock_send_all.assert_has_calls([ mock_send_all.assert_has_calls([
@ -111,7 +111,7 @@ class TestBigSwitchMechDriverPortsV2(test_db_plugin.TestPortsV2,
self.spawn_p.start() self.spawn_p.start()
def test_backend_request_contents(self): def test_backend_request_contents(self):
with nested( with contextlib.nested(
mock.patch(SERVER_POOL + '.rest_create_port'), mock.patch(SERVER_POOL + '.rest_create_port'),
self.port(**{'device_id': 'devid', 'binding:host_id': 'host'}) self.port(**{'device_id': 'devid', 'binding:host_id': 'host'})
) as (mock_rest, p): ) as (mock_rest, p):

View File

@ -13,7 +13,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from six.moves import xrange from six import moves
import testtools import testtools
from testtools import matchers from testtools import matchers
@ -138,7 +138,7 @@ class GreTypeTest(base.BaseTestCase):
def test_allocate_tenant_segment(self): def test_allocate_tenant_segment(self):
tunnel_ids = set() tunnel_ids = set()
for x in xrange(TUN_MIN, TUN_MAX + 1): for x in moves.xrange(TUN_MIN, TUN_MAX + 1):
segment = self.driver.allocate_tenant_segment(self.session) segment = self.driver.allocate_tenant_segment(self.session)
self.assertThat(segment[api.SEGMENTATION_ID], self.assertThat(segment[api.SEGMENTATION_ID],
matchers.GreaterThan(TUN_MIN - 1)) matchers.GreaterThan(TUN_MIN - 1))

View File

@ -15,7 +15,7 @@
# @author: Kyle Mestery, Cisco Systems, Inc. # @author: Kyle Mestery, Cisco Systems, Inc.
from oslo.config import cfg from oslo.config import cfg
from six.moves import xrange from six import moves
import testtools import testtools
from testtools import matchers from testtools import matchers
@ -146,7 +146,7 @@ class VxlanTypeTest(base.BaseTestCase):
def test_allocate_tenant_segment(self): def test_allocate_tenant_segment(self):
tunnel_ids = set() tunnel_ids = set()
for x in xrange(TUN_MIN, TUN_MAX + 1): for x in moves.xrange(TUN_MIN, TUN_MAX + 1):
segment = self.driver.allocate_tenant_segment(self.session) segment = self.driver.allocate_tenant_segment(self.session)
self.assertThat(segment[api.SEGMENTATION_ID], self.assertThat(segment[api.SEGMENTATION_ID],
matchers.GreaterThan(TUN_MIN - 1)) matchers.GreaterThan(TUN_MIN - 1))

View File

@ -16,7 +16,7 @@
import mock import mock
from oslo.config import cfg from oslo.config import cfg
from neutron.plugins.mlnx.common.comm_utils import RetryDecorator from neutron.plugins.mlnx.common import comm_utils
from neutron.plugins.mlnx.common import config # noqa from neutron.plugins.mlnx.common import config # noqa
from neutron.plugins.mlnx.common import exceptions from neutron.plugins.mlnx.common import exceptions
from neutron.tests import base from neutron.tests import base
@ -29,14 +29,15 @@ class WrongException(Exception):
class TestRetryDecorator(base.BaseTestCase): class TestRetryDecorator(base.BaseTestCase):
def setUp(self): def setUp(self):
super(TestRetryDecorator, self).setUp() super(TestRetryDecorator, self).setUp()
self.sleep_fn_p = mock.patch.object(RetryDecorator, 'sleep_fn') self.sleep_fn_p = mock.patch.object(comm_utils.RetryDecorator,
'sleep_fn')
self.sleep_fn = self.sleep_fn_p.start() self.sleep_fn = self.sleep_fn_p.start()
def test_no_retry_required(self): def test_no_retry_required(self):
self.counter = 0 self.counter = 0
@RetryDecorator(exceptions.RequestTimeout, interval=2, @comm_utils.RetryDecorator(exceptions.RequestTimeout, interval=2,
retries=3, backoff_rate=2) retries=3, backoff_rate=2)
def succeeds(): def succeeds():
self.counter += 1 self.counter += 1
return 'success' return 'success'
@ -52,8 +53,8 @@ class TestRetryDecorator(base.BaseTestCase):
backoff_rate = 2 backoff_rate = 2
retries = 0 retries = 0
@RetryDecorator(exceptions.RequestTimeout, interval, @comm_utils.RetryDecorator(exceptions.RequestTimeout, interval,
retries, backoff_rate) retries, backoff_rate)
def always_fails(): def always_fails():
self.counter += 1 self.counter += 1
raise exceptions.RequestTimeout() raise exceptions.RequestTimeout()
@ -68,8 +69,8 @@ class TestRetryDecorator(base.BaseTestCase):
backoff_rate = 2 backoff_rate = 2
retries = 3 retries = 3
@RetryDecorator(exceptions.RequestTimeout, interval, @comm_utils.RetryDecorator(exceptions.RequestTimeout, interval,
retries, backoff_rate) retries, backoff_rate)
def fails_once(): def fails_once():
self.counter += 1 self.counter += 1
if self.counter < 2: if self.counter < 2:
@ -89,8 +90,8 @@ class TestRetryDecorator(base.BaseTestCase):
interval = 2 interval = 2
backoff_rate = 4 backoff_rate = 4
@RetryDecorator(exceptions.RequestTimeout, interval, @comm_utils.RetryDecorator(exceptions.RequestTimeout, interval,
retries, backoff_rate) retries, backoff_rate)
def always_fails(): def always_fails():
self.counter += 1 self.counter += 1
raise exceptions.RequestTimeout() raise exceptions.RequestTimeout()
@ -109,7 +110,7 @@ class TestRetryDecorator(base.BaseTestCase):
def test_limit_is_reached_with_conf(self): def test_limit_is_reached_with_conf(self):
self.counter = 0 self.counter = 0
@RetryDecorator(exceptions.RequestTimeout) @comm_utils.RetryDecorator(exceptions.RequestTimeout)
def always_fails(): def always_fails():
self.counter += 1 self.counter += 1
raise exceptions.RequestTimeout() raise exceptions.RequestTimeout()
@ -130,7 +131,7 @@ class TestRetryDecorator(base.BaseTestCase):
def test_wrong_exception_no_retry(self): def test_wrong_exception_no_retry(self):
@RetryDecorator(exceptions.RequestTimeout) @comm_utils.RetryDecorator(exceptions.RequestTimeout)
def raise_unexpected_error(): def raise_unexpected_error():
raise WrongException("wrong exception") raise WrongException("wrong exception")

View File

@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from six.moves import xrange from six import moves
from testtools import matchers from testtools import matchers
from neutron.common import exceptions as n_exc from neutron.common import exceptions as n_exc
@ -107,7 +107,7 @@ class SegmentationIdAllocationTest(base.BaseTestCase):
def test_segmentationId_pool(self): def test_segmentationId_pool(self):
vlan_ids = set() vlan_ids = set()
for x in xrange(VLAN_MIN, VLAN_MAX + 1): for x in moves.xrange(VLAN_MIN, VLAN_MAX + 1):
physical_network, vlan_id = mlnx_db.reserve_network(self.session) physical_network, vlan_id = mlnx_db.reserve_network(self.session)
self.assertEqual(physical_network, PHYS_NET) self.assertEqual(physical_network, PHYS_NET)
self.assertThat(vlan_id, matchers.GreaterThan(VLAN_MIN - 1)) self.assertThat(vlan_id, matchers.GreaterThan(VLAN_MIN - 1))

View File

@ -19,7 +19,7 @@ from oslo.config import cfg
#NOTE this import loads tests required options #NOTE this import loads tests required options
from neutron.plugins.mlnx.common import config # noqa from neutron.plugins.mlnx.common import config # noqa
from neutron.plugins.mlnx.common import constants from neutron.plugins.mlnx.common import constants
from neutron.plugins.mlnx.mlnx_plugin import MellanoxEswitchPlugin from neutron.plugins.mlnx import mlnx_plugin
from neutron.tests import base from neutron.tests import base
@ -41,7 +41,7 @@ class TestMlnxPluginConfig(base.BaseTestCase):
def _create_mlnx_plugin(self): def _create_mlnx_plugin(self):
with mock.patch('neutron.plugins.mlnx.db.mlnx_db_v2'): with mock.patch('neutron.plugins.mlnx.db.mlnx_db_v2'):
return MellanoxEswitchPlugin() return mlnx_plugin.MellanoxEswitchPlugin()
def _assert_expected_config(self): def _assert_expected_config(self):
plugin = self._create_mlnx_plugin() plugin = self._create_mlnx_plugin()

View File

@ -21,7 +21,7 @@ import time
import mock import mock
from oslo.config import cfg from oslo.config import cfg
from six.moves import xrange from six import moves
import testtools import testtools
from neutron.agent.linux import ovs_lib from neutron.agent.linux import ovs_lib
@ -154,8 +154,8 @@ class TestNecAgent(TestNecAgentBase):
# Ensure vif_ports_scenario is longer than DAEMON_LOOP_COUNT # Ensure vif_ports_scenario is longer than DAEMON_LOOP_COUNT
if len(self.vif_ports_scenario) < DAEMON_LOOP_COUNT: if len(self.vif_ports_scenario) < DAEMON_LOOP_COUNT:
self.vif_ports_scenario.extend( self.vif_ports_scenario.extend(
[] for _i in xrange(DAEMON_LOOP_COUNT - [] for _i in moves.xrange(DAEMON_LOOP_COUNT -
len(self.vif_ports_scenario))) len(self.vif_ports_scenario)))
with contextlib.nested( with contextlib.nested(
mock.patch.object(time, 'sleep', side_effect=sleep_mock), mock.patch.object(time, 'sleep', side_effect=sleep_mock),

View File

@ -20,7 +20,7 @@ import mock
import webob.exc import webob.exc
from neutron.common import constants from neutron.common import constants
from neutron.common.test_lib import test_config from neutron.common import test_lib
from neutron.common import topics from neutron.common import topics
from neutron import context from neutron import context
from neutron.db import db_base_plugin_v2 from neutron.db import db_base_plugin_v2
@ -52,16 +52,16 @@ class NecPluginV2TestCaseBase(object):
self.nec_ini_file = self.useFixture(fixtures.TempDir()).join("nec.ini") self.nec_ini_file = self.useFixture(fixtures.TempDir()).join("nec.ini")
with open(self.nec_ini_file, 'w') as f: with open(self.nec_ini_file, 'w') as f:
f.write(self._nec_ini) f.write(self._nec_ini)
if 'config_files' in test_config.keys(): if 'config_files' in test_lib.test_config.keys():
for c in test_config['config_files']: for c in test_lib.test_config['config_files']:
if c.rfind("/nec.ini") > -1: if c.rfind("/nec.ini") > -1:
test_config['config_files'].remove(c) test_lib.test_config['config_files'].remove(c)
test_config['config_files'].append(self.nec_ini_file) test_lib.test_config['config_files'].append(self.nec_ini_file)
else: else:
test_config['config_files'] = [self.nec_ini_file] test_lib.test_config['config_files'] = [self.nec_ini_file]
def _clean_nec_ini(self): def _clean_nec_ini(self):
test_config['config_files'].remove(self.nec_ini_file) test_lib.test_config['config_files'].remove(self.nec_ini_file)
os.remove(self.nec_ini_file) os.remove(self.nec_ini_file)
self.nec_ini_file = None self.nec_ini_file = None

View File

@ -18,7 +18,7 @@
import random import random
import mock import mock
from six.moves import xrange from six import moves
from neutron.openstack.common import uuidutils from neutron.openstack.common import uuidutils
from neutron.plugins.nec.common import ofc_client from neutron.plugins.nec.common import ofc_client
@ -48,7 +48,8 @@ class TremaDriverTestBase(base.BaseTestCase):
tenant_id = uuidutils.generate_uuid() tenant_id = uuidutils.generate_uuid()
network_id = uuidutils.generate_uuid() network_id = uuidutils.generate_uuid()
port_id = uuidutils.generate_uuid() port_id = uuidutils.generate_uuid()
mac = ':'.join(['%x' % random.randint(0, 255) for i in xrange(6)]) mac = ':'.join(['%x' % random.randint(0, 255)
for i in moves.xrange(6)])
portinfo = nmodels.PortInfo(id=port_id, datapath_id="0x123456789", portinfo = nmodels.PortInfo(id=port_id, datapath_id="0x123456789",
port_no=1234, vlan_id=321, port_no=1234, vlan_id=321,
mac=mac) mac=mac)
@ -186,7 +187,8 @@ class TremaFilterDriverTest(TremaDriverTestBase):
def _test_create_filter(self, filter_dict=None, filter_post=None, def _test_create_filter(self, filter_dict=None, filter_post=None,
filter_wildcards=None, no_portinfo=False): filter_wildcards=None, no_portinfo=False):
t, n, p = self.get_ofc_item_random_params() t, n, p = self.get_ofc_item_random_params()
src_mac = ':'.join(['%x' % random.randint(0, 255) for i in xrange(6)]) src_mac = ':'.join(['%x' % random.randint(0, 255)
for i in moves.xrange(6)])
if filter_wildcards is None: if filter_wildcards is None:
filter_wildcards = [] filter_wildcards = []
@ -286,7 +288,8 @@ class TremaFilterDriverTest(TremaDriverTestBase):
filter_wildcards=['dl_src']) filter_wildcards=['dl_src'])
def test_create_filter_dst_mac(self): def test_create_filter_dst_mac(self):
dst_mac = ':'.join(['%x' % random.randint(0, 255) for i in xrange(6)]) dst_mac = ':'.join(['%x' % random.randint(0, 255)
for i in moves.xrange(6)])
self._test_create_filter(filter_dict={'dst_mac': dst_mac}, self._test_create_filter(filter_dict={'dst_mac': dst_mac},
filter_post={'dl_dst': dst_mac}) filter_post={'dl_dst': dst_mac})

View File

@ -23,7 +23,7 @@ from oslo.config import cfg
from neutron import context from neutron import context
from neutron.extensions import portbindings from neutron.extensions import portbindings
from neutron.manager import NeutronManager from neutron import manager
from neutron.plugins.oneconvergence import plugin as nvsd_plugin from neutron.plugins.oneconvergence import plugin as nvsd_plugin
from neutron.tests.unit import _test_extension_portbindings as test_bindings from neutron.tests.unit import _test_extension_portbindings as test_bindings
from neutron.tests.unit import test_db_plugin as test_plugin from neutron.tests.unit import test_db_plugin as test_plugin
@ -97,7 +97,7 @@ class TestOneConvergencePluginPortsV2(test_plugin.TestPortsV2,
self.skipTest("NVSD Plugin does not support IPV6.") self.skipTest("NVSD Plugin does not support IPV6.")
def test_port_vif_details(self): def test_port_vif_details(self):
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
with self.port(name='name') as port1: with self.port(name='name') as port1:
ctx = context.get_admin_context() ctx = context.get_admin_context()
port = plugin.get_port(ctx, port1['port']['id']) port = plugin.get_port(ctx, port1['port']['id'])
@ -106,7 +106,7 @@ class TestOneConvergencePluginPortsV2(test_plugin.TestPortsV2,
def test_ports_vif_details(self): def test_ports_vif_details(self):
cfg.CONF.set_default('allow_overlapping_ips', True) cfg.CONF.set_default('allow_overlapping_ips', True)
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
with contextlib.nested(self.port(), self.port()) as (port1, port2): with contextlib.nested(self.port(), self.port()) as (port1, port2):
ctx = context.get_admin_context() ctx = context.get_admin_context()
ports = plugin.get_ports(ctx) ports = plugin.get_ports(ctx)

View File

@ -39,8 +39,8 @@ from neutron.tests.unit import test_agent_ext_plugin
from neutron.tests.unit import test_db_plugin as test_plugin from neutron.tests.unit import test_db_plugin as test_plugin
from neutron.tests.unit import test_extensions from neutron.tests.unit import test_extensions
from neutron.tests.unit import test_l3_plugin from neutron.tests.unit import test_l3_plugin
from neutron.tests.unit.testlib_api import create_request from neutron.tests.unit import testlib_api
from neutron.wsgi import Serializer from neutron import wsgi
L3_HOSTA = 'hosta' L3_HOSTA = 'hosta'
DHCP_HOSTA = 'hosta' DHCP_HOSTA = 'hosta'
@ -63,12 +63,12 @@ class AgentSchedulerTestMixIn(object):
content_type = 'application/%s' % self.fmt content_type = 'application/%s' % self.fmt
body = None body = None
if data is not None: # empty dict is valid if data is not None: # empty dict is valid
body = Serializer().serialize(data, content_type) body = wsgi.Serializer().serialize(data, content_type)
if admin_context: if admin_context:
return create_request( return testlib_api.create_request(
path, body, content_type, method, query_string=query_string) path, body, content_type, method, query_string=query_string)
else: else:
return create_request( return testlib_api.create_request(
path, body, content_type, method, query_string=query_string, path, body, content_type, method, query_string=query_string,
context=context.Context('', 'tenant_id')) context=context.Context('', 'tenant_id'))

View File

@ -17,7 +17,7 @@
import mock import mock
from oslo.config import cfg from oslo.config import cfg
from six.moves import xrange from six import moves
import testtools import testtools
from testtools import matchers from testtools import matchers
@ -126,7 +126,7 @@ class VlanAllocationsTest(base.BaseTestCase):
def test_vlan_pool(self): def test_vlan_pool(self):
vlan_ids = set() vlan_ids = set()
for x in xrange(VLAN_MIN, VLAN_MAX + 1): for x in moves.xrange(VLAN_MIN, VLAN_MAX + 1):
physical_network, vlan_id = ovs_db_v2.reserve_vlan(self.session) physical_network, vlan_id = ovs_db_v2.reserve_vlan(self.session)
self.assertEqual(physical_network, PHYS_NET) self.assertEqual(physical_network, PHYS_NET)
self.assertThat(vlan_id, matchers.GreaterThan(VLAN_MIN - 1)) self.assertThat(vlan_id, matchers.GreaterThan(VLAN_MIN - 1))
@ -178,7 +178,7 @@ class VlanAllocationsTest(base.BaseTestCase):
def test_sync_with_allocated_false(self): def test_sync_with_allocated_false(self):
vlan_ids = set() vlan_ids = set()
for x in xrange(VLAN_MIN, VLAN_MAX + 1): for x in moves.xrange(VLAN_MIN, VLAN_MAX + 1):
physical_network, vlan_id = ovs_db_v2.reserve_vlan(self.session) physical_network, vlan_id = ovs_db_v2.reserve_vlan(self.session)
self.assertEqual(physical_network, PHYS_NET) self.assertEqual(physical_network, PHYS_NET)
self.assertThat(vlan_id, matchers.GreaterThan(VLAN_MIN - 1)) self.assertThat(vlan_id, matchers.GreaterThan(VLAN_MIN - 1))
@ -223,7 +223,7 @@ class TunnelAllocationsTest(base.BaseTestCase):
def test_tunnel_pool(self): def test_tunnel_pool(self):
tunnel_ids = set() tunnel_ids = set()
for x in xrange(TUN_MIN, TUN_MAX + 1): for x in moves.xrange(TUN_MIN, TUN_MAX + 1):
tunnel_id = ovs_db_v2.reserve_tunnel(self.session) tunnel_id = ovs_db_v2.reserve_tunnel(self.session)
self.assertThat(tunnel_id, matchers.GreaterThan(TUN_MIN - 1)) self.assertThat(tunnel_id, matchers.GreaterThan(TUN_MIN - 1))
self.assertThat(tunnel_id, matchers.LessThan(TUN_MAX + 1)) self.assertThat(tunnel_id, matchers.LessThan(TUN_MAX + 1))

View File

@ -23,7 +23,7 @@ import mock
from neutron.extensions import portbindings from neutron.extensions import portbindings
from neutron.extensions import providernet as provider from neutron.extensions import providernet as provider
from neutron.manager import NeutronManager from neutron import manager
from neutron.openstack.common import importutils from neutron.openstack.common import importutils
from neutron.plugins.plumgrid.plumgrid_plugin import plumgrid_plugin from neutron.plugins.plumgrid.plumgrid_plugin import plumgrid_plugin
from neutron.tests.unit import _test_extension_portbindings as test_bindings from neutron.tests.unit import _test_extension_portbindings as test_bindings
@ -111,7 +111,7 @@ class TestPlumgridNetworkAdminState(PLUMgridPluginV2TestCase):
network = {'network': {'name': name, network = {'network': {'name': name,
'admin_state_up': admin_status_up, 'admin_state_up': admin_status_up,
'tenant_id': tenant_id}} 'tenant_id': tenant_id}}
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
self.assertEqual(plugin._network_admin_state(network), network) self.assertEqual(plugin._network_admin_state(network), network)
@ -125,7 +125,7 @@ class TestPlumgridAllocationPool(PLUMgridPluginV2TestCase):
allocation_pool = [{"start": '10.0.0.2', allocation_pool = [{"start": '10.0.0.2',
"end": '10.0.0.253'}] "end": '10.0.0.253'}]
context = None context = None
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
pool = plugin._allocate_pools_for_subnet(context, subnet) pool = plugin._allocate_pools_for_subnet(context, subnet)
self.assertEqual(allocation_pool, pool) self.assertEqual(allocation_pool, pool)

View File

@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from contextlib import nested import contextlib
import httplib import httplib
import mock import mock
@ -226,7 +226,7 @@ class TestOVSNeutronOFPRyuAgent(RyuAgentTestCase):
class TestRyuPluginApi(RyuAgentTestCase): class TestRyuPluginApi(RyuAgentTestCase):
def test_get_ofp_rest_api_addr(self): def test_get_ofp_rest_api_addr(self):
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.RyuPluginApi.make_msg', mock.patch(self._AGENT_NAME + '.RyuPluginApi.make_msg',
return_value='msg'), return_value='msg'),
mock.patch(self._AGENT_NAME + '.RyuPluginApi.call', mock.patch(self._AGENT_NAME + '.RyuPluginApi.call',
@ -313,7 +313,7 @@ class TestOVSBridge(RyuAgentTestCase):
self.assertEqual(ofport, 1) self.assertEqual(ofport, 1)
def test_get_ports(self): def test_get_ports(self):
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.OVSBridge.get_port_name_list', mock.patch(self._AGENT_NAME + '.OVSBridge.get_port_name_list',
return_value=['p1', 'p2']), return_value=['p1', 'p2']),
mock.patch(self._AGENT_NAME + '.OVSBridge.get_ofport', mock.patch(self._AGENT_NAME + '.OVSBridge.get_ofport',
@ -338,7 +338,7 @@ class TestOVSBridge(RyuAgentTestCase):
self.assertEqual(ports, ['port1', 'port2']) self.assertEqual(ports, ['port1', 'port2'])
def test_get_ports_empty(self): def test_get_ports_empty(self):
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.OVSBridge.get_port_name_list', mock.patch(self._AGENT_NAME + '.OVSBridge.get_port_name_list',
return_value=[]), return_value=[]),
mock.patch(self._AGENT_NAME + '.OVSBridge.get_ofport', mock.patch(self._AGENT_NAME + '.OVSBridge.get_ofport',
@ -356,7 +356,7 @@ class TestOVSBridge(RyuAgentTestCase):
self.assertEqual(len(ports), 0) self.assertEqual(len(ports), 0)
def test_get_ports_invalid_ofport(self): def test_get_ports_invalid_ofport(self):
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.OVSBridge.get_port_name_list', mock.patch(self._AGENT_NAME + '.OVSBridge.get_port_name_list',
return_value=['p1', 'p2']), return_value=['p1', 'p2']),
mock.patch(self._AGENT_NAME + '.OVSBridge.get_ofport', mock.patch(self._AGENT_NAME + '.OVSBridge.get_ofport',
@ -380,7 +380,7 @@ class TestOVSBridge(RyuAgentTestCase):
self.assertEqual(ports, ['port1']) self.assertEqual(ports, ['port1'])
def test_get_ports_invalid_port(self): def test_get_ports_invalid_port(self):
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.OVSBridge.get_port_name_list', mock.patch(self._AGENT_NAME + '.OVSBridge.get_port_name_list',
return_value=['p1', 'p2']), return_value=['p1', 'p2']),
mock.patch(self._AGENT_NAME + '.OVSBridge.get_ofport', mock.patch(self._AGENT_NAME + '.OVSBridge.get_ofport',
@ -405,7 +405,7 @@ class TestOVSBridge(RyuAgentTestCase):
self.assertEqual(ports, ['port2']) self.assertEqual(ports, ['port2'])
def test_get_external_port(self): def test_get_external_port(self):
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.OVSBridge.db_get_map', mock.patch(self._AGENT_NAME + '.OVSBridge.db_get_map',
side_effect=[None, {'opts': 'opts_val'}]), side_effect=[None, {'opts': 'opts_val'}]),
mock.patch(self._AGENT_NAME + '.OVSBridge.get_ofport', mock.patch(self._AGENT_NAME + '.OVSBridge.get_ofport',
@ -428,7 +428,7 @@ class TestOVSBridge(RyuAgentTestCase):
self.assertEqual(vifport, mock_vif.return_value) self.assertEqual(vifport, mock_vif.return_value)
def test_get_external_port_vmport(self): def test_get_external_port_vmport(self):
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.OVSBridge.db_get_map', mock.patch(self._AGENT_NAME + '.OVSBridge.db_get_map',
side_effect=[{'extids': 'extid_val'}, side_effect=[{'extids': 'extid_val'},
{'opts': 'opts_val'}]), {'opts': 'opts_val'}]),
@ -447,7 +447,7 @@ class TestOVSBridge(RyuAgentTestCase):
self.assertIsNone(vifport) self.assertIsNone(vifport)
def test_get_external_port_tunnel(self): def test_get_external_port_tunnel(self):
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.OVSBridge.db_get_map', mock.patch(self._AGENT_NAME + '.OVSBridge.db_get_map',
side_effect=[None, {'remote_ip': '0.0.0.0'}]), side_effect=[None, {'remote_ip': '0.0.0.0'}]),
mock.patch(self._AGENT_NAME + '.OVSBridge.get_ofport', mock.patch(self._AGENT_NAME + '.OVSBridge.get_ofport',
@ -466,7 +466,7 @@ class TestOVSBridge(RyuAgentTestCase):
self.assertIsNone(vifport) self.assertIsNone(vifport)
def test_get_external_ports(self): def test_get_external_ports(self):
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.OVSBridge._get_external_port'), mock.patch(self._AGENT_NAME + '.OVSBridge._get_external_port'),
mock.patch(self._AGENT_NAME + '.OVSBridge._get_ports') mock.patch(self._AGENT_NAME + '.OVSBridge._get_ports')
) as (mock_extport, mock_port): ) as (mock_extport, mock_port):
@ -514,7 +514,7 @@ class TestRyuNeutronAgent(RyuAgentTestCase):
def test_get_ip_ip(self): def test_get_ip_ip(self):
cfg_attrs = {'CONF.OVS.cfg_ip': '1.2.3.4', cfg_attrs = {'CONF.OVS.cfg_ip': '1.2.3.4',
'CONF.OVS.cfg_iface': 'eth0'} 'CONF.OVS.cfg_iface': 'eth0'}
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.cfg', **cfg_attrs), mock.patch(self._AGENT_NAME + '.cfg', **cfg_attrs),
mock.patch(self._AGENT_NAME + '._get_ip_from_nic', mock.patch(self._AGENT_NAME + '._get_ip_from_nic',
return_value='10.0.0.1'), return_value='10.0.0.1'),
@ -530,7 +530,7 @@ class TestRyuNeutronAgent(RyuAgentTestCase):
def test_get_ip_nic(self): def test_get_ip_nic(self):
cfg_attrs = {'CONF.OVS.cfg_ip': None, cfg_attrs = {'CONF.OVS.cfg_ip': None,
'CONF.OVS.cfg_iface': 'eth0'} 'CONF.OVS.cfg_iface': 'eth0'}
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.cfg', **cfg_attrs), mock.patch(self._AGENT_NAME + '.cfg', **cfg_attrs),
mock.patch(self._AGENT_NAME + '._get_ip_from_nic', mock.patch(self._AGENT_NAME + '._get_ip_from_nic',
return_value='10.0.0.1'), return_value='10.0.0.1'),
@ -548,7 +548,7 @@ class TestRyuNeutronAgent(RyuAgentTestCase):
def test_get_ip_myip(self): def test_get_ip_myip(self):
cfg_attrs = {'CONF.OVS.cfg_ip': None, cfg_attrs = {'CONF.OVS.cfg_ip': None,
'CONF.OVS.cfg_iface': None} 'CONF.OVS.cfg_iface': None}
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.cfg', **cfg_attrs), mock.patch(self._AGENT_NAME + '.cfg', **cfg_attrs),
mock.patch(self._AGENT_NAME + '._get_ip_from_nic', mock.patch(self._AGENT_NAME + '._get_ip_from_nic',
return_value='10.0.0.1'), return_value='10.0.0.1'),
@ -566,7 +566,7 @@ class TestRyuNeutronAgent(RyuAgentTestCase):
def test_get_ip_nic_myip(self): def test_get_ip_nic_myip(self):
cfg_attrs = {'CONF.OVS.cfg_ip': None, cfg_attrs = {'CONF.OVS.cfg_ip': None,
'CONF.OVS.cfg_iface': 'eth0'} 'CONF.OVS.cfg_iface': 'eth0'}
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.cfg', **cfg_attrs), mock.patch(self._AGENT_NAME + '.cfg', **cfg_attrs),
mock.patch(self._AGENT_NAME + '._get_ip_from_nic', mock.patch(self._AGENT_NAME + '._get_ip_from_nic',
return_value=None), return_value=None),
@ -608,7 +608,7 @@ class TestRyuNeutronAgent(RyuAgentTestCase):
'CONF.OVS.ovsdb_port': 16634, 'CONF.OVS.ovsdb_port': 16634,
'CONF.AGENT.polling_interval': 2, 'CONF.AGENT.polling_interval': 2,
'CONF.AGENT.root_helper': 'helper'} 'CONF.AGENT.root_helper': 'helper'}
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.cfg', **cfg_attrs), mock.patch(self._AGENT_NAME + '.cfg', **cfg_attrs),
mock.patch(self._AGENT_NAME + '.logging_config'), mock.patch(self._AGENT_NAME + '.logging_config'),
mock.patch(self._AGENT_NAME + '._get_tunnel_ip', mock.patch(self._AGENT_NAME + '._get_tunnel_ip',
@ -635,7 +635,7 @@ class TestRyuNeutronAgent(RyuAgentTestCase):
]) ])
def test_main_raise(self): def test_main_raise(self):
with nested( with contextlib.nested(
mock.patch(self._AGENT_NAME + '.OVSNeutronOFPRyuAgent', mock.patch(self._AGENT_NAME + '.OVSNeutronOFPRyuAgent',
side_effect=httplib.HTTPException('boom')), side_effect=httplib.HTTPException('boom')),
mock.patch('sys.exit', side_effect=SystemExit(0)) mock.patch('sys.exit', side_effect=SystemExit(0))

View File

@ -15,7 +15,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from contextlib import nested import contextlib
import operator import operator
from neutron.db import api as db from neutron.db import api as db
@ -34,10 +34,9 @@ class RyuDBTest(test_plugin.NeutronDbPluginV2TestCase):
def test_key_allocation(self): def test_key_allocation(self):
tunnel_key = db_api_v2.TunnelKey() tunnel_key = db_api_v2.TunnelKey()
session = db.get_session() session = db.get_session()
with nested(self.network('network-0'), with contextlib.nested(self.network('network-0'),
self.network('network-1') self.network('network-1')
) as (network_0, ) as (network_0, network_1):
network_1):
network_id0 = network_0['network']['id'] network_id0 = network_0['network']['id']
key0 = tunnel_key.allocate(session, network_id0) key0 = tunnel_key.allocate(session, network_id0)
network_id1 = network_1['network']['id'] network_id1 = network_1['network']['id']

View File

@ -18,7 +18,6 @@
# @author: Rajesh Mohan, Rajesh_Mohan3@Dell.com, DELL Inc. # @author: Rajesh Mohan, Rajesh_Mohan3@Dell.com, DELL Inc.
import mock import mock
from mock import call
from oslo.config import cfg from oslo.config import cfg
from neutron.agent.common import config as a_cfg from neutron.agent.common import config as a_cfg
@ -125,29 +124,29 @@ class IptablesFwaasTestCase(base.BaseTestCase):
ipt_mgr_echain = '%s-%s' % (bname, egress_chain[:11]) ipt_mgr_echain = '%s-%s' % (bname, egress_chain[:11])
for router_info_inst in apply_list: for router_info_inst in apply_list:
v4filter_inst = router_info_inst.iptables_manager.ipv4['filter'] v4filter_inst = router_info_inst.iptables_manager.ipv4['filter']
calls = [call.ensure_remove_chain('iv4fake-fw-uuid'), calls = [mock.call.ensure_remove_chain('iv4fake-fw-uuid'),
call.ensure_remove_chain('ov4fake-fw-uuid'), mock.call.ensure_remove_chain('ov4fake-fw-uuid'),
call.ensure_remove_chain('fwaas-default-policy'), mock.call.ensure_remove_chain('fwaas-default-policy'),
call.add_chain('fwaas-default-policy'), mock.call.add_chain('fwaas-default-policy'),
call.add_rule('fwaas-default-policy', '-j DROP'), mock.call.add_rule('fwaas-default-policy', '-j DROP'),
call.add_chain(ingress_chain), mock.call.add_chain(ingress_chain),
call.add_rule(ingress_chain, invalid_rule), mock.call.add_rule(ingress_chain, invalid_rule),
call.add_rule(ingress_chain, est_rule), mock.call.add_rule(ingress_chain, est_rule),
call.add_chain(egress_chain), mock.call.add_chain(egress_chain),
call.add_rule(egress_chain, invalid_rule), mock.call.add_rule(egress_chain, invalid_rule),
call.add_rule(egress_chain, est_rule), mock.call.add_rule(egress_chain, est_rule),
call.add_rule(ingress_chain, rule1), mock.call.add_rule(ingress_chain, rule1),
call.add_rule(egress_chain, rule1), mock.call.add_rule(egress_chain, rule1),
call.add_rule(ingress_chain, rule2), mock.call.add_rule(ingress_chain, rule2),
call.add_rule(egress_chain, rule2), mock.call.add_rule(egress_chain, rule2),
call.add_rule('FORWARD', mock.call.add_rule('FORWARD',
'-o qr-+ -j %s' % ipt_mgr_ichain), '-o qr-+ -j %s' % ipt_mgr_ichain),
call.add_rule('FORWARD', mock.call.add_rule('FORWARD',
'-i qr-+ -j %s' % ipt_mgr_echain), '-i qr-+ -j %s' % ipt_mgr_echain),
call.add_rule('FORWARD', mock.call.add_rule('FORWARD',
'-o qr-+ -j %s-fwaas-defau' % bname), '-o qr-+ -j %s-fwaas-defau' % bname),
call.add_rule('FORWARD', mock.call.add_rule('FORWARD',
'-i qr-+ -j %s-fwaas-defau' % bname)] '-i qr-+ -j %s-fwaas-defau' % bname)]
v4filter_inst.assert_has_calls(calls) v4filter_inst.assert_has_calls(calls)
def test_create_firewall_no_rules(self): def test_create_firewall_no_rules(self):
@ -161,21 +160,23 @@ class IptablesFwaasTestCase(base.BaseTestCase):
for ip_version in (4, 6): for ip_version in (4, 6):
ingress_chain = ('iv%s%s' % (ip_version, firewall['id'])) ingress_chain = ('iv%s%s' % (ip_version, firewall['id']))
egress_chain = ('ov%s%s' % (ip_version, firewall['id'])) egress_chain = ('ov%s%s' % (ip_version, firewall['id']))
calls = [call.ensure_remove_chain('iv%sfake-fw-uuid' % ip_version), calls = [mock.call.ensure_remove_chain(
call.ensure_remove_chain('ov%sfake-fw-uuid' % ip_version), 'iv%sfake-fw-uuid' % ip_version),
call.ensure_remove_chain('fwaas-default-policy'), mock.call.ensure_remove_chain(
call.add_chain('fwaas-default-policy'), 'ov%sfake-fw-uuid' % ip_version),
call.add_rule('fwaas-default-policy', '-j DROP'), mock.call.ensure_remove_chain('fwaas-default-policy'),
call.add_chain(ingress_chain), mock.call.add_chain('fwaas-default-policy'),
call.add_rule(ingress_chain, invalid_rule), mock.call.add_rule('fwaas-default-policy', '-j DROP'),
call.add_rule(ingress_chain, est_rule), mock.call.add_chain(ingress_chain),
call.add_chain(egress_chain), mock.call.add_rule(ingress_chain, invalid_rule),
call.add_rule(egress_chain, invalid_rule), mock.call.add_rule(ingress_chain, est_rule),
call.add_rule(egress_chain, est_rule), mock.call.add_chain(egress_chain),
call.add_rule('FORWARD', mock.call.add_rule(egress_chain, invalid_rule),
'-o qr-+ -j %s-fwaas-defau' % bname), mock.call.add_rule(egress_chain, est_rule),
call.add_rule('FORWARD', mock.call.add_rule('FORWARD',
'-i qr-+ -j %s-fwaas-defau' % bname)] '-o qr-+ -j %s-fwaas-defau' % bname),
mock.call.add_rule('FORWARD',
'-i qr-+ -j %s-fwaas-defau' % bname)]
if ip_version == 4: if ip_version == 4:
v4filter_inst = apply_list[0].iptables_manager.ipv4['filter'] v4filter_inst = apply_list[0].iptables_manager.ipv4['filter']
v4filter_inst.assert_has_calls(calls) v4filter_inst.assert_has_calls(calls)
@ -199,9 +200,9 @@ class IptablesFwaasTestCase(base.BaseTestCase):
self.firewall.delete_firewall(apply_list, firewall) self.firewall.delete_firewall(apply_list, firewall)
ingress_chain = 'iv4%s' % firewall['id'] ingress_chain = 'iv4%s' % firewall['id']
egress_chain = 'ov4%s' % firewall['id'] egress_chain = 'ov4%s' % firewall['id']
calls = [call.ensure_remove_chain(ingress_chain), calls = [mock.call.ensure_remove_chain(ingress_chain),
call.ensure_remove_chain(egress_chain), mock.call.ensure_remove_chain(egress_chain),
call.ensure_remove_chain('fwaas-default-policy')] mock.call.ensure_remove_chain('fwaas-default-policy')]
apply_list[0].iptables_manager.ipv4['filter'].assert_has_calls(calls) apply_list[0].iptables_manager.ipv4['filter'].assert_has_calls(calls)
def test_create_firewall_with_admin_down(self): def test_create_firewall_with_admin_down(self):
@ -209,9 +210,9 @@ class IptablesFwaasTestCase(base.BaseTestCase):
rule_list = self._fake_rules_v4(FAKE_FW_ID, apply_list) rule_list = self._fake_rules_v4(FAKE_FW_ID, apply_list)
firewall = self._fake_firewall_with_admin_down(rule_list) firewall = self._fake_firewall_with_admin_down(rule_list)
self.firewall.create_firewall(apply_list, firewall) self.firewall.create_firewall(apply_list, firewall)
calls = [call.ensure_remove_chain('iv4fake-fw-uuid'), calls = [mock.call.ensure_remove_chain('iv4fake-fw-uuid'),
call.ensure_remove_chain('ov4fake-fw-uuid'), mock.call.ensure_remove_chain('ov4fake-fw-uuid'),
call.ensure_remove_chain('fwaas-default-policy'), mock.call.ensure_remove_chain('fwaas-default-policy'),
call.add_chain('fwaas-default-policy'), mock.call.add_chain('fwaas-default-policy'),
call.add_rule('fwaas-default-policy', '-j DROP')] mock.call.add_rule('fwaas-default-policy', '-j DROP')]
apply_list[0].iptables_manager.ipv4['filter'].assert_has_calls(calls) apply_list[0].iptables_manager.ipv4['filter'].assert_has_calls(calls)

View File

@ -23,7 +23,7 @@ from neutron import manager
from neutron.plugins.common import constants from neutron.plugins.common import constants
from neutron.services.loadbalancer.drivers.netscaler import ncc_client from neutron.services.loadbalancer.drivers.netscaler import ncc_client
from neutron.services.loadbalancer.drivers.netscaler import netscaler_driver from neutron.services.loadbalancer.drivers.netscaler import netscaler_driver
from neutron.tests.unit.db.loadbalancer import test_db_loadbalancer from neutron.tests.unit.db import loadbalancer
LBAAS_DRIVER_CLASS = ('neutron.services.loadbalancer.drivers' LBAAS_DRIVER_CLASS = ('neutron.services.loadbalancer.drivers'
@ -55,7 +55,7 @@ TESTVIP_IP = '10.0.1.100'
TESTMEMBER_IP = '10.0.0.5' TESTMEMBER_IP = '10.0.0.5'
class TestLoadBalancerPluginBase(test_db_loadbalancer class TestLoadBalancerPluginBase(loadbalancer.test_db_loadbalancer
.LoadBalancerPluginDbTestCase): .LoadBalancerPluginDbTestCase):
def setUp(self): def setUp(self):

View File

@ -19,7 +19,7 @@
import contextlib import contextlib
import mock import mock
from six.moves import xrange from six import moves
from webob import exc from webob import exc
from neutron import context from neutron import context
@ -91,7 +91,7 @@ class TestLoadBalancerCallbacks(TestLoadBalancerPluginBase):
# add 3 pools and 2 vips directly to DB # add 3 pools and 2 vips directly to DB
# to create 2 "ready" devices and one pool without vip # to create 2 "ready" devices and one pool without vip
pools = [] pools = []
for i in xrange(3): for i in moves.xrange(3):
pools.append(ldb.Pool(id=uuidutils.generate_uuid(), pools.append(ldb.Pool(id=uuidutils.generate_uuid(),
subnet_id=self._subnet_id, subnet_id=self._subnet_id,
protocol="HTTP", protocol="HTTP",

View File

@ -17,7 +17,6 @@
import copy import copy
import mock import mock
from mock import call
from oslo.config import cfg from oslo.config import cfg
from neutron.services.metering.drivers.iptables import iptables_driver from neutron.services.metering.drivers.iptables import iptables_driver
@ -80,13 +79,16 @@ class IptablesDriverTestCase(base.BaseTestCase):
'tenant_id': '6c5f5d2a1fa2441e88e35422926f48e8'}] 'tenant_id': '6c5f5d2a1fa2441e88e35422926f48e8'}]
self.metering.add_metering_label(None, routers) self.metering.add_metering_label(None, routers)
calls = [call.add_chain('neutron-meter-l-c5df2fe5-c60', wrap=False), calls = [mock.call.add_chain('neutron-meter-l-c5df2fe5-c60',
call.add_chain('neutron-meter-r-c5df2fe5-c60', wrap=False), wrap=False),
call.add_rule('neutron-meter-FORWARD', '-j ' mock.call.add_chain('neutron-meter-r-c5df2fe5-c60',
'neutron-meter-r-c5df2fe5-c60', wrap=False), wrap=False),
call.add_rule('neutron-meter-l-c5df2fe5-c60', mock.call.add_rule('neutron-meter-FORWARD', '-j '
'', 'neutron-meter-r-c5df2fe5-c60',
wrap=False)] wrap=False),
mock.call.add_rule('neutron-meter-l-c5df2fe5-c60',
'',
wrap=False)]
self.v4filter_inst.assert_has_calls(calls) self.v4filter_inst.assert_has_calls(calls)
@ -121,27 +123,34 @@ class IptablesDriverTestCase(base.BaseTestCase):
'tenant_id': '6c5f5d2a1fa2441e88e35422926f48e8'}] 'tenant_id': '6c5f5d2a1fa2441e88e35422926f48e8'}]
self.metering.add_metering_label(None, routers) self.metering.add_metering_label(None, routers)
calls = [call.add_chain('neutron-meter-l-c5df2fe5-c60', wrap=False), calls = [mock.call.add_chain('neutron-meter-l-c5df2fe5-c60',
call.add_chain('neutron-meter-r-c5df2fe5-c60', wrap=False), wrap=False),
call.add_rule('neutron-meter-FORWARD', '-j ' mock.call.add_chain('neutron-meter-r-c5df2fe5-c60',
'neutron-meter-r-c5df2fe5-c60', wrap=False), wrap=False),
call.add_rule('neutron-meter-l-c5df2fe5-c60', mock.call.add_rule('neutron-meter-FORWARD', '-j '
'', 'neutron-meter-r-c5df2fe5-c60',
wrap=False), wrap=False),
call.add_rule('neutron-meter-r-c5df2fe5-c60', mock.call.add_rule('neutron-meter-l-c5df2fe5-c60',
'-i qg-6d411f48-ec -d 10.0.0.0/24' '',
' -j neutron-meter-l-c5df2fe5-c60', wrap=False),
wrap=False, top=False), mock.call.add_rule('neutron-meter-r-c5df2fe5-c60',
call.add_chain('neutron-meter-l-eeef45da-c60', wrap=False), '-i qg-6d411f48-ec -d 10.0.0.0/24'
call.add_chain('neutron-meter-r-eeef45da-c60', wrap=False), ' -j neutron-meter-l-c5df2fe5-c60',
call.add_rule('neutron-meter-FORWARD', '-j ' wrap=False, top=False),
'neutron-meter-r-eeef45da-c60', wrap=False), mock.call.add_chain('neutron-meter-l-eeef45da-c60',
call.add_rule('neutron-meter-l-eeef45da-c60', wrap=False),
'', mock.call.add_chain('neutron-meter-r-eeef45da-c60',
wrap=False), wrap=False),
call.add_rule('neutron-meter-r-eeef45da-c60', mock.call.add_rule('neutron-meter-FORWARD', '-j '
'-i qg-7d411f48-ec -d 20.0.0.0/24 -j RETURN', 'neutron-meter-r-eeef45da-c60',
wrap=False, top=True)] wrap=False),
mock.call.add_rule('neutron-meter-l-eeef45da-c60',
'',
wrap=False),
mock.call.add_rule('neutron-meter-r-eeef45da-c60',
'-i qg-7d411f48-ec -d 20.0.0.0/24'
' -j RETURN',
wrap=False, top=True)]
self.v4filter_inst.assert_has_calls(calls) self.v4filter_inst.assert_has_calls(calls)
@ -178,25 +187,30 @@ class IptablesDriverTestCase(base.BaseTestCase):
self.metering.update_metering_label_rules(None, updates) self.metering.update_metering_label_rules(None, updates)
calls = [call.add_chain('neutron-meter-l-c5df2fe5-c60', wrap=False), calls = [mock.call.add_chain('neutron-meter-l-c5df2fe5-c60',
call.add_chain('neutron-meter-r-c5df2fe5-c60', wrap=False), wrap=False),
call.add_rule('neutron-meter-FORWARD', '-j ' mock.call.add_chain('neutron-meter-r-c5df2fe5-c60',
'neutron-meter-r-c5df2fe5-c60', wrap=False), wrap=False),
call.add_rule('neutron-meter-l-c5df2fe5-c60', mock.call.add_rule('neutron-meter-FORWARD', '-j '
'', 'neutron-meter-r-c5df2fe5-c60',
wrap=False), wrap=False),
call.add_rule('neutron-meter-r-c5df2fe5-c60', mock.call.add_rule('neutron-meter-l-c5df2fe5-c60',
'-i qg-6d411f48-ec -d 10.0.0.0/24' '',
' -j neutron-meter-l-c5df2fe5-c60', wrap=False),
wrap=False, top=False), mock.call.add_rule('neutron-meter-r-c5df2fe5-c60',
call.empty_chain('neutron-meter-r-c5df2fe5-c60', wrap=False), '-i qg-6d411f48-ec -d 10.0.0.0/24'
call.add_rule('neutron-meter-r-c5df2fe5-c60', ' -j neutron-meter-l-c5df2fe5-c60',
'-o qg-6d411f48-ec -d 10.0.0.0/24 -j RETURN', wrap=False, top=False),
wrap=False, top=True), mock.call.empty_chain('neutron-meter-r-c5df2fe5-c60',
call.add_rule('neutron-meter-r-c5df2fe5-c60', wrap=False),
'-i qg-6d411f48-ec -d 20.0.0.0/24 -j ' mock.call.add_rule('neutron-meter-r-c5df2fe5-c60',
'neutron-meter-l-c5df2fe5-c60', '-o qg-6d411f48-ec -d 10.0.0.0/24'
wrap=False, top=False)] ' -j RETURN',
wrap=False, top=True),
mock.call.add_rule('neutron-meter-r-c5df2fe5-c60',
'-i qg-6d411f48-ec -d 20.0.0.0/24 -j '
'neutron-meter-l-c5df2fe5-c60',
wrap=False, top=False)]
self.v4filter_inst.assert_has_calls(calls) self.v4filter_inst.assert_has_calls(calls)
@ -241,26 +255,30 @@ class IptablesDriverTestCase(base.BaseTestCase):
'tenant_id': '6c5f5d2a1fa2441e88e35422926f48e8'}] 'tenant_id': '6c5f5d2a1fa2441e88e35422926f48e8'}]
self.metering.update_metering_label_rules(None, routers) self.metering.update_metering_label_rules(None, routers)
calls = [call.add_chain('neutron-meter-l-c5df2fe5-c60', wrap=False), calls = [mock.call.add_chain('neutron-meter-l-c5df2fe5-c60',
call.add_chain('neutron-meter-r-c5df2fe5-c60', wrap=False), wrap=False),
call.add_rule('neutron-meter-FORWARD', '-j ' mock.call.add_chain('neutron-meter-r-c5df2fe5-c60',
'neutron-meter-r-c5df2fe5-c60', wrap=False), wrap=False),
call.add_rule('neutron-meter-l-c5df2fe5-c60', mock.call.add_rule('neutron-meter-FORWARD', '-j '
'', 'neutron-meter-r-c5df2fe5-c60',
wrap=False), wrap=False),
call.add_rule('neutron-meter-r-c5df2fe5-c60', mock.call.add_rule('neutron-meter-l-c5df2fe5-c60',
'-i qg-7d411f48-ec -d 10.0.0.0/24' '',
' -j neutron-meter-l-c5df2fe5-c60', wrap=False),
wrap=False, top=False), mock.call.add_rule('neutron-meter-r-c5df2fe5-c60',
call.add_rule('neutron-meter-r-c5df2fe5-c60', '-i qg-7d411f48-ec -d 10.0.0.0/24'
'-i qg-7d411f48-ec -d 20.0.0.0/24' ' -j neutron-meter-l-c5df2fe5-c60',
' -j neutron-meter-l-c5df2fe5-c60', wrap=False, top=False),
wrap=False, top=False), mock.call.add_rule('neutron-meter-r-c5df2fe5-c60',
call.empty_chain('neutron-meter-r-c5df2fe5-c60', wrap=False), '-i qg-7d411f48-ec -d 20.0.0.0/24'
call.add_rule('neutron-meter-r-c5df2fe5-c60', ' -j neutron-meter-l-c5df2fe5-c60',
'-i qg-7d411f48-ec -d 10.0.0.0/24' wrap=False, top=False),
' -j neutron-meter-l-c5df2fe5-c60', mock.call.empty_chain('neutron-meter-r-c5df2fe5-c60',
wrap=False, top=False)] wrap=False),
mock.call.add_rule('neutron-meter-r-c5df2fe5-c60',
'-i qg-7d411f48-ec -d 10.0.0.0/24'
' -j neutron-meter-l-c5df2fe5-c60',
wrap=False, top=False)]
self.v4filter_inst.assert_has_calls(calls) self.v4filter_inst.assert_has_calls(calls)
@ -283,19 +301,24 @@ class IptablesDriverTestCase(base.BaseTestCase):
self.metering.add_metering_label(None, routers) self.metering.add_metering_label(None, routers)
self.metering.remove_metering_label(None, routers) self.metering.remove_metering_label(None, routers)
calls = [call.add_chain('neutron-meter-l-c5df2fe5-c60', wrap=False), calls = [mock.call.add_chain('neutron-meter-l-c5df2fe5-c60',
call.add_chain('neutron-meter-r-c5df2fe5-c60', wrap=False), wrap=False),
call.add_rule('neutron-meter-FORWARD', '-j ' mock.call.add_chain('neutron-meter-r-c5df2fe5-c60',
'neutron-meter-r-c5df2fe5-c60', wrap=False), wrap=False),
call.add_rule('neutron-meter-l-c5df2fe5-c60', mock.call.add_rule('neutron-meter-FORWARD', '-j '
'', 'neutron-meter-r-c5df2fe5-c60',
wrap=False), wrap=False),
call.add_rule('neutron-meter-r-c5df2fe5-c60', mock.call.add_rule('neutron-meter-l-c5df2fe5-c60',
'-i qg-7d411f48-ec -d 10.0.0.0/24' '',
' -j neutron-meter-l-c5df2fe5-c60', wrap=False),
wrap=False, top=False), mock.call.add_rule('neutron-meter-r-c5df2fe5-c60',
call.remove_chain('neutron-meter-l-c5df2fe5-c60', wrap=False), '-i qg-7d411f48-ec -d 10.0.0.0/24'
call.remove_chain('neutron-meter-r-c5df2fe5-c60', wrap=False)] ' -j neutron-meter-l-c5df2fe5-c60',
wrap=False, top=False),
mock.call.remove_chain('neutron-meter-l-c5df2fe5-c60',
wrap=False),
mock.call.remove_chain('neutron-meter-r-c5df2fe5-c60',
wrap=False)]
self.v4filter_inst.assert_has_calls(calls) self.v4filter_inst.assert_has_calls(calls)
@ -335,39 +358,51 @@ class IptablesDriverTestCase(base.BaseTestCase):
updates[0]['gw_port_id'] = '587b63c1-22a3-40b3-9834-486d1fb215a5' updates[0]['gw_port_id'] = '587b63c1-22a3-40b3-9834-486d1fb215a5'
self.metering.update_routers(None, updates) self.metering.update_routers(None, updates)
calls = [call.add_chain('neutron-meter-l-c5df2fe5-c60', wrap=False), calls = [mock.call.add_chain('neutron-meter-l-c5df2fe5-c60',
call.add_chain('neutron-meter-r-c5df2fe5-c60', wrap=False), wrap=False),
call.add_rule('neutron-meter-FORWARD', '-j ' mock.call.add_chain('neutron-meter-r-c5df2fe5-c60',
'neutron-meter-r-c5df2fe5-c60', wrap=False), wrap=False),
call.add_rule('neutron-meter-l-c5df2fe5-c60', mock.call.add_rule('neutron-meter-FORWARD', '-j '
'', 'neutron-meter-r-c5df2fe5-c60',
wrap=False), wrap=False),
call.add_rule('neutron-meter-r-c5df2fe5-c60', mock.call.add_rule('neutron-meter-l-c5df2fe5-c60',
'-i qg-6d411f48-ec -d 10.0.0.0/24' '',
' -j neutron-meter-l-c5df2fe5-c60', wrap=False),
wrap=False, top=False), mock.call.add_rule('neutron-meter-r-c5df2fe5-c60',
call.add_chain('neutron-meter-l-eeef45da-c60', wrap=False), '-i qg-6d411f48-ec -d 10.0.0.0/24'
call.add_chain('neutron-meter-r-eeef45da-c60', wrap=False), ' -j neutron-meter-l-c5df2fe5-c60',
call.add_rule('neutron-meter-FORWARD', '-j ' wrap=False, top=False),
'neutron-meter-r-eeef45da-c60', wrap=False), mock.call.add_chain('neutron-meter-l-eeef45da-c60',
call.add_rule('neutron-meter-l-eeef45da-c60', wrap=False),
'', mock.call.add_chain('neutron-meter-r-eeef45da-c60',
wrap=False), wrap=False),
call.add_rule('neutron-meter-r-eeef45da-c60', mock.call.add_rule('neutron-meter-FORWARD', '-j '
'-i qg-7d411f48-ec -d 20.0.0.0/24 -j RETURN', 'neutron-meter-r-eeef45da-c60',
wrap=False, top=True), wrap=False),
call.remove_chain('neutron-meter-l-c5df2fe5-c60', wrap=False), mock.call.add_rule('neutron-meter-l-eeef45da-c60',
call.remove_chain('neutron-meter-r-c5df2fe5-c60', wrap=False), '',
call.add_chain('neutron-meter-l-c5df2fe5-c60', wrap=False), wrap=False),
call.add_chain('neutron-meter-r-c5df2fe5-c60', wrap=False), mock.call.add_rule('neutron-meter-r-eeef45da-c60',
call.add_rule('neutron-meter-FORWARD', '-j ' '-i qg-7d411f48-ec -d 20.0.0.0/24'
'neutron-meter-r-c5df2fe5-c60', wrap=False), ' -j RETURN',
call.add_rule('neutron-meter-l-c5df2fe5-c60', wrap=False, top=True),
'', mock.call.remove_chain('neutron-meter-l-c5df2fe5-c60',
wrap=False), wrap=False),
call.add_rule('neutron-meter-r-c5df2fe5-c60', mock.call.remove_chain('neutron-meter-r-c5df2fe5-c60',
'-i qg-587b63c1-22 -d 10.0.0.0/24' wrap=False),
' -j neutron-meter-l-c5df2fe5-c60', mock.call.add_chain('neutron-meter-l-c5df2fe5-c60',
wrap=False, top=False)] wrap=False),
mock.call.add_chain('neutron-meter-r-c5df2fe5-c60',
wrap=False),
mock.call.add_rule('neutron-meter-FORWARD', '-j '
'neutron-meter-r-c5df2fe5-c60',
wrap=False),
mock.call.add_rule('neutron-meter-l-c5df2fe5-c60',
'',
wrap=False),
mock.call.add_rule('neutron-meter-r-c5df2fe5-c60',
'-i qg-587b63c1-22 -d 10.0.0.0/24'
' -j neutron-meter-l-c5df2fe5-c60',
wrap=False, top=False)]
self.v4filter_inst.assert_has_calls(calls) self.v4filter_inst.assert_has_calls(calls)

View File

@ -18,7 +18,7 @@
import re import re
from functools import wraps import functools
# import httmock # import httmock
import requests import requests
from requests import exceptions as r_exc from requests import exceptions as r_exc
@ -26,10 +26,12 @@ from requests import exceptions as r_exc
from neutron.openstack.common import log as logging from neutron.openstack.common import log as logging
# TODO(pcm) Remove once httmock package is added to test-requirements. For # TODO(pcm) Remove once httmock package is added to test-requirements. For
# now, uncomment and include httmock source to UT # now, uncomment and include httmock source to UT
from neutron.tests.unit.services.vpn.device_drivers import httmock from neutron.tests.unit.services.vpn import device_drivers
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
httmock = device_drivers.httmock
def repeat(n): def repeat(n):
"""Decorator to limit the number of times a handler is called. """Decorator to limit the number of times a handler is called.
@ -43,7 +45,7 @@ def repeat(n):
retries = n retries = n
def decorator(func): def decorator(func):
@wraps(func) @functools.wraps(func)
def wrapped(*args, **kwargs): def wrapped(*args, **kwargs):
if static.retries == 0: if static.retries == 0:
return None return None
@ -66,7 +68,7 @@ def filter_request(methods, resource):
target_resource = resource target_resource = resource
def decorator(func): def decorator(func):
@wraps(func) @functools.wraps(func)
def wrapped(*args, **kwargs): def wrapped(*args, **kwargs):
if (args[1].method in static.target_methods and if (args[1].method in static.target_methods and
static.target_resource in args[0].path): static.target_resource in args[0].path):

View File

@ -27,11 +27,9 @@ from neutron.openstack.common import log as logging
from neutron.services.vpn.device_drivers import ( from neutron.services.vpn.device_drivers import (
cisco_csr_rest_client as csr_client) cisco_csr_rest_client as csr_client)
from neutron.tests import base from neutron.tests import base
from neutron.tests.unit.services.vpn.device_drivers import ( from neutron.tests.unit.services.vpn import device_drivers
cisco_csr_mock as csr_request)
# TODO(pcm) Remove once httmock is available. In the meantime, use # TODO(pcm) Remove once httmock is available. In the meantime, use
# temporary local copy of httmock source to run UT # temporary local copy of httmock source to run UT
from neutron.tests.unit.services.vpn.device_drivers import httmock
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
@ -42,6 +40,8 @@ if True:
dummy_policy_id = 'dummy-ipsec-policy-id-name' dummy_policy_id = 'dummy-ipsec-policy-id-name'
httmock = device_drivers.httmock
# Note: Helper functions to test reuse of IDs. # Note: Helper functions to test reuse of IDs.
def generate_pre_shared_key_id(): def generate_pre_shared_key_id():
@ -67,7 +67,7 @@ class TestCsrLoginRestApi(base.BaseTestCase):
def test_get_token(self): def test_get_token(self):
"""Obtain the token and its expiration time.""" """Obtain the token and its expiration time."""
with httmock.HTTMock(csr_request.token): with httmock.HTTMock(device_drivers.csr_request.token):
self.assertTrue(self.csr.authenticate()) self.assertTrue(self.csr.authenticate())
self.assertEqual(requests.codes.OK, self.csr.status) self.assertEqual(requests.codes.OK, self.csr.status)
self.assertIsNotNone(self.csr.token) self.assertIsNotNone(self.csr.token)
@ -75,7 +75,7 @@ class TestCsrLoginRestApi(base.BaseTestCase):
def test_unauthorized_token_request(self): def test_unauthorized_token_request(self):
"""Negative test of invalid user/password.""" """Negative test of invalid user/password."""
self.csr.auth = ('stack', 'bogus') self.csr.auth = ('stack', 'bogus')
with httmock.HTTMock(csr_request.token_unauthorized): with httmock.HTTMock(device_drivers.csr_request.token_unauthorized):
self.assertIsNone(self.csr.authenticate()) self.assertIsNone(self.csr.authenticate())
self.assertEqual(requests.codes.UNAUTHORIZED, self.csr.status) self.assertEqual(requests.codes.UNAUTHORIZED, self.csr.status)
@ -83,14 +83,14 @@ class TestCsrLoginRestApi(base.BaseTestCase):
"""Negative test of request to non-existent host.""" """Negative test of request to non-existent host."""
self.csr.host = 'wrong-host' self.csr.host = 'wrong-host'
self.csr.token = 'Set by some previously successful access' self.csr.token = 'Set by some previously successful access'
with httmock.HTTMock(csr_request.token_wrong_host): with httmock.HTTMock(device_drivers.csr_request.token_wrong_host):
self.assertIsNone(self.csr.authenticate()) self.assertIsNone(self.csr.authenticate())
self.assertEqual(requests.codes.NOT_FOUND, self.csr.status) self.assertEqual(requests.codes.NOT_FOUND, self.csr.status)
self.assertIsNone(self.csr.token) self.assertIsNone(self.csr.token)
def test_timeout_on_token_access(self): def test_timeout_on_token_access(self):
"""Negative test of a timeout on a request.""" """Negative test of a timeout on a request."""
with httmock.HTTMock(csr_request.token_timeout): with httmock.HTTMock(device_drivers.csr_request.token_timeout):
self.assertIsNone(self.csr.authenticate()) self.assertIsNone(self.csr.authenticate())
self.assertEqual(requests.codes.REQUEST_TIMEOUT, self.csr.status) self.assertEqual(requests.codes.REQUEST_TIMEOUT, self.csr.status)
self.assertIsNone(self.csr.token) self.assertIsNone(self.csr.token)
@ -112,7 +112,8 @@ class TestCsrGetRestApi(base.BaseTestCase):
that there are two interfaces on the CSR. that there are two interfaces on the CSR.
""" """
with httmock.HTTMock(csr_request.token, csr_request.normal_get): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.normal_get):
content = self.csr.get_request('global/host-name') content = self.csr.get_request('global/host-name')
self.assertEqual(requests.codes.OK, self.csr.status) self.assertEqual(requests.codes.OK, self.csr.status)
self.assertIn('host-name', content) self.assertIn('host-name', content)
@ -139,7 +140,8 @@ class TestCsrPostRestApi(base.BaseTestCase):
that there are two interfaces (Ge1 and Ge2) on the CSR. that there are two interfaces (Ge1 and Ge2) on the CSR.
""" """
with httmock.HTTMock(csr_request.token, csr_request.post): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post):
content = self.csr.post_request( content = self.csr.post_request(
'interfaces/GigabitEthernet1/statistics', 'interfaces/GigabitEthernet1/statistics',
payload={'action': 'clear'}) payload={'action': 'clear'})
@ -153,7 +155,8 @@ class TestCsrPostRestApi(base.BaseTestCase):
def test_post_with_location(self): def test_post_with_location(self):
"""Create a user and verify that location returned.""" """Create a user and verify that location returned."""
with httmock.HTTMock(csr_request.token, csr_request.post): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post):
location = self.csr.post_request( location = self.csr.post_request(
'global/local-users', 'global/local-users',
payload={'username': 'test-user', payload={'username': 'test-user',
@ -164,7 +167,8 @@ class TestCsrPostRestApi(base.BaseTestCase):
def test_post_missing_required_attribute(self): def test_post_missing_required_attribute(self):
"""Negative test of POST with missing mandatory info.""" """Negative test of POST with missing mandatory info."""
with httmock.HTTMock(csr_request.token, csr_request.post): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post):
self.csr.post_request('global/local-users', self.csr.post_request('global/local-users',
payload={'password': 'pass12345', payload={'password': 'pass12345',
'privilege': 15}) 'privilege': 15})
@ -172,7 +176,8 @@ class TestCsrPostRestApi(base.BaseTestCase):
def test_post_invalid_attribute(self): def test_post_invalid_attribute(self):
"""Negative test of POST with invalid info.""" """Negative test of POST with invalid info."""
with httmock.HTTMock(csr_request.token, csr_request.post): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post):
self.csr.post_request('global/local-users', self.csr.post_request('global/local-users',
payload={'username': 'test-user', payload={'username': 'test-user',
'password': 'pass12345', 'password': 'pass12345',
@ -185,7 +190,8 @@ class TestCsrPostRestApi(base.BaseTestCase):
Uses the lower level _do_request() API to just perform the POST and Uses the lower level _do_request() API to just perform the POST and
obtain the response, without any error processing. obtain the response, without any error processing.
""" """
with httmock.HTTMock(csr_request.token, csr_request.post): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post):
location = self.csr._do_request( location = self.csr._do_request(
'POST', 'POST',
'global/local-users', 'global/local-users',
@ -195,8 +201,8 @@ class TestCsrPostRestApi(base.BaseTestCase):
more_headers=csr_client.HEADER_CONTENT_TYPE_JSON) more_headers=csr_client.HEADER_CONTENT_TYPE_JSON)
self.assertEqual(requests.codes.CREATED, self.csr.status) self.assertEqual(requests.codes.CREATED, self.csr.status)
self.assertIn('global/local-users/test-user', location) self.assertIn('global/local-users/test-user', location)
with httmock.HTTMock(csr_request.token, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.post_change_attempt): device_drivers.csr_request.post_change_attempt):
self.csr._do_request( self.csr._do_request(
'POST', 'POST',
'global/local-users', 'global/local-users',
@ -210,7 +216,8 @@ class TestCsrPostRestApi(base.BaseTestCase):
def test_post_changing_value(self): def test_post_changing_value(self):
"""Negative test of a POST trying to change a value.""" """Negative test of a POST trying to change a value."""
with httmock.HTTMock(csr_request.token, csr_request.post): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post):
location = self.csr.post_request( location = self.csr.post_request(
'global/local-users', 'global/local-users',
payload={'username': 'test-user', payload={'username': 'test-user',
@ -218,8 +225,8 @@ class TestCsrPostRestApi(base.BaseTestCase):
'privilege': 15}) 'privilege': 15})
self.assertEqual(requests.codes.CREATED, self.csr.status) self.assertEqual(requests.codes.CREATED, self.csr.status)
self.assertIn('global/local-users/test-user', location) self.assertIn('global/local-users/test-user', location)
with httmock.HTTMock(csr_request.token, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.post_change_attempt): device_drivers.csr_request.post_change_attempt):
content = self.csr.post_request('global/local-users', content = self.csr.post_request('global/local-users',
payload={'username': 'test-user', payload={'username': 'test-user',
'password': 'changed', 'password': 'changed',
@ -235,7 +242,8 @@ class TestCsrPutRestApi(base.BaseTestCase):
"""Test CSR PUT REST API.""" """Test CSR PUT REST API."""
def _save_resources(self): def _save_resources(self):
with httmock.HTTMock(csr_request.token, csr_request.normal_get): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.normal_get):
details = self.csr.get_request('global/host-name') details = self.csr.get_request('global/host-name')
if self.csr.status != requests.codes.OK: if self.csr.status != requests.codes.OK:
self.fail("Unable to save original host name") self.fail("Unable to save original host name")
@ -258,7 +266,8 @@ class TestCsrPutRestApi(base.BaseTestCase):
self.csr.auth = (user, password) self.csr.auth = (user, password)
self.csr.token = None self.csr.token = None
with httmock.HTTMock(csr_request.token, csr_request.put): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.put):
payload = {'host-name': self.original_host} payload = {'host-name': self.original_host}
self.csr.put_request('global/host-name', payload=payload) self.csr.put_request('global/host-name', payload=payload)
if self.csr.status != requests.codes.NO_CONTENT: if self.csr.status != requests.codes.NO_CONTENT:
@ -288,8 +297,9 @@ class TestCsrPutRestApi(base.BaseTestCase):
that there are two interfaces on the CSR (Ge1 and Ge2). that there are two interfaces on the CSR (Ge1 and Ge2).
""" """
with httmock.HTTMock(csr_request.token, csr_request.put, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.put,
device_drivers.csr_request.normal_get):
payload = {'host-name': 'TestHost'} payload = {'host-name': 'TestHost'}
content = self.csr.put_request('global/host-name', content = self.csr.put_request('global/host-name',
payload=payload) payload=payload)
@ -308,8 +318,9 @@ class TestCsrPutRestApi(base.BaseTestCase):
This was a problem with an earlier version of the CSR image and is This was a problem with an earlier version of the CSR image and is
here to prevent regression. here to prevent regression.
""" """
with httmock.HTTMock(csr_request.token, csr_request.put, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.put,
device_drivers.csr_request.normal_get):
payload = {'description': u'Changed description', payload = {'description': u'Changed description',
'if-name': self.original_if['if-name'], 'if-name': self.original_if['if-name'],
'ip-address': self.original_if['ip-address'], 'ip-address': self.original_if['ip-address'],
@ -334,8 +345,9 @@ class TestCsrPutRestApi(base.BaseTestCase):
test setup to change the description to a non-empty string to test setup to change the description to a non-empty string to
avoid failures in other tests. avoid failures in other tests.
""" """
with httmock.HTTMock(csr_request.token, csr_request.put, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.put,
device_drivers.csr_request.normal_get):
payload = {'description': '', payload = {'description': '',
'if-name': self.original_if['if-name'], 'if-name': self.original_if['if-name'],
'ip-address': self.original_if['ip-address'], 'ip-address': self.original_if['ip-address'],
@ -370,8 +382,9 @@ class TestCsrDeleteRestApi(base.BaseTestCase):
def test_delete_requests(self): def test_delete_requests(self):
"""Simple DELETE requests (creating entry first).""" """Simple DELETE requests (creating entry first)."""
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.delete): device_drivers.csr_request.post,
device_drivers.csr_request.delete):
self._make_dummy_user() self._make_dummy_user()
self.csr.token = None # Force login self.csr.token = None # Force login
self.csr.delete_request('global/local-users/dummy') self.csr.delete_request('global/local-users/dummy')
@ -383,7 +396,8 @@ class TestCsrDeleteRestApi(base.BaseTestCase):
def test_delete_non_existent_entry(self): def test_delete_non_existent_entry(self):
"""Negative test of trying to delete a non-existent user.""" """Negative test of trying to delete a non-existent user."""
with httmock.HTTMock(csr_request.token, csr_request.delete_unknown): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.delete_unknown):
content = self.csr.delete_request('global/local-users/unknown') content = self.csr.delete_request('global/local-users/unknown')
self.assertEqual(requests.codes.NOT_FOUND, self.csr.status) self.assertEqual(requests.codes.NOT_FOUND, self.csr.status)
expected = {u'error-code': -1, expected = {u'error-code': -1,
@ -392,8 +406,8 @@ class TestCsrDeleteRestApi(base.BaseTestCase):
def test_delete_not_allowed(self): def test_delete_not_allowed(self):
"""Negative test of trying to delete the host-name.""" """Negative test of trying to delete the host-name."""
with httmock.HTTMock(csr_request.token, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.delete_not_allowed): device_drivers.csr_request.delete_not_allowed):
self.csr.delete_request('global/host-name') self.csr.delete_request('global/host-name')
self.assertEqual(requests.codes.METHOD_NOT_ALLOWED, self.assertEqual(requests.codes.METHOD_NOT_ALLOWED,
self.csr.status) self.csr.status)
@ -414,14 +428,16 @@ class TestCsrRestApiFailures(base.BaseTestCase):
def test_request_for_non_existent_resource(self): def test_request_for_non_existent_resource(self):
"""Negative test of non-existent resource on REST request.""" """Negative test of non-existent resource on REST request."""
with httmock.HTTMock(csr_request.token, csr_request.no_such_resource): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.no_such_resource):
self.csr.post_request('no/such/request') self.csr.post_request('no/such/request')
self.assertEqual(requests.codes.NOT_FOUND, self.csr.status) self.assertEqual(requests.codes.NOT_FOUND, self.csr.status)
# The result is HTTP 404 message, so no error content to check # The result is HTTP 404 message, so no error content to check
def test_timeout_during_request(self): def test_timeout_during_request(self):
"""Negative test of timeout during REST request.""" """Negative test of timeout during REST request."""
with httmock.HTTMock(csr_request.token, csr_request.timeout): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.timeout):
self.csr._do_request('GET', 'global/host-name') self.csr._do_request('GET', 'global/host-name')
self.assertEqual(requests.codes.REQUEST_TIMEOUT, self.csr.status) self.assertEqual(requests.codes.REQUEST_TIMEOUT, self.csr.status)
@ -433,8 +449,9 @@ class TestCsrRestApiFailures(base.BaseTestCase):
token by changing it. token by changing it.
""" """
with httmock.HTTMock(csr_request.token, csr_request.expired_request, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.expired_request,
device_drivers.csr_request.normal_get):
self.csr.token = '123' # These are 44 characters, so won't match self.csr.token = '123' # These are 44 characters, so won't match
content = self.csr._do_request('GET', 'global/host-name') content = self.csr._do_request('GET', 'global/host-name')
self.assertEqual(requests.codes.OK, self.csr.status) self.assertEqual(requests.codes.OK, self.csr.status)
@ -444,7 +461,7 @@ class TestCsrRestApiFailures(base.BaseTestCase):
def test_failed_to_obtain_token_for_request(self): def test_failed_to_obtain_token_for_request(self):
"""Negative test of unauthorized user for REST request.""" """Negative test of unauthorized user for REST request."""
self.csr.auth = ('stack', 'bogus') self.csr.auth = ('stack', 'bogus')
with httmock.HTTMock(csr_request.token_unauthorized): with httmock.HTTMock(device_drivers.csr_request.token_unauthorized):
self.csr._do_request('GET', 'global/host-name') self.csr._do_request('GET', 'global/host-name')
self.assertEqual(requests.codes.UNAUTHORIZED, self.csr.status) self.assertEqual(requests.codes.UNAUTHORIZED, self.csr.status)
@ -460,8 +477,9 @@ class TestCsrRestIkePolicyCreate(base.BaseTestCase):
def test_create_delete_ike_policy(self): def test_create_delete_ike_policy(self):
"""Create and then delete IKE policy.""" """Create and then delete IKE policy."""
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.post,
device_drivers.csr_request.normal_get):
policy_id = '2' policy_id = '2'
policy_info = {u'priority-id': u'%s' % policy_id, policy_info = {u'priority-id': u'%s' % policy_id,
u'encryption': u'aes256', u'encryption': u'aes256',
@ -480,8 +498,9 @@ class TestCsrRestIkePolicyCreate(base.BaseTestCase):
expected_policy.update(policy_info) expected_policy.update(policy_info)
self.assertEqual(expected_policy, content) self.assertEqual(expected_policy, content)
# Now delete and verify the IKE policy is gone # Now delete and verify the IKE policy is gone
with httmock.HTTMock(csr_request.token, csr_request.delete, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.no_such_resource): device_drivers.csr_request.delete,
device_drivers.csr_request.no_such_resource):
self.csr.delete_ike_policy(policy_id) self.csr.delete_ike_policy(policy_id)
self.assertEqual(requests.codes.NO_CONTENT, self.csr.status) self.assertEqual(requests.codes.NO_CONTENT, self.csr.status)
content = self.csr.get_request(location, full_url=True) content = self.csr.get_request(location, full_url=True)
@ -489,8 +508,9 @@ class TestCsrRestIkePolicyCreate(base.BaseTestCase):
def test_create_ike_policy_with_defaults(self): def test_create_ike_policy_with_defaults(self):
"""Create IKE policy using defaults for all optional values.""" """Create IKE policy using defaults for all optional values."""
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.get_defaults): device_drivers.csr_request.post,
device_drivers.csr_request.get_defaults):
policy_id = '2' policy_id = '2'
policy_info = {u'priority-id': u'%s' % policy_id} policy_info = {u'priority-id': u'%s' % policy_id}
location = self.csr.create_ike_policy(policy_info) location = self.csr.create_ike_policy(policy_info)
@ -512,8 +532,9 @@ class TestCsrRestIkePolicyCreate(base.BaseTestCase):
def test_create_duplicate_ike_policy(self): def test_create_duplicate_ike_policy(self):
"""Negative test of trying to create a duplicate IKE policy.""" """Negative test of trying to create a duplicate IKE policy."""
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.post,
device_drivers.csr_request.normal_get):
policy_id = '2' policy_id = '2'
policy_info = {u'priority-id': u'%s' % policy_id, policy_info = {u'priority-id': u'%s' % policy_id,
u'encryption': u'aes', u'encryption': u'aes',
@ -523,7 +544,8 @@ class TestCsrRestIkePolicyCreate(base.BaseTestCase):
location = self.csr.create_ike_policy(policy_info) location = self.csr.create_ike_policy(policy_info)
self.assertEqual(requests.codes.CREATED, self.csr.status) self.assertEqual(requests.codes.CREATED, self.csr.status)
self.assertIn('vpn-svc/ike/policies/%s' % policy_id, location) self.assertIn('vpn-svc/ike/policies/%s' % policy_id, location)
with httmock.HTTMock(csr_request.token, csr_request.post_duplicate): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post_duplicate):
location = self.csr.create_ike_policy(policy_info) location = self.csr.create_ike_policy(policy_info)
self.assertEqual(requests.codes.BAD_REQUEST, self.csr.status) self.assertEqual(requests.codes.BAD_REQUEST, self.csr.status)
expected = {u'error-code': -1, expected = {u'error-code': -1,
@ -543,8 +565,9 @@ class TestCsrRestIPSecPolicyCreate(base.BaseTestCase):
def test_create_delete_ipsec_policy(self): def test_create_delete_ipsec_policy(self):
"""Create and then delete IPSec policy.""" """Create and then delete IPSec policy."""
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.post,
device_drivers.csr_request.normal_get):
policy_id = '123' policy_id = '123'
policy_info = { policy_info = {
u'policy-id': u'%s' % policy_id, u'policy-id': u'%s' % policy_id,
@ -572,8 +595,9 @@ class TestCsrRestIPSecPolicyCreate(base.BaseTestCase):
expected_policy[u'anti-replay-window-size'] = u'Disable' expected_policy[u'anti-replay-window-size'] = u'Disable'
self.assertEqual(expected_policy, content) self.assertEqual(expected_policy, content)
# Now delete and verify the IPSec policy is gone # Now delete and verify the IPSec policy is gone
with httmock.HTTMock(csr_request.token, csr_request.delete, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.no_such_resource): device_drivers.csr_request.delete,
device_drivers.csr_request.no_such_resource):
self.csr.delete_ipsec_policy(policy_id) self.csr.delete_ipsec_policy(policy_id)
self.assertEqual(requests.codes.NO_CONTENT, self.csr.status) self.assertEqual(requests.codes.NO_CONTENT, self.csr.status)
content = self.csr.get_request(location, full_url=True) content = self.csr.get_request(location, full_url=True)
@ -581,8 +605,9 @@ class TestCsrRestIPSecPolicyCreate(base.BaseTestCase):
def test_create_ipsec_policy_with_defaults(self): def test_create_ipsec_policy_with_defaults(self):
"""Create IPSec policy with default for all optional values.""" """Create IPSec policy with default for all optional values."""
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.get_defaults): device_drivers.csr_request.post,
device_drivers.csr_request.get_defaults):
policy_id = '123' policy_id = '123'
policy_info = { policy_info = {
u'policy-id': u'%s' % policy_id, u'policy-id': u'%s' % policy_id,
@ -606,8 +631,9 @@ class TestCsrRestIPSecPolicyCreate(base.BaseTestCase):
def test_create_ipsec_policy_with_uuid(self): def test_create_ipsec_policy_with_uuid(self):
"""Create IPSec policy using UUID for id.""" """Create IPSec policy using UUID for id."""
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.post,
device_drivers.csr_request.normal_get):
policy_info = { policy_info = {
u'policy-id': u'%s' % dummy_policy_id, u'policy-id': u'%s' % dummy_policy_id,
u'protection-suite': { u'protection-suite': {
@ -637,8 +663,9 @@ class TestCsrRestIPSecPolicyCreate(base.BaseTestCase):
def test_create_ipsec_policy_without_ah(self): def test_create_ipsec_policy_without_ah(self):
"""Create IPSec policy.""" """Create IPSec policy."""
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.get_no_ah): device_drivers.csr_request.post,
device_drivers.csr_request.get_no_ah):
policy_id = '10' policy_id = '10'
policy_info = { policy_info = {
u'policy-id': u'%s' % policy_id, u'policy-id': u'%s' % policy_id,
@ -665,8 +692,8 @@ class TestCsrRestIPSecPolicyCreate(base.BaseTestCase):
def test_invalid_ipsec_policy_lifetime(self): def test_invalid_ipsec_policy_lifetime(self):
"""Failure test of IPSec policy with unsupported lifetime.""" """Failure test of IPSec policy with unsupported lifetime."""
with httmock.HTTMock(csr_request.token, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.post_bad_lifetime): device_drivers.csr_request.post_bad_lifetime):
policy_id = '123' policy_id = '123'
policy_info = { policy_info = {
u'policy-id': u'%s' % policy_id, u'policy-id': u'%s' % policy_id,
@ -684,8 +711,9 @@ class TestCsrRestIPSecPolicyCreate(base.BaseTestCase):
def test_create_ipsec_policy_with_invalid_name(self): def test_create_ipsec_policy_with_invalid_name(self):
"""Failure test of creating IPSec policy with name too long.""" """Failure test of creating IPSec policy with name too long."""
with httmock.HTTMock(csr_request.token, csr_request.post_bad_name, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.get_defaults): device_drivers.csr_request.post_bad_name,
device_drivers.csr_request.get_defaults):
policy_id = 'policy-name-is-too-long-32-chars' policy_id = 'policy-name-is-too-long-32-chars'
policy_info = { policy_info = {
u'policy-id': u'%s' % policy_id, u'policy-id': u'%s' % policy_id,
@ -705,8 +733,9 @@ class TestCsrRestPreSharedKeyCreate(base.BaseTestCase):
def test_create_delete_pre_shared_key(self): def test_create_delete_pre_shared_key(self):
"""Create and then delete a keyring entry for pre-shared key.""" """Create and then delete a keyring entry for pre-shared key."""
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.post,
device_drivers.csr_request.normal_get):
psk_id = '5' psk_id = '5'
psk_info = {u'keyring-name': u'%s' % psk_id, psk_info = {u'keyring-name': u'%s' % psk_id,
u'pre-shared-key-list': [ u'pre-shared-key-list': [
@ -727,8 +756,9 @@ class TestCsrRestPreSharedKeyCreate(base.BaseTestCase):
u'10.10.10.20 255.255.255.0') u'10.10.10.20 255.255.255.0')
self.assertEqual(expected_policy, content) self.assertEqual(expected_policy, content)
# Now delete and verify pre-shared key is gone # Now delete and verify pre-shared key is gone
with httmock.HTTMock(csr_request.token, csr_request.delete, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.no_such_resource): device_drivers.csr_request.delete,
device_drivers.csr_request.no_such_resource):
self.csr.delete_pre_shared_key(psk_id) self.csr.delete_pre_shared_key(psk_id)
self.assertEqual(requests.codes.NO_CONTENT, self.csr.status) self.assertEqual(requests.codes.NO_CONTENT, self.csr.status)
content = self.csr.get_request(location, full_url=True) content = self.csr.get_request(location, full_url=True)
@ -736,8 +766,9 @@ class TestCsrRestPreSharedKeyCreate(base.BaseTestCase):
def test_create_pre_shared_key_with_fqdn_peer(self): def test_create_pre_shared_key_with_fqdn_peer(self):
"""Create pre-shared key using FQDN for peer address.""" """Create pre-shared key using FQDN for peer address."""
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.get_fqdn): device_drivers.csr_request.post,
device_drivers.csr_request.get_fqdn):
psk_id = '5' psk_id = '5'
psk_info = {u'keyring-name': u'%s' % psk_id, psk_info = {u'keyring-name': u'%s' % psk_id,
u'pre-shared-key-list': [ u'pre-shared-key-list': [
@ -757,8 +788,9 @@ class TestCsrRestPreSharedKeyCreate(base.BaseTestCase):
def test_create_pre_shared_key_with_duplicate_peer_address(self): def test_create_pre_shared_key_with_duplicate_peer_address(self):
"""Negative test of creating a second pre-shared key with same peer.""" """Negative test of creating a second pre-shared key with same peer."""
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.post,
device_drivers.csr_request.normal_get):
psk_id = '5' psk_id = '5'
psk_info = {u'keyring-name': u'%s' % psk_id, psk_info = {u'keyring-name': u'%s' % psk_id,
u'pre-shared-key-list': [ u'pre-shared-key-list': [
@ -769,7 +801,8 @@ class TestCsrRestPreSharedKeyCreate(base.BaseTestCase):
location = self.csr.create_pre_shared_key(psk_info) location = self.csr.create_pre_shared_key(psk_info)
self.assertEqual(requests.codes.CREATED, self.csr.status) self.assertEqual(requests.codes.CREATED, self.csr.status)
self.assertIn('vpn-svc/ike/keyrings/%s' % psk_id, location) self.assertIn('vpn-svc/ike/keyrings/%s' % psk_id, location)
with httmock.HTTMock(csr_request.token, csr_request.post_duplicate): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post_duplicate):
psk_id = u'6' psk_id = u'6'
another_psk_info = {u'keyring-name': psk_id, another_psk_info = {u'keyring-name': psk_id,
u'pre-shared-key-list': [ u'pre-shared-key-list': [
@ -799,7 +832,8 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
psk_id = generate_pre_shared_key_id() psk_id = generate_pre_shared_key_id()
self._remove_resource_for_test(self.csr.delete_pre_shared_key, self._remove_resource_for_test(self.csr.delete_pre_shared_key,
psk_id) psk_id)
with httmock.HTTMock(csr_request.token, csr_request.post): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post):
psk_info = {u'keyring-name': u'%d' % psk_id, psk_info = {u'keyring-name': u'%d' % psk_id,
u'pre-shared-key-list': [ u'pre-shared-key-list': [
{u'key': u'super-secret', {u'key': u'super-secret',
@ -817,7 +851,8 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
policy_id = generate_ike_policy_id() policy_id = generate_ike_policy_id()
self._remove_resource_for_test(self.csr.delete_ike_policy, self._remove_resource_for_test(self.csr.delete_ike_policy,
policy_id) policy_id)
with httmock.HTTMock(csr_request.token, csr_request.post): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post):
policy_info = {u'priority-id': u'%d' % policy_id, policy_info = {u'priority-id': u'%d' % policy_id,
u'encryption': u'aes', u'encryption': u'aes',
u'hash': u'sha', u'hash': u'sha',
@ -834,7 +869,8 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
policy_id = generate_ipsec_policy_id() policy_id = generate_ipsec_policy_id()
self._remove_resource_for_test(self.csr.delete_ipsec_policy, self._remove_resource_for_test(self.csr.delete_ipsec_policy,
policy_id) policy_id)
with httmock.HTTMock(csr_request.token, csr_request.post): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post):
policy_info = { policy_info = {
u'policy-id': u'%d' % policy_id, u'policy-id': u'%d' % policy_id,
u'protection-suite': { u'protection-suite': {
@ -854,7 +890,8 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
return policy_id return policy_id
def _remove_resource_for_test(self, delete_resource, resource_id): def _remove_resource_for_test(self, delete_resource, resource_id):
with httmock.HTTMock(csr_request.token, csr_request.delete): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.delete):
delete_resource(resource_id) delete_resource(resource_id)
def _prepare_for_site_conn_create(self, skip_psk=False, skip_ike=False, def _prepare_for_site_conn_create(self, skip_psk=False, skip_ike=False,
@ -876,8 +913,9 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
def test_create_delete_ipsec_connection(self): def test_create_delete_ipsec_connection(self):
"""Create and then delete an IPSec connection.""" """Create and then delete an IPSec connection."""
tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create() tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create()
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.post,
device_drivers.csr_request.normal_get):
connection_info = { connection_info = {
u'vpn-interface-name': u'Tunnel%d' % tunnel_id, u'vpn-interface-name': u'Tunnel%d' % tunnel_id,
u'ipsec-policy-id': u'%d' % ipsec_policy_id, u'ipsec-policy-id': u'%d' % ipsec_policy_id,
@ -903,8 +941,9 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
expected_connection.update(connection_info) expected_connection.update(connection_info)
self.assertEqual(expected_connection, content) self.assertEqual(expected_connection, content)
# Now delete and verify that site-to-site connection is gone # Now delete and verify that site-to-site connection is gone
with httmock.HTTMock(csr_request.token, csr_request.delete, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.no_such_resource): device_drivers.csr_request.delete,
device_drivers.csr_request.no_such_resource):
# Only delete connection. Cleanup will take care of prerequisites # Only delete connection. Cleanup will take care of prerequisites
self.csr.delete_ipsec_connection('Tunnel%d' % tunnel_id) self.csr.delete_ipsec_connection('Tunnel%d' % tunnel_id)
self.assertEqual(requests.codes.NO_CONTENT, self.csr.status) self.assertEqual(requests.codes.NO_CONTENT, self.csr.status)
@ -914,8 +953,9 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
def test_create_ipsec_connection_with_no_tunnel_subnet(self): def test_create_ipsec_connection_with_no_tunnel_subnet(self):
"""Create an IPSec connection without an IP address on tunnel.""" """Create an IPSec connection without an IP address on tunnel."""
tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create() tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create()
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.get_unnumbered): device_drivers.csr_request.post,
device_drivers.csr_request.get_unnumbered):
connection_info = { connection_info = {
u'vpn-interface-name': u'Tunnel%d' % tunnel_id, u'vpn-interface-name': u'Tunnel%d' % tunnel_id,
u'ipsec-policy-id': u'%d' % ipsec_policy_id, u'ipsec-policy-id': u'%d' % ipsec_policy_id,
@ -949,8 +989,9 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create( tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create(
skip_psk=True) skip_psk=True)
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.post,
device_drivers.csr_request.normal_get):
connection_info = { connection_info = {
u'vpn-interface-name': u'Tunnel%d' % tunnel_id, u'vpn-interface-name': u'Tunnel%d' % tunnel_id,
u'ipsec-policy-id': u'%d' % ipsec_policy_id, u'ipsec-policy-id': u'%d' % ipsec_policy_id,
@ -985,8 +1026,9 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create( tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create(
skip_ike=True) skip_ike=True)
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.post,
device_drivers.csr_request.normal_get):
connection_info = { connection_info = {
u'vpn-interface-name': u'Tunnel%d' % tunnel_id, u'vpn-interface-name': u'Tunnel%d' % tunnel_id,
u'ipsec-policy-id': u'%d' % ipsec_policy_id, u'ipsec-policy-id': u'%d' % ipsec_policy_id,
@ -1016,7 +1058,8 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
"""Create IPSec connection in admin down state.""" """Create IPSec connection in admin down state."""
tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create() tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create()
tunnel = u'Tunnel%d' % tunnel_id tunnel = u'Tunnel%d' % tunnel_id
with httmock.HTTMock(csr_request.token, csr_request.post): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post):
connection_info = { connection_info = {
u'vpn-interface-name': tunnel, u'vpn-interface-name': tunnel,
u'ipsec-policy-id': u'%d' % ipsec_policy_id, u'ipsec-policy-id': u'%d' % ipsec_policy_id,
@ -1038,14 +1081,16 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
u'vpn-interface-name': tunnel, u'vpn-interface-name': tunnel,
u'line-protocol-state': u'down', u'line-protocol-state': u'down',
u'enabled': False} u'enabled': False}
with httmock.HTTMock(csr_request.put, csr_request.get_admin_down): with httmock.HTTMock(device_drivers.csr_request.put,
device_drivers.csr_request.get_admin_down):
self.csr.set_ipsec_connection_state(tunnel, admin_up=False) self.csr.set_ipsec_connection_state(tunnel, admin_up=False)
self.assertEqual(requests.codes.NO_CONTENT, self.csr.status) self.assertEqual(requests.codes.NO_CONTENT, self.csr.status)
content = self.csr.get_request(state_uri, full_url=True) content = self.csr.get_request(state_uri, full_url=True)
self.assertEqual(requests.codes.OK, self.csr.status) self.assertEqual(requests.codes.OK, self.csr.status)
self.assertEqual(expected_state, content) self.assertEqual(expected_state, content)
with httmock.HTTMock(csr_request.put, csr_request.get_admin_up): with httmock.HTTMock(device_drivers.csr_request.put,
device_drivers.csr_request.get_admin_up):
self.csr.set_ipsec_connection_state(tunnel, admin_up=True) self.csr.set_ipsec_connection_state(tunnel, admin_up=True)
self.assertEqual(requests.codes.NO_CONTENT, self.csr.status) self.assertEqual(requests.codes.NO_CONTENT, self.csr.status)
content = self.csr.get_request(state_uri, full_url=True) content = self.csr.get_request(state_uri, full_url=True)
@ -1057,8 +1102,9 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
"""Negative test of connection create without IPSec policy.""" """Negative test of connection create without IPSec policy."""
tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create( tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create(
skip_ipsec=True) skip_ipsec=True)
with httmock.HTTMock(csr_request.token, with httmock.HTTMock(
csr_request.post_missing_ipsec_policy): device_drivers.csr_request.token,
device_drivers.csr_request.post_missing_ipsec_policy):
connection_info = { connection_info = {
u'vpn-interface-name': u'Tunnel%d' % tunnel_id, u'vpn-interface-name': u'Tunnel%d' % tunnel_id,
u'ipsec-policy-id': u'%d' % ipsec_policy_id, u'ipsec-policy-id': u'%d' % ipsec_policy_id,
@ -1073,7 +1119,8 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
self.assertEqual(requests.codes.BAD_REQUEST, self.csr.status) self.assertEqual(requests.codes.BAD_REQUEST, self.csr.status)
def _determine_conflicting_ip(self): def _determine_conflicting_ip(self):
with httmock.HTTMock(csr_request.token, csr_request.get_local_ip): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.get_local_ip):
details = self.csr.get_request('interfaces/GigabitEthernet3') details = self.csr.get_request('interfaces/GigabitEthernet3')
if self.csr.status != requests.codes.OK: if self.csr.status != requests.codes.OK:
self.fail("Unable to obtain interface GigabitEthernet3's IP") self.fail("Unable to obtain interface GigabitEthernet3's IP")
@ -1091,7 +1138,8 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
conflicting_ip = self._determine_conflicting_ip() conflicting_ip = self._determine_conflicting_ip()
tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create() tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create()
with httmock.HTTMock(csr_request.token, csr_request.post_bad_ip): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post_bad_ip):
connection_info = { connection_info = {
u'vpn-interface-name': u'Tunnel%d' % tunnel_id, u'vpn-interface-name': u'Tunnel%d' % tunnel_id,
u'ipsec-policy-id': u'%d' % ipsec_policy_id, u'ipsec-policy-id': u'%d' % ipsec_policy_id,
@ -1108,8 +1156,9 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
def test_create_ipsec_connection_with_max_mtu(self): def test_create_ipsec_connection_with_max_mtu(self):
"""Create an IPSec connection with max MTU value.""" """Create an IPSec connection with max MTU value."""
tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create() tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create()
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.get_mtu): device_drivers.csr_request.post,
device_drivers.csr_request.get_mtu):
connection_info = { connection_info = {
u'vpn-interface-name': u'Tunnel%d' % tunnel_id, u'vpn-interface-name': u'Tunnel%d' % tunnel_id,
u'ipsec-policy-id': u'%d' % ipsec_policy_id, u'ipsec-policy-id': u'%d' % ipsec_policy_id,
@ -1137,7 +1186,8 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
def test_create_ipsec_connection_with_bad_mtu(self): def test_create_ipsec_connection_with_bad_mtu(self):
"""Negative test of connection create with unsupported MTU value.""" """Negative test of connection create with unsupported MTU value."""
tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create() tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create()
with httmock.HTTMock(csr_request.token, csr_request.post_bad_mtu): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.post_bad_mtu):
connection_info = { connection_info = {
u'vpn-interface-name': u'Tunnel%d' % tunnel_id, u'vpn-interface-name': u'Tunnel%d' % tunnel_id,
u'ipsec-policy-id': u'%d' % ipsec_policy_id, u'ipsec-policy-id': u'%d' % ipsec_policy_id,
@ -1154,7 +1204,8 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
def test_status_when_no_tunnels_exist(self): def test_status_when_no_tunnels_exist(self):
"""Get status, when there are no tunnels.""" """Get status, when there are no tunnels."""
with httmock.HTTMock(csr_request.token, csr_request.get_none): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.get_none):
tunnels = self.csr.read_tunnel_statuses() tunnels = self.csr.read_tunnel_statuses()
self.assertEqual(requests.codes.OK, self.csr.status) self.assertEqual(requests.codes.OK, self.csr.status)
self.assertEqual([], tunnels) self.assertEqual([], tunnels)
@ -1164,8 +1215,9 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
# Create the IPsec site-to-site connection first # Create the IPsec site-to-site connection first
tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create() tunnel_id, ipsec_policy_id = self._prepare_for_site_conn_create()
tunnel_id = 123 # Must hard code to work with mock tunnel_id = 123 # Must hard code to work with mock
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.post,
device_drivers.csr_request.normal_get):
connection_info = { connection_info = {
u'vpn-interface-name': u'Tunnel123', u'vpn-interface-name': u'Tunnel123',
u'ipsec-policy-id': u'%d' % ipsec_policy_id, u'ipsec-policy-id': u'%d' % ipsec_policy_id,
@ -1180,7 +1232,8 @@ class TestCsrRestIPSecConnectionCreate(base.BaseTestCase):
self.assertEqual(requests.codes.CREATED, self.csr.status) self.assertEqual(requests.codes.CREATED, self.csr.status)
self.assertIn('vpn-svc/site-to-site/Tunnel%d' % tunnel_id, self.assertIn('vpn-svc/site-to-site/Tunnel%d' % tunnel_id,
location) location)
with httmock.HTTMock(csr_request.token, csr_request.normal_get): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.normal_get):
tunnels = self.csr.read_tunnel_statuses() tunnels = self.csr.read_tunnel_statuses()
self.assertEqual(requests.codes.OK, self.csr.status) self.assertEqual(requests.codes.OK, self.csr.status)
self.assertEqual([(u'Tunnel123', u'DOWN-NEGOTIATING'), ], tunnels) self.assertEqual([(u'Tunnel123', u'DOWN-NEGOTIATING'), ], tunnels)
@ -1197,7 +1250,8 @@ class TestCsrRestIkeKeepaliveCreate(base.BaseTestCase):
""" """
def _save_dpd_info(self): def _save_dpd_info(self):
with httmock.HTTMock(csr_request.token, csr_request.normal_get): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.normal_get):
details = self.csr.get_request('vpn-svc/ike/keepalive') details = self.csr.get_request('vpn-svc/ike/keepalive')
if self.csr.status == requests.codes.OK: if self.csr.status == requests.codes.OK:
self.dpd = details self.dpd = details
@ -1206,7 +1260,8 @@ class TestCsrRestIkeKeepaliveCreate(base.BaseTestCase):
self.fail("Unable to save original DPD info") self.fail("Unable to save original DPD info")
def _restore_dpd_info(self): def _restore_dpd_info(self):
with httmock.HTTMock(csr_request.token, csr_request.put): with httmock.HTTMock(device_drivers.csr_request.token,
device_drivers.csr_request.put):
payload = {'interval': self.dpd['interval'], payload = {'interval': self.dpd['interval'],
'retry': self.dpd['retry']} 'retry': self.dpd['retry']}
self.csr.put_request('vpn-svc/ike/keepalive', payload=payload) self.csr.put_request('vpn-svc/ike/keepalive', payload=payload)
@ -1222,8 +1277,9 @@ class TestCsrRestIkeKeepaliveCreate(base.BaseTestCase):
def test_configure_ike_keepalive(self): def test_configure_ike_keepalive(self):
"""Set IKE keep-alive (aka Dead Peer Detection) for the CSR.""" """Set IKE keep-alive (aka Dead Peer Detection) for the CSR."""
with httmock.HTTMock(csr_request.token, csr_request.put, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.put,
device_drivers.csr_request.normal_get):
keepalive_info = {'interval': 60, 'retry': 4} keepalive_info = {'interval': 60, 'retry': 4}
self.csr.configure_ike_keepalive(keepalive_info) self.csr.configure_ike_keepalive(keepalive_info)
self.assertEqual(requests.codes.NO_CONTENT, self.csr.status) self.assertEqual(requests.codes.NO_CONTENT, self.csr.status)
@ -1235,8 +1291,10 @@ class TestCsrRestIkeKeepaliveCreate(base.BaseTestCase):
def test_disable_ike_keepalive(self): def test_disable_ike_keepalive(self):
"""Disable IKE keep-alive (aka Dead Peer Detection) for the CSR.""" """Disable IKE keep-alive (aka Dead Peer Detection) for the CSR."""
with httmock.HTTMock(csr_request.token, csr_request.delete, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.put, csr_request.get_not_configured): device_drivers.csr_request.delete,
device_drivers.csr_request.put,
device_drivers.csr_request.get_not_configured):
keepalive_info = {'interval': 0, 'retry': 4} keepalive_info = {'interval': 0, 'retry': 4}
self.csr.configure_ike_keepalive(keepalive_info) self.csr.configure_ike_keepalive(keepalive_info)
self.assertEqual(requests.codes.NO_CONTENT, self.csr.status) self.assertEqual(requests.codes.NO_CONTENT, self.csr.status)
@ -1260,8 +1318,9 @@ class TestCsrRestStaticRoute(base.BaseTestCase):
cidr = u'10.1.0.0/24' cidr = u'10.1.0.0/24'
interface = u'GigabitEthernet1' interface = u'GigabitEthernet1'
expected_id = '10.1.0.0_24_GigabitEthernet1' expected_id = '10.1.0.0_24_GigabitEthernet1'
with httmock.HTTMock(csr_request.token, csr_request.post, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.normal_get): device_drivers.csr_request.post,
device_drivers.csr_request.normal_get):
route_info = {u'destination-network': cidr, route_info = {u'destination-network': cidr,
u'outgoing-interface': interface} u'outgoing-interface': interface}
location = self.csr.create_static_route(route_info) location = self.csr.create_static_route(route_info)
@ -1277,8 +1336,9 @@ class TestCsrRestStaticRoute(base.BaseTestCase):
expected_route.update(route_info) expected_route.update(route_info)
self.assertEqual(expected_route, content) self.assertEqual(expected_route, content)
# Now delete and verify that static route is gone # Now delete and verify that static route is gone
with httmock.HTTMock(csr_request.token, csr_request.delete, with httmock.HTTMock(device_drivers.csr_request.token,
csr_request.no_such_resource): device_drivers.csr_request.delete,
device_drivers.csr_request.no_such_resource):
route_id = csr_client.make_route_id(cidr, interface) route_id = csr_client.make_route_id(cidr, interface)
self.csr.delete_static_route(route_id) self.csr.delete_static_route(route_id)
self.assertEqual(requests.codes.NO_CONTENT, self.csr.status) self.assertEqual(requests.codes.NO_CONTENT, self.csr.status)

View File

@ -25,14 +25,14 @@ from webob import exc
import webtest import webtest
from neutron.api import api_common from neutron.api import api_common
from neutron.api.extensions import PluginAwareExtensionManager from neutron.api import extensions
from neutron.api.rpc.agentnotifiers import dhcp_rpc_agent_api from neutron.api.rpc.agentnotifiers import dhcp_rpc_agent_api
from neutron.api.v2 import attributes from neutron.api.v2 import attributes
from neutron.api.v2 import base as v2_base from neutron.api.v2 import base as v2_base
from neutron.api.v2 import router from neutron.api.v2 import router
from neutron.common import exceptions as n_exc from neutron.common import exceptions as n_exc
from neutron import context from neutron import context
from neutron.manager import NeutronManager from neutron import manager
from neutron.openstack.common.notifier import api as notifer_api from neutron.openstack.common.notifier import api as notifer_api
from neutron.openstack.common import policy as common_policy from neutron.openstack.common import policy as common_policy
from neutron.openstack.common import uuidutils from neutron.openstack.common import uuidutils
@ -94,7 +94,7 @@ class APIv2TestBase(base.BaseTestCase):
plugin = 'neutron.neutron_plugin_base_v2.NeutronPluginBaseV2' plugin = 'neutron.neutron_plugin_base_v2.NeutronPluginBaseV2'
# Ensure existing ExtensionManager is not used # Ensure existing ExtensionManager is not used
PluginAwareExtensionManager._instance = None extensions.PluginAwareExtensionManager._instance = None
# Create the default configurations # Create the default configurations
self.config_parse() self.config_parse()
# Update the plugin # Update the plugin
@ -1122,7 +1122,7 @@ class SubresourceTest(base.BaseTestCase):
super(SubresourceTest, self).setUp() super(SubresourceTest, self).setUp()
plugin = 'neutron.tests.unit.test_api_v2.TestSubresourcePlugin' plugin = 'neutron.tests.unit.test_api_v2.TestSubresourcePlugin'
PluginAwareExtensionManager._instance = None extensions.PluginAwareExtensionManager._instance = None
# Save the global RESOURCE_ATTRIBUTE_MAP # Save the global RESOURCE_ATTRIBUTE_MAP
self.saved_attr_map = {} self.saved_attr_map = {}
@ -1394,7 +1394,7 @@ class ExtensionTestCase(base.BaseTestCase):
plugin = 'neutron.neutron_plugin_base_v2.NeutronPluginBaseV2' plugin = 'neutron.neutron_plugin_base_v2.NeutronPluginBaseV2'
# Ensure existing ExtensionManager is not used # Ensure existing ExtensionManager is not used
PluginAwareExtensionManager._instance = None extensions.PluginAwareExtensionManager._instance = None
# Save the global RESOURCE_ATTRIBUTE_MAP # Save the global RESOURCE_ATTRIBUTE_MAP
self.saved_attr_map = {} self.saved_attr_map = {}
@ -1412,7 +1412,8 @@ class ExtensionTestCase(base.BaseTestCase):
self.plugin = self._plugin_patcher.start() self.plugin = self._plugin_patcher.start()
# Instantiate mock plugin and enable the V2attributes extension # Instantiate mock plugin and enable the V2attributes extension
NeutronManager.get_plugin().supported_extension_aliases = ["v2attrs"] manager.NeutronManager.get_plugin().supported_extension_aliases = (
["v2attrs"])
api = router.APIRouter() api = router.APIRouter()
self.api = webtest.TestApp(api) self.api = webtest.TestApp(api)

View File

@ -25,18 +25,17 @@ import webob.exc
import neutron import neutron
from neutron.api import api_common from neutron.api import api_common
from neutron.api.extensions import PluginAwareExtensionManager from neutron.api import extensions
from neutron.api.v2 import attributes from neutron.api.v2 import attributes
from neutron.api.v2.attributes import ATTR_NOT_SPECIFIED from neutron.api.v2 import router
from neutron.api.v2.router import APIRouter
from neutron.common import constants from neutron.common import constants
from neutron.common import exceptions as n_exc from neutron.common import exceptions as n_exc
from neutron.common.test_lib import test_config from neutron.common import test_lib
from neutron import context from neutron import context
from neutron.db import api as db from neutron.db import api as db
from neutron.db import db_base_plugin_v2 from neutron.db import db_base_plugin_v2
from neutron.db import models_v2 from neutron.db import models_v2
from neutron.manager import NeutronManager from neutron import manager
from neutron.openstack.common import importutils from neutron.openstack.common import importutils
from neutron.tests import base from neutron.tests import base
from neutron.tests.unit import test_extensions from neutron.tests.unit import test_extensions
@ -73,7 +72,7 @@ class NeutronDbPluginV2TestCase(testlib_api.WebTestCase):
super(NeutronDbPluginV2TestCase, self).setUp() super(NeutronDbPluginV2TestCase, self).setUp()
cfg.CONF.set_override('notify_nova_on_port_status_changes', False) cfg.CONF.set_override('notify_nova_on_port_status_changes', False)
# Make sure at each test according extensions for the plugin is loaded # Make sure at each test according extensions for the plugin is loaded
PluginAwareExtensionManager._instance = None extensions.PluginAwareExtensionManager._instance = None
# Save the attributes map in case the plugin will alter it # Save the attributes map in case the plugin will alter it
# loading extensions # loading extensions
# Note(salvatore-orlando): shallow copy is not good enough in # Note(salvatore-orlando): shallow copy is not good enough in
@ -92,14 +91,14 @@ class NeutronDbPluginV2TestCase(testlib_api.WebTestCase):
# Create the default configurations # Create the default configurations
args = ['--config-file', base.etcdir('neutron.conf.test')] args = ['--config-file', base.etcdir('neutron.conf.test')]
# If test_config specifies some config-file, use it, as well # If test_config specifies some config-file, use it, as well
for config_file in test_config.get('config_files', []): for config_file in test_lib.test_config.get('config_files', []):
args.extend(['--config-file', config_file]) args.extend(['--config-file', config_file])
self.config_parse(args=args) self.config_parse(args=args)
# Update the plugin # Update the plugin
self.setup_coreplugin(plugin) self.setup_coreplugin(plugin)
cfg.CONF.set_override( cfg.CONF.set_override(
'service_plugins', 'service_plugins',
[test_config.get(key, default) [test_lib.test_config.get(key, default)
for key, default in (service_plugins or {}).iteritems()] for key, default in (service_plugins or {}).iteritems()]
) )
@ -108,13 +107,13 @@ class NeutronDbPluginV2TestCase(testlib_api.WebTestCase):
cfg.CONF.set_override('max_subnet_host_routes', 2) cfg.CONF.set_override('max_subnet_host_routes', 2)
cfg.CONF.set_override('allow_pagination', True) cfg.CONF.set_override('allow_pagination', True)
cfg.CONF.set_override('allow_sorting', True) cfg.CONF.set_override('allow_sorting', True)
self.api = APIRouter() self.api = router.APIRouter()
# Set the defualt status # Set the defualt status
self.net_create_status = 'ACTIVE' self.net_create_status = 'ACTIVE'
self.port_create_status = 'ACTIVE' self.port_create_status = 'ACTIVE'
def _is_native_bulk_supported(): def _is_native_bulk_supported():
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
native_bulk_attr_name = ("_%s__native_bulk_support" native_bulk_attr_name = ("_%s__native_bulk_support"
% plugin_obj.__class__.__name__) % plugin_obj.__class__.__name__)
return getattr(plugin_obj, native_bulk_attr_name, False) return getattr(plugin_obj, native_bulk_attr_name, False)
@ -124,9 +123,9 @@ class NeutronDbPluginV2TestCase(testlib_api.WebTestCase):
def _is_native_pagination_support(): def _is_native_pagination_support():
native_pagination_attr_name = ( native_pagination_attr_name = (
"_%s__native_pagination_support" % "_%s__native_pagination_support" %
NeutronManager.get_plugin().__class__.__name__) manager.NeutronManager.get_plugin().__class__.__name__)
return (cfg.CONF.allow_pagination and return (cfg.CONF.allow_pagination and
getattr(NeutronManager.get_plugin(), getattr(manager.NeutronManager.get_plugin(),
native_pagination_attr_name, False)) native_pagination_attr_name, False))
self._skip_native_pagination = not _is_native_pagination_support() self._skip_native_pagination = not _is_native_pagination_support()
@ -134,9 +133,9 @@ class NeutronDbPluginV2TestCase(testlib_api.WebTestCase):
def _is_native_sorting_support(): def _is_native_sorting_support():
native_sorting_attr_name = ( native_sorting_attr_name = (
"_%s__native_sorting_support" % "_%s__native_sorting_support" %
NeutronManager.get_plugin().__class__.__name__) manager.NeutronManager.get_plugin().__class__.__name__)
return (cfg.CONF.allow_sorting and return (cfg.CONF.allow_sorting and
getattr(NeutronManager.get_plugin(), getattr(manager.NeutronManager.get_plugin(),
native_sorting_attr_name, False)) native_sorting_attr_name, False))
self._skip_native_sorting = not _is_native_sorting_support() self._skip_native_sorting = not _is_native_sorting_support()
@ -309,7 +308,7 @@ class NeutronDbPluginV2TestCase(testlib_api.WebTestCase):
data['subnet'][arg] = kwargs[arg] data['subnet'][arg] = kwargs[arg]
if ('gateway_ip' in kwargs and if ('gateway_ip' in kwargs and
kwargs['gateway_ip'] is not ATTR_NOT_SPECIFIED): kwargs['gateway_ip'] is not attributes.ATTR_NOT_SPECIFIED):
data['subnet']['gateway_ip'] = kwargs['gateway_ip'] data['subnet']['gateway_ip'] = kwargs['gateway_ip']
subnet_req = self.new_create_request('subnets', data, fmt) subnet_req = self.new_create_request('subnets', data, fmt)
@ -525,7 +524,7 @@ class NeutronDbPluginV2TestCase(testlib_api.WebTestCase):
@contextlib.contextmanager @contextlib.contextmanager
def subnet(self, network=None, def subnet(self, network=None,
gateway_ip=ATTR_NOT_SPECIFIED, gateway_ip=attributes.ATTR_NOT_SPECIFIED,
cidr='10.0.0.0/24', cidr='10.0.0.0/24',
fmt=None, fmt=None,
ip_version=4, ip_version=4,
@ -888,8 +887,8 @@ class TestPortsV2(NeutronDbPluginV2TestCase):
with mock.patch('__builtin__.hasattr', with mock.patch('__builtin__.hasattr',
new=fakehasattr): new=fakehasattr):
orig = NeutronManager.get_plugin().create_port orig = manager.NeutronManager.get_plugin().create_port
with mock.patch.object(NeutronManager.get_plugin(), with mock.patch.object(manager.NeutronManager.get_plugin(),
'create_port') as patched_plugin: 'create_port') as patched_plugin:
def side_effect(*args, **kwargs): def side_effect(*args, **kwargs):
@ -912,8 +911,8 @@ class TestPortsV2(NeutronDbPluginV2TestCase):
self.skipTest("Plugin does not support native bulk port create") self.skipTest("Plugin does not support native bulk port create")
ctx = context.get_admin_context() ctx = context.get_admin_context()
with self.network() as net: with self.network() as net:
orig = NeutronManager._instance.plugin.create_port orig = manager.NeutronManager._instance.plugin.create_port
with mock.patch.object(NeutronManager._instance.plugin, with mock.patch.object(manager.NeutronManager._instance.plugin,
'create_port') as patched_plugin: 'create_port') as patched_plugin:
def side_effect(*args, **kwargs): def side_effect(*args, **kwargs):
@ -1350,7 +1349,7 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
net_id=net_id, net_id=net_id,
cidr='10.0.0.225/28', cidr='10.0.0.225/28',
ip_version=4, ip_version=4,
gateway_ip=ATTR_NOT_SPECIFIED) gateway_ip=attributes.ATTR_NOT_SPECIFIED)
self.assertEqual(res.status_int, webob.exc.HTTPClientError.code) self.assertEqual(res.status_int, webob.exc.HTTPClientError.code)
def test_requested_subnet_id_v4_and_v6(self): def test_requested_subnet_id_v4_and_v6(self):
@ -1358,12 +1357,13 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
# Get a IPv4 and IPv6 address # Get a IPv4 and IPv6 address
tenant_id = subnet['subnet']['tenant_id'] tenant_id = subnet['subnet']['tenant_id']
net_id = subnet['subnet']['network_id'] net_id = subnet['subnet']['network_id']
res = self._create_subnet(self.fmt, res = self._create_subnet(
tenant_id=tenant_id, self.fmt,
net_id=net_id, tenant_id=tenant_id,
cidr='2607:f0d0:1002:51::/124', net_id=net_id,
ip_version=6, cidr='2607:f0d0:1002:51::/124',
gateway_ip=ATTR_NOT_SPECIFIED) ip_version=6,
gateway_ip=attributes.ATTR_NOT_SPECIFIED)
subnet2 = self.deserialize(self.fmt, res) subnet2 = self.deserialize(self.fmt, res)
kwargs = {"fixed_ips": kwargs = {"fixed_ips":
[{'subnet_id': subnet['subnet']['id']}, [{'subnet_id': subnet['subnet']['id']},
@ -1639,7 +1639,7 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
webob.exc.HTTPClientError.code) webob.exc.HTTPClientError.code)
def test_delete_ports_by_device_id(self): def test_delete_ports_by_device_id(self):
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
ctx = context.get_admin_context() ctx = context.get_admin_context()
with self.subnet() as subnet: with self.subnet() as subnet:
with contextlib.nested( with contextlib.nested(
@ -1685,7 +1685,7 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
expected_code=webob.exc.HTTPOk.code) expected_code=webob.exc.HTTPOk.code)
def test_delete_ports_by_device_id_second_call_failure(self): def test_delete_ports_by_device_id_second_call_failure(self):
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
self._test_delete_ports_by_device_id_second_call_failure(plugin) self._test_delete_ports_by_device_id_second_call_failure(plugin)
def _test_delete_ports_ignores_port_not_found(self, plugin): def _test_delete_ports_ignores_port_not_found(self, plugin):
@ -1710,7 +1710,7 @@ fixed_ips=ip_address%%3D%s&fixed_ips=ip_address%%3D%s&fixed_ips=subnet_id%%3D%s
"deleting some of the same ports.") "deleting some of the same ports.")
def test_delete_ports_ignores_port_not_found(self): def test_delete_ports_ignores_port_not_found(self):
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
self._test_delete_ports_ignores_port_not_found(plugin) self._test_delete_ports_ignores_port_not_found(plugin)
@ -1798,7 +1798,7 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
# must query db to see whether subnet's shared attribute # must query db to see whether subnet's shared attribute
# has been updated or not # has been updated or not
ctx = context.Context('', '', is_admin=True) ctx = context.Context('', '', is_admin=True)
subnet_db = NeutronManager.get_plugin()._get_subnet( subnet_db = manager.NeutronManager.get_plugin()._get_subnet(
ctx, subnet['subnet']['id']) ctx, subnet['subnet']['id'])
self.assertEqual(subnet_db['shared'], True) self.assertEqual(subnet_db['shared'], True)
@ -1965,11 +1965,11 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
return False return False
return real_has_attr(item, attr) return real_has_attr(item, attr)
orig = NeutronManager.get_plugin().create_network orig = manager.NeutronManager.get_plugin().create_network
#ensures the API choose the emulation code path #ensures the API choose the emulation code path
with mock.patch('__builtin__.hasattr', with mock.patch('__builtin__.hasattr',
new=fakehasattr): new=fakehasattr):
with mock.patch.object(NeutronManager.get_plugin(), with mock.patch.object(manager.NeutronManager.get_plugin(),
'create_network') as patched_plugin: 'create_network') as patched_plugin:
def side_effect(*args, **kwargs): def side_effect(*args, **kwargs):
@ -1986,8 +1986,8 @@ class TestNetworksV2(NeutronDbPluginV2TestCase):
def test_create_networks_bulk_native_plugin_failure(self): def test_create_networks_bulk_native_plugin_failure(self):
if self._skip_native_bulk: if self._skip_native_bulk:
self.skipTest("Plugin does not support native bulk network create") self.skipTest("Plugin does not support native bulk network create")
orig = NeutronManager.get_plugin().create_network orig = manager.NeutronManager.get_plugin().create_network
with mock.patch.object(NeutronManager.get_plugin(), with mock.patch.object(manager.NeutronManager.get_plugin(),
'create_network') as patched_plugin: 'create_network') as patched_plugin:
def side_effect(*args, **kwargs): def side_effect(*args, **kwargs):
@ -2384,8 +2384,8 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
with mock.patch('__builtin__.hasattr', with mock.patch('__builtin__.hasattr',
new=fakehasattr): new=fakehasattr):
orig = NeutronManager.get_plugin().create_subnet orig = manager.NeutronManager.get_plugin().create_subnet
with mock.patch.object(NeutronManager.get_plugin(), with mock.patch.object(manager.NeutronManager.get_plugin(),
'create_subnet') as patched_plugin: 'create_subnet') as patched_plugin:
def side_effect(*args, **kwargs): def side_effect(*args, **kwargs):
@ -2405,8 +2405,8 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
def test_create_subnets_bulk_native_plugin_failure(self): def test_create_subnets_bulk_native_plugin_failure(self):
if self._skip_native_bulk: if self._skip_native_bulk:
self.skipTest("Plugin does not support native bulk subnet create") self.skipTest("Plugin does not support native bulk subnet create")
orig = NeutronManager._instance.plugin.create_subnet orig = manager.NeutronManager._instance.plugin.create_subnet
with mock.patch.object(NeutronManager._instance.plugin, with mock.patch.object(manager.NeutronManager._instance.plugin,
'create_subnet') as patched_plugin: 'create_subnet') as patched_plugin:
def side_effect(*args, **kwargs): def side_effect(*args, **kwargs):
return self._fail_second_call(patched_plugin, orig, return self._fail_second_call(patched_plugin, orig,
@ -3728,7 +3728,7 @@ class TestSubnetsV2(NeutronDbPluginV2TestCase):
'dns_nameservers': ['8.8.8.8'], 'dns_nameservers': ['8.8.8.8'],
'host_routes': [{'destination': '135.207.0.0/16', 'host_routes': [{'destination': '135.207.0.0/16',
'nexthop': '1.2.3.4'}]} 'nexthop': '1.2.3.4'}]}
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
e = self.assertRaises(exception, e = self.assertRaises(exception,
plugin._validate_subnet, plugin._validate_subnet,
context.get_admin_context( context.get_admin_context(

View File

@ -23,9 +23,7 @@ from oslo.config import cfg
from neutron.agent.common import config from neutron.agent.common import config
from neutron.agent.linux import interface from neutron.agent.linux import interface
from neutron.debug import commands from neutron.debug import commands
from neutron.debug.debug_agent import DEVICE_OWNER_COMPUTE_PROBE from neutron.debug import debug_agent
from neutron.debug.debug_agent import DEVICE_OWNER_NETWORK_PROBE
from neutron.debug.debug_agent import NeutronDebugAgent
from neutron.tests import base from neutron.tests import base
@ -38,7 +36,7 @@ class TestDebugCommands(base.BaseTestCase):
def setUp(self): def setUp(self):
super(TestDebugCommands, self).setUp() super(TestDebugCommands, self).setUp()
cfg.CONF.register_opts(interface.OPTS) cfg.CONF.register_opts(interface.OPTS)
cfg.CONF.register_opts(NeutronDebugAgent.OPTS) cfg.CONF.register_opts(debug_agent.NeutronDebugAgent.OPTS)
cfg.CONF(args=[], project='neutron') cfg.CONF(args=[], project='neutron')
config.register_interface_driver_opts_helper(cfg.CONF) config.register_interface_driver_opts_helper(cfg.CONF)
config.register_use_namespaces_opts_helper(cfg.CONF) config.register_use_namespaces_opts_helper(cfg.CONF)
@ -102,14 +100,14 @@ class TestDebugCommands(base.BaseTestCase):
self.client = client_inst self.client = client_inst
mock_std = mock.Mock() mock_std = mock.Mock()
self.app = MyApp(mock_std) self.app = MyApp(mock_std)
self.app.debug_agent = NeutronDebugAgent(cfg.CONF, self.app.debug_agent = debug_agent.NeutronDebugAgent(cfg.CONF,
client_inst, client_inst,
mock_driver) mock_driver)
def _test_create_probe(self, device_owner): def _test_create_probe(self, device_owner):
cmd = commands.CreateProbe(self.app, None) cmd = commands.CreateProbe(self.app, None)
cmd_parser = cmd.get_parser('create_probe') cmd_parser = cmd.get_parser('create_probe')
if device_owner == DEVICE_OWNER_COMPUTE_PROBE: if device_owner == debug_agent.DEVICE_OWNER_COMPUTE_PROBE:
args = ['fake_net', '--device-owner', 'compute'] args = ['fake_net', '--device-owner', 'compute']
else: else:
args = ['fake_net'] args = ['fake_net']
@ -141,10 +139,10 @@ class TestDebugCommands(base.BaseTestCase):
)]) )])
def test_create_network_probe(self): def test_create_network_probe(self):
self._test_create_probe(DEVICE_OWNER_NETWORK_PROBE) self._test_create_probe(debug_agent.DEVICE_OWNER_NETWORK_PROBE)
def test_create_nova_probe(self): def test_create_nova_probe(self):
self._test_create_probe(DEVICE_OWNER_COMPUTE_PROBE) self._test_create_probe(debug_agent.DEVICE_OWNER_COMPUTE_PROBE)
def _test_create_probe_external(self, device_owner): def _test_create_probe_external(self, device_owner):
fake_network = {'network': {'id': 'fake_net', fake_network = {'network': {'id': 'fake_net',
@ -154,7 +152,7 @@ class TestDebugCommands(base.BaseTestCase):
self.client.show_network.return_value = fake_network self.client.show_network.return_value = fake_network
cmd = commands.CreateProbe(self.app, None) cmd = commands.CreateProbe(self.app, None)
cmd_parser = cmd.get_parser('create_probe') cmd_parser = cmd.get_parser('create_probe')
if device_owner == DEVICE_OWNER_COMPUTE_PROBE: if device_owner == debug_agent.DEVICE_OWNER_COMPUTE_PROBE:
args = ['fake_net', '--device-owner', 'compute'] args = ['fake_net', '--device-owner', 'compute']
else: else:
args = ['fake_net'] args = ['fake_net']
@ -186,10 +184,12 @@ class TestDebugCommands(base.BaseTestCase):
)]) )])
def test_create_network_probe_external(self): def test_create_network_probe_external(self):
self._test_create_probe_external(DEVICE_OWNER_NETWORK_PROBE) self._test_create_probe_external(
debug_agent.DEVICE_OWNER_NETWORK_PROBE)
def test_create_nova_probe_external(self): def test_create_nova_probe_external(self):
self._test_create_probe_external(DEVICE_OWNER_COMPUTE_PROBE) self._test_create_probe_external(
debug_agent.DEVICE_OWNER_COMPUTE_PROBE)
def test_delete_probe(self): def test_delete_probe(self):
cmd = commands.DeleteProbe(self.app, None) cmd = commands.DeleteProbe(self.app, None)
@ -250,8 +250,9 @@ class TestDebugCommands(base.BaseTestCase):
parsed_args = cmd_parser.parse_args(args) parsed_args = cmd_parser.parse_args(args)
cmd.run(parsed_args) cmd.run(parsed_args)
self.client.assert_has_calls( self.client.assert_has_calls(
[mock.call.list_ports(device_owner=[DEVICE_OWNER_NETWORK_PROBE, [mock.call.list_ports(
DEVICE_OWNER_COMPUTE_PROBE])]) device_owner=[debug_agent.DEVICE_OWNER_NETWORK_PROBE,
debug_agent.DEVICE_OWNER_COMPUTE_PROBE])])
def test_exec_command(self): def test_exec_command(self):
cmd = commands.ExecProbe(self.app, None) cmd = commands.ExecProbe(self.app, None)
@ -282,9 +283,10 @@ class TestDebugCommands(base.BaseTestCase):
cmd.run(parsed_args) cmd.run(parsed_args)
namespace = 'qprobe-fake_port' namespace = 'qprobe-fake_port'
self.client.assert_has_calls( self.client.assert_has_calls(
[mock.call.list_ports(device_id=socket.gethostname(), [mock.call.list_ports(
device_owner=[DEVICE_OWNER_NETWORK_PROBE, device_id=socket.gethostname(),
DEVICE_OWNER_COMPUTE_PROBE]), device_owner=[debug_agent.DEVICE_OWNER_NETWORK_PROBE,
debug_agent.DEVICE_OWNER_COMPUTE_PROBE]),
mock.call.show_port('fake_port'), mock.call.show_port('fake_port'),
mock.call.show_network('fake_net'), mock.call.show_network('fake_net'),
mock.call.show_subnet('fake_subnet'), mock.call.show_subnet('fake_subnet'),
@ -312,7 +314,7 @@ class TestDebugCommands(base.BaseTestCase):
cmd.run(parsed_args) cmd.run(parsed_args)
ns.assert_has_calls([mock.call.execute(mock.ANY)]) ns.assert_has_calls([mock.call.execute(mock.ANY)])
fake_port = {'port': fake_port = {'port':
{'device_owner': DEVICE_OWNER_NETWORK_PROBE, {'device_owner': debug_agent.DEVICE_OWNER_NETWORK_PROBE,
'admin_state_up': True, 'admin_state_up': True,
'network_id': 'fake_net', 'network_id': 'fake_net',
'tenant_id': 'fake_tenant', 'tenant_id': 'fake_tenant',
@ -340,7 +342,7 @@ class TestDebugCommands(base.BaseTestCase):
expected = [mock.call.list_ports(), expected = [mock.call.list_ports(),
mock.call.list_ports( mock.call.list_ports(
network_id='fake_net', network_id='fake_net',
device_owner=DEVICE_OWNER_NETWORK_PROBE, device_owner=debug_agent.DEVICE_OWNER_NETWORK_PROBE,
device_id=socket.gethostname()), device_id=socket.gethostname()),
mock.call.show_subnet('fake_subnet'), mock.call.show_subnet('fake_subnet'),
mock.call.show_port('fake_port')] mock.call.show_port('fake_port')]

View File

@ -26,7 +26,6 @@ import testtools
from neutron.agent.common import config from neutron.agent.common import config
from neutron.agent import dhcp_agent from neutron.agent import dhcp_agent
from neutron.agent.dhcp_agent import DhcpAgentWithStateReport
from neutron.agent.linux import dhcp from neutron.agent.linux import dhcp
from neutron.agent.linux import interface from neutron.agent.linux import interface
from neutron.common import constants as const from neutron.common import constants as const
@ -141,10 +140,10 @@ class TestDhcpAgent(base.BaseTestCase):
state_rpc_str = 'neutron.agent.rpc.PluginReportStateAPI' state_rpc_str = 'neutron.agent.rpc.PluginReportStateAPI'
# sync_state is needed for this test # sync_state is needed for this test
cfg.CONF.set_override('report_interval', 1, 'AGENT') cfg.CONF.set_override('report_interval', 1, 'AGENT')
with mock.patch.object(DhcpAgentWithStateReport, with mock.patch.object(dhcp_agent.DhcpAgentWithStateReport,
'sync_state', 'sync_state',
autospec=True) as mock_sync_state: autospec=True) as mock_sync_state:
with mock.patch.object(DhcpAgentWithStateReport, with mock.patch.object(dhcp_agent.DhcpAgentWithStateReport,
'periodic_resync', 'periodic_resync',
autospec=True) as mock_periodic_resync: autospec=True) as mock_periodic_resync:
with mock.patch(state_rpc_str) as state_rpc: with mock.patch(state_rpc_str) as state_rpc:
@ -159,7 +158,8 @@ class TestDhcpAgent(base.BaseTestCase):
cfg.CONF.register_opts(dhcp.OPTS) cfg.CONF.register_opts(dhcp.OPTS)
cfg.CONF.register_opts(interface.OPTS) cfg.CONF.register_opts(interface.OPTS)
cfg.CONF(project='neutron') cfg.CONF(project='neutron')
agent_mgr = DhcpAgentWithStateReport('testhost') agent_mgr = dhcp_agent.DhcpAgentWithStateReport(
'testhost')
eventlet.greenthread.sleep(1) eventlet.greenthread.sleep(1)
agent_mgr.after_start() agent_mgr.after_start()
mock_sync_state.assert_called_once_with(agent_mgr) mock_sync_state.assert_called_once_with(agent_mgr)

View File

@ -20,7 +20,7 @@ from neutron.db import db_base_plugin_v2
from neutron.db import portsecurity_db from neutron.db import portsecurity_db
from neutron.extensions import allowedaddresspairs as addr_pair from neutron.extensions import allowedaddresspairs as addr_pair
from neutron.extensions import portsecurity as psec from neutron.extensions import portsecurity as psec
from neutron.manager import NeutronManager from neutron import manager
from neutron.tests.unit import test_db_plugin from neutron.tests.unit import test_db_plugin
DB_PLUGIN_KLASS = ('neutron.tests.unit.test_extension_allowedaddresspairs.' DB_PLUGIN_KLASS = ('neutron.tests.unit.test_extension_allowedaddresspairs.'
@ -32,7 +32,7 @@ class AllowedAddressPairTestCase(test_db_plugin.NeutronDbPluginV2TestCase):
super(AllowedAddressPairTestCase, self).setUp(plugin) super(AllowedAddressPairTestCase, self).setUp(plugin)
# Check if a plugin supports security groups # Check if a plugin supports security groups
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
self._skip_port_security = ('port-security' not in self._skip_port_security = ('port-security' not in
plugin_obj.supported_extension_aliases) plugin_obj.supported_extension_aliases)
@ -266,7 +266,7 @@ class TestAllowedAddressPairs(AllowedAddressPairDBTestCase):
update_port = {'port': {psec.PORTSECURITY: False}} update_port = {'port': {psec.PORTSECURITY: False}}
# If plugin implements security groups we also need to remove # If plugin implements security groups we also need to remove
# the security group on port. # the security group on port.
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
if 'security-groups' in plugin_obj.supported_extension_aliases: if 'security-groups' in plugin_obj.supported_extension_aliases:
update_port['port']['security_groups'] = [] update_port['port']['security_groups'] = []
req = self.new_update_request('ports', update_port, req = self.new_update_request('ports', update_port,

View File

@ -25,7 +25,7 @@ from webob import exc
from neutron import context from neutron import context
from neutron.db import models_v2 from neutron.db import models_v2
from neutron.extensions import external_net as external_net from neutron.extensions import external_net as external_net
from neutron.manager import NeutronManager from neutron import manager
from neutron.openstack.common import log as logging from neutron.openstack.common import log as logging
from neutron.openstack.common import uuidutils from neutron.openstack.common import uuidutils
from neutron.tests.unit import test_api_v2 from neutron.tests.unit import test_api_v2
@ -105,20 +105,20 @@ class ExtNetDBTestCase(test_db_plugin.NeutronDbPluginV2TestCase):
query_params='router:external=False') query_params='router:external=False')
def test_get_network_succeeds_without_filter(self): def test_get_network_succeeds_without_filter(self):
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
ctx = context.Context(None, None, is_admin=True) ctx = context.Context(None, None, is_admin=True)
result = plugin.get_networks(ctx, filters=None) result = plugin.get_networks(ctx, filters=None)
self.assertEqual(result, []) self.assertEqual(result, [])
def test_network_filter_hook_admin_context(self): def test_network_filter_hook_admin_context(self):
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
ctx = context.Context(None, None, is_admin=True) ctx = context.Context(None, None, is_admin=True)
model = models_v2.Network model = models_v2.Network
conditions = plugin._network_filter_hook(ctx, model, []) conditions = plugin._network_filter_hook(ctx, model, [])
self.assertEqual(conditions, []) self.assertEqual(conditions, [])
def test_network_filter_hook_nonadmin_context(self): def test_network_filter_hook_nonadmin_context(self):
plugin = NeutronManager.get_plugin() plugin = manager.NeutronManager.get_plugin()
ctx = context.Context('edinson', 'cavani') ctx = context.Context('edinson', 'cavani')
model = models_v2.Network model = models_v2.Network
txt = "externalnetworks.network_id IS NOT NULL" txt = "externalnetworks.network_id IS NOT NULL"
@ -160,7 +160,7 @@ class ExtNetDBTestCase(test_db_plugin.NeutronDbPluginV2TestCase):
True) True)
def test_delete_network_check_disassociated_floatingips(self): def test_delete_network_check_disassociated_floatingips(self):
with mock.patch.object(NeutronManager, with mock.patch.object(manager.NeutronManager,
'get_service_plugins') as srv_plugins: 'get_service_plugins') as srv_plugins:
l3_mock = mock.Mock() l3_mock = mock.Mock()
srv_plugins.return_value = {'L3_ROUTER_NAT': l3_mock} srv_plugins.return_value = {'L3_ROUTER_NAT': l3_mock}

View File

@ -28,7 +28,7 @@ from neutron.api.v2 import attributes
from neutron.api.v2 import router from neutron.api.v2 import router
from neutron import context from neutron import context
from neutron.extensions import providernet as pnet from neutron.extensions import providernet as pnet
from neutron.manager import NeutronManager from neutron import manager
from neutron.openstack.common import uuidutils from neutron.openstack.common import uuidutils
from neutron import quota from neutron import quota
from neutron.tests.unit import test_api_v2 from neutron.tests.unit import test_api_v2
@ -77,7 +77,7 @@ class ProvidernetExtensionTestCase(testlib_api.WebTestCase):
instance = self.plugin.return_value instance = self.plugin.return_value
instance.get_networks_count.return_value = 1 instance.get_networks_count.return_value = 1
# Instantiate mock plugin and enable the 'provider' extension # Instantiate mock plugin and enable the 'provider' extension
NeutronManager.get_plugin().supported_extension_aliases = ( manager.NeutronManager.get_plugin().supported_extension_aliases = (
["provider"]) ["provider"])
ext_mgr = ProviderExtensionManager() ext_mgr = ProviderExtensionManager()
self.ext_mdw = test_extensions.setup_extensions_middleware(ext_mgr) self.ext_mdw = test_extensions.setup_extensions_middleware(ext_mgr)

View File

@ -21,7 +21,7 @@ from neutron.db import portsecurity_db
from neutron.db import securitygroups_db from neutron.db import securitygroups_db
from neutron.extensions import portsecurity as psec from neutron.extensions import portsecurity as psec
from neutron.extensions import securitygroup as ext_sg from neutron.extensions import securitygroup as ext_sg
from neutron.manager import NeutronManager from neutron import manager
from neutron.tests.unit import test_db_plugin from neutron.tests.unit import test_db_plugin
from neutron.tests.unit import test_extension_security_group from neutron.tests.unit import test_extension_security_group
@ -39,7 +39,7 @@ class PortSecurityTestCase(
super(PortSecurityTestCase, self).setUp(plugin=plugin, ext_mgr=ext_mgr) super(PortSecurityTestCase, self).setUp(plugin=plugin, ext_mgr=ext_mgr)
# Check if a plugin supports security groups # Check if a plugin supports security groups
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
self._skip_security_group = ('security-group' not in self._skip_security_group = ('security-group' not in
plugin_obj.supported_extension_aliases) plugin_obj.supported_extension_aliases)

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,7 @@ from neutron.db import l3_rpc_base
from neutron.db import model_base from neutron.db import model_base
from neutron.extensions import external_net from neutron.extensions import external_net
from neutron.extensions import l3 from neutron.extensions import l3
from neutron.manager import NeutronManager from neutron import manager
from neutron.openstack.common import importutils from neutron.openstack.common import importutils
from neutron.openstack.common import log as logging from neutron.openstack.common import log as logging
from neutron.openstack.common.notifier import test_notifier from neutron.openstack.common.notifier import test_notifier
@ -244,7 +244,7 @@ class TestL3NatBasePlugin(db_base_plugin_v2.NeutronDbPluginV2,
super(TestL3NatBasePlugin, self).delete_network(context, id) super(TestL3NatBasePlugin, self).delete_network(context, id)
def delete_port(self, context, id, l3_port_check=True): def delete_port(self, context, id, l3_port_check=True):
plugin = NeutronManager.get_service_plugins().get( plugin = manager.NeutronManager.get_service_plugins().get(
service_constants.L3_ROUTER_NAT) service_constants.L3_ROUTER_NAT)
if plugin: if plugin:
if l3_port_check: if l3_port_check:
@ -1808,7 +1808,7 @@ class L3AgentDbTestCaseBase(L3NatTestCaseMixin):
def _test_notify_op_agent(self, target_func, *args): def _test_notify_op_agent(self, target_func, *args):
l3_rpc_agent_api_str = ( l3_rpc_agent_api_str = (
'neutron.api.rpc.agentnotifiers.l3_rpc_agent_api.L3AgentNotifyAPI') 'neutron.api.rpc.agentnotifiers.l3_rpc_agent_api.L3AgentNotifyAPI')
plugin = NeutronManager.get_service_plugins()[ plugin = manager.NeutronManager.get_service_plugins()[
service_constants.L3_ROUTER_NAT] service_constants.L3_ROUTER_NAT]
oldNotify = plugin.l3_rpc_notifier oldNotify = plugin.l3_rpc_notifier
try: try:
@ -1927,7 +1927,7 @@ class L3NatDBIntAgentSchedulingTestCase(L3BaseForIntTests,
self.adminContext = context.get_admin_context() self.adminContext = context.get_admin_context()
def _assert_router_on_agent(self, router_id, agent_host): def _assert_router_on_agent(self, router_id, agent_host):
plugin = NeutronManager.get_service_plugins().get( plugin = manager.NeutronManager.get_service_plugins().get(
service_constants.L3_ROUTER_NAT) service_constants.L3_ROUTER_NAT)
agents = plugin.list_l3_agents_hosting_router( agents = plugin.list_l3_agents_hosting_router(
self.adminContext, router_id)['agents'] self.adminContext, router_id)['agents']

View File

@ -22,7 +22,7 @@ from neutron.agent.linux import dhcp
from neutron.agent.linux import interface from neutron.agent.linux import interface
from neutron.agent.linux import ip_lib from neutron.agent.linux import ip_lib
from neutron.agent.linux import utils from neutron.agent.linux import utils
from neutron.extensions.flavor import (FLAVOR_NETWORK) from neutron.extensions import flavor
from neutron.openstack.common import uuidutils from neutron.openstack.common import uuidutils
from neutron.tests import base from neutron.tests import base
@ -417,7 +417,7 @@ class TestMetaInterfaceDriver(TestBase):
self.client_inst = mock.Mock() self.client_inst = mock.Mock()
client_cls.return_value = self.client_inst client_cls.return_value = self.client_inst
fake_network = {'network': {FLAVOR_NETWORK: 'fake1'}} fake_network = {'network': {flavor.FLAVOR_NETWORK: 'fake1'}}
fake_port = {'ports': fake_port = {'ports':
[{'mac_address': [{'mac_address':
'aa:bb:cc:dd:ee:ffa', 'network_id': 'test'}]} 'aa:bb:cc:dd:ee:ffa', 'network_id': 'test'}]}

View File

@ -21,9 +21,7 @@ import fixtures
from oslo.config import cfg from oslo.config import cfg
from neutron.manager import NeutronManager from neutron import manager
from neutron.manager import validate_post_plugin_load
from neutron.manager import validate_pre_plugin_load
from neutron.openstack.common import log as logging from neutron.openstack.common import log as logging
from neutron.plugins.common import constants from neutron.plugins.common import constants
from neutron.tests import base from neutron.tests import base
@ -57,7 +55,7 @@ class NeutronManagerTestCase(base.BaseTestCase):
cfg.CONF.set_override("service_plugins", cfg.CONF.set_override("service_plugins",
["neutron.tests.unit.dummy_plugin." ["neutron.tests.unit.dummy_plugin."
"DummyServicePlugin"]) "DummyServicePlugin"])
mgr = NeutronManager.get_instance() mgr = manager.NeutronManager.get_instance()
plugin = mgr.get_service_plugins()[constants.DUMMY] plugin = mgr.get_service_plugins()[constants.DUMMY]
self.assertTrue( self.assertTrue(
@ -68,7 +66,7 @@ class NeutronManagerTestCase(base.BaseTestCase):
def test_service_plugin_by_name_is_loaded(self): def test_service_plugin_by_name_is_loaded(self):
cfg.CONF.set_override("core_plugin", DB_PLUGIN_KLASS) cfg.CONF.set_override("core_plugin", DB_PLUGIN_KLASS)
cfg.CONF.set_override("service_plugins", ["dummy"]) cfg.CONF.set_override("service_plugins", ["dummy"])
mgr = NeutronManager.get_instance() mgr = manager.NeutronManager.get_instance()
plugin = mgr.get_service_plugins()[constants.DUMMY] plugin = mgr.get_service_plugins()[constants.DUMMY]
self.assertTrue( self.assertTrue(
@ -83,19 +81,19 @@ class NeutronManagerTestCase(base.BaseTestCase):
"neutron.tests.unit.dummy_plugin." "neutron.tests.unit.dummy_plugin."
"DummyServicePlugin"]) "DummyServicePlugin"])
cfg.CONF.set_override("core_plugin", DB_PLUGIN_KLASS) cfg.CONF.set_override("core_plugin", DB_PLUGIN_KLASS)
self.assertRaises(ValueError, NeutronManager.get_instance) self.assertRaises(ValueError, manager.NeutronManager.get_instance)
def test_multiple_plugins_by_name_specified_for_service_type(self): def test_multiple_plugins_by_name_specified_for_service_type(self):
cfg.CONF.set_override("service_plugins", ["dummy", "dummy"]) cfg.CONF.set_override("service_plugins", ["dummy", "dummy"])
cfg.CONF.set_override("core_plugin", DB_PLUGIN_KLASS) cfg.CONF.set_override("core_plugin", DB_PLUGIN_KLASS)
self.assertRaises(ValueError, NeutronManager.get_instance) self.assertRaises(ValueError, manager.NeutronManager.get_instance)
def test_multiple_plugins_mixed_specified_for_service_type(self): def test_multiple_plugins_mixed_specified_for_service_type(self):
cfg.CONF.set_override("service_plugins", cfg.CONF.set_override("service_plugins",
["neutron.tests.unit.dummy_plugin." ["neutron.tests.unit.dummy_plugin."
"DummyServicePlugin", "dummy"]) "DummyServicePlugin", "dummy"])
cfg.CONF.set_override("core_plugin", DB_PLUGIN_KLASS) cfg.CONF.set_override("core_plugin", DB_PLUGIN_KLASS)
self.assertRaises(ValueError, NeutronManager.get_instance) self.assertRaises(ValueError, manager.NeutronManager.get_instance)
def test_service_plugin_conflicts_with_core_plugin(self): def test_service_plugin_conflicts_with_core_plugin(self):
cfg.CONF.set_override("service_plugins", cfg.CONF.set_override("service_plugins",
@ -104,13 +102,13 @@ class NeutronManagerTestCase(base.BaseTestCase):
cfg.CONF.set_override("core_plugin", cfg.CONF.set_override("core_plugin",
"neutron.tests.unit.test_neutron_manager." "neutron.tests.unit.test_neutron_manager."
"MultiServiceCorePlugin") "MultiServiceCorePlugin")
self.assertRaises(ValueError, NeutronManager.get_instance) self.assertRaises(ValueError, manager.NeutronManager.get_instance)
def test_core_plugin_supports_services(self): def test_core_plugin_supports_services(self):
cfg.CONF.set_override("core_plugin", cfg.CONF.set_override("core_plugin",
"neutron.tests.unit.test_neutron_manager." "neutron.tests.unit.test_neutron_manager."
"MultiServiceCorePlugin") "MultiServiceCorePlugin")
mgr = NeutronManager.get_instance() mgr = manager.NeutronManager.get_instance()
svc_plugins = mgr.get_service_plugins() svc_plugins = mgr.get_service_plugins()
self.assertEqual(3, len(svc_plugins)) self.assertEqual(3, len(svc_plugins))
self.assertIn(constants.CORE, svc_plugins.keys()) self.assertIn(constants.CORE, svc_plugins.keys())
@ -121,18 +119,18 @@ class NeutronManagerTestCase(base.BaseTestCase):
cfg.CONF.import_opt('dhcp_agents_per_network', cfg.CONF.import_opt('dhcp_agents_per_network',
'neutron.db.agentschedulers_db') 'neutron.db.agentschedulers_db')
self.assertIsNone(validate_post_plugin_load()) self.assertIsNone(manager.validate_post_plugin_load())
cfg.CONF.set_override('dhcp_agents_per_network', 2) cfg.CONF.set_override('dhcp_agents_per_network', 2)
self.assertIsNone(validate_post_plugin_load()) self.assertIsNone(manager.validate_post_plugin_load())
cfg.CONF.set_override('dhcp_agents_per_network', 0) cfg.CONF.set_override('dhcp_agents_per_network', 0)
self.assertIsNotNone(validate_post_plugin_load()) self.assertIsNotNone(manager.validate_post_plugin_load())
cfg.CONF.set_override('dhcp_agents_per_network', -1) cfg.CONF.set_override('dhcp_agents_per_network', -1)
self.assertIsNotNone(validate_post_plugin_load()) self.assertIsNotNone(manager.validate_post_plugin_load())
def test_pre_plugin_validation(self): def test_pre_plugin_validation(self):
self.assertIsNotNone(validate_pre_plugin_load()) self.assertIsNotNone(manager.validate_pre_plugin_load())
cfg.CONF.set_override('core_plugin', 'dummy.plugin') cfg.CONF.set_override('core_plugin', 'dummy.plugin')
self.assertIsNone(validate_pre_plugin_load()) self.assertIsNone(manager.validate_pre_plugin_load())
def test_manager_gathers_agent_notifiers_from_service_plugins(self): def test_manager_gathers_agent_notifiers_from_service_plugins(self):
cfg.CONF.set_override("service_plugins", cfg.CONF.set_override("service_plugins",
@ -144,5 +142,5 @@ class NeutronManagerTestCase(base.BaseTestCase):
expected = {'l3': 'l3_agent_notifier', expected = {'l3': 'l3_agent_notifier',
'dhcp': 'dhcp_agent_notifier', 'dhcp': 'dhcp_agent_notifier',
'dummy': 'dummy_agent_notifier'} 'dummy': 'dummy_agent_notifier'}
core_plugin = NeutronManager.get_plugin() core_plugin = manager.NeutronManager.get_plugin()
self.assertEqual(expected, core_plugin.agent_notifiers) self.assertEqual(expected, core_plugin.agent_notifiers)

View File

@ -18,7 +18,7 @@
import sys import sys
import mock import mock
from six.moves import xrange from six import moves
from neutron.tests import base from neutron.tests import base
from neutron.tests import post_mortem_debug from neutron.tests import post_mortem_debug
@ -66,7 +66,7 @@ class TestGetIgnoredTraceback(base.BaseTestCase):
tb = root_tb tb = root_tb
tracebacks = [tb] tracebacks = [tb]
for x in xrange(len(ignored_bit_array) - 1): for x in moves.xrange(len(ignored_bit_array) - 1):
tb.tb_next = mock.Mock() tb.tb_next = mock.Mock()
tb = tb.tb_next tb = tb.tb_next
tracebacks.append(tb) tracebacks.append(tb)

View File

@ -15,11 +15,9 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from contextlib import contextmanager import contextlib
from contextlib import nested
import mock import mock
from mock import call
from oslo.config import cfg from oslo.config import cfg
from testtools import matchers from testtools import matchers
import webob.exc import webob.exc
@ -35,7 +33,7 @@ from neutron import context
from neutron.db import securitygroups_rpc_base as sg_db_rpc from neutron.db import securitygroups_rpc_base as sg_db_rpc
from neutron.extensions import allowedaddresspairs as addr_pair from neutron.extensions import allowedaddresspairs as addr_pair
from neutron.extensions import securitygroup as ext_sg from neutron.extensions import securitygroup as ext_sg
from neutron.manager import NeutronManager from neutron import manager
from neutron.openstack.common.rpc import proxy from neutron.openstack.common.rpc import proxy
from neutron.tests import base from neutron.tests import base
from neutron.tests.unit import test_extension_security_group as test_sg from neutron.tests.unit import test_extension_security_group as test_sg
@ -71,9 +69,9 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase):
def test_security_group_rules_for_devices_ipv4_ingress(self): def test_security_group_rules_for_devices_ipv4_ingress(self):
fake_prefix = FAKE_PREFIX[const.IPv4] fake_prefix = FAKE_PREFIX[const.IPv4]
with self.network() as n: with self.network() as n:
with nested(self.subnet(n), with contextlib.nested(self.subnet(n),
self.security_group()) as (subnet_v4, self.security_group()) as (subnet_v4,
sg1): sg1):
sg1_id = sg1['security_group']['id'] sg1_id = sg1['security_group']['id']
rule1 = self._build_security_group_rule( rule1 = self._build_security_group_rule(
sg1_id, sg1_id,
@ -123,15 +121,15 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase):
self._delete('ports', port_id1) self._delete('ports', port_id1)
def test_security_group_rules_for_devices_ipv4_ingress_addr_pair(self): def test_security_group_rules_for_devices_ipv4_ingress_addr_pair(self):
plugin_obj = NeutronManager.get_plugin() plugin_obj = manager.NeutronManager.get_plugin()
if ('allowed-address-pairs' if ('allowed-address-pairs'
not in plugin_obj.supported_extension_aliases): not in plugin_obj.supported_extension_aliases):
self.skipTest("Test depeneds on allowed-address-pairs extension") self.skipTest("Test depeneds on allowed-address-pairs extension")
fake_prefix = FAKE_PREFIX['IPv4'] fake_prefix = FAKE_PREFIX['IPv4']
with self.network() as n: with self.network() as n:
with nested(self.subnet(n), with contextlib.nested(self.subnet(n),
self.security_group()) as (subnet_v4, self.security_group()) as (subnet_v4,
sg1): sg1):
sg1_id = sg1['security_group']['id'] sg1_id = sg1['security_group']['id']
rule1 = self._build_security_group_rule( rule1 = self._build_security_group_rule(
sg1_id, sg1_id,
@ -188,9 +186,9 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase):
def test_security_group_rules_for_devices_ipv4_egress(self): def test_security_group_rules_for_devices_ipv4_egress(self):
fake_prefix = FAKE_PREFIX[const.IPv4] fake_prefix = FAKE_PREFIX[const.IPv4]
with self.network() as n: with self.network() as n:
with nested(self.subnet(n), with contextlib.nested(self.subnet(n),
self.security_group()) as (subnet_v4, self.security_group()) as (subnet_v4,
sg1): sg1):
sg1_id = sg1['security_group']['id'] sg1_id = sg1['security_group']['id']
rule1 = self._build_security_group_rule( rule1 = self._build_security_group_rule(
sg1_id, sg1_id,
@ -242,11 +240,11 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase):
def test_security_group_rules_for_devices_ipv4_source_group(self): def test_security_group_rules_for_devices_ipv4_source_group(self):
with self.network() as n: with self.network() as n:
with nested(self.subnet(n), with contextlib.nested(self.subnet(n),
self.security_group(), self.security_group(),
self.security_group()) as (subnet_v4, self.security_group()) as (subnet_v4,
sg1, sg1,
sg2): sg2):
sg1_id = sg1['security_group']['id'] sg1_id = sg1['security_group']['id']
sg2_id = sg2['security_group']['id'] sg2_id = sg2['security_group']['id']
rule1 = self._build_security_group_rule( rule1 = self._build_security_group_rule(
@ -302,12 +300,12 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase):
fake_prefix = FAKE_PREFIX[const.IPv6] fake_prefix = FAKE_PREFIX[const.IPv6]
fake_gateway = FAKE_IP[const.IPv6] fake_gateway = FAKE_IP[const.IPv6]
with self.network() as n: with self.network() as n:
with nested(self.subnet(n, with contextlib.nested(self.subnet(n,
gateway_ip=fake_gateway, gateway_ip=fake_gateway,
cidr=fake_prefix, cidr=fake_prefix,
ip_version=6), ip_version=6),
self.security_group()) as (subnet_v6, self.security_group()) as (subnet_v6,
sg1): sg1):
sg1_id = sg1['security_group']['id'] sg1_id = sg1['security_group']['id']
rule1 = self._build_security_group_rule( rule1 = self._build_security_group_rule(
sg1_id, sg1_id,
@ -369,13 +367,13 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase):
fake_prefix = FAKE_PREFIX[const.IPv6] fake_prefix = FAKE_PREFIX[const.IPv6]
fake_gateway = FAKE_IP['IPv6_GLOBAL'] fake_gateway = FAKE_IP['IPv6_GLOBAL']
with self.network() as n: with self.network() as n:
with nested(self.subnet(n, with contextlib.nested(self.subnet(n,
gateway_ip=fake_gateway, gateway_ip=fake_gateway,
cidr=fake_prefix, cidr=fake_prefix,
ip_version=6, ip_version=6,
ipv6_ra_mode=const.IPV6_SLAAC), ipv6_ra_mode=const.IPV6_SLAAC),
self.security_group()) as (subnet_v6, self.security_group()) as (subnet_v6,
sg1): sg1):
sg1_id = sg1['security_group']['id'] sg1_id = sg1['security_group']['id']
rule1 = self._build_security_group_rule( rule1 = self._build_security_group_rule(
sg1_id, sg1_id,
@ -439,13 +437,13 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase):
fake_prefix = FAKE_PREFIX[const.IPv6] fake_prefix = FAKE_PREFIX[const.IPv6]
fake_gateway = FAKE_IP['IPv6_GLOBAL'] fake_gateway = FAKE_IP['IPv6_GLOBAL']
with self.network() as n: with self.network() as n:
with nested(self.subnet(n, with contextlib.nested(self.subnet(n,
gateway_ip=fake_gateway, gateway_ip=fake_gateway,
cidr=fake_prefix, cidr=fake_prefix,
ip_version=6, ip_version=6,
ipv6_ra_mode=const.IPV6_SLAAC), ipv6_ra_mode=const.IPV6_SLAAC),
self.security_group()) as (subnet_v6, self.security_group()) as (subnet_v6,
sg1): sg1):
sg1_id = sg1['security_group']['id'] sg1_id = sg1['security_group']['id']
rule1 = self._build_security_group_rule( rule1 = self._build_security_group_rule(
sg1_id, sg1_id,
@ -516,13 +514,13 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase):
fake_prefix = FAKE_PREFIX[const.IPv6] fake_prefix = FAKE_PREFIX[const.IPv6]
fake_gateway = FAKE_IP['IPv6_LLA'] fake_gateway = FAKE_IP['IPv6_LLA']
with self.network() as n: with self.network() as n:
with nested(self.subnet(n, with contextlib.nested(self.subnet(n,
gateway_ip=fake_gateway, gateway_ip=fake_gateway,
cidr=fake_prefix, cidr=fake_prefix,
ip_version=6, ip_version=6,
ipv6_ra_mode=const.IPV6_SLAAC), ipv6_ra_mode=const.IPV6_SLAAC),
self.security_group()) as (subnet_v6, self.security_group()) as (subnet_v6,
sg1): sg1):
sg1_id = sg1['security_group']['id'] sg1_id = sg1['security_group']['id']
rule1 = self._build_security_group_rule( rule1 = self._build_security_group_rule(
sg1_id, sg1_id,
@ -567,13 +565,13 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase):
def test_security_group_ra_rules_for_devices_ipv6_no_gateway_port(self): def test_security_group_ra_rules_for_devices_ipv6_no_gateway_port(self):
fake_prefix = FAKE_PREFIX[const.IPv6] fake_prefix = FAKE_PREFIX[const.IPv6]
with self.network() as n: with self.network() as n:
with nested(self.subnet(n, with contextlib.nested(self.subnet(n,
gateway_ip=None, gateway_ip=None,
cidr=fake_prefix, cidr=fake_prefix,
ip_version=6, ip_version=6,
ipv6_ra_mode=const.IPV6_SLAAC), ipv6_ra_mode=const.IPV6_SLAAC),
self.security_group()) as (subnet_v6, self.security_group()) as (subnet_v6,
sg1): sg1):
sg1_id = sg1['security_group']['id'] sg1_id = sg1['security_group']['id']
rule1 = self._build_security_group_rule( rule1 = self._build_security_group_rule(
sg1_id, sg1_id,
@ -614,12 +612,12 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase):
fake_prefix = FAKE_PREFIX[const.IPv6] fake_prefix = FAKE_PREFIX[const.IPv6]
fake_gateway = FAKE_IP[const.IPv6] fake_gateway = FAKE_IP[const.IPv6]
with self.network() as n: with self.network() as n:
with nested(self.subnet(n, with contextlib.nested(self.subnet(n,
gateway_ip=fake_gateway, gateway_ip=fake_gateway,
cidr=fake_prefix, cidr=fake_prefix,
ip_version=6), ip_version=6),
self.security_group()) as (subnet_v6, self.security_group()) as (subnet_v6,
sg1): sg1):
sg1_id = sg1['security_group']['id'] sg1_id = sg1['security_group']['id']
rule1 = self._build_security_group_rule( rule1 = self._build_security_group_rule(
sg1_id, sg1_id,
@ -679,14 +677,14 @@ class SGServerRpcCallBackMixinTestCase(test_sg.SecurityGroupDBTestCase):
fake_prefix = FAKE_PREFIX[const.IPv6] fake_prefix = FAKE_PREFIX[const.IPv6]
fake_gateway = FAKE_IP[const.IPv6] fake_gateway = FAKE_IP[const.IPv6]
with self.network() as n: with self.network() as n:
with nested(self.subnet(n, with contextlib.nested(self.subnet(n,
gateway_ip=fake_gateway, gateway_ip=fake_gateway,
cidr=fake_prefix, cidr=fake_prefix,
ip_version=6), ip_version=6),
self.security_group(), self.security_group(),
self.security_group()) as (subnet_v6, self.security_group()) as (subnet_v6,
sg1, sg1,
sg2): sg2):
sg1_id = sg1['security_group']['id'] sg1_id = sg1['security_group']['id']
sg2_id = sg2['security_group']['id'] sg2_id = sg2['security_group']['id']
rule1 = self._build_security_group_rule( rule1 = self._build_security_group_rule(
@ -759,18 +757,18 @@ class SGAgentRpcCallBackMixinTestCase(base.BaseTestCase):
self.rpc.security_groups_rule_updated(None, self.rpc.security_groups_rule_updated(None,
security_groups=['fake_sgid']) security_groups=['fake_sgid'])
self.rpc.sg_agent.assert_has_calls( self.rpc.sg_agent.assert_has_calls(
[call.security_groups_rule_updated(['fake_sgid'])]) [mock.call.security_groups_rule_updated(['fake_sgid'])])
def test_security_groups_member_updated(self): def test_security_groups_member_updated(self):
self.rpc.security_groups_member_updated(None, self.rpc.security_groups_member_updated(None,
security_groups=['fake_sgid']) security_groups=['fake_sgid'])
self.rpc.sg_agent.assert_has_calls( self.rpc.sg_agent.assert_has_calls(
[call.security_groups_member_updated(['fake_sgid'])]) [mock.call.security_groups_member_updated(['fake_sgid'])])
def test_security_groups_provider_updated(self): def test_security_groups_provider_updated(self):
self.rpc.security_groups_provider_updated(None) self.rpc.security_groups_provider_updated(None)
self.rpc.sg_agent.assert_has_calls( self.rpc.sg_agent.assert_has_calls(
[call.security_groups_provider_updated()]) [mock.call.security_groups_provider_updated()])
class SecurityGroupAgentRpcTestCaseForNoneDriver(base.BaseTestCase): class SecurityGroupAgentRpcTestCaseForNoneDriver(base.BaseTestCase):
@ -816,11 +814,11 @@ class SecurityGroupAgentRpcTestCase(base.BaseTestCase):
self.agent.prepare_devices_filter(['fake_device']) self.agent.prepare_devices_filter(['fake_device'])
self.agent.remove_devices_filter(['fake_device']) self.agent.remove_devices_filter(['fake_device'])
# ignore device which is not filtered # ignore device which is not filtered
self.firewall.assert_has_calls([call.defer_apply(), self.firewall.assert_has_calls([mock.call.defer_apply(),
call.prepare_port_filter( mock.call.prepare_port_filter(
self.fake_device), self.fake_device),
call.defer_apply(), mock.call.defer_apply(),
call.remove_port_filter( mock.call.remove_port_filter(
self.fake_device), self.fake_device),
]) ])
@ -829,7 +827,7 @@ class SecurityGroupAgentRpcTestCase(base.BaseTestCase):
self.agent.prepare_devices_filter(['fake_port_id']) self.agent.prepare_devices_filter(['fake_port_id'])
self.agent.security_groups_rule_updated(['fake_sgid1', 'fake_sgid3']) self.agent.security_groups_rule_updated(['fake_sgid1', 'fake_sgid3'])
self.agent.refresh_firewall.assert_has_calls( self.agent.refresh_firewall.assert_has_calls(
[call.refresh_firewall([self.fake_device['device']])]) [mock.call.refresh_firewall([self.fake_device['device']])])
def test_security_groups_rule_not_updated(self): def test_security_groups_rule_not_updated(self):
self.agent.refresh_firewall = mock.Mock() self.agent.refresh_firewall = mock.Mock()
@ -842,7 +840,7 @@ class SecurityGroupAgentRpcTestCase(base.BaseTestCase):
self.agent.prepare_devices_filter(['fake_port_id']) self.agent.prepare_devices_filter(['fake_port_id'])
self.agent.security_groups_member_updated(['fake_sgid2', 'fake_sgid3']) self.agent.security_groups_member_updated(['fake_sgid2', 'fake_sgid3'])
self.agent.refresh_firewall.assert_has_calls( self.agent.refresh_firewall.assert_has_calls(
[call.refresh_firewall([self.fake_device['device']])]) [mock.call.refresh_firewall([self.fake_device['device']])])
def test_security_groups_member_not_updated(self): def test_security_groups_member_not_updated(self):
self.agent.refresh_firewall = mock.Mock() self.agent.refresh_firewall = mock.Mock()
@ -854,24 +852,24 @@ class SecurityGroupAgentRpcTestCase(base.BaseTestCase):
self.agent.refresh_firewall = mock.Mock() self.agent.refresh_firewall = mock.Mock()
self.agent.security_groups_provider_updated() self.agent.security_groups_provider_updated()
self.agent.refresh_firewall.assert_has_calls( self.agent.refresh_firewall.assert_has_calls(
[call.refresh_firewall()]) [mock.call.refresh_firewall()])
def test_refresh_firewall(self): def test_refresh_firewall(self):
self.agent.prepare_devices_filter(['fake_port_id']) self.agent.prepare_devices_filter(['fake_port_id'])
self.agent.refresh_firewall() self.agent.refresh_firewall()
calls = [call.defer_apply(), calls = [mock.call.defer_apply(),
call.prepare_port_filter(self.fake_device), mock.call.prepare_port_filter(self.fake_device),
call.defer_apply(), mock.call.defer_apply(),
call.update_port_filter(self.fake_device)] mock.call.update_port_filter(self.fake_device)]
self.firewall.assert_has_calls(calls) self.firewall.assert_has_calls(calls)
def test_refresh_firewall_devices(self): def test_refresh_firewall_devices(self):
self.agent.prepare_devices_filter(['fake_port_id']) self.agent.prepare_devices_filter(['fake_port_id'])
self.agent.refresh_firewall([self.fake_device]) self.agent.refresh_firewall([self.fake_device])
calls = [call.defer_apply(), calls = [mock.call.defer_apply(),
call.prepare_port_filter(self.fake_device), mock.call.prepare_port_filter(self.fake_device),
call.defer_apply(), mock.call.defer_apply(),
call.update_port_filter(self.fake_device)] mock.call.update_port_filter(self.fake_device)]
self.firewall.assert_has_calls(calls) self.firewall.assert_has_calls(calls)
def test_refresh_firewall_none(self): def test_refresh_firewall_none(self):
@ -886,7 +884,7 @@ class SecurityGroupAgentRpcWithDeferredRefreshTestCase(
super(SecurityGroupAgentRpcWithDeferredRefreshTestCase, self).setUp( super(SecurityGroupAgentRpcWithDeferredRefreshTestCase, self).setUp(
defer_refresh_firewall=True) defer_refresh_firewall=True)
@contextmanager @contextlib.contextmanager
def add_fake_device(self, device, sec_groups, source_sec_groups=None): def add_fake_device(self, device, sec_groups, source_sec_groups=None):
fake_device = {'device': device, fake_device = {'device': device,
'security_groups': sec_groups, 'security_groups': sec_groups,
@ -1095,7 +1093,7 @@ class SecurityGroupServerRpcApiTestCase(base.BaseTestCase):
def test_security_group_rules_for_devices(self): def test_security_group_rules_for_devices(self):
self.rpc.security_group_rules_for_devices(None, ['fake_device']) self.rpc.security_group_rules_for_devices(None, ['fake_device'])
self.rpc.call.assert_has_calls( self.rpc.call.assert_has_calls(
[call(None, [mock.call(None,
{'args': {'args':
{'devices': ['fake_device']}, {'devices': ['fake_device']},
'method': 'security_group_rules_for_devices', 'method': 'security_group_rules_for_devices',
@ -1120,25 +1118,25 @@ class SecurityGroupAgentRpcApiTestCase(base.BaseTestCase):
self.notifier.security_groups_rule_updated( self.notifier.security_groups_rule_updated(
None, security_groups=['fake_sgid']) None, security_groups=['fake_sgid'])
self.notifier.fanout_cast.assert_has_calls( self.notifier.fanout_cast.assert_has_calls(
[call(None, [mock.call(None,
{'args': {'args':
{'security_groups': ['fake_sgid']}, {'security_groups': ['fake_sgid']},
'method': 'security_groups_rule_updated', 'method': 'security_groups_rule_updated',
'namespace': None}, 'namespace': None},
version=sg_rpc.SG_RPC_VERSION, version=sg_rpc.SG_RPC_VERSION,
topic='fake-security_group-update')]) topic='fake-security_group-update')])
def test_security_groups_member_updated(self): def test_security_groups_member_updated(self):
self.notifier.security_groups_member_updated( self.notifier.security_groups_member_updated(
None, security_groups=['fake_sgid']) None, security_groups=['fake_sgid'])
self.notifier.fanout_cast.assert_has_calls( self.notifier.fanout_cast.assert_has_calls(
[call(None, [mock.call(None,
{'args': {'args':
{'security_groups': ['fake_sgid']}, {'security_groups': ['fake_sgid']},
'method': 'security_groups_member_updated', 'method': 'security_groups_member_updated',
'namespace': None}, 'namespace': None},
version=sg_rpc.SG_RPC_VERSION, version=sg_rpc.SG_RPC_VERSION,
topic='fake-security_group-update')]) topic='fake-security_group-update')])
def test_security_groups_rule_not_updated(self): def test_security_groups_rule_not_updated(self):
self.notifier.security_groups_rule_updated( self.notifier.security_groups_rule_updated(
@ -1822,7 +1820,7 @@ class TestSecurityGroupAgentWithIptables(base.BaseTestCase):
if has_process_input: if has_process_input:
kwargs['process_input'] = mock.ANY kwargs['process_input'] = mock.ANY
self.expected_calls.append(call(*args, **kwargs)) self.expected_calls.append(mock.call(*args, **kwargs))
self.expected_call_count += 1 self.expected_call_count += 1
def _verify_mock_calls(self): def _verify_mock_calls(self):
@ -1921,10 +1919,10 @@ class SGNotificationTestMixin():
): ):
pass pass
self.notifier.assert_has_calls( self.notifier.assert_has_calls(
[call.security_groups_rule_updated(mock.ANY, [mock.call.security_groups_rule_updated(mock.ANY,
[security_group_id]), [security_group_id]),
call.security_groups_rule_updated(mock.ANY, mock.call.security_groups_rule_updated(mock.ANY,
[security_group_id])]) [security_group_id])])
def test_security_group_member_updated(self): def test_security_group_member_updated(self):
with self.network() as n: with self.network() as n:
@ -1947,7 +1945,7 @@ class SGNotificationTestMixin():
security_group_id) security_group_id)
self._delete('ports', port['port']['id']) self._delete('ports', port['port']['id'])
self.notifier.assert_has_calls( self.notifier.assert_has_calls(
[call.security_groups_member_updated( [mock.call.security_groups_member_updated(
mock.ANY, [mock.ANY])]) mock.ANY, [mock.ANY])])

View File

@ -16,7 +16,7 @@
import httplib import httplib
from neutron.plugins.vmware.api_client import ctrl_conn_to_str from neutron.plugins.vmware import api_client
from neutron.tests import base from neutron.tests import base
@ -25,11 +25,11 @@ class ApiCommonTest(base.BaseTestCase):
def test_ctrl_conn_to_str(self): def test_ctrl_conn_to_str(self):
conn = httplib.HTTPSConnection('localhost', 4242, timeout=0) conn = httplib.HTTPSConnection('localhost', 4242, timeout=0)
self.assertTrue( self.assertTrue(
ctrl_conn_to_str(conn) == 'https://localhost:4242') api_client.ctrl_conn_to_str(conn) == 'https://localhost:4242')
conn = httplib.HTTPConnection('localhost', 4242, timeout=0) conn = httplib.HTTPConnection('localhost', 4242, timeout=0)
self.assertTrue( self.assertTrue(
ctrl_conn_to_str(conn) == 'http://localhost:4242') api_client.ctrl_conn_to_str(conn) == 'http://localhost:4242')
self.assertRaises(TypeError, ctrl_conn_to_str, self.assertRaises(TypeError, api_client.ctrl_conn_to_str,
('not an httplib.HTTPSConnection')) ('not an httplib.HTTPSConnection'))

View File

@ -19,13 +19,12 @@ import random
import eventlet import eventlet
from eventlet.green import urllib2 from eventlet.green import urllib2
from mock import Mock import mock
from mock import patch
from neutron.plugins.vmware.api_client import eventlet_client as client from neutron.plugins.vmware.api_client import eventlet_client as client
from neutron.plugins.vmware.api_client import eventlet_request as request from neutron.plugins.vmware.api_client import eventlet_request as request
from neutron.tests import base from neutron.tests import base
from neutron.tests.unit.vmware import CLIENT_NAME from neutron.tests.unit import vmware
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
@ -70,7 +69,7 @@ class ApiRequestEventletTest(base.BaseTestCase):
for i in range(10): for i in range(10):
a = request.EventletApiRequest( a = request.EventletApiRequest(
self.client, self.url, request_timeout=0.1) self.client, self.url, request_timeout=0.1)
a._handle_request = Mock() a._handle_request = mock.Mock()
a.start() a.start()
eventlet.greenthread.sleep(0.1) eventlet.greenthread.sleep(0.1)
logging.info('_handle_request called: %s' % logging.info('_handle_request called: %s' %
@ -78,13 +77,13 @@ class ApiRequestEventletTest(base.BaseTestCase):
request.EventletApiRequest.joinall() request.EventletApiRequest.joinall()
def test_join_with_handle_request(self): def test_join_with_handle_request(self):
self.req._handle_request = Mock() self.req._handle_request = mock.Mock()
self.req.start() self.req.start()
self.req.join() self.req.join()
self.assertTrue(self.req._handle_request.called) self.assertTrue(self.req._handle_request.called)
def test_join_without_handle_request(self): def test_join_without_handle_request(self):
self.req._handle_request = Mock() self.req._handle_request = mock.Mock()
self.req.join() self.req.join()
self.assertFalse(self.req._handle_request.called) self.assertFalse(self.req._handle_request.called)
@ -101,7 +100,7 @@ class ApiRequestEventletTest(base.BaseTestCase):
def test_run_and_handle_request(self): def test_run_and_handle_request(self):
self.req._request_timeout = None self.req._request_timeout = None
self.req._handle_request = Mock() self.req._handle_request = mock.Mock()
self.req.start() self.req.start()
self.req.join() self.req.join()
self.assertTrue(self.req._handle_request.called) self.assertTrue(self.req._handle_request.called)
@ -119,34 +118,34 @@ class ApiRequestEventletTest(base.BaseTestCase):
self.assertIsNone(self.req.join()) self.assertIsNone(self.req.join())
def prep_issue_request(self): def prep_issue_request(self):
mysock = Mock() mysock = mock.Mock()
mysock.gettimeout.return_value = 4242 mysock.gettimeout.return_value = 4242
myresponse = Mock() myresponse = mock.Mock()
myresponse.read.return_value = 'body' myresponse.read.return_value = 'body'
myresponse.getheaders.return_value = 'headers' myresponse.getheaders.return_value = 'headers'
myresponse.status = httplib.MOVED_PERMANENTLY myresponse.status = httplib.MOVED_PERMANENTLY
myconn = Mock() myconn = mock.Mock()
myconn.request.return_value = None myconn.request.return_value = None
myconn.sock = mysock myconn.sock = mysock
myconn.getresponse.return_value = myresponse myconn.getresponse.return_value = myresponse
myconn.__str__ = Mock() myconn.__str__ = mock.Mock()
myconn.__str__.return_value = 'myconn string' myconn.__str__.return_value = 'myconn string'
req = self.req req = self.req
req._redirect_params = Mock() req._redirect_params = mock.Mock()
req._redirect_params.return_value = (myconn, 'url') req._redirect_params.return_value = (myconn, 'url')
req._request_str = Mock() req._request_str = mock.Mock()
req._request_str.return_value = 'http://cool/cool' req._request_str.return_value = 'http://cool/cool'
client = self.client client = self.client
client.need_login = False client.need_login = False
client._auto_login = False client._auto_login = False
client._auth_cookie = False client._auth_cookie = False
client.acquire_connection = Mock() client.acquire_connection = mock.Mock()
client.acquire_connection.return_value = myconn client.acquire_connection.return_value = myconn
client.release_connection = Mock() client.release_connection = mock.Mock()
return (mysock, myresponse, myconn) return (mysock, myresponse, myconn)
@ -186,34 +185,34 @@ class ApiRequestEventletTest(base.BaseTestCase):
self.assertTrue(self.client.acquire_connection.called) self.assertTrue(self.client.acquire_connection.called)
def test_redirect_params_break_on_location(self): def test_redirect_params_break_on_location(self):
myconn = Mock() myconn = mock.Mock()
(conn, retval) = self.req._redirect_params( (conn, retval) = self.req._redirect_params(
myconn, [('location', None)]) myconn, [('location', None)])
self.assertIsNone(retval) self.assertIsNone(retval)
def test_redirect_params_parse_a_url(self): def test_redirect_params_parse_a_url(self):
myconn = Mock() myconn = mock.Mock()
(conn, retval) = self.req._redirect_params( (conn, retval) = self.req._redirect_params(
myconn, [('location', '/path/a/b/c')]) myconn, [('location', '/path/a/b/c')])
self.assertIsNotNone(retval) self.assertIsNotNone(retval)
def test_redirect_params_invalid_redirect_location(self): def test_redirect_params_invalid_redirect_location(self):
myconn = Mock() myconn = mock.Mock()
(conn, retval) = self.req._redirect_params( (conn, retval) = self.req._redirect_params(
myconn, [('location', '+path/a/b/c')]) myconn, [('location', '+path/a/b/c')])
self.assertIsNone(retval) self.assertIsNone(retval)
def test_redirect_params_invalid_scheme(self): def test_redirect_params_invalid_scheme(self):
myconn = Mock() myconn = mock.Mock()
(conn, retval) = self.req._redirect_params( (conn, retval) = self.req._redirect_params(
myconn, [('location', 'invalidscheme://hostname:1/path')]) myconn, [('location', 'invalidscheme://hostname:1/path')])
self.assertIsNone(retval) self.assertIsNone(retval)
def test_redirect_params_setup_https_with_cooki(self): def test_redirect_params_setup_https_with_cooki(self):
with patch(CLIENT_NAME) as mock: with mock.patch(vmware.CLIENT_NAME) as mock_client:
api_client = mock.return_value api_client = mock_client.return_value
self.req._api_client = api_client self.req._api_client = api_client
myconn = Mock() myconn = mock.Mock()
(conn, retval) = self.req._redirect_params( (conn, retval) = self.req._redirect_params(
myconn, [('location', 'https://host:1/path')]) myconn, [('location', 'https://host:1/path')])
@ -221,10 +220,10 @@ class ApiRequestEventletTest(base.BaseTestCase):
self.assertTrue(api_client.acquire_redirect_connection.called) self.assertTrue(api_client.acquire_redirect_connection.called)
def test_redirect_params_setup_htttps_and_query(self): def test_redirect_params_setup_htttps_and_query(self):
with patch(CLIENT_NAME) as mock: with mock.patch(vmware.CLIENT_NAME) as mock_client:
api_client = mock.return_value api_client = mock_client.return_value
self.req._api_client = api_client self.req._api_client = api_client
myconn = Mock() myconn = mock.Mock()
(conn, retval) = self.req._redirect_params(myconn, [ (conn, retval) = self.req._redirect_params(myconn, [
('location', 'https://host:1/path?q=1')]) ('location', 'https://host:1/path?q=1')])
@ -232,10 +231,10 @@ class ApiRequestEventletTest(base.BaseTestCase):
self.assertTrue(api_client.acquire_redirect_connection.called) self.assertTrue(api_client.acquire_redirect_connection.called)
def test_redirect_params_setup_https_connection_no_cookie(self): def test_redirect_params_setup_https_connection_no_cookie(self):
with patch(CLIENT_NAME) as mock: with mock.patch(vmware.CLIENT_NAME) as mock_client:
api_client = mock.return_value api_client = mock_client.return_value
self.req._api_client = api_client self.req._api_client = api_client
myconn = Mock() myconn = mock.Mock()
(conn, retval) = self.req._redirect_params(myconn, [ (conn, retval) = self.req._redirect_params(myconn, [
('location', 'https://host:1/path')]) ('location', 'https://host:1/path')])
@ -243,49 +242,49 @@ class ApiRequestEventletTest(base.BaseTestCase):
self.assertTrue(api_client.acquire_redirect_connection.called) self.assertTrue(api_client.acquire_redirect_connection.called)
def test_redirect_params_setup_https_and_query_no_cookie(self): def test_redirect_params_setup_https_and_query_no_cookie(self):
with patch(CLIENT_NAME) as mock: with mock.patch(vmware.CLIENT_NAME) as mock_client:
api_client = mock.return_value api_client = mock_client.return_value
self.req._api_client = api_client self.req._api_client = api_client
myconn = Mock() myconn = mock.Mock()
(conn, retval) = self.req._redirect_params( (conn, retval) = self.req._redirect_params(
myconn, [('location', 'https://host:1/path?q=1')]) myconn, [('location', 'https://host:1/path?q=1')])
self.assertIsNotNone(retval) self.assertIsNotNone(retval)
self.assertTrue(api_client.acquire_redirect_connection.called) self.assertTrue(api_client.acquire_redirect_connection.called)
def test_redirect_params_path_only_with_query(self): def test_redirect_params_path_only_with_query(self):
with patch(CLIENT_NAME) as mock: with mock.patch(vmware.CLIENT_NAME) as mock_client:
api_client = mock.return_value api_client = mock_client.return_value
api_client.wait_for_login.return_value = None api_client.wait_for_login.return_value = None
api_client.auth_cookie = None api_client.auth_cookie = None
api_client.acquire_connection.return_value = True api_client.acquire_connection.return_value = True
myconn = Mock() myconn = mock.Mock()
(conn, retval) = self.req._redirect_params(myconn, [ (conn, retval) = self.req._redirect_params(myconn, [
('location', '/path?q=1')]) ('location', '/path?q=1')])
self.assertIsNotNone(retval) self.assertIsNotNone(retval)
def test_handle_request_auto_login(self): def test_handle_request_auto_login(self):
self.req._auto_login = True self.req._auto_login = True
self.req._api_client = Mock() self.req._api_client = mock.Mock()
self.req._api_client.need_login = True self.req._api_client.need_login = True
self.req._request_str = Mock() self.req._request_str = mock.Mock()
self.req._request_str.return_value = 'http://cool/cool' self.req._request_str.return_value = 'http://cool/cool'
self.req.spawn = Mock() self.req.spawn = mock.Mock()
self.req._handle_request() self.req._handle_request()
def test_handle_request_auto_login_unauth(self): def test_handle_request_auto_login_unauth(self):
self.req._auto_login = True self.req._auto_login = True
self.req._api_client = Mock() self.req._api_client = mock.Mock()
self.req._api_client.need_login = True self.req._api_client.need_login = True
self.req._request_str = Mock() self.req._request_str = mock.Mock()
self.req._request_str.return_value = 'http://cool/cool' self.req._request_str.return_value = 'http://cool/cool'
import socket import socket
resp = httplib.HTTPResponse(socket.socket()) resp = httplib.HTTPResponse(socket.socket())
resp.status = httplib.UNAUTHORIZED resp.status = httplib.UNAUTHORIZED
mywaiter = Mock() mywaiter = mock.Mock()
mywaiter.wait = Mock() mywaiter.wait = mock.Mock()
mywaiter.wait.return_value = resp mywaiter.wait.return_value = resp
self.req.spawn = Mock(return_value=mywaiter) self.req.spawn = mock.Mock(return_value=mywaiter)
self.req._handle_request() self.req._handle_request()
def test_construct_eventlet_login_request(self): def test_construct_eventlet_login_request(self):
@ -294,19 +293,19 @@ class ApiRequestEventletTest(base.BaseTestCase):
def test_session_cookie_session_cookie_retrieval(self): def test_session_cookie_session_cookie_retrieval(self):
r = request.LoginRequestEventlet(self.client, 'user', 'password') r = request.LoginRequestEventlet(self.client, 'user', 'password')
r.successful = Mock() r.successful = mock.Mock()
r.successful.return_value = True r.successful.return_value = True
r.value = Mock() r.value = mock.Mock()
r.value.get_header = Mock() r.value.get_header = mock.Mock()
r.value.get_header.return_value = 'cool' r.value.get_header.return_value = 'cool'
self.assertIsNotNone(r.session_cookie()) self.assertIsNotNone(r.session_cookie())
def test_session_cookie_not_retrieved(self): def test_session_cookie_not_retrieved(self):
r = request.LoginRequestEventlet(self.client, 'user', 'password') r = request.LoginRequestEventlet(self.client, 'user', 'password')
r.successful = Mock() r.successful = mock.Mock()
r.successful.return_value = False r.successful.return_value = False
r.value = Mock() r.value = mock.Mock()
r.value.get_header = Mock() r.value.get_header = mock.Mock()
r.value.get_header.return_value = 'cool' r.value.get_header.return_value = 'cool'
self.assertIsNone(r.session_cookie()) self.assertIsNone(r.session_cookie())
@ -316,17 +315,17 @@ class ApiRequestEventletTest(base.BaseTestCase):
def test_api_providers_none_api_providers(self): def test_api_providers_none_api_providers(self):
r = request.GetApiProvidersRequestEventlet(self.client) r = request.GetApiProvidersRequestEventlet(self.client)
r.successful = Mock(return_value=False) r.successful = mock.Mock(return_value=False)
self.assertIsNone(r.api_providers()) self.assertIsNone(r.api_providers())
def test_api_providers_non_none_api_providers(self): def test_api_providers_non_none_api_providers(self):
r = request.GetApiProvidersRequestEventlet(self.client) r = request.GetApiProvidersRequestEventlet(self.client)
r.value = Mock() r.value = mock.Mock()
r.value.body = """{ r.value.body = """{
"results": [ "results": [
{ "roles": [ { "roles": [
{ "role": "api_provider", { "role": "api_provider",
"listen_addr": "pssl:1.1.1.1:1" }]}]}""" "listen_addr": "pssl:1.1.1.1:1" }]}]}"""
r.successful = Mock(return_value=True) r.successful = mock.Mock(return_value=True)
LOG.info('%s' % r.api_providers()) LOG.info('%s' % r.api_providers())
self.assertIsNotNone(r.api_providers()) self.assertIsNotNone(r.api_providers())

View File

@ -19,18 +19,14 @@ import mock
from oslo.config import cfg from oslo.config import cfg
from neutron.api.v2 import attributes from neutron.api.v2 import attributes
from neutron.common.test_lib import test_config from neutron.common import test_lib
from neutron import context from neutron import context
from neutron.extensions import agent from neutron.extensions import agent
from neutron.plugins.vmware.api_client.version import Version from neutron.plugins.vmware.api_client import version
from neutron.plugins.vmware.common import sync from neutron.plugins.vmware.common import sync
from neutron.tests.unit import test_db_plugin from neutron.tests.unit import test_db_plugin
from neutron.tests.unit import vmware
from neutron.tests.unit.vmware.apiclient import fake from neutron.tests.unit.vmware.apiclient import fake
from neutron.tests.unit.vmware import get_fake_conf
from neutron.tests.unit.vmware import NSXAPI_NAME
from neutron.tests.unit.vmware import NSXEXT_PATH
from neutron.tests.unit.vmware import PLUGIN_NAME
from neutron.tests.unit.vmware import STUBS_PATH
class MacLearningExtensionManager(object): class MacLearningExtensionManager(object):
@ -56,28 +52,29 @@ class MacLearningDBTestCase(test_db_plugin.NeutronDbPluginV2TestCase):
def setUp(self): def setUp(self):
self.adminContext = context.get_admin_context() self.adminContext = context.get_admin_context()
test_config['config_files'] = [get_fake_conf('nsx.ini.full.test')] test_lib.test_config['config_files'] = [
cfg.CONF.set_override('api_extensions_path', NSXEXT_PATH) vmware.get_fake_conf('nsx.ini.full.test')]
cfg.CONF.set_override('api_extensions_path', vmware.NSXEXT_PATH)
# Save the original RESOURCE_ATTRIBUTE_MAP # Save the original RESOURCE_ATTRIBUTE_MAP
self.saved_attr_map = {} self.saved_attr_map = {}
for resource, attrs in attributes.RESOURCE_ATTRIBUTE_MAP.iteritems(): for resource, attrs in attributes.RESOURCE_ATTRIBUTE_MAP.iteritems():
self.saved_attr_map[resource] = attrs.copy() self.saved_attr_map[resource] = attrs.copy()
ext_mgr = MacLearningExtensionManager() ext_mgr = MacLearningExtensionManager()
# mock api client # mock api client
self.fc = fake.FakeClient(STUBS_PATH) self.fc = fake.FakeClient(vmware.STUBS_PATH)
self.mock_nsx = mock.patch(NSXAPI_NAME, autospec=True) self.mock_nsx = mock.patch(vmware.NSXAPI_NAME, autospec=True)
instance = self.mock_nsx.start() instance = self.mock_nsx.start()
# Avoid runs of the synchronizer looping call # Avoid runs of the synchronizer looping call
patch_sync = mock.patch.object(sync, '_start_loopingcall') patch_sync = mock.patch.object(sync, '_start_loopingcall')
patch_sync.start() patch_sync.start()
# Emulate tests against NSX 2.x # Emulate tests against NSX 2.x
instance.return_value.get_version.return_value = Version("3.0") instance.return_value.get_version.return_value = version.Version("3.0")
instance.return_value.request.side_effect = self.fc.fake_request instance.return_value.request.side_effect = self.fc.fake_request
cfg.CONF.set_override('metadata_mode', None, 'NSX') cfg.CONF.set_override('metadata_mode', None, 'NSX')
self.addCleanup(self.fc.reset_all) self.addCleanup(self.fc.reset_all)
self.addCleanup(self.restore_resource_attribute_map) self.addCleanup(self.restore_resource_attribute_map)
super(MacLearningDBTestCase, self).setUp(plugin=PLUGIN_NAME, super(MacLearningDBTestCase, self).setUp(plugin=vmware.PLUGIN_NAME,
ext_mgr=ext_mgr) ext_mgr=ext_mgr)
def restore_resource_attribute_map(self): def restore_resource_attribute_map(self):

View File

@ -20,7 +20,6 @@ from webob import exc
import webtest import webtest
from neutron.api import extensions from neutron.api import extensions
from neutron.api.extensions import PluginAwareExtensionManager
from neutron.api.v2 import attributes from neutron.api.v2 import attributes
from neutron import context from neutron import context
from neutron.db import api as db_api from neutron.db import api as db_api
@ -37,9 +36,8 @@ from neutron.tests import base
from neutron.tests.unit import test_api_v2 from neutron.tests.unit import test_api_v2
from neutron.tests.unit import test_db_plugin from neutron.tests.unit import test_db_plugin
from neutron.tests.unit import test_extensions from neutron.tests.unit import test_extensions
from neutron.tests.unit.vmware import NSXEXT_PATH from neutron.tests.unit import vmware
from neutron.tests.unit.vmware import PLUGIN_NAME from neutron.tests.unit.vmware import test_nsx_plugin
from neutron.tests.unit.vmware.test_nsx_plugin import NsxPluginV2TestCase
_uuid = test_api_v2._uuid _uuid = test_api_v2._uuid
_get_path = test_api_v2._get_path _get_path = test_api_v2._get_path
@ -88,7 +86,7 @@ class NetworkGatewayExtensionTestCase(base.BaseTestCase):
manager.NeutronManager.get_plugin().supported_extension_aliases = ( manager.NeutronManager.get_plugin().supported_extension_aliases = (
[networkgw.EXT_ALIAS]) [networkgw.EXT_ALIAS])
ext_mgr = TestExtensionManager() ext_mgr = TestExtensionManager()
PluginAwareExtensionManager._instance = ext_mgr extensions.PluginAwareExtensionManager._instance = ext_mgr
self.ext_mdw = test_extensions.setup_extensions_middleware(ext_mgr) self.ext_mdw = test_extensions.setup_extensions_middleware(ext_mgr)
self.api = webtest.TestApp(self.ext_mdw) self.api = webtest.TestApp(self.ext_mdw)
@ -863,11 +861,11 @@ class NetworkGatewayDbTestCase(test_db_plugin.NeutronDbPluginV2TestCase):
self.assertIsNone(dev_query.first()) self.assertIsNone(dev_query.first())
class TestNetworkGateway(NsxPluginV2TestCase, class TestNetworkGateway(test_nsx_plugin.NsxPluginV2TestCase,
NetworkGatewayDbTestCase): NetworkGatewayDbTestCase):
def setUp(self, plugin=PLUGIN_NAME, ext_mgr=None): def setUp(self, plugin=vmware.PLUGIN_NAME, ext_mgr=None):
cfg.CONF.set_override('api_extensions_path', NSXEXT_PATH) cfg.CONF.set_override('api_extensions_path', vmware.NSXEXT_PATH)
# Mock l2gwlib calls for gateway devices since this resource is not # Mock l2gwlib calls for gateway devices since this resource is not
# mocked through the fake NVP API client # mocked through the fake NVP API client
create_gw_dev_patcher = mock.patch.object( create_gw_dev_patcher = mock.patch.object(
@ -1046,7 +1044,7 @@ class TestNetworkGatewayPlugin(db_base_plugin_v2.NeutronDbPluginV2,
def __init__(self, **args): def __init__(self, **args):
super(TestNetworkGatewayPlugin, self).__init__(**args) super(TestNetworkGatewayPlugin, self).__init__(**args)
extensions.append_api_extensions_path([NSXEXT_PATH]) extensions.append_api_extensions_path([vmware.NSXEXT_PATH])
def delete_port(self, context, id, nw_gw_port_check=True): def delete_port(self, context, id, nw_gw_port_check=True):
if nw_gw_port_check: if nw_gw_port_check:

View File

@ -18,20 +18,18 @@ import mock
from neutron.common import test_lib from neutron.common import test_lib
from neutron.plugins.vmware.common import sync from neutron.plugins.vmware.common import sync
from neutron.tests.unit import test_extension_portsecurity as psec from neutron.tests.unit import test_extension_portsecurity as psec
from neutron.tests.unit import vmware
from neutron.tests.unit.vmware.apiclient import fake from neutron.tests.unit.vmware.apiclient import fake
from neutron.tests.unit.vmware import get_fake_conf
from neutron.tests.unit.vmware import NSXAPI_NAME
from neutron.tests.unit.vmware import PLUGIN_NAME
from neutron.tests.unit.vmware import STUBS_PATH
class PortSecurityTestCase(psec.PortSecurityDBTestCase): class PortSecurityTestCase(psec.PortSecurityDBTestCase):
def setUp(self): def setUp(self):
test_lib.test_config['config_files'] = [get_fake_conf('nsx.ini.test')] test_lib.test_config['config_files'] = [
vmware.get_fake_conf('nsx.ini.test')]
# mock api client # mock api client
self.fc = fake.FakeClient(STUBS_PATH) self.fc = fake.FakeClient(vmware.STUBS_PATH)
self.mock_nsx = mock.patch(NSXAPI_NAME, autospec=True) self.mock_nsx = mock.patch(vmware.NSXAPI_NAME, autospec=True)
instance = self.mock_nsx.start() instance = self.mock_nsx.start()
instance.return_value.login.return_value = "the_cookie" instance.return_value.login.return_value = "the_cookie"
# Avoid runs of the synchronizer looping call # Avoid runs of the synchronizer looping call
@ -39,7 +37,7 @@ class PortSecurityTestCase(psec.PortSecurityDBTestCase):
patch_sync.start() patch_sync.start()
instance.return_value.request.side_effect = self.fc.fake_request instance.return_value.request.side_effect = self.fc.fake_request
super(PortSecurityTestCase, self).setUp(PLUGIN_NAME) super(PortSecurityTestCase, self).setUp(vmware.PLUGIN_NAME)
self.addCleanup(self.fc.reset_all) self.addCleanup(self.fc.reset_all)
self.addCleanup(self.mock_nsx.stop) self.addCleanup(self.mock_nsx.stop)
self.addCleanup(patch_sync.stop) self.addCleanup(patch_sync.stop)

View File

@ -17,11 +17,11 @@ from oslo.config import cfg
from neutron.extensions import multiprovidernet as mpnet from neutron.extensions import multiprovidernet as mpnet
from neutron.extensions import providernet as pnet from neutron.extensions import providernet as pnet
from neutron.tests.unit.vmware import NSXEXT_PATH from neutron.tests.unit import vmware
from neutron.tests.unit.vmware.test_nsx_plugin import NsxPluginV2TestCase from neutron.tests.unit.vmware import test_nsx_plugin
class TestProvidernet(NsxPluginV2TestCase): class TestProvidernet(test_nsx_plugin.NsxPluginV2TestCase):
def test_create_provider_network_default_physical_net(self): def test_create_provider_network_default_physical_net(self):
data = {'network': {'name': 'net1', data = {'network': {'name': 'net1',
@ -48,10 +48,10 @@ class TestProvidernet(NsxPluginV2TestCase):
self.assertEqual(net['network'][pnet.PHYSICAL_NETWORK], 'physnet1') self.assertEqual(net['network'][pnet.PHYSICAL_NETWORK], 'physnet1')
class TestMultiProviderNetworks(NsxPluginV2TestCase): class TestMultiProviderNetworks(test_nsx_plugin.NsxPluginV2TestCase):
def setUp(self, plugin=None): def setUp(self, plugin=None):
cfg.CONF.set_override('api_extensions_path', NSXEXT_PATH) cfg.CONF.set_override('api_extensions_path', vmware.NSXEXT_PATH)
super(TestMultiProviderNetworks, self).setUp() super(TestMultiProviderNetworks, self).setUp()
def test_create_network_provider(self): def test_create_network_provider(self):

View File

@ -24,8 +24,8 @@ from neutron.plugins.vmware.dbexts import qos_db
from neutron.plugins.vmware.extensions import qos as ext_qos from neutron.plugins.vmware.extensions import qos as ext_qos
from neutron.plugins.vmware import nsxlib from neutron.plugins.vmware import nsxlib
from neutron.tests.unit import test_extensions from neutron.tests.unit import test_extensions
from neutron.tests.unit.vmware import NSXEXT_PATH from neutron.tests.unit import vmware
from neutron.tests.unit.vmware.test_nsx_plugin import NsxPluginV2TestCase from neutron.tests.unit.vmware import test_nsx_plugin
class QoSTestExtensionManager(object): class QoSTestExtensionManager(object):
@ -40,10 +40,10 @@ class QoSTestExtensionManager(object):
return [] return []
class TestQoSQueue(NsxPluginV2TestCase): class TestQoSQueue(test_nsx_plugin.NsxPluginV2TestCase):
def setUp(self, plugin=None): def setUp(self, plugin=None):
cfg.CONF.set_override('api_extensions_path', NSXEXT_PATH) cfg.CONF.set_override('api_extensions_path', vmware.NSXEXT_PATH)
super(TestQoSQueue, self).setUp() super(TestQoSQueue, self).setUp()
ext_mgr = QoSTestExtensionManager() ext_mgr = QoSTestExtensionManager()
self.ext_api = test_extensions.setup_extensions_middleware(ext_mgr) self.ext_api = test_extensions.setup_extensions_middleware(ext_mgr)

View File

@ -23,9 +23,8 @@ from neutron.plugins.vmware.common import config # noqa
from neutron.plugins.vmware import nsx_cluster as cluster from neutron.plugins.vmware import nsx_cluster as cluster
from neutron.tests import base from neutron.tests import base
from neutron.tests.unit import test_api_v2 from neutron.tests.unit import test_api_v2
from neutron.tests.unit import vmware
from neutron.tests.unit.vmware.apiclient import fake from neutron.tests.unit.vmware.apiclient import fake
from neutron.tests.unit.vmware import NSXAPI_NAME
from neutron.tests.unit.vmware import STUBS_PATH
_uuid = test_api_v2._uuid _uuid = test_api_v2._uuid
@ -33,8 +32,8 @@ _uuid = test_api_v2._uuid
class NsxlibTestCase(base.BaseTestCase): class NsxlibTestCase(base.BaseTestCase):
def setUp(self): def setUp(self):
self.fc = fake.FakeClient(STUBS_PATH) self.fc = fake.FakeClient(vmware.STUBS_PATH)
self.mock_nsxapi = mock.patch(NSXAPI_NAME, autospec=True) self.mock_nsxapi = mock.patch(vmware.NSXAPI_NAME, autospec=True)
instance = self.mock_nsxapi.start() instance = self.mock_nsxapi.start()
instance.return_value.login.return_value = "the_cookie" instance.return_value.login.return_value = "the_cookie"
fake_version = getattr(self, 'fake_version', "3.0") fake_version = getattr(self, 'fake_version', "3.0")
@ -62,8 +61,8 @@ class NsxlibTestCase(base.BaseTestCase):
class NsxlibNegativeBaseTestCase(base.BaseTestCase): class NsxlibNegativeBaseTestCase(base.BaseTestCase):
def setUp(self): def setUp(self):
self.fc = fake.FakeClient(STUBS_PATH) self.fc = fake.FakeClient(vmware.STUBS_PATH)
self.mock_nsxapi = mock.patch(NSXAPI_NAME, autospec=True) self.mock_nsxapi = mock.patch(vmware.NSXAPI_NAME, autospec=True)
instance = self.mock_nsxapi.start() instance = self.mock_nsxapi.start()
instance.return_value.login.return_value = "the_cookie" instance.return_value.login.return_value = "the_cookie"
# Choose 3.0, but the version is irrelevant for the aim of # Choose 3.0, but the version is irrelevant for the aim of

View File

@ -21,7 +21,7 @@ from oslo.config import cfg
from neutron.common import exceptions from neutron.common import exceptions
from neutron.openstack.common import uuidutils from neutron.openstack.common import uuidutils
from neutron.plugins.vmware.api_client import exception as api_exc from neutron.plugins.vmware.api_client import exception as api_exc
from neutron.plugins.vmware.api_client.version import Version from neutron.plugins.vmware.api_client import version as version_module
from neutron.plugins.vmware.common import exceptions as nsx_exc from neutron.plugins.vmware.common import exceptions as nsx_exc
from neutron.plugins.vmware.common import utils from neutron.plugins.vmware.common import utils
from neutron.plugins.vmware import nsxlib from neutron.plugins.vmware import nsxlib
@ -38,7 +38,7 @@ class TestNatRules(base.NsxlibTestCase):
def _test_create_lrouter_dnat_rule(self, version): def _test_create_lrouter_dnat_rule(self, version):
with mock.patch.object(self.fake_cluster.api_client, with mock.patch.object(self.fake_cluster.api_client,
'get_version', 'get_version',
new=lambda: Version(version)): new=lambda: version_module.Version(version)):
tenant_id = 'pippo' tenant_id = 'pippo'
lrouter = routerlib.create_lrouter(self.fake_cluster, lrouter = routerlib.create_lrouter(self.fake_cluster,
uuidutils.generate_uuid(), uuidutils.generate_uuid(),
@ -319,7 +319,7 @@ class TestLogicalRouters(base.NsxlibTestCase):
def _create_lrouter(self, version, neutron_id=None, distributed=None): def _create_lrouter(self, version, neutron_id=None, distributed=None):
with mock.patch.object( with mock.patch.object(
self.fake_cluster.api_client, 'get_version', self.fake_cluster.api_client, 'get_version',
return_value=Version(version)): return_value=version_module.Version(version)):
if not neutron_id: if not neutron_id:
neutron_id = uuidutils.generate_uuid() neutron_id = uuidutils.generate_uuid()
lrouter = routerlib.create_lrouter( lrouter = routerlib.create_lrouter(
@ -380,7 +380,7 @@ class TestLogicalRouters(base.NsxlibTestCase):
with mock.patch.object(self.fake_cluster.api_client, with mock.patch.object(self.fake_cluster.api_client,
'get_version', 'get_version',
return_value=Version(version)): return_value=version_module.Version(version)):
with mock.patch.dict(routerlib.ROUTER_FUNC_DICT, with mock.patch.dict(routerlib.ROUTER_FUNC_DICT,
foo_func_dict, clear=True): foo_func_dict, clear=True):
return routerlib.update_lrouter( return routerlib.update_lrouter(
@ -769,7 +769,7 @@ class TestLogicalRouters(base.NsxlibTestCase):
'10.0.0.1') '10.0.0.1')
with mock.patch.object(self.fake_cluster.api_client, with mock.patch.object(self.fake_cluster.api_client,
'get_version', 'get_version',
new=lambda: Version(version)): new=lambda: version_module.Version(version)):
routerlib.create_lrouter_snat_rule( routerlib.create_lrouter_snat_rule(
self.fake_cluster, lrouter['uuid'], self.fake_cluster, lrouter['uuid'],
'10.0.0.2', '10.0.0.2', order=200, '10.0.0.2', '10.0.0.2', order=200,
@ -792,7 +792,7 @@ class TestLogicalRouters(base.NsxlibTestCase):
'10.0.0.1') '10.0.0.1')
with mock.patch.object(self.fake_cluster.api_client, with mock.patch.object(self.fake_cluster.api_client,
'get_version', 'get_version',
return_value=Version(version)): return_value=version_module.Version(version)):
routerlib.create_lrouter_dnat_rule( routerlib.create_lrouter_dnat_rule(
self.fake_cluster, lrouter['uuid'], '192.168.0.2', order=200, self.fake_cluster, lrouter['uuid'], '192.168.0.2', order=200,
dest_port=dest_port, dest_port=dest_port,
@ -838,7 +838,7 @@ class TestLogicalRouters(base.NsxlibTestCase):
'10.0.0.1') '10.0.0.1')
with mock.patch.object(self.fake_cluster.api_client, with mock.patch.object(self.fake_cluster.api_client,
'get_version', 'get_version',
new=lambda: Version(version)): new=lambda: version_module.Version(version)):
routerlib.create_lrouter_nosnat_rule( routerlib.create_lrouter_nosnat_rule(
self.fake_cluster, lrouter['uuid'], self.fake_cluster, lrouter['uuid'],
order=100, order=100,
@ -863,7 +863,7 @@ class TestLogicalRouters(base.NsxlibTestCase):
# v2 or v3 makes no difference for this test # v2 or v3 makes no difference for this test
with mock.patch.object(self.fake_cluster.api_client, with mock.patch.object(self.fake_cluster.api_client,
'get_version', 'get_version',
new=lambda: Version('2.0')): new=lambda: version_module.Version('2.0')):
routerlib.create_lrouter_snat_rule( routerlib.create_lrouter_snat_rule(
self.fake_cluster, lrouter['uuid'], self.fake_cluster, lrouter['uuid'],
'10.0.0.2', '10.0.0.2', order=220, '10.0.0.2', '10.0.0.2', order=220,

View File

@ -15,7 +15,7 @@
# #
from neutron.plugins.vmware.api_client import exception from neutron.plugins.vmware.api_client import exception
from neutron.plugins.vmware.api_client.version import Version from neutron.plugins.vmware.api_client import version as version_module
from neutron.plugins.vmware.nsxlib import router as routerlib from neutron.plugins.vmware.nsxlib import router as routerlib
from neutron.plugins.vmware.nsxlib import versioning from neutron.plugins.vmware.nsxlib import versioning
from neutron.tests import base from neutron.tests import base
@ -24,28 +24,28 @@ from neutron.tests import base
class TestVersioning(base.BaseTestCase): class TestVersioning(base.BaseTestCase):
def test_function_handling_missing_minor(self): def test_function_handling_missing_minor(self):
version = Version('2.0') version = version_module.Version('2.0')
function = versioning.get_function_by_version( function = versioning.get_function_by_version(
routerlib.ROUTER_FUNC_DICT, 'create_lrouter', version) routerlib.ROUTER_FUNC_DICT, 'create_lrouter', version)
self.assertEqual(routerlib.create_implicit_routing_lrouter, self.assertEqual(routerlib.create_implicit_routing_lrouter,
function) function)
def test_function_handling_with_both_major_and_minor(self): def test_function_handling_with_both_major_and_minor(self):
version = Version('3.2') version = version_module.Version('3.2')
function = versioning.get_function_by_version( function = versioning.get_function_by_version(
routerlib.ROUTER_FUNC_DICT, 'create_lrouter', version) routerlib.ROUTER_FUNC_DICT, 'create_lrouter', version)
self.assertEqual(routerlib.create_explicit_routing_lrouter, self.assertEqual(routerlib.create_explicit_routing_lrouter,
function) function)
def test_function_handling_with_newer_major(self): def test_function_handling_with_newer_major(self):
version = Version('5.2') version = version_module.Version('5.2')
function = versioning.get_function_by_version( function = versioning.get_function_by_version(
routerlib.ROUTER_FUNC_DICT, 'create_lrouter', version) routerlib.ROUTER_FUNC_DICT, 'create_lrouter', version)
self.assertEqual(routerlib.create_explicit_routing_lrouter, self.assertEqual(routerlib.create_explicit_routing_lrouter,
function) function)
def test_function_handling_with_obsolete_major(self): def test_function_handling_with_obsolete_major(self):
version = Version('1.2') version = version_module.Version('1.2')
self.assertRaises(NotImplementedError, self.assertRaises(NotImplementedError,
versioning.get_function_by_version, versioning.get_function_by_version,
routerlib.ROUTER_FUNC_DICT, routerlib.ROUTER_FUNC_DICT,

View File

@ -17,26 +17,24 @@ import mock
from oslo.config import cfg from oslo.config import cfg
from neutron.common import constants from neutron.common import constants
from neutron.common.test_lib import test_config from neutron.common import test_lib
from neutron.plugins.vmware.common import sync from neutron.plugins.vmware.common import sync
from neutron.plugins.vmware.dhcp_meta import rpc from neutron.plugins.vmware.dhcp_meta import rpc
from neutron.tests.unit.openvswitch import test_agent_scheduler as test_base from neutron.tests.unit.openvswitch import test_agent_scheduler as test_base
from neutron.tests.unit import vmware
from neutron.tests.unit.vmware.apiclient import fake from neutron.tests.unit.vmware.apiclient import fake
from neutron.tests.unit.vmware import get_fake_conf
from neutron.tests.unit.vmware import NSXAPI_NAME
from neutron.tests.unit.vmware import PLUGIN_NAME
from neutron.tests.unit.vmware import STUBS_PATH
class DhcpAgentNotifierTestCase(test_base.OvsDhcpAgentNotifierTestCase): class DhcpAgentNotifierTestCase(test_base.OvsDhcpAgentNotifierTestCase):
plugin_str = PLUGIN_NAME plugin_str = vmware.PLUGIN_NAME
def setUp(self): def setUp(self):
test_config['config_files'] = [get_fake_conf('nsx.ini.full.test')] test_lib.test_config['config_files'] = [
vmware.get_fake_conf('nsx.ini.full.test')]
# mock api client # mock api client
self.fc = fake.FakeClient(STUBS_PATH) self.fc = fake.FakeClient(vmware.STUBS_PATH)
self.mock_nsx_api = mock.patch(NSXAPI_NAME, autospec=True) self.mock_nsx_api = mock.patch(vmware.NSXAPI_NAME, autospec=True)
instance = self.mock_nsx_api.start() instance = self.mock_nsx_api.start()
# Avoid runs of the synchronizer looping call # Avoid runs of the synchronizer looping call
patch_sync = mock.patch.object(sync, '_start_loopingcall') patch_sync = mock.patch.object(sync, '_start_loopingcall')

View File

@ -21,7 +21,7 @@ from neutron.common import constants as n_consts
from neutron.common import exceptions as n_exc from neutron.common import exceptions as n_exc
from neutron import context from neutron import context
from neutron.db import api as db from neutron.db import api as db
from neutron.plugins.vmware.api_client.exception import NsxApiException from neutron.plugins.vmware.api_client import exception
from neutron.plugins.vmware.common import exceptions as p_exc from neutron.plugins.vmware.common import exceptions as p_exc
from neutron.plugins.vmware.dbexts import lsn_db from neutron.plugins.vmware.dbexts import lsn_db
from neutron.plugins.vmware.dhcp_meta import constants from neutron.plugins.vmware.dhcp_meta import constants
@ -290,7 +290,7 @@ class LsnManagerTestCase(base.BaseTestCase):
self._test_lsn_get_raise_not_found_with_exc(n_exc.NotFound) self._test_lsn_get_raise_not_found_with_exc(n_exc.NotFound)
def test_lsn_get_raise_not_found_with_api_error(self): def test_lsn_get_raise_not_found_with_api_error(self):
self._test_lsn_get_raise_not_found_with_exc(NsxApiException) self._test_lsn_get_raise_not_found_with_exc(exception.NsxApiException)
def _test_lsn_get_silent_raise_with_exc(self, exc): def _test_lsn_get_silent_raise_with_exc(self, exc):
self.mock_lsn_api.lsn_for_network_get.side_effect = exc self.mock_lsn_api.lsn_for_network_get.side_effect = exc
@ -304,7 +304,7 @@ class LsnManagerTestCase(base.BaseTestCase):
self._test_lsn_get_silent_raise_with_exc(n_exc.NotFound) self._test_lsn_get_silent_raise_with_exc(n_exc.NotFound)
def test_lsn_get_silent_raise_with_api_error(self): def test_lsn_get_silent_raise_with_api_error(self):
self._test_lsn_get_silent_raise_with_exc(NsxApiException) self._test_lsn_get_silent_raise_with_exc(exception.NsxApiException)
def test_lsn_create(self): def test_lsn_create(self):
self.mock_lsn_api.lsn_for_network_create.return_value = self.lsn_id self.mock_lsn_api.lsn_for_network_create.return_value = self.lsn_id
@ -313,7 +313,8 @@ class LsnManagerTestCase(base.BaseTestCase):
mock.ANY, self.net_id) mock.ANY, self.net_id)
def test_lsn_create_raise_api_error(self): def test_lsn_create_raise_api_error(self):
self.mock_lsn_api.lsn_for_network_create.side_effect = NsxApiException self.mock_lsn_api.lsn_for_network_create.side_effect = (
exception.NsxApiException)
self.assertRaises(p_exc.NsxPluginException, self.assertRaises(p_exc.NsxPluginException,
self.manager.lsn_create, self.manager.lsn_create,
mock.ANY, self.net_id) mock.ANY, self.net_id)
@ -335,7 +336,7 @@ class LsnManagerTestCase(base.BaseTestCase):
self._test_lsn_delete_with_exc(n_exc.NotFound) self._test_lsn_delete_with_exc(n_exc.NotFound)
def test_lsn_delete_api_exception(self): def test_lsn_delete_api_exception(self):
self._test_lsn_delete_with_exc(NsxApiException) self._test_lsn_delete_with_exc(exception.NsxApiException)
def test_lsn_delete_by_network(self): def test_lsn_delete_by_network(self):
self.mock_lsn_api.lsn_for_network_get.return_value = self.lsn_id self.mock_lsn_api.lsn_for_network_get.return_value = self.lsn_id
@ -355,7 +356,7 @@ class LsnManagerTestCase(base.BaseTestCase):
self._test_lsn_delete_by_network_with_exc(n_exc.NotFound) self._test_lsn_delete_by_network_with_exc(n_exc.NotFound)
def test_lsn_delete_by_network_with_not_api_error(self): def test_lsn_delete_by_network_with_not_api_error(self):
self._test_lsn_delete_by_network_with_exc(NsxApiException) self._test_lsn_delete_by_network_with_exc(exception.NsxApiException)
def test_lsn_port_get(self): def test_lsn_port_get(self):
self.mock_lsn_api.lsn_port_by_subnet_get.return_value = ( self.mock_lsn_api.lsn_port_by_subnet_get.return_value = (
@ -412,7 +413,7 @@ class LsnManagerTestCase(base.BaseTestCase):
self._test_lsn_port_create_with_exc(n_exc.NotFound, p_exc.LsnNotFound) self._test_lsn_port_create_with_exc(n_exc.NotFound, p_exc.LsnNotFound)
def test_lsn_port_create_api_exception(self): def test_lsn_port_create_api_exception(self):
self._test_lsn_port_create_with_exc(NsxApiException, self._test_lsn_port_create_with_exc(exception.NsxApiException,
p_exc.NsxPluginException) p_exc.NsxPluginException)
def test_lsn_port_delete(self): def test_lsn_port_delete(self):
@ -430,7 +431,7 @@ class LsnManagerTestCase(base.BaseTestCase):
self._test_lsn_port_delete_with_exc(n_exc.NotFound) self._test_lsn_port_delete_with_exc(n_exc.NotFound)
def test_lsn_port_delete_api_exception(self): def test_lsn_port_delete_api_exception(self):
self._test_lsn_port_delete_with_exc(NsxApiException) self._test_lsn_port_delete_with_exc(exception.NsxApiException)
def _test_lsn_port_dhcp_setup(self, ret_val, sub): def _test_lsn_port_dhcp_setup(self, ret_val, sub):
self.mock_nsx_utils.get_nsx_switch_ids.return_value = [self.switch_id] self.mock_nsx_utils.get_nsx_switch_ids.return_value = [self.switch_id]
@ -639,7 +640,8 @@ class LsnManagerTestCase(base.BaseTestCase):
self._test_lsn_port_dispose_with_values(self.lsn_id, None, 0) self._test_lsn_port_dispose_with_values(self.lsn_id, None, 0)
def test_lsn_port_dispose_api_error(self): def test_lsn_port_dispose_api_error(self):
self.mock_lsn_api.lsn_port_delete.side_effect = NsxApiException self.mock_lsn_api.lsn_port_delete.side_effect = (
exception.NsxApiException)
with mock.patch.object(lsn_man.LOG, 'warn') as l: with mock.patch.object(lsn_man.LOG, 'warn') as l:
self.manager.lsn_port_dispose(mock.ANY, self.net_id, self.mac) self.manager.lsn_port_dispose(mock.ANY, self.net_id, self.mac)
self.assertEqual(1, l.call_count) self.assertEqual(1, l.call_count)
@ -686,7 +688,7 @@ class LsnManagerTestCase(base.BaseTestCase):
def test_lsn_port_update_raise_error(self): def test_lsn_port_update_raise_error(self):
self.mock_lsn_api.lsn_port_host_entries_update.side_effect = ( self.mock_lsn_api.lsn_port_host_entries_update.side_effect = (
NsxApiException) exception.NsxApiException)
self.assertRaises(p_exc.PortConfigurationError, self.assertRaises(p_exc.PortConfigurationError,
self.manager.lsn_port_update, self.manager.lsn_port_update,
mock.ANY, mock.ANY, mock.ANY, mock.ANY) mock.ANY, mock.ANY, mock.ANY, mock.ANY)

View File

@ -18,7 +18,7 @@ import fixtures
import mock import mock
from oslo.config import cfg from oslo.config import cfg
from neutron.manager import NeutronManager from neutron import manager
from neutron.openstack.common import uuidutils from neutron.openstack.common import uuidutils
from neutron.plugins.vmware.api_client import client from neutron.plugins.vmware.api_client import client
from neutron.plugins.vmware.api_client import version from neutron.plugins.vmware.api_client import version
@ -28,14 +28,13 @@ from neutron.plugins.vmware.common import sync
from neutron.plugins.vmware import nsx_cluster from neutron.plugins.vmware import nsx_cluster
from neutron.plugins.vmware.nsxlib import lsn as lsnlib from neutron.plugins.vmware.nsxlib import lsn as lsnlib
from neutron.tests import base from neutron.tests import base
from neutron.tests.unit.vmware import get_fake_conf from neutron.tests.unit import vmware
from neutron.tests.unit.vmware import PLUGIN_NAME
BASE_CONF_PATH = get_fake_conf('neutron.conf.test') BASE_CONF_PATH = vmware.get_fake_conf('neutron.conf.test')
NSX_INI_PATH = get_fake_conf('nsx.ini.basic.test') NSX_INI_PATH = vmware.get_fake_conf('nsx.ini.basic.test')
NSX_INI_FULL_PATH = get_fake_conf('nsx.ini.full.test') NSX_INI_FULL_PATH = vmware.get_fake_conf('nsx.ini.full.test')
NSX_INI_AGENTLESS_PATH = get_fake_conf('nsx.ini.agentless.test') NSX_INI_AGENTLESS_PATH = vmware.get_fake_conf('nsx.ini.agentless.test')
NVP_INI_DEPR_PATH = get_fake_conf('nvp.ini.full.test') NVP_INI_DEPR_PATH = vmware.get_fake_conf('nvp.ini.full.test')
class NSXClusterTest(base.BaseTestCase): class NSXClusterTest(base.BaseTestCase):
@ -100,8 +99,8 @@ class ConfigurationTest(base.BaseTestCase):
def test_load_plugin_with_full_options(self): def test_load_plugin_with_full_options(self):
self.config_parse(args=['--config-file', BASE_CONF_PATH, self.config_parse(args=['--config-file', BASE_CONF_PATH,
'--config-file', NSX_INI_FULL_PATH]) '--config-file', NSX_INI_FULL_PATH])
cfg.CONF.set_override('core_plugin', PLUGIN_NAME) cfg.CONF.set_override('core_plugin', vmware.PLUGIN_NAME)
plugin = NeutronManager().get_plugin() plugin = manager.NeutronManager().get_plugin()
cluster = plugin.cluster cluster = plugin.cluster
self._assert_required_options(cluster) self._assert_required_options(cluster)
self._assert_extra_options(cluster) self._assert_extra_options(cluster)
@ -109,8 +108,8 @@ class ConfigurationTest(base.BaseTestCase):
def test_load_plugin_with_required_options_only(self): def test_load_plugin_with_required_options_only(self):
self.config_parse(args=['--config-file', BASE_CONF_PATH, self.config_parse(args=['--config-file', BASE_CONF_PATH,
'--config-file', NSX_INI_PATH]) '--config-file', NSX_INI_PATH])
cfg.CONF.set_override('core_plugin', PLUGIN_NAME) cfg.CONF.set_override('core_plugin', vmware.PLUGIN_NAME)
plugin = NeutronManager().get_plugin() plugin = manager.NeutronManager().get_plugin()
self._assert_required_options(plugin.cluster) self._assert_required_options(plugin.cluster)
def test_defaults(self): def test_defaults(self):
@ -136,15 +135,15 @@ class ConfigurationTest(base.BaseTestCase):
def test_load_api_extensions(self): def test_load_api_extensions(self):
self.config_parse(args=['--config-file', BASE_CONF_PATH, self.config_parse(args=['--config-file', BASE_CONF_PATH,
'--config-file', NSX_INI_FULL_PATH]) '--config-file', NSX_INI_FULL_PATH])
cfg.CONF.set_override('core_plugin', PLUGIN_NAME) cfg.CONF.set_override('core_plugin', vmware.PLUGIN_NAME)
# Load the configuration, and initialize the plugin # Load the configuration, and initialize the plugin
NeutronManager().get_plugin() manager.NeutronManager().get_plugin()
self.assertIn('extensions', cfg.CONF.api_extensions_path) self.assertIn('extensions', cfg.CONF.api_extensions_path)
def test_agentless_extensions(self): def test_agentless_extensions(self):
self.config_parse(args=['--config-file', BASE_CONF_PATH, self.config_parse(args=['--config-file', BASE_CONF_PATH,
'--config-file', NSX_INI_AGENTLESS_PATH]) '--config-file', NSX_INI_AGENTLESS_PATH])
cfg.CONF.set_override('core_plugin', PLUGIN_NAME) cfg.CONF.set_override('core_plugin', vmware.PLUGIN_NAME)
self.assertEqual(config.AgentModes.AGENTLESS, self.assertEqual(config.AgentModes.AGENTLESS,
cfg.CONF.NSX.agent_mode) cfg.CONF.NSX.agent_mode)
# The version returned from NSX does not really matter here # The version returned from NSX does not really matter here
@ -154,7 +153,7 @@ class ConfigurationTest(base.BaseTestCase):
with mock.patch.object(lsnlib, with mock.patch.object(lsnlib,
'service_cluster_exists', 'service_cluster_exists',
return_value=True): return_value=True):
plugin = NeutronManager().get_plugin() plugin = manager.NeutronManager().get_plugin()
self.assertNotIn('agent', self.assertNotIn('agent',
plugin.supported_extension_aliases) plugin.supported_extension_aliases)
self.assertNotIn('dhcp_agent_scheduler', self.assertNotIn('dhcp_agent_scheduler',
@ -163,18 +162,19 @@ class ConfigurationTest(base.BaseTestCase):
def test_agentless_extensions_version_fail(self): def test_agentless_extensions_version_fail(self):
self.config_parse(args=['--config-file', BASE_CONF_PATH, self.config_parse(args=['--config-file', BASE_CONF_PATH,
'--config-file', NSX_INI_AGENTLESS_PATH]) '--config-file', NSX_INI_AGENTLESS_PATH])
cfg.CONF.set_override('core_plugin', PLUGIN_NAME) cfg.CONF.set_override('core_plugin', vmware.PLUGIN_NAME)
self.assertEqual(config.AgentModes.AGENTLESS, self.assertEqual(config.AgentModes.AGENTLESS,
cfg.CONF.NSX.agent_mode) cfg.CONF.NSX.agent_mode)
with mock.patch.object(client.NsxApiClient, with mock.patch.object(client.NsxApiClient,
'get_version', 'get_version',
return_value=version.Version("3.2")): return_value=version.Version("3.2")):
self.assertRaises(exceptions.NsxPluginException, NeutronManager) self.assertRaises(exceptions.NsxPluginException,
manager.NeutronManager)
def test_agentless_extensions_unmet_deps_fail(self): def test_agentless_extensions_unmet_deps_fail(self):
self.config_parse(args=['--config-file', BASE_CONF_PATH, self.config_parse(args=['--config-file', BASE_CONF_PATH,
'--config-file', NSX_INI_AGENTLESS_PATH]) '--config-file', NSX_INI_AGENTLESS_PATH])
cfg.CONF.set_override('core_plugin', PLUGIN_NAME) cfg.CONF.set_override('core_plugin', vmware.PLUGIN_NAME)
self.assertEqual(config.AgentModes.AGENTLESS, self.assertEqual(config.AgentModes.AGENTLESS,
cfg.CONF.NSX.agent_mode) cfg.CONF.NSX.agent_mode)
with mock.patch.object(client.NsxApiClient, with mock.patch.object(client.NsxApiClient,
@ -184,15 +184,15 @@ class ConfigurationTest(base.BaseTestCase):
'service_cluster_exists', 'service_cluster_exists',
return_value=False): return_value=False):
self.assertRaises(exceptions.NsxPluginException, self.assertRaises(exceptions.NsxPluginException,
NeutronManager) manager.NeutronManager)
def test_agent_extensions(self): def test_agent_extensions(self):
self.config_parse(args=['--config-file', BASE_CONF_PATH, self.config_parse(args=['--config-file', BASE_CONF_PATH,
'--config-file', NSX_INI_FULL_PATH]) '--config-file', NSX_INI_FULL_PATH])
cfg.CONF.set_override('core_plugin', PLUGIN_NAME) cfg.CONF.set_override('core_plugin', vmware.PLUGIN_NAME)
self.assertEqual(config.AgentModes.AGENT, self.assertEqual(config.AgentModes.AGENT,
cfg.CONF.NSX.agent_mode) cfg.CONF.NSX.agent_mode)
plugin = NeutronManager().get_plugin() plugin = manager.NeutronManager().get_plugin()
self.assertIn('agent', self.assertIn('agent',
plugin.supported_extension_aliases) plugin.supported_extension_aliases)
self.assertIn('dhcp_agent_scheduler', self.assertIn('dhcp_agent_scheduler',
@ -219,8 +219,8 @@ class OldNVPConfigurationTest(base.BaseTestCase):
def test_load_plugin_with_deprecated_options(self): def test_load_plugin_with_deprecated_options(self):
self.config_parse(args=['--config-file', BASE_CONF_PATH, self.config_parse(args=['--config-file', BASE_CONF_PATH,
'--config-file', NVP_INI_DEPR_PATH]) '--config-file', NVP_INI_DEPR_PATH])
cfg.CONF.set_override('core_plugin', PLUGIN_NAME) cfg.CONF.set_override('core_plugin', vmware.PLUGIN_NAME)
plugin = NeutronManager().get_plugin() plugin = manager.NeutronManager().get_plugin()
cluster = plugin.cluster cluster = plugin.cluster
# Verify old nvp_* params have been fully parsed # Verify old nvp_* params have been fully parsed
self._assert_required_options(cluster) self._assert_required_options(cluster)

View File

@ -33,30 +33,25 @@ from neutron.extensions import portbindings
from neutron.extensions import providernet as pnet from neutron.extensions import providernet as pnet
from neutron.extensions import securitygroup as secgrp from neutron.extensions import securitygroup as secgrp
from neutron import manager from neutron import manager
from neutron.manager import NeutronManager
from neutron.openstack.common.db import exception as db_exc from neutron.openstack.common.db import exception as db_exc
from neutron.openstack.common import log from neutron.openstack.common import log
from neutron.openstack.common import uuidutils from neutron.openstack.common import uuidutils
from neutron.plugins.vmware.api_client import exception as api_exc from neutron.plugins.vmware.api_client import exception as api_exc
from neutron.plugins.vmware.api_client.version import Version from neutron.plugins.vmware.api_client import version as version_module
from neutron.plugins.vmware.common import exceptions as nsx_exc from neutron.plugins.vmware.common import exceptions as nsx_exc
from neutron.plugins.vmware.common import sync from neutron.plugins.vmware.common import sync
from neutron.plugins.vmware.dbexts import db as nsx_db from neutron.plugins.vmware.dbexts import db as nsx_db
from neutron.plugins.vmware.extensions import distributedrouter as dist_router from neutron.plugins.vmware.extensions import distributedrouter as dist_router
from neutron.plugins.vmware import nsxlib from neutron.plugins.vmware import nsxlib
from neutron.plugins.vmware.plugins.base import NetworkTypes from neutron.plugins.vmware.plugins import base
from neutron.tests.unit import _test_extension_portbindings as test_bindings from neutron.tests.unit import _test_extension_portbindings as test_bindings
import neutron.tests.unit.test_db_plugin as test_plugin import neutron.tests.unit.test_db_plugin as test_plugin
import neutron.tests.unit.test_extension_ext_gw_mode as test_ext_gw_mode import neutron.tests.unit.test_extension_ext_gw_mode as test_ext_gw_mode
import neutron.tests.unit.test_extension_security_group as ext_sg import neutron.tests.unit.test_extension_security_group as ext_sg
import neutron.tests.unit.test_l3_plugin as test_l3_plugin import neutron.tests.unit.test_l3_plugin as test_l3_plugin
from neutron.tests.unit import testlib_api from neutron.tests.unit import testlib_api
from neutron.tests.unit import vmware
from neutron.tests.unit.vmware.apiclient import fake from neutron.tests.unit.vmware.apiclient import fake
from neutron.tests.unit.vmware import get_fake_conf
from neutron.tests.unit.vmware import NSXAPI_NAME
from neutron.tests.unit.vmware import NSXEXT_PATH
from neutron.tests.unit.vmware import PLUGIN_NAME
from neutron.tests.unit.vmware import STUBS_PATH
LOG = log.getLogger(__name__) LOG = log.getLogger(__name__)
@ -91,13 +86,14 @@ class NsxPluginV2TestCase(test_plugin.NeutronDbPluginV2TestCase):
return network_req.get_response(self.api) return network_req.get_response(self.api)
def setUp(self, def setUp(self,
plugin=PLUGIN_NAME, plugin=vmware.PLUGIN_NAME,
ext_mgr=None, ext_mgr=None,
service_plugins=None): service_plugins=None):
test_lib.test_config['config_files'] = [get_fake_conf('nsx.ini.test')] test_lib.test_config['config_files'] = [
vmware.get_fake_conf('nsx.ini.test')]
# mock api client # mock api client
self.fc = fake.FakeClient(STUBS_PATH) self.fc = fake.FakeClient(vmware.STUBS_PATH)
self.mock_nsx = mock.patch(NSXAPI_NAME, autospec=True) self.mock_nsx = mock.patch(vmware.NSXAPI_NAME, autospec=True)
self.mock_instance = self.mock_nsx.start() self.mock_instance = self.mock_nsx.start()
# Avoid runs of the synchronizer looping call # Avoid runs of the synchronizer looping call
patch_sync = mock.patch.object(sync, '_start_loopingcall') patch_sync = mock.patch.object(sync, '_start_loopingcall')
@ -105,7 +101,7 @@ class NsxPluginV2TestCase(test_plugin.NeutronDbPluginV2TestCase):
# Emulate tests against NSX 2.x # Emulate tests against NSX 2.x
self.mock_instance.return_value.get_version.return_value = ( self.mock_instance.return_value.get_version.return_value = (
Version("2.9")) version_module.Version("2.9"))
self.mock_instance.return_value.request.side_effect = ( self.mock_instance.return_value.request.side_effect = (
self.fc.fake_request) self.fc.fake_request)
super(NsxPluginV2TestCase, self).setUp(plugin=plugin, super(NsxPluginV2TestCase, self).setUp(plugin=plugin,
@ -346,10 +342,11 @@ class TestNetworksV2(test_plugin.TestNetworksV2, NsxPluginV2TestCase):
class SecurityGroupsTestCase(ext_sg.SecurityGroupDBTestCase): class SecurityGroupsTestCase(ext_sg.SecurityGroupDBTestCase):
def setUp(self): def setUp(self):
test_lib.test_config['config_files'] = [get_fake_conf('nsx.ini.test')] test_lib.test_config['config_files'] = [
vmware.get_fake_conf('nsx.ini.test')]
# mock nsx api client # mock nsx api client
self.fc = fake.FakeClient(STUBS_PATH) self.fc = fake.FakeClient(vmware.STUBS_PATH)
self.mock_nsx = mock.patch(NSXAPI_NAME, autospec=True) self.mock_nsx = mock.patch(vmware.NSXAPI_NAME, autospec=True)
instance = self.mock_nsx.start() instance = self.mock_nsx.start()
instance.return_value.login.return_value = "the_cookie" instance.return_value.login.return_value = "the_cookie"
# Avoid runs of the synchronizer looping call # Avoid runs of the synchronizer looping call
@ -357,7 +354,7 @@ class SecurityGroupsTestCase(ext_sg.SecurityGroupDBTestCase):
patch_sync.start() patch_sync.start()
instance.return_value.request.side_effect = self.fc.fake_request instance.return_value.request.side_effect = self.fc.fake_request
super(SecurityGroupsTestCase, self).setUp(PLUGIN_NAME) super(SecurityGroupsTestCase, self).setUp(vmware.PLUGIN_NAME)
class TestSecurityGroup(ext_sg.TestSecurityGroups, SecurityGroupsTestCase): class TestSecurityGroup(ext_sg.TestSecurityGroups, SecurityGroupsTestCase):
@ -442,18 +439,19 @@ class L3NatTest(test_l3_plugin.L3BaseForIntTests, NsxPluginV2TestCase):
def _restore_l3_attribute_map(self): def _restore_l3_attribute_map(self):
l3.RESOURCE_ATTRIBUTE_MAP = self._l3_attribute_map_bk l3.RESOURCE_ATTRIBUTE_MAP = self._l3_attribute_map_bk
def setUp(self, plugin=PLUGIN_NAME, ext_mgr=None, service_plugins=None): def setUp(self, plugin=vmware.PLUGIN_NAME, ext_mgr=None,
service_plugins=None):
self._l3_attribute_map_bk = {} self._l3_attribute_map_bk = {}
for item in l3.RESOURCE_ATTRIBUTE_MAP: for item in l3.RESOURCE_ATTRIBUTE_MAP:
self._l3_attribute_map_bk[item] = ( self._l3_attribute_map_bk[item] = (
l3.RESOURCE_ATTRIBUTE_MAP[item].copy()) l3.RESOURCE_ATTRIBUTE_MAP[item].copy())
cfg.CONF.set_override('api_extensions_path', NSXEXT_PATH) cfg.CONF.set_override('api_extensions_path', vmware.NSXEXT_PATH)
l3_attribute_map_bk = backup_l3_attribute_map() l3_attribute_map_bk = backup_l3_attribute_map()
self.addCleanup(restore_l3_attribute_map, l3_attribute_map_bk) self.addCleanup(restore_l3_attribute_map, l3_attribute_map_bk)
ext_mgr = ext_mgr or TestL3ExtensionManager() ext_mgr = ext_mgr or TestL3ExtensionManager()
super(L3NatTest, self).setUp( super(L3NatTest, self).setUp(
plugin=plugin, ext_mgr=ext_mgr, service_plugins=service_plugins) plugin=plugin, ext_mgr=ext_mgr, service_plugins=service_plugins)
plugin_instance = NeutronManager.get_plugin() plugin_instance = manager.NeutronManager.get_plugin()
self._plugin_name = "%s.%s" % ( self._plugin_name = "%s.%s" % (
plugin_instance.__module__, plugin_instance.__module__,
plugin_instance.__class__.__name__) plugin_instance.__class__.__name__)
@ -461,7 +459,7 @@ class L3NatTest(test_l3_plugin.L3BaseForIntTests, NsxPluginV2TestCase):
def _create_l3_ext_network(self, vlan_id=None): def _create_l3_ext_network(self, vlan_id=None):
name = 'l3_ext_net' name = 'l3_ext_net'
net_type = NetworkTypes.L3_EXT net_type = base.NetworkTypes.L3_EXT
providernet_args = {pnet.NETWORK_TYPE: net_type, providernet_args = {pnet.NETWORK_TYPE: net_type,
pnet.PHYSICAL_NETWORK: 'l3_gw_uuid'} pnet.PHYSICAL_NETWORK: 'l3_gw_uuid'}
if vlan_id: if vlan_id:
@ -480,7 +478,7 @@ class TestL3NatTestCase(L3NatTest,
def _test_create_l3_ext_network(self, vlan_id=None): def _test_create_l3_ext_network(self, vlan_id=None):
name = 'l3_ext_net' name = 'l3_ext_net'
net_type = NetworkTypes.L3_EXT net_type = base.NetworkTypes.L3_EXT
expected = [('subnets', []), ('name', name), ('admin_state_up', True), expected = [('subnets', []), ('name', name), ('admin_state_up', True),
('status', 'ACTIVE'), ('shared', False), ('status', 'ACTIVE'), ('shared', False),
(external_net.EXTERNAL, True), (external_net.EXTERNAL, True),
@ -540,7 +538,7 @@ class TestL3NatTestCase(L3NatTest,
def _test_router_create_with_distributed(self, dist_input, dist_expected, def _test_router_create_with_distributed(self, dist_input, dist_expected,
version='3.1', return_code=201): version='3.1', return_code=201):
self.mock_instance.return_value.get_version.return_value = ( self.mock_instance.return_value.get_version.return_value = (
Version(version)) version_module.Version(version))
data = {'tenant_id': 'whatever'} data = {'tenant_id': 'whatever'}
data['name'] = 'router1' data['name'] = 'router1'

View File

@ -37,10 +37,8 @@ from neutron.plugins.vmware import nsxlib
from neutron.plugins.vmware import plugin from neutron.plugins.vmware import plugin
from neutron.tests import base from neutron.tests import base
from neutron.tests.unit import test_api_v2 from neutron.tests.unit import test_api_v2
from neutron.tests.unit import vmware
from neutron.tests.unit.vmware.apiclient import fake from neutron.tests.unit.vmware.apiclient import fake
from neutron.tests.unit.vmware import get_fake_conf
from neutron.tests.unit.vmware import NSXAPI_NAME
from neutron.tests.unit.vmware import STUBS_PATH
LOG = log.getLogger(__name__) LOG = log.getLogger(__name__)
@ -259,8 +257,8 @@ class SyncTestCase(base.BaseTestCase):
def setUp(self): def setUp(self):
# mock api client # mock api client
self.fc = fake.FakeClient(STUBS_PATH) self.fc = fake.FakeClient(vmware.STUBS_PATH)
mock_api = mock.patch(NSXAPI_NAME, autospec=True) mock_api = mock.patch(vmware.NSXAPI_NAME, autospec=True)
# Avoid runs of the synchronizer looping call # Avoid runs of the synchronizer looping call
# These unit tests will excplicitly invoke synchronization # These unit tests will excplicitly invoke synchronization
patch_sync = mock.patch.object(sync, '_start_loopingcall') patch_sync = mock.patch.object(sync, '_start_loopingcall')
@ -284,8 +282,8 @@ class SyncTestCase(base.BaseTestCase):
redirects=self.fake_cluster.redirects) redirects=self.fake_cluster.redirects)
# Instantiate Neutron plugin # Instantiate Neutron plugin
# and setup needed config variables # and setup needed config variables
args = ['--config-file', get_fake_conf('neutron.conf.test'), args = ['--config-file', vmware.get_fake_conf('neutron.conf.test'),
'--config-file', get_fake_conf('nsx.ini.test')] '--config-file', vmware.get_fake_conf('nsx.ini.test')]
self.config_parse(args=args) self.config_parse(args=args)
cfg.CONF.set_override('allow_overlapping_ips', True) cfg.CONF.set_override('allow_overlapping_ips', True)
self._plugin = plugin.NsxPlugin() self._plugin = plugin.NsxPlugin()

View File

@ -23,7 +23,7 @@ from neutron.plugins.vmware.common import nsx_utils
from neutron.plugins.vmware.common import utils from neutron.plugins.vmware.common import utils
from neutron.plugins.vmware import nsxlib from neutron.plugins.vmware import nsxlib
from neutron.tests import base from neutron.tests import base
from neutron.tests.unit.vmware import nsx_method from neutron.tests.unit import vmware
from neutron.tests.unit.vmware.nsxlib import base as nsx_base from neutron.tests.unit.vmware.nsxlib import base as nsx_base
@ -33,33 +33,33 @@ class NsxUtilsTestCase(base.BaseTestCase):
# Mock relevant db calls # Mock relevant db calls
# This will allow for avoiding setting up the plugin # This will allow for avoiding setting up the plugin
# for creating db entries # for creating db entries
mock.patch(nsx_method('get_nsx_switch_and_port_id', mock.patch(vmware.nsx_method('get_nsx_switch_and_port_id',
module_name='dbexts.db'), module_name='dbexts.db'),
return_value=ret_value).start() return_value=ret_value).start()
mock.patch(nsx_method('add_neutron_nsx_port_mapping', mock.patch(vmware.nsx_method('add_neutron_nsx_port_mapping',
module_name='dbexts.db')).start() module_name='dbexts.db')).start()
mock.patch(nsx_method('delete_neutron_nsx_port_mapping', mock.patch(vmware.nsx_method('delete_neutron_nsx_port_mapping',
module_name='dbexts.db')).start() module_name='dbexts.db')).start()
def _mock_network_mapping_db_calls(self, ret_value): def _mock_network_mapping_db_calls(self, ret_value):
# Mock relevant db calls # Mock relevant db calls
# This will allow for avoiding setting up the plugin # This will allow for avoiding setting up the plugin
# for creating db entries # for creating db entries
mock.patch(nsx_method('get_nsx_switch_ids', mock.patch(vmware.nsx_method('get_nsx_switch_ids',
module_name='dbexts.db'), module_name='dbexts.db'),
return_value=ret_value).start() return_value=ret_value).start()
mock.patch(nsx_method('add_neutron_nsx_network_mapping', mock.patch(vmware.nsx_method('add_neutron_nsx_network_mapping',
module_name='dbexts.db')).start() module_name='dbexts.db')).start()
def _mock_router_mapping_db_calls(self, ret_value): def _mock_router_mapping_db_calls(self, ret_value):
# Mock relevant db calls # Mock relevant db calls
# This will allow for avoiding setting up the plugin # This will allow for avoiding setting up the plugin
# for creating db entries # for creating db entries
mock.patch(nsx_method('get_nsx_router_id', mock.patch(vmware.nsx_method('get_nsx_router_id',
module_name='dbexts.db'), module_name='dbexts.db'),
return_value=ret_value).start() return_value=ret_value).start()
mock.patch(nsx_method('add_neutron_nsx_router_mapping', mock.patch(vmware.nsx_method('add_neutron_nsx_router_mapping',
module_name='dbexts.db')).start() module_name='dbexts.db')).start()
def _verify_get_nsx_switch_and_port_id(self, exp_ls_uuid, exp_lp_uuid): def _verify_get_nsx_switch_and_port_id(self, exp_ls_uuid, exp_lp_uuid):
# The nsxlib and db calls are mocked, therefore the cluster # The nsxlib and db calls are mocked, therefore the cluster
@ -101,8 +101,8 @@ class NsxUtilsTestCase(base.BaseTestCase):
exp_lp_uuid = uuidutils.generate_uuid() exp_lp_uuid = uuidutils.generate_uuid()
ret_value = None, exp_lp_uuid ret_value = None, exp_lp_uuid
self._mock_port_mapping_db_calls(ret_value) self._mock_port_mapping_db_calls(ret_value)
with mock.patch(nsx_method('query_lswitch_lports', with mock.patch(vmware.nsx_method('query_lswitch_lports',
module_name='nsxlib.switch'), module_name='nsxlib.switch'),
return_value=[{'uuid': exp_lp_uuid, return_value=[{'uuid': exp_lp_uuid,
'_relations': { '_relations': {
'LogicalSwitchConfig': { 'LogicalSwitchConfig': {
@ -117,8 +117,8 @@ class NsxUtilsTestCase(base.BaseTestCase):
exp_lp_uuid = uuidutils.generate_uuid() exp_lp_uuid = uuidutils.generate_uuid()
ret_value = None, None ret_value = None, None
self._mock_port_mapping_db_calls(ret_value) self._mock_port_mapping_db_calls(ret_value)
with mock.patch(nsx_method('query_lswitch_lports', with mock.patch(vmware.nsx_method('query_lswitch_lports',
module_name='nsxlib.switch'), module_name='nsxlib.switch'),
return_value=[{'uuid': exp_lp_uuid, return_value=[{'uuid': exp_lp_uuid,
'_relations': { '_relations': {
'LogicalSwitchConfig': { 'LogicalSwitchConfig': {
@ -131,8 +131,8 @@ class NsxUtilsTestCase(base.BaseTestCase):
# mappings are not found both in the db and the backend # mappings are not found both in the db and the backend
ret_value = None, None ret_value = None, None
self._mock_port_mapping_db_calls(ret_value) self._mock_port_mapping_db_calls(ret_value)
with mock.patch(nsx_method('query_lswitch_lports', with mock.patch(vmware.nsx_method('query_lswitch_lports',
module_name='nsxlib.switch'), module_name='nsxlib.switch'),
return_value=[]): return_value=[]):
self._verify_get_nsx_switch_and_port_id(None, None) self._verify_get_nsx_switch_and_port_id(None, None)
@ -148,8 +148,8 @@ class NsxUtilsTestCase(base.BaseTestCase):
# found for a given network identifier # found for a given network identifier
exp_ls_uuids = [uuidutils.generate_uuid()] exp_ls_uuids = [uuidutils.generate_uuid()]
self._mock_network_mapping_db_calls(None) self._mock_network_mapping_db_calls(None)
with mock.patch(nsx_method('get_lswitches', with mock.patch(vmware.nsx_method('get_lswitches',
module_name='nsxlib.switch'), module_name='nsxlib.switch'),
return_value=[{'uuid': uuid} return_value=[{'uuid': uuid}
for uuid in exp_ls_uuids]): for uuid in exp_ls_uuids]):
self._verify_get_nsx_switch_ids(exp_ls_uuids) self._verify_get_nsx_switch_ids(exp_ls_uuids)
@ -158,8 +158,8 @@ class NsxUtilsTestCase(base.BaseTestCase):
# This test verifies that the function returns None if the mappings # This test verifies that the function returns None if the mappings
# are not found both in the db and in the backend # are not found both in the db and in the backend
self._mock_network_mapping_db_calls(None) self._mock_network_mapping_db_calls(None)
with mock.patch(nsx_method('get_lswitches', with mock.patch(vmware.nsx_method('get_lswitches',
module_name='nsxlib.switch'), module_name='nsxlib.switch'),
return_value=[]): return_value=[]):
self._verify_get_nsx_switch_ids(None) self._verify_get_nsx_switch_ids(None)
@ -175,8 +175,8 @@ class NsxUtilsTestCase(base.BaseTestCase):
# found for a given port identifier # found for a given port identifier
exp_lr_uuid = uuidutils.generate_uuid() exp_lr_uuid = uuidutils.generate_uuid()
self._mock_router_mapping_db_calls(None) self._mock_router_mapping_db_calls(None)
with mock.patch(nsx_method('query_lrouters', with mock.patch(vmware.nsx_method('query_lrouters',
module_name='nsxlib.router'), module_name='nsxlib.router'),
return_value=[{'uuid': exp_lr_uuid}]): return_value=[{'uuid': exp_lr_uuid}]):
self._verify_get_nsx_router_id(exp_lr_uuid) self._verify_get_nsx_router_id(exp_lr_uuid)
@ -184,8 +184,8 @@ class NsxUtilsTestCase(base.BaseTestCase):
# This test verifies that the function returns None if the mapping # This test verifies that the function returns None if the mapping
# are not found both in the db and in the backend # are not found both in the db and in the backend
self._mock_router_mapping_db_calls(None) self._mock_router_mapping_db_calls(None)
with mock.patch(nsx_method('query_lrouters', with mock.patch(vmware.nsx_method('query_lrouters',
module_name='nsxlib.router'), module_name='nsxlib.router'),
return_value=[]): return_value=[]):
self._verify_get_nsx_router_id(None) self._verify_get_nsx_router_id(None)
@ -267,11 +267,11 @@ class NsxUtilsTestCase(base.BaseTestCase):
self.assertEqual(expected, result) self.assertEqual(expected, result)
def _mock_sec_group_mapping_db_calls(self, ret_value): def _mock_sec_group_mapping_db_calls(self, ret_value):
mock.patch(nsx_method('get_nsx_security_group_id', mock.patch(vmware.nsx_method('get_nsx_security_group_id',
module_name='dbexts.db'), module_name='dbexts.db'),
return_value=ret_value).start() return_value=ret_value).start()
mock.patch(nsx_method('add_neutron_nsx_security_group_mapping', mock.patch(vmware.nsx_method('add_neutron_nsx_security_group_mapping',
module_name='dbexts.db')).start() module_name='dbexts.db')).start()
def _verify_get_nsx_sec_profile_id(self, exp_sec_prof_uuid): def _verify_get_nsx_sec_profile_id(self, exp_sec_prof_uuid):
# The nsxlib and db calls are mocked, therefore the cluster # The nsxlib and db calls are mocked, therefore the cluster
@ -292,8 +292,8 @@ class NsxUtilsTestCase(base.BaseTestCase):
# found for a given security profile identifier # found for a given security profile identifier
exp_sec_prof_uuid = uuidutils.generate_uuid() exp_sec_prof_uuid = uuidutils.generate_uuid()
self._mock_sec_group_mapping_db_calls(None) self._mock_sec_group_mapping_db_calls(None)
with mock.patch(nsx_method('query_security_profiles', with mock.patch(vmware.nsx_method('query_security_profiles',
module_name='nsxlib.secgroup'), module_name='nsxlib.secgroup'),
return_value=[{'uuid': exp_sec_prof_uuid}]): return_value=[{'uuid': exp_sec_prof_uuid}]):
self._verify_get_nsx_sec_profile_id(exp_sec_prof_uuid) self._verify_get_nsx_sec_profile_id(exp_sec_prof_uuid)
@ -301,8 +301,8 @@ class NsxUtilsTestCase(base.BaseTestCase):
# This test verifies that the function returns None if the mapping # This test verifies that the function returns None if the mapping
# are not found both in the db and in the backend # are not found both in the db and in the backend
self._mock_sec_group_mapping_db_calls(None) self._mock_sec_group_mapping_db_calls(None)
with mock.patch(nsx_method('query_security_profiles', with mock.patch(vmware.nsx_method('query_security_profiles',
module_name='nsxlib.secgroup'), module_name='nsxlib.secgroup'),
return_value=[]): return_value=[]):
self._verify_get_nsx_sec_profile_id(None) self._verify_get_nsx_sec_profile_id(None)

View File

@ -22,16 +22,14 @@ from oslo.config import cfg
from neutron.api.v2 import attributes from neutron.api.v2 import attributes
from neutron import context from neutron import context
from neutron.extensions import l3 from neutron.extensions import l3
from neutron.manager import NeutronManager from neutron import manager as n_manager
from neutron.openstack.common import uuidutils from neutron.openstack.common import uuidutils
from neutron.plugins.vmware.common import utils from neutron.plugins.vmware.common import utils
from neutron.plugins.vmware.plugins import service as nsp from neutron.plugins.vmware.plugins import service as nsp
from neutron.tests import base from neutron.tests import base
from neutron.tests.unit import test_l3_plugin from neutron.tests.unit import test_l3_plugin
from neutron.tests.unit.vmware import NSXEXT_PATH from neutron.tests.unit import vmware
from neutron.tests.unit.vmware import SERVICE_PLUGIN_NAME
from neutron.tests.unit.vmware import test_nsx_plugin from neutron.tests.unit.vmware import test_nsx_plugin
from neutron.tests.unit.vmware import VCNS_NAME
from neutron.tests.unit.vmware.vshield import fake_vcns from neutron.tests.unit.vmware.vshield import fake_vcns
_uuid = uuidutils.generate_uuid _uuid = uuidutils.generate_uuid
@ -95,21 +93,22 @@ class ServiceRouterTest(test_nsx_plugin.L3NatTest,
self.fc2.enable_service_loadbalancer) self.fc2.enable_service_loadbalancer)
def setUp(self, ext_mgr=None, service_plugins=None): def setUp(self, ext_mgr=None, service_plugins=None):
cfg.CONF.set_override('api_extensions_path', NSXEXT_PATH) cfg.CONF.set_override('api_extensions_path', vmware.NSXEXT_PATH)
cfg.CONF.set_override('task_status_check_interval', 200, group="vcns") cfg.CONF.set_override('task_status_check_interval', 200, group="vcns")
# vcns does not support duplicated router name, ignore router name # vcns does not support duplicated router name, ignore router name
# validation for unit-test cases # validation for unit-test cases
self.fc2 = fake_vcns.FakeVcns(unique_router_name=False) self.fc2 = fake_vcns.FakeVcns(unique_router_name=False)
self.mock_vcns = mock.patch(VCNS_NAME, autospec=True) self.mock_vcns = mock.patch(vmware.VCNS_NAME, autospec=True)
self.vcns_patch() self.vcns_patch()
mock_proxy = mock.patch( mock_proxy = mock.patch(
"%s.%s" % (SERVICE_PLUGIN_NAME, '_set_create_lswitch_proxy')) "%s.%s" % (vmware.SERVICE_PLUGIN_NAME,
'_set_create_lswitch_proxy'))
mock_proxy.start() mock_proxy.start()
ext_mgr = ext_mgr or ServiceRouterTestExtensionManager() ext_mgr = ext_mgr or ServiceRouterTestExtensionManager()
super(ServiceRouterTest, self).setUp( super(ServiceRouterTest, self).setUp(
plugin=SERVICE_PLUGIN_NAME, plugin=vmware.SERVICE_PLUGIN_NAME,
service_plugins=service_plugins, service_plugins=service_plugins,
ext_mgr=ext_mgr) ext_mgr=ext_mgr)
@ -117,7 +116,7 @@ class ServiceRouterTest(test_nsx_plugin.L3NatTest,
self.addCleanup(self.fc2.reset_all) self.addCleanup(self.fc2.reset_all)
def tearDown(self): def tearDown(self):
plugin = NeutronManager.get_plugin() plugin = n_manager.NeutronManager.get_plugin()
manager = plugin.vcns_driver.task_manager manager = plugin.vcns_driver.task_manager
# wait max ~10 seconds for all tasks to be finished # wait max ~10 seconds for all tasks to be finished
for i in range(100): for i in range(100):
@ -200,7 +199,7 @@ class ServiceRouterTestCase(ServiceRouterTest,
with self.router(name=name, admin_state_up=True, with self.router(name=name, admin_state_up=True,
tenant_id=tenant_id): tenant_id=tenant_id):
# clear router type cache to mimic plugin restart # clear router type cache to mimic plugin restart
plugin = NeutronManager.get_plugin() plugin = n_manager.NeutronManager.get_plugin()
plugin._router_type = {} plugin._router_type = {}
# check an integration lswitch is deleted # check an integration lswitch is deleted

View File

@ -23,8 +23,7 @@ from neutron.openstack.common import uuidutils
from neutron.plugins.vmware.vshield.common import exceptions as vcns_exc from neutron.plugins.vmware.vshield.common import exceptions as vcns_exc
from neutron.plugins.vmware.vshield import vcns_driver from neutron.plugins.vmware.vshield import vcns_driver
from neutron.tests.unit.db.firewall import test_db_firewall from neutron.tests.unit.db.firewall import test_db_firewall
from neutron.tests.unit.vmware import get_fake_conf from neutron.tests.unit import vmware
from neutron.tests.unit.vmware import VCNS_NAME
from neutron.tests.unit.vmware.vshield import fake_vcns from neutron.tests.unit.vmware.vshield import fake_vcns
@ -33,7 +32,7 @@ _uuid = uuidutils.generate_uuid
VSE_ID = 'edge-1' VSE_ID = 'edge-1'
ROUTER_ID = '42f95450-5cc9-44e4-a744-1320e592a9d5' ROUTER_ID = '42f95450-5cc9-44e4-a744-1320e592a9d5'
VCNS_CONFIG_FILE = get_fake_conf("vcns.ini.test") VCNS_CONFIG_FILE = vmware.get_fake_conf("vcns.ini.test")
class VcnsDriverTestCase(test_db_firewall.FirewallPluginDbTestCase, class VcnsDriverTestCase(test_db_firewall.FirewallPluginDbTestCase,
@ -63,7 +62,7 @@ class VcnsDriverTestCase(test_db_firewall.FirewallPluginDbTestCase,
self.config_parse(args=['--config-file', VCNS_CONFIG_FILE]) self.config_parse(args=['--config-file', VCNS_CONFIG_FILE])
# mock vcns # mock vcns
self.fc2 = fake_vcns.FakeVcns(unique_router_name=False) self.fc2 = fake_vcns.FakeVcns(unique_router_name=False)
self.mock_vcns = mock.patch(VCNS_NAME, autospec=True) self.mock_vcns = mock.patch(vmware.VCNS_NAME, autospec=True)
self.vcns_firewall_patch() self.vcns_firewall_patch()
self.driver = vcns_driver.VcnsDriver(mock.Mock()) self.driver = vcns_driver.VcnsDriver(mock.Mock())

View File

@ -23,8 +23,7 @@ from neutron.plugins.vmware.vshield.common import exceptions as vcns_exc
from neutron.plugins.vmware.vshield import vcns_driver from neutron.plugins.vmware.vshield import vcns_driver
from neutron.services.loadbalancer import constants as lb_constants from neutron.services.loadbalancer import constants as lb_constants
from neutron.tests.unit.db.loadbalancer import test_db_loadbalancer from neutron.tests.unit.db.loadbalancer import test_db_loadbalancer
from neutron.tests.unit.vmware import get_fake_conf from neutron.tests.unit import vmware
from neutron.tests.unit.vmware import VCNS_NAME
from neutron.tests.unit.vmware.vshield import fake_vcns from neutron.tests.unit.vmware.vshield import fake_vcns
_uuid = uuidutils.generate_uuid _uuid = uuidutils.generate_uuid
@ -35,7 +34,7 @@ POOL_MAP_INFO = {
'edge_id': VSE_ID, 'edge_id': VSE_ID,
'pool_vseid': 'pool-1'} 'pool_vseid': 'pool-1'}
VCNS_CONFIG_FILE = get_fake_conf("vcns.ini.test") VCNS_CONFIG_FILE = vmware.get_fake_conf("vcns.ini.test")
class VcnsDriverTestCase(test_db_loadbalancer.LoadBalancerPluginDbTestCase): class VcnsDriverTestCase(test_db_loadbalancer.LoadBalancerPluginDbTestCase):
@ -80,7 +79,7 @@ class VcnsDriverTestCase(test_db_loadbalancer.LoadBalancerPluginDbTestCase):
self.config_parse(args=['--config-file', VCNS_CONFIG_FILE]) self.config_parse(args=['--config-file', VCNS_CONFIG_FILE])
# mock vcns # mock vcns
self.fc2 = fake_vcns.FakeVcns(unique_router_name=False) self.fc2 = fake_vcns.FakeVcns(unique_router_name=False)
self.mock_vcns = mock.patch(VCNS_NAME, autospec=True) self.mock_vcns = mock.patch(vmware.VCNS_NAME, autospec=True)
self.vcns_loadbalancer_patch() self.vcns_loadbalancer_patch()
self.driver = vcns_driver.VcnsDriver(mock.Mock()) self.driver = vcns_driver.VcnsDriver(mock.Mock())

View File

@ -17,17 +17,14 @@ from eventlet import greenthread
import mock import mock
from neutron.plugins.vmware.vshield.common import constants as vcns_const from neutron.plugins.vmware.vshield.common import constants as vcns_const
from neutron.plugins.vmware.vshield.common.constants import RouterStatus from neutron.plugins.vmware.vshield.tasks import constants as ts_const
from neutron.plugins.vmware.vshield.tasks.constants import TaskState
from neutron.plugins.vmware.vshield.tasks.constants import TaskStatus
from neutron.plugins.vmware.vshield.tasks import tasks as ts from neutron.plugins.vmware.vshield.tasks import tasks as ts
from neutron.plugins.vmware.vshield import vcns_driver from neutron.plugins.vmware.vshield import vcns_driver
from neutron.tests import base from neutron.tests import base
from neutron.tests.unit.vmware import get_fake_conf from neutron.tests.unit import vmware
from neutron.tests.unit.vmware import VCNS_NAME
from neutron.tests.unit.vmware.vshield import fake_vcns from neutron.tests.unit.vmware.vshield import fake_vcns
VCNS_CONFIG_FILE = get_fake_conf("vcns.ini.test") VCNS_CONFIG_FILE = vmware.get_fake_conf("vcns.ini.test")
ts.TaskManager.set_default_interval(100) ts.TaskManager.set_default_interval(100)
@ -67,12 +64,12 @@ class VcnsDriverTaskManagerTestCase(base.BaseTestCase):
def _exec(task): def _exec(task):
if not _check_state(task, 1): if not _check_state(task, 1):
return TaskStatus.ERROR return ts_const.TaskStatus.ERROR
if task.userdata['sync_exec']: if task.userdata['sync_exec']:
return TaskStatus.COMPLETED return ts_const.TaskStatus.COMPLETED
else: else:
return TaskStatus.PENDING return ts_const.TaskStatus.PENDING
def _status(task): def _status(task):
if task.userdata['sync_exec']: if task.userdata['sync_exec']:
@ -81,10 +78,10 @@ class VcnsDriverTaskManagerTestCase(base.BaseTestCase):
state = task.userdata['state'] state = task.userdata['state']
if state == 3: if state == 3:
_check_state(task, 3) _check_state(task, 3)
return TaskStatus.PENDING return ts_const.TaskStatus.PENDING
else: else:
_check_state(task, 4) _check_state(task, 4)
return TaskStatus.COMPLETED return ts_const.TaskStatus.COMPLETED
def _result(task): def _result(task):
if task.userdata['sync_exec']: if task.userdata['sync_exec']:
@ -122,7 +119,7 @@ class VcnsDriverTaskManagerTestCase(base.BaseTestCase):
self.manager.add(task) self.manager.add(task)
task.wait(TaskState.RESULT) task.wait(ts_const.TaskState.RESULT)
self.assertTrue(userdata['result']) self.assertTrue(userdata['result'])
@ -139,10 +136,10 @@ class VcnsDriverTaskManagerTestCase(base.BaseTestCase):
def _exec(task): def _exec(task):
task.userdata['executed'] = True task.userdata['executed'] = True
return TaskStatus.PENDING return ts_const.TaskStatus.PENDING
def _status(task): def _status(task):
return TaskStatus.COMPLETED return ts_const.TaskStatus.COMPLETED
def _result(task): def _result(task):
next_task = task.userdata.get('next') next_task = task.userdata.get('next')
@ -167,7 +164,7 @@ class VcnsDriverTaskManagerTestCase(base.BaseTestCase):
for task in tasks: for task in tasks:
self.manager.add(task) self.manager.add(task)
last_task.wait(TaskState.RESULT) last_task.wait(ts_const.TaskState.RESULT)
for task in tasks: for task in tasks:
self.assertTrue(task.userdata['result']) self.assertTrue(task.userdata['result'])
@ -177,17 +174,17 @@ class VcnsDriverTaskManagerTestCase(base.BaseTestCase):
def _exec(task): def _exec(task):
task.userdata['executed'] = True task.userdata['executed'] = True
return TaskStatus.PENDING return ts_const.TaskStatus.PENDING
def _status(task): def _status(task):
for t in tasks: for t in tasks:
if not t.userdata.get('executed'): if not t.userdata.get('executed'):
t.userdata['resut'] = False t.userdata['resut'] = False
return TaskStatus.COMPLETED return ts_const.TaskStatus.COMPLETED
def _result(task): def _result(task):
if (task.userdata.get('result') is None and if (task.userdata.get('result') is None and
task.status == TaskStatus.COMPLETED): task.status == ts_const.TaskStatus.COMPLETED):
task.userdata['result'] = True task.userdata['result'] = True
else: else:
task.userdata['result'] = False task.userdata['result'] = False
@ -200,7 +197,7 @@ class VcnsDriverTaskManagerTestCase(base.BaseTestCase):
self.manager.add(task) self.manager.add(task)
for task in tasks: for task in tasks:
task.wait(TaskState.RESULT) task.wait(ts_const.TaskState.RESULT)
self.assertTrue(task.userdata['result']) self.assertTrue(task.userdata['result'])
def _test_task_manager_stop(self, exec_wait=False, result_wait=False, def _test_task_manager_stop(self, exec_wait=False, result_wait=False,
@ -208,11 +205,11 @@ class VcnsDriverTaskManagerTestCase(base.BaseTestCase):
def _exec(task): def _exec(task):
if exec_wait: if exec_wait:
greenthread.sleep(0.01) greenthread.sleep(0.01)
return TaskStatus.PENDING return ts_const.TaskStatus.PENDING
def _status(task): def _status(task):
greenthread.sleep(0.01) greenthread.sleep(0.01)
return TaskStatus.PENDING return ts_const.TaskStatus.PENDING
def _result(task): def _result(task):
if result_wait: if result_wait:
@ -244,7 +241,7 @@ class VcnsDriverTaskManagerTestCase(base.BaseTestCase):
for res, tasks in alltasks.iteritems(): for res, tasks in alltasks.iteritems():
for task in tasks: for task in tasks:
self.assertEqual(task.status, TaskStatus.ABORT) self.assertEqual(task.status, ts_const.TaskStatus.ABORT)
def test_task_manager_stop_1(self): def test_task_manager_stop_1(self):
self._test_task_manager_stop(True, True, 0) self._test_task_manager_stop(True, True, 0)
@ -264,7 +261,7 @@ class VcnsDriverTaskManagerTestCase(base.BaseTestCase):
while not task.userdata['tested']: while not task.userdata['tested']:
greenthread.sleep(0) greenthread.sleep(0)
task.userdata['executing'] = False task.userdata['executing'] = False
return TaskStatus.COMPLETED return ts_const.TaskStatus.COMPLETED
userdata = { userdata = {
'executing': False, 'executing': False,
@ -317,7 +314,7 @@ class VcnsDriverTestCase(base.BaseTestCase):
self.config_parse(args=['--config-file', VCNS_CONFIG_FILE]) self.config_parse(args=['--config-file', VCNS_CONFIG_FILE])
self.fc = fake_vcns.FakeVcns() self.fc = fake_vcns.FakeVcns()
self.mock_vcns = mock.patch(VCNS_NAME, autospec=True) self.mock_vcns = mock.patch(vmware.VCNS_NAME, autospec=True)
self.vcns_patch() self.vcns_patch()
self.addCleanup(self.fc.reset_all) self.addCleanup(self.fc.reset_all)
@ -338,46 +335,46 @@ class VcnsDriverTestCase(base.BaseTestCase):
task = self.vcns_driver.deploy_edge( task = self.vcns_driver.deploy_edge(
'router-id', 'myedge', 'internal-network', {}, wait_for_exec=True) 'router-id', 'myedge', 'internal-network', {}, wait_for_exec=True)
self.assertEqual(self.edge_id, 'edge-1') self.assertEqual(self.edge_id, 'edge-1')
task.wait(TaskState.RESULT) task.wait(ts_const.TaskState.RESULT)
return task return task
def edge_deploy_started(self, task): def edge_deploy_started(self, task):
self.edge_id = task.userdata['edge_id'] self.edge_id = task.userdata['edge_id']
def edge_deploy_result(self, task): def edge_deploy_result(self, task):
if task.status == TaskStatus.COMPLETED: if task.status == ts_const.TaskStatus.COMPLETED:
task.userdata['jobdata']['edge_deploy_result'] = True task.userdata['jobdata']['edge_deploy_result'] = True
def edge_delete_result(self, task): def edge_delete_result(self, task):
if task.status == TaskStatus.COMPLETED: if task.status == ts_const.TaskStatus.COMPLETED:
task.userdata['jobdata']['edge_delete_result'] = True task.userdata['jobdata']['edge_delete_result'] = True
def snat_create_result(self, task): def snat_create_result(self, task):
if task.status == TaskStatus.COMPLETED: if task.status == ts_const.TaskStatus.COMPLETED:
task.userdata['jobdata']['snat_create_result'] = True task.userdata['jobdata']['snat_create_result'] = True
def snat_delete_result(self, task): def snat_delete_result(self, task):
if task.status == TaskStatus.COMPLETED: if task.status == ts_const.TaskStatus.COMPLETED:
task.userdata['jobdata']['snat_delete_result'] = True task.userdata['jobdata']['snat_delete_result'] = True
def dnat_create_result(self, task): def dnat_create_result(self, task):
if task.status == TaskStatus.COMPLETED: if task.status == ts_const.TaskStatus.COMPLETED:
task.userdata['jobdata']['dnat_create_result'] = True task.userdata['jobdata']['dnat_create_result'] = True
def dnat_delete_result(self, task): def dnat_delete_result(self, task):
if task.status == TaskStatus.COMPLETED: if task.status == ts_const.TaskStatus.COMPLETED:
task.userdata['jobdata']['dnat_delete_result'] = True task.userdata['jobdata']['dnat_delete_result'] = True
def nat_update_result(self, task): def nat_update_result(self, task):
if task.status == TaskStatus.COMPLETED: if task.status == ts_const.TaskStatus.COMPLETED:
task.userdata['jobdata']['nat_update_result'] = True task.userdata['jobdata']['nat_update_result'] = True
def routes_update_result(self, task): def routes_update_result(self, task):
if task.status == TaskStatus.COMPLETED: if task.status == ts_const.TaskStatus.COMPLETED:
task.userdata['jobdata']['routes_update_result'] = True task.userdata['jobdata']['routes_update_result'] = True
def interface_update_result(self, task): def interface_update_result(self, task):
if task.status == TaskStatus.COMPLETED: if task.status == ts_const.TaskStatus.COMPLETED:
task.userdata['jobdata']['interface_update_result'] = True task.userdata['jobdata']['interface_update_result'] = True
def test_deploy_edge(self): def test_deploy_edge(self):
@ -386,8 +383,8 @@ class VcnsDriverTestCase(base.BaseTestCase):
'router-id', 'myedge', 'internal-network', jobdata=jobdata, 'router-id', 'myedge', 'internal-network', jobdata=jobdata,
wait_for_exec=True) wait_for_exec=True)
self.assertEqual(self.edge_id, 'edge-1') self.assertEqual(self.edge_id, 'edge-1')
task.wait(TaskState.RESULT) task.wait(ts_const.TaskState.RESULT)
self.assertEqual(task.status, TaskStatus.COMPLETED) self.assertEqual(task.status, ts_const.TaskStatus.COMPLETED)
self.assertTrue(jobdata.get('edge_deploy_result')) self.assertTrue(jobdata.get('edge_deploy_result'))
def test_deploy_edge_fail(self): def test_deploy_edge_fail(self):
@ -395,14 +392,14 @@ class VcnsDriverTestCase(base.BaseTestCase):
'router-1', 'myedge', 'internal-network', {}, wait_for_exec=True) 'router-1', 'myedge', 'internal-network', {}, wait_for_exec=True)
task2 = self.vcns_driver.deploy_edge( task2 = self.vcns_driver.deploy_edge(
'router-2', 'myedge', 'internal-network', {}, wait_for_exec=True) 'router-2', 'myedge', 'internal-network', {}, wait_for_exec=True)
task1.wait(TaskState.RESULT) task1.wait(ts_const.TaskState.RESULT)
task2.wait(TaskState.RESULT) task2.wait(ts_const.TaskState.RESULT)
self.assertEqual(task2.status, TaskStatus.ERROR) self.assertEqual(task2.status, ts_const.TaskStatus.ERROR)
def test_get_edge_status(self): def test_get_edge_status(self):
self._deploy_edge() self._deploy_edge()
status = self.vcns_driver.get_edge_status(self.edge_id) status = self.vcns_driver.get_edge_status(self.edge_id)
self.assertEqual(status, RouterStatus.ROUTER_STATUS_ACTIVE) self.assertEqual(status, vcns_const.RouterStatus.ROUTER_STATUS_ACTIVE)
def test_get_edges(self): def test_get_edges(self):
self._deploy_edge() self._deploy_edge()
@ -424,7 +421,7 @@ class VcnsDriverTestCase(base.BaseTestCase):
task = self.vcns_driver.create_dnat_rule( task = self.vcns_driver.create_dnat_rule(
'router-id', edge_id, org, translated, jobdata=jobdata) 'router-id', edge_id, org, translated, jobdata=jobdata)
key = 'dnat_create_result' key = 'dnat_create_result'
task.wait(TaskState.RESULT) task.wait(ts_const.TaskState.RESULT)
self.assertTrue(jobdata.get(key)) self.assertTrue(jobdata.get(key))
def _delete_nat_rule(self, edge_id, action, addr): def _delete_nat_rule(self, edge_id, action, addr):
@ -437,7 +434,7 @@ class VcnsDriverTestCase(base.BaseTestCase):
task = self.vcns_driver.delete_dnat_rule( task = self.vcns_driver.delete_dnat_rule(
'router-id', edge_id, addr, jobdata=jobdata) 'router-id', edge_id, addr, jobdata=jobdata)
key = 'dnat_delete_result' key = 'dnat_delete_result'
task.wait(TaskState.RESULT) task.wait(ts_const.TaskState.RESULT)
self.assertTrue(jobdata.get(key)) self.assertTrue(jobdata.get(key))
def _test_create_nat_rule(self, action): def _test_create_nat_rule(self, action):
@ -508,7 +505,7 @@ class VcnsDriverTestCase(base.BaseTestCase):
] ]
task = self.vcns_driver.update_nat_rules( task = self.vcns_driver.update_nat_rules(
'router-id', self.edge_id, snats, dnats, jobdata=jobdata) 'router-id', self.edge_id, snats, dnats, jobdata=jobdata)
task.wait(TaskState.RESULT) task.wait(ts_const.TaskState.RESULT)
self.assertTrue(jobdata.get('nat_update_result')) self.assertTrue(jobdata.get('nat_update_result'))
natcfg = self.vcns_driver.get_nat_config(self.edge_id) natcfg = self.vcns_driver.get_nat_config(self.edge_id)
@ -552,7 +549,7 @@ class VcnsDriverTestCase(base.BaseTestCase):
] ]
task = self.vcns_driver.update_routes( task = self.vcns_driver.update_routes(
'router-id', self.edge_id, '10.0.0.1', routes, jobdata=jobdata) 'router-id', self.edge_id, '10.0.0.1', routes, jobdata=jobdata)
task.wait(TaskState.RESULT) task.wait(ts_const.TaskState.RESULT)
self.assertTrue(jobdata.get('routes_update_result')) self.assertTrue(jobdata.get('routes_update_result'))
def test_update_interface(self): def test_update_interface(self):
@ -562,7 +559,7 @@ class VcnsDriverTestCase(base.BaseTestCase):
'router-id', self.edge_id, vcns_const.EXTERNAL_VNIC_INDEX, 'router-id', self.edge_id, vcns_const.EXTERNAL_VNIC_INDEX,
'network-id', address='100.0.0.3', netmask='255.255.255.0', 'network-id', address='100.0.0.3', netmask='255.255.255.0',
jobdata=jobdata) jobdata=jobdata)
task.wait(TaskState.RESULT) task.wait(ts_const.TaskState.RESULT)
self.assertTrue(jobdata.get('interface_update_result')) self.assertTrue(jobdata.get('interface_update_result'))
def test_delete_edge(self): def test_delete_edge(self):
@ -570,7 +567,7 @@ class VcnsDriverTestCase(base.BaseTestCase):
jobdata = {} jobdata = {}
task = self.vcns_driver.delete_edge( task = self.vcns_driver.delete_edge(
'router-id', self.edge_id, jobdata=jobdata) 'router-id', self.edge_id, jobdata=jobdata)
task.wait(TaskState.RESULT) task.wait(ts_const.TaskState.RESULT)
self.assertTrue(jobdata.get('edge_delete_result')) self.assertTrue(jobdata.get('edge_delete_result'))
def test_create_lswitch(self): def test_create_lswitch(self):