59
57
_plugin_name = ('%s.NuagePlugin' % NUAGE_PLUGIN_PATH)
62
serverauth = FAKE_SERVER_AUTH
63
serverssl = FAKE_SERVER_SSL
64
base_uri = FAKE_BASE_URI
65
auth_resource = FAKE_AUTH_RESOURCE
66
organization = FAKE_ORGANIZATION
67
nuageclient = fake_nuageclient.FakeNuageClient(server,
62
76
class NuagePluginV2TestCase(test_db_plugin.NeutronDbPluginV2TestCase):
63
77
def setUp(self, plugin=_plugin_name,
64
78
ext_mgr=None, service_plugins=None):
67
81
self.skipTest("Nuage Plugin does not support IPV6.")
69
83
def mock_nuageClient_init(self):
71
serverauth = FAKE_SERVER_AUTH
72
serverssl = FAKE_SERVER_SSL
73
base_uri = FAKE_BASE_URI
74
auth_resource = FAKE_AUTH_RESOURCE
75
organization = FAKE_ORGANIZATION
76
self.nuageclient = None
77
self.nuageclient = fake_nuageclient.FakeNuageClient(server,
84
self.nuageclient = getNuageClient()
84
86
with mock.patch.object(nuage_plugin.NuagePlugin,
85
87
'nuageclient_init', new=mock_nuageClient_init):
340
343
subnet_res = subnet_req.get_response(self.api)
341
344
self.assertEqual(exc.HTTPCreated.code, subnet_res.status_int)
346
def test_delete_subnet_port_exists_returns_409(self):
347
gateway_ip = '10.0.0.1'
349
res = self._create_network(fmt=self.fmt, name='net',
351
network = self.deserialize(self.fmt, res)
352
subnet = self._make_subnet(self.fmt, network, gateway_ip,
354
self._create_port(self.fmt,
355
network['network']['id'])
356
req = self.new_delete_request('subnets', subnet['subnet']['id'])
357
res = req.get_response(self.api)
358
self.assertEqual(409, res.status_int)
344
361
class TestNuagePluginPortBinding(NuagePluginV2TestCase,
345
362
test_bindings.PortBindingsTestCase):
369
386
class TestNuageL3NatTestCase(NuagePluginV2TestCase,
370
387
test_l3_plugin.L3NatDBIntTestCase):
389
def test_update_port_with_assoc_floatingip(self):
390
with self.subnet(cidr='200.0.0.0/24') as public_sub:
391
self._set_net_external(public_sub['subnet']['network_id'])
392
with self.port() as port:
393
p_id = port['port']['id']
394
with self.floatingip_with_assoc(port_id=p_id):
395
# Update the port with dummy vm info
397
'device_id': uuidutils.generate_uuid(),
398
'device_owner': 'compute:Nova'
400
port = self._update('ports', port['port']['id'],
402
self.assertEqual(port_dict['device_id'],
403
port['port']['device_id'])
405
def test_disassociated_floatingip_delete(self):
406
with self.subnet(cidr='200.0.0.0/24') as public_sub:
407
self._set_net_external(public_sub['subnet']['network_id'])
408
with self.port() as port:
409
p_id = port['port']['id']
410
with self.floatingip_with_assoc(port_id=p_id) as fip:
412
# Disassociate fip from the port
413
fip = self._update('floatingips', fip['floatingip']['id'],
414
{'floatingip': {'port_id': None}})
415
self.assertIsNone(fip['floatingip']['router_id'])
372
417
def test_network_update_external_failure(self):
373
418
self._test_network_update_external_failure()
502
547
class TestNuageProviderNetTestCase(NuagePluginV2TestCase):
504
549
def test_create_provider_network(self):
505
phy_net = uuidutils.generate_uuid()
550
phys_net = uuidutils.generate_uuid()
506
551
data = {'network': {'name': 'pnet1',
507
552
'tenant_id': 'admin',
508
553
pnet.NETWORK_TYPE: 'vlan',
509
pnet.PHYSICAL_NETWORK: phy_net,
554
pnet.PHYSICAL_NETWORK: phys_net,
510
555
pnet.SEGMENTATION_ID: 123}}
511
556
network_req = self.new_create_request('networks', data, self.fmt)
512
557
net = self.deserialize(self.fmt, network_req.get_response(self.api))
513
558
self.assertEqual('vlan', net['network'][pnet.NETWORK_TYPE])
514
self.assertEqual(phy_net, net['network'][pnet.PHYSICAL_NETWORK])
559
self.assertEqual(phys_net, net['network'][pnet.PHYSICAL_NETWORK])
515
560
self.assertEqual(123, net['network'][pnet.SEGMENTATION_ID])
517
562
def test_create_provider_network_no_admin(self):
518
phy_net = uuidutils.generate_uuid()
563
phys_net = uuidutils.generate_uuid()
519
564
data = {'network': {'name': 'pnet1',
520
565
'tenant_id': 'no_admin',
521
566
pnet.NETWORK_TYPE: 'vlan',
522
pnet.PHYSICAL_NETWORK: phy_net,
567
pnet.PHYSICAL_NETWORK: phys_net,
523
568
pnet.SEGMENTATION_ID: 123}}
524
569
network_req = self.new_create_request('networks', data, self.fmt)
525
570
network_req.environ['neutron.context'] = context.Context(
527
572
res = network_req.get_response(self.api)
528
573
self.assertEqual(exc.HTTPForbidden.code, res.status_int)
575
def test_get_network_for_provider_network(self):
576
phys_net = uuidutils.generate_uuid()
577
data = {'network': {'name': 'pnet1',
578
'tenant_id': 'admin',
579
pnet.NETWORK_TYPE: 'vlan',
580
pnet.PHYSICAL_NETWORK: phys_net,
581
pnet.SEGMENTATION_ID: 123}}
582
network_req = self.new_create_request('networks', data, self.fmt)
583
res = self.deserialize(self.fmt, network_req.get_response(self.api))
585
get_req = self.new_show_request('networks', res['network']['id'])
586
net = self.deserialize(self.fmt, get_req.get_response(self.api))
587
self.assertEqual('vlan', net['network'][pnet.NETWORK_TYPE])
588
self.assertEqual(phys_net, net['network'][pnet.PHYSICAL_NETWORK])
589
self.assertEqual(123, net['network'][pnet.SEGMENTATION_ID])
591
def test_list_networks_for_provider_network(self):
592
phys_net = uuidutils.generate_uuid()
593
data1 = {'network': {'name': 'pnet1',
594
'tenant_id': 'admin',
595
pnet.NETWORK_TYPE: 'vlan',
596
pnet.PHYSICAL_NETWORK: phys_net,
597
pnet.SEGMENTATION_ID: 123}}
598
network_req_1 = self.new_create_request('networks', data1, self.fmt)
599
network_req_1.get_response(self.api)
600
data2 = {'network': {'name': 'pnet2',
601
'tenant_id': 'admin',
602
pnet.NETWORK_TYPE: 'vlan',
603
pnet.PHYSICAL_NETWORK: phys_net,
604
pnet.SEGMENTATION_ID: 234}}
605
network_req_2 = self.new_create_request('networks', data2, self.fmt)
606
network_req_2.get_response(self.api)
608
list_req = self.new_list_request('networks')
609
pnets = self.deserialize(self.fmt, list_req.get_response(self.api))
610
self.assertEqual(2, len(pnets['networks']))
611
self.assertEqual('vlan', pnets['networks'][0][pnet.NETWORK_TYPE])
612
self.assertEqual(phys_net, pnets['networks'][0][pnet.PHYSICAL_NETWORK])
613
self.assertEqual(123, pnets['networks'][0][pnet.SEGMENTATION_ID])
614
self.assertEqual('vlan', pnets['networks'][1][pnet.NETWORK_TYPE])
615
self.assertEqual(phys_net, pnets['networks'][1][pnet.PHYSICAL_NETWORK])
616
self.assertEqual(234, pnets['networks'][1][pnet.SEGMENTATION_ID])
531
619
class TestNuageSecurityGroupTestCase(NuagePluginV2TestCase,
532
620
test_sg.TestSecurityGroups):