From 3177ad6c92bc777ae0fa5eb6d350384fe5a63559 Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Fri, 31 Dec 2010 19:08:43 -0500 Subject: [PATCH 01/18] Adding initial multi blade test file from Shubhangi --- .../tests/unit/test_l2network_multi_blade.py | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py new file mode 100644 index 0000000000..925d5a89d6 --- /dev/null +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -0,0 +1,202 @@ +""" +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright 2011 Cisco Systems, Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# @author: Shubhangi Satras, Cisco Systems, Inc. +# +""" + +import unittest +from copy import deepcopy +import inspect +import logging as LOG +import platform + +from quantum.common import exceptions as exc +from quantum.common import utils +from quantum.plugins.cisco.l2network_model_base import L2NetworkModelBase +from quantum.plugins.cisco import l2network_plugin_configuration as conf +from quantum.plugins.cisco.common import cisco_constants as const +from quantum.plugins.cisco.common import cisco_exceptions as cexc +from quantum.plugins.cisco.common import cisco_credentials as creds +from quantum.plugins.cisco.models import l2network_multi_blade +from quantum.plugins.cisco.db import api as db +from quantum.plugins.cisco.db import l2network_db as cdb +LOG.basicConfig(level=LOG.WARN) +LOG.getLogger(__name__) + + +class Test_L2NetworkMultiBlade(unittest.TestCase): + """ + Implements the L2NetworkModelBase + This implementation works with UCS and Nexus plugin for the + following topology: + One or more UCSM (each with one or more chasses connected) + All UCSM connected to a single Nexus Switch + """ + _plugins = {} + _inventory = {} + + def setUp(self): + cdb.initialize() + creds.Store.initialize() + self.tenant_id = "shubh" + self.net_name = "TestNetwork1" + self.profile_name = "test_tenant_port_profile" + self.port_state = const.PORT_UP + self.net_id = '44' + self.net_id_DNE = '45' + self.port_id = 'p0005' + self.vlan_name = "q-" + str(self.net_id) + "vlan" + self.vlan_id = 102 + self.new_net_name="New_test_network" + self._l2network_multiblade = l2network_multi_blade.\ + L2NetworkMultiBlade() + self.plugin_key = "quantum.plugins.cisco.ucs.cisco_ucs_plugin"+\ + ".UCSVICPlugin" + self.test_device_ip = "172.18.117.45" + + def test_create_network(self): + """Support for the Quantum core API call""" + LOG.debug("test_create_network - START") + self._l2network_multiblade.create_network([self.tenant_id, + self.net_name, + self.net_id, + self.vlan_name, + self.vlan_id]) + device_params = self._l2network_multiblade._invoke_inventory( + self.plugin_key, + self._l2network_multiblade.create_network, + [self.tenant_id, + self.net_name, + self.net_id, + self.vlan_name, + self.vlan_id]) + print device_params + print "asdfasdfasdfasdf" + + device_ips = device_params[const.DEVICE_IP] + for device_ip in device_ips: + new_device_params[const.DEVICE_IP] = device_ip + self.assertEqual(self.test_device_ip, + new_device_params[const.DEVICE_IP]) + self.tearDownNetwork(self.tenant_id, self.net_id) + LOG.debug("test_create_network - END") + + def test_get_all_networks(self): + """Not implemented for this model""" + pass + + def test_delete_network(self): + """Support for the Quantum core API call""" + LOG.debug("test_delete_network - START") + self._l2network_multiblade.create_network([self.tenant_id, + self.net_name, + self.net_id, + self.vlan_name, + self.vlan_id]) + self._l2network_multiblade.delete_network([self.tenant_id, + self.net_id]) + device_params = self._l2network_multiblade._invoke_inventory( + self.plugin_key, + self._l2network_multiblade.delete_network, + [self.tenant_id, + self.net_id]) + device_ips = device_params[const.DEVICE_IP] + for device_ip in device_ips: + new_device_params[const.DEVICE_IP] = device_ip + self.assertEqual(test_device_ip ,new_device_params[const.DEVICE_IP]) + LOG.debug("test_delete_network - END") + + def test_delete_networkDNE(self): + """Support for the Quantum core API call""" + LOG.debug("test_delete_networkDNE - START") + self.assertRaises(exc.NetworkNotFound, + self._l2network_multiblade.delete_network, + [self.tenant_id, self.net_id_DNE]) + LOG.debug("test_delete_networkDNE - END") + + def test_rename_network(self): + """Support for the Quantum core API call""" + LOG.debug("test_rename_network - START") + self._l2network_multiblade.create_network([self.tenant_id, + self.net_name, + self.net_id, + self.vlan_name, + self.vlan_id]) + self._l2network_multiblade.rename_network([self.tenant_id, + self.net_id, + self.new_net_name]) + device_params = self._l2network_multiblade._invoke_inventory( + self.plugin_key, + self._l2network_multiblade.rename_network, + [self.tenant_id, + self.net_id, + self.new_net_name]) + + device_ips = device_params[const.DEVICE_IP] + for device_ip in device_ips: + new_device_params[const.DEVICE_IP] = device_ip + self.assertEqual(test_device_ip , + new_device_params[const.DEVICE_IP]) + self.tearDownNetwork(self.tenant_id, self.net_id) + LOG.debug("test_rename_network - END") + + def test_rename_networkDNE(self): + """Support for the Quantum core API call""" + LOG.debug("test_rename_networkDNE - START") + self.assertRaises(exc.NetworkNotFound, + self._l2network_multiblade.rename_network, + [self.tenant_id, self.net_id_DNE,self.new_net_name]) + LOG.debug("test_rename_networkDNE - END") + + def test_get_network_details(self): + """Not implemented for this model""" + pass + + def test_create_port(self): + """Support for the Quantum core API call""" + LOG.debug("test_create_port - START") + port = db.port_create(self.net_id, self.port_state) + port_id= port[const.UUID] + self._l2network_multiblade.create_port([self.tenant_id, + self.net_id, + self.port_state, + port_id]) + device_params = self._l2network_multiblade._invoke_inventory( + self.plugin_key, + self._l2network_multiblade.create_port, + [self.tenant_id, + self.net_id, + self.port_state, + self.port_id]) + device_ips = device_params[const.DEVICE_IP] + print device_params + print "asdfasdfasdfasdf" + for device_ip in device_ips: + new_device_params[const.DEVICE_IP] = device_ip + self.assertEqual(self.test_device_ip, + new_device_params[const.DEVICE_IP]) + self.tearDownNetwork(self.tenant_id, self.net_id) + LOG.debug("test_create_network - END") + + def tearDownNetwork(self , tenant_id, net_id ): + self._l2network_multiblade.delete_network([tenant_id, net_id]) + + + + + From 2fbc598dec63c36b2b37ae3e005812ead277576e Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Fri, 2 Sep 2011 11:59:35 -0700 Subject: [PATCH 02/18] Starting making multi_blade model return data --- .../cisco/models/l2network_multi_blade.py | 21 ++++++++----- .../tests/unit/test_l2network_multi_blade.py | 31 +++++++++---------- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/quantum/plugins/cisco/models/l2network_multi_blade.py b/quantum/plugins/cisco/models/l2network_multi_blade.py index acd24d5ee6..af11fa2247 100644 --- a/quantum/plugins/cisco/models/l2network_multi_blade.py +++ b/quantum/plugins/cisco/models/l2network_multi_blade.py @@ -73,14 +73,18 @@ class L2NetworkMultiBlade(L2NetworkModelBase): args) device_ips = device_params[const.DEVICE_IP] if not device_ips: - self._invoke_plugin(plugin_key, function_name, args, - device_params) + # Return in a list + return [self._invoke_plugin(plugin_key, function_name, args, + device_params)] else: + # Return a list of return values from each device + output = [] for device_ip in device_ips: new_device_params = deepcopy(device_params) new_device_params[const.DEVICE_IP] = device_ip - self._invoke_plugin(plugin_key, function_name, args, - new_device_params) + output.append(self._invoke_plugin(plugin_key, function_name, + args, new_device_params)) + return output def _invoke_inventory(self, plugin_key, function_name, args): """Invoke only the inventory implementation""" @@ -103,10 +107,11 @@ class L2NetworkMultiBlade(L2NetworkModelBase): def create_network(self, args): """Support for the Quantum core API call""" - self._invoke_plugin_per_device(const.UCS_PLUGIN, self._func_name(), - args) - self._invoke_plugin_per_device(const.NEXUS_PLUGIN, - self._func_name(), args) + output = [] + output.extend(self._invoke_plugin_per_device(const.UCS_PLUGIN, + self._func_name(), args)) + output.extend(self._invoke_plugin_per_device(const.NEXUS_PLUGIN, + self._func_name(), args)) def delete_network(self, args): """Support for the Quantum core API call""" diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index 925d5a89d6..7f337b493a 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -72,27 +72,26 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): def test_create_network(self): """Support for the Quantum core API call""" LOG.debug("test_create_network - START") - self._l2network_multiblade.create_network([self.tenant_id, + network = self._l2network_multiblade.create_network([self.tenant_id, self.net_name, self.net_id, self.vlan_name, self.vlan_id]) - device_params = self._l2network_multiblade._invoke_inventory( - self.plugin_key, - self._l2network_multiblade.create_network, - [self.tenant_id, - self.net_name, - self.net_id, - self.vlan_name, - self.vlan_id]) - print device_params - print "asdfasdfasdfasdf" - device_ips = device_params[const.DEVICE_IP] - for device_ip in device_ips: - new_device_params[const.DEVICE_IP] = device_ip - self.assertEqual(self.test_device_ip, - new_device_params[const.DEVICE_IP]) + #device_params = self._l2network_multiblade._invoke_inventory( + # self.plugin_key, + # self._l2network_multiblade.create_network, + # [self.tenant_id, + # self.net_name, + # self.net_id, + # self.vlan_name, + # self.vlan_id]) + + #device_ips = device_params[const.DEVICE_IP] + #for device_ip in device_ips: + # new_device_params[const.DEVICE_IP] = device_ip + # self.assertEqual(self.test_device_ip, + # new_device_params[const.DEVICE_IP]) self.tearDownNetwork(self.tenant_id, self.net_id) LOG.debug("test_create_network - END") From 17777c2d9e284a3cdcb325c7a485453c6f310910 Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Fri, 31 Dec 2010 22:36:55 -0500 Subject: [PATCH 03/18] Updating multiblade create_network test --- .../cisco/models/l2network_multi_blade.py | 11 +++--- .../tests/unit/test_l2network_multi_blade.py | 34 +++++++++++-------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/quantum/plugins/cisco/models/l2network_multi_blade.py b/quantum/plugins/cisco/models/l2network_multi_blade.py index af11fa2247..dfebd9069b 100644 --- a/quantum/plugins/cisco/models/l2network_multi_blade.py +++ b/quantum/plugins/cisco/models/l2network_multi_blade.py @@ -108,10 +108,13 @@ class L2NetworkMultiBlade(L2NetworkModelBase): def create_network(self, args): """Support for the Quantum core API call""" output = [] - output.extend(self._invoke_plugin_per_device(const.UCS_PLUGIN, - self._func_name(), args)) - output.extend(self._invoke_plugin_per_device(const.NEXUS_PLUGIN, - self._func_name(), args)) + ucs_output = self._invoke_plugin_per_device(const.UCS_PLUGIN, + self._func_name(), args) + nexus_output = self._invoke_plugin_per_device(const.NEXUS_PLUGIN, + self._func_name(), args) + output.extend(ucs_output or []) + output.extend(nexus_output or []) + return output def delete_network(self, args): """Support for the Quantum core API call""" diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index 7f337b493a..6a594118b1 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -51,8 +51,11 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): _inventory = {} def setUp(self): + # Initialize cdb and credentials cdb.initialize() creds.Store.initialize() + + # Set some data to use in tests self.tenant_id = "shubh" self.net_name = "TestNetwork1" self.profile_name = "test_tenant_port_profile" @@ -63,35 +66,38 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.vlan_name = "q-" + str(self.net_id) + "vlan" self.vlan_id = 102 self.new_net_name="New_test_network" + + self._l2network_multiblade = l2network_multi_blade.\ L2NetworkMultiBlade() self.plugin_key = "quantum.plugins.cisco.ucs.cisco_ucs_plugin"+\ ".UCSVICPlugin" self.test_device_ip = "172.18.117.45" + for key in conf.PLUGINS[const.PLUGINS].keys(): + self._inventory[key] = utils.import_object( + conf.PLUGINS[const.INVENTORY][key]) + + self.ucs_count = self._inventory['ucs_plugin'].\ + _inventory.__len__() + print 'asdfasdfasdfasdfasdf' + print self._inventory['ucs_plugin']._inventory + def test_create_network(self): """Support for the Quantum core API call""" LOG.debug("test_create_network - START") - network = self._l2network_multiblade.create_network([self.tenant_id, + networks = self._l2network_multiblade.create_network([self.tenant_id, self.net_name, self.net_id, self.vlan_name, self.vlan_id]) - #device_params = self._l2network_multiblade._invoke_inventory( - # self.plugin_key, - # self._l2network_multiblade.create_network, - # [self.tenant_id, - # self.net_name, - # self.net_id, - # self.vlan_name, - # self.vlan_id]) + self.assertEqual(networks.__len__(), self.ucs_count) + + for network in networks: + self.assertEqual(network[const.NET_ID], self.net_id) + self.assertEqual(network[const.NET_NAME], self.net_name) - #device_ips = device_params[const.DEVICE_IP] - #for device_ip in device_ips: - # new_device_params[const.DEVICE_IP] = device_ip - # self.assertEqual(self.test_device_ip, - # new_device_params[const.DEVICE_IP]) self.tearDownNetwork(self.tenant_id, self.net_id) LOG.debug("test_create_network - END") From b1d76538c887bb1f56b04bcc1cd99a04b76f83e6 Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Fri, 2 Sep 2011 13:14:33 -0700 Subject: [PATCH 04/18] Tweaking other multiblade tests. --- .../cisco/models/l2network_multi_blade.py | 36 ++++++----- .../tests/unit/test_l2network_multi_blade.py | 60 +++++++------------ 2 files changed, 43 insertions(+), 53 deletions(-) diff --git a/quantum/plugins/cisco/models/l2network_multi_blade.py b/quantum/plugins/cisco/models/l2network_multi_blade.py index dfebd9069b..0f77e44d3f 100644 --- a/quantum/plugins/cisco/models/l2network_multi_blade.py +++ b/quantum/plugins/cisco/models/l2network_multi_blade.py @@ -118,10 +118,14 @@ class L2NetworkMultiBlade(L2NetworkModelBase): def delete_network(self, args): """Support for the Quantum core API call""" - self._invoke_plugin_per_device(const.UCS_PLUGIN, self._func_name(), - args) - self._invoke_plugin_per_device(const.NEXUS_PLUGIN, + output = [] + ucs_output = self._invoke_plugin_per_device(const.UCS_PLUGIN, self._func_name(), args) + nexus_output = self._invoke_plugin_per_device(const.NEXUS_PLUGIN, + self._func_name(), args) + output.extend(ucs_output or []) + output.extend(nexus_output or []) + return output def get_network_details(self, args): """Not implemented for this model""" @@ -129,10 +133,14 @@ class L2NetworkMultiBlade(L2NetworkModelBase): def rename_network(self, args): """Support for the Quantum core API call""" - self._invoke_plugin_per_device(const.UCS_PLUGIN, self._func_name(), - args) - self._invoke_plugin_per_device(const.NEXUS_PLUGIN, + output = [] + ucs_output = self._invoke_plugin_per_device(const.UCS_PLUGIN, self._func_name(), args) + nexus_output = self._invoke_plugin_per_device(const.NEXUS_PLUGIN, + self._func_name(), args) + output.extend(ucs_output or []) + output.extend(nexus_output or []) + return output def get_all_ports(self, args): """Not implemented for this model""" @@ -140,13 +148,13 @@ class L2NetworkMultiBlade(L2NetworkModelBase): def create_port(self, args): """Support for the Quantum core API call""" - self._invoke_plugin_per_device(const.UCS_PLUGIN, self._func_name(), - args) + return self._invoke_plugin_per_device(const.UCS_PLUGIN, + self._func_name(), args) def delete_port(self, args): """Support for the Quantum core API call""" - self._invoke_plugin_per_device(const.UCS_PLUGIN, self._func_name(), - args) + return self._invoke_plugin_per_device(const.UCS_PLUGIN, + self._func_name(), args) def update_port(self, args): """Not implemented for this model""" @@ -158,13 +166,13 @@ class L2NetworkMultiBlade(L2NetworkModelBase): def plug_interface(self, args): """Support for the Quantum core API call""" - self._invoke_plugin_per_device(const.UCS_PLUGIN, self._func_name(), - args) + return self._invoke_plugin_per_device(const.UCS_PLUGIN, + self._func_name(), args) def unplug_interface(self, args): """Support for the Quantum core API call""" - self._invoke_plugin_per_device(const.UCS_PLUGIN, self._func_name(), - args) + return self._invoke_plugin_per_device(const.UCS_PLUGIN, + self._func_name(), args) def schedule_host(self, args): """Provides the hostname on which a dynamic vnic is reserved""" diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index 6a594118b1..d02d0c9c5e 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -80,8 +80,6 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.ucs_count = self._inventory['ucs_plugin'].\ _inventory.__len__() - print 'asdfasdfasdfasdfasdf' - print self._inventory['ucs_plugin']._inventory def test_create_network(self): """Support for the Quantum core API call""" @@ -113,17 +111,14 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.net_id, self.vlan_name, self.vlan_id]) - self._l2network_multiblade.delete_network([self.tenant_id, + networks = self._l2network_multiblade.delete_network([self.tenant_id, self.net_id]) - device_params = self._l2network_multiblade._invoke_inventory( - self.plugin_key, - self._l2network_multiblade.delete_network, - [self.tenant_id, - self.net_id]) - device_ips = device_params[const.DEVICE_IP] - for device_ip in device_ips: - new_device_params[const.DEVICE_IP] = device_ip - self.assertEqual(test_device_ip ,new_device_params[const.DEVICE_IP]) + + self.assertEqual(networks.__len__(), self.ucs_count) + + for network in networks: + self.assertEqual(network[const.NET_ID], self.net_id) + self.assertEqual(network[const.NET_NAME], self.net_name) LOG.debug("test_delete_network - END") def test_delete_networkDNE(self): @@ -142,21 +137,15 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.net_id, self.vlan_name, self.vlan_id]) - self._l2network_multiblade.rename_network([self.tenant_id, + networks = self._l2network_multiblade.rename_network([self.tenant_id, self.net_id, self.new_net_name]) - device_params = self._l2network_multiblade._invoke_inventory( - self.plugin_key, - self._l2network_multiblade.rename_network, - [self.tenant_id, - self.net_id, - self.new_net_name]) - device_ips = device_params[const.DEVICE_IP] - for device_ip in device_ips: - new_device_params[const.DEVICE_IP] = device_ip - self.assertEqual(test_device_ip , - new_device_params[const.DEVICE_IP]) + self.assertEqual(networks.__len__(), self.ucs_count) + + for network in networks: + self.assertEqual(network[const.NET_ID], self.net_id) + self.assertEqual(network[const.NET_NAME], self.net_name) self.tearDownNetwork(self.tenant_id, self.net_id) LOG.debug("test_rename_network - END") @@ -177,24 +166,17 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): LOG.debug("test_create_port - START") port = db.port_create(self.net_id, self.port_state) port_id= port[const.UUID] - self._l2network_multiblade.create_port([self.tenant_id, + ports = self._l2network_multiblade.create_port([self.tenant_id, self.net_id, self.port_state, port_id]) - device_params = self._l2network_multiblade._invoke_inventory( - self.plugin_key, - self._l2network_multiblade.create_port, - [self.tenant_id, - self.net_id, - self.port_state, - self.port_id]) - device_ips = device_params[const.DEVICE_IP] - print device_params - print "asdfasdfasdfasdf" - for device_ip in device_ips: - new_device_params[const.DEVICE_IP] = device_ip - self.assertEqual(self.test_device_ip, - new_device_params[const.DEVICE_IP]) + print 'asdfasdfasdfasdfasdfasdfasdfasdf' + print ports + #self.assertEqual(networks.__len__(), self.ucs_count) + + #for network in networks: + # self.assertEqual(network[const.NET_ID], self.net_id) + # self.assertEqual(network[const.NET_NAME], self.net_name) self.tearDownNetwork(self.tenant_id, self.net_id) LOG.debug("test_create_network - END") From af1c6fdc9094bc78eeae259f903f2331b82ca9db Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Fri, 31 Dec 2010 23:52:04 -0500 Subject: [PATCH 05/18] Adding tests --- .../tests/unit/test_l2network_multi_blade.py | 114 ++++++++++++++---- 1 file changed, 88 insertions(+), 26 deletions(-) diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index d02d0c9c5e..7626a31e0a 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -61,7 +61,7 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.profile_name = "test_tenant_port_profile" self.port_state = const.PORT_UP self.net_id = '44' - self.net_id_DNE = '45' + self.net_id_DNE = '458' self.port_id = 'p0005' self.vlan_name = "q-" + str(self.net_id) + "vlan" self.vlan_id = 102 @@ -98,7 +98,7 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.tearDownNetwork(self.tenant_id, self.net_id) LOG.debug("test_create_network - END") - + def test_get_all_networks(self): """Not implemented for this model""" pass @@ -119,7 +119,7 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): for network in networks: self.assertEqual(network[const.NET_ID], self.net_id) self.assertEqual(network[const.NET_NAME], self.net_name) - LOG.debug("test_delete_network - END") + LOG.debug("test_delete_network - END") def test_delete_networkDNE(self): """Support for the Quantum core API call""" @@ -160,30 +160,92 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): def test_get_network_details(self): """Not implemented for this model""" pass - - def test_create_port(self): - """Support for the Quantum core API call""" - LOG.debug("test_create_port - START") - port = db.port_create(self.net_id, self.port_state) - port_id= port[const.UUID] - ports = self._l2network_multiblade.create_port([self.tenant_id, - self.net_id, - self.port_state, - port_id]) - print 'asdfasdfasdfasdfasdfasdfasdfasdf' - print ports - #self.assertEqual(networks.__len__(), self.ucs_count) - - #for network in networks: - # self.assertEqual(network[const.NET_ID], self.net_id) - # self.assertEqual(network[const.NET_NAME], self.net_name) - self.tearDownNetwork(self.tenant_id, self.net_id) - LOG.debug("test_create_network - END") + def test_create_port(self): + LOG.debug("test_create_port - START") + self._l2network_multiblade.create_network([self.tenant_id, + self.net_name, + self.net_id, + self.vlan_name, + self.vlan_id]) + + port = self._l2network_multiblade.create_port([self.tenant_id, + self.net_name, self.net_id, + self.port_state]) + print 'testingtestingtest' + print port + self.tearDownNetworkPort(self, self.tenant_id, self.network_dict_id, + self.port_id) + self.tearDownNetwork(self.tenant_id, self.net_id) + LOG.debug("test_create_port - END") + + def test_delete_port(self): + LOG.debug("test_delete_port - START") + self._l2network_multiblade.create_network([self.tenant_id, + self.net_name, + self.net_id, + self.vlan_name, + self.vlan_id]) + self._l2network_multiblade.create_port([self.tenant_id, + self.net_name, self.net_id, + self.port_state]) + + self._l2network_multiblade.delete_port([self.tenant_id, + self.net_id, + self.port_id]) + + self.tearDownNetworkPort(self, self.tenant_id, self.network_dict_id, + self.port_id) + self.tearDownNetwork(self.tenant_id, self.net_id) + LOG.debug("test_delete_port - END") + + def test_create_port_networkDNE(self): + LOG.debug("test_create_port_networkDNE - START") + self.assertRaises(exc.NetworkNotFound, + self._l2network_multiblade.create_port, + [self.tenant_id, self.net_name, self.net_id_DNE, self.port_state]) + LOG.debug("test_create_port_networkDNE - END") + + def test_delete_port_networkDNE(self): + LOG.debug("test_delete_port_networkDNE - START") + self.assertRaises(exc.NetworkNotFound, + self._l2network_multiblade.delete_port, + [self.tenant_id, self.net_id_DNE, self.port_id]) + LOG.debug("test_delete_port_networkDNE - END") + + def test_delete_portDNE(self): + LOG.debug("test_delete_portDNE - START") + self.assertRaises(exc.PortNotFound, + self._l2network_multiblade.delete_port, + [self.tenant_id, self.net_id, self.port_id]) + LOG.debug("test_delete_portDNE - END") + + def test_delete_portInUse(self): + LOG.debug("test_delete_portInUse - START") + self.assertRaises(exc.PortInUse, + self._l2network_multiblade.delete_port, + [self.tenant_id, self.net_id_DNE, self.port_id]) + LOG.debug("test_delete_portInUse - END") + + def test_update_port_networkDNE(self): + """Not implemented for this model""" + pass + + def test_get_all_ports(self): + """Not implemented for this model""" + pass + + def test_update_port(self): + """Not implemented for this model""" + pass + + def test_port_details(self): + """Not implemented for this model""" + pass + def tearDownNetwork(self , tenant_id, net_id ): self._l2network_multiblade.delete_network([tenant_id, net_id]) - - - - + def tearDownNetworkPort(self, tenant_id, network_dict_id, port_id): + self._l2network_plugin.delete_port(tenant_id, network_dict_id, + port_id) From 110a01adaf67cc857be034bd885785df73345606 Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Mon, 3 Jan 2011 18:28:04 -0500 Subject: [PATCH 06/18] Fixing port-related calls --- .../tests/unit/test_l2network_multi_blade.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index 7626a31e0a..6d80e597ae 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -163,6 +163,7 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): def test_create_port(self): LOG.debug("test_create_port - START") + port = db.port_create(self.net_id, self.port_state) self._l2network_multiblade.create_network([self.tenant_id, self.net_name, self.net_id, @@ -170,12 +171,13 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.vlan_id]) port = self._l2network_multiblade.create_port([self.tenant_id, - self.net_name, self.net_id, - self.port_state]) + self.net_id, + self.port_state, + port[const.UUID]])[0] print 'testingtestingtest' print port - self.tearDownNetworkPort(self, self.tenant_id, self.network_dict_id, - self.port_id) + self.tearDownNetworkPort(self.tenant_id, self.net_id, + port.port_id) self.tearDownNetwork(self.tenant_id, self.net_id) LOG.debug("test_create_port - END") @@ -246,6 +248,5 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): def tearDownNetwork(self , tenant_id, net_id ): self._l2network_multiblade.delete_network([tenant_id, net_id]) - def tearDownNetworkPort(self, tenant_id, network_dict_id, port_id): - self._l2network_plugin.delete_port(tenant_id, network_dict_id, - port_id) + def tearDownNetworkPort(self, tenant_id, net_id, port_id): + self._l2network_multiblade.delete_port([tenant_id, net_id, port_id]) From 3b1de46f5e2dbca13a00f4570a7b981ffd2e8f7d Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Mon, 3 Jan 2011 22:39:16 -0500 Subject: [PATCH 07/18] Updating tests --- .../tests/unit/test_l2network_multi_blade.py | 286 +++++++++++++----- 1 file changed, 206 insertions(+), 80 deletions(-) diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index 6d80e597ae..8cef379b7d 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -39,6 +39,19 @@ LOG.basicConfig(level=LOG.WARN) LOG.getLogger(__name__) +tenant_id = "network_admin" +net_name = "TestNetwork1" +new_net_name = "NewTestNetwork1" +net_id = "44" +port_id = "p0005" +port_state = const.PORT_UP +interface_id = "vif-01" +#vlan_name = "q-%svlan" % net_id +vlan_id = "102" + +def vlan_name(id): + return "q-%svlan" % id + class Test_L2NetworkMultiBlade(unittest.TestCase): """ Implements the L2NetworkModelBase @@ -52,11 +65,12 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): def setUp(self): # Initialize cdb and credentials + db.configure_db({'sql_connection': 'sqlite:///:memory:'}) cdb.initialize() creds.Store.initialize() # Set some data to use in tests - self.tenant_id = "shubh" + self.tenant_id = "network_admin" self.net_name = "TestNetwork1" self.profile_name = "test_tenant_port_profile" self.port_state = const.PORT_UP @@ -78,47 +92,67 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self._inventory[key] = utils.import_object( conf.PLUGINS[const.INVENTORY][key]) + #for ip in self._inventory['ucs_plugin']._inventory.keys(): + # try: + # print "tyleertylertyelr" + # print cdb.get_credential_name(tenant_id, ip) + # except cexc.CredentialNameNotFound: + # print 'asdfasdfasdfasdfasdf' + # cdb.add_credential(tenant_id, ip, + # creds.Store.getUsername(ip), + # creds.Store.getPassword(ip)) self.ucs_count = self._inventory['ucs_plugin'].\ _inventory.__len__() - + + def tearDown(self): + try: + self._l2network_multiblade.delete_network([tenant_id, self.net_id]) + except exc.NetworkNotFound: + # We won't always have a network to remove + pass + db.clear_db() + def test_create_network(self): """Support for the Quantum core API call""" LOG.debug("test_create_network - START") - networks = self._l2network_multiblade.create_network([self.tenant_id, - self.net_name, - self.net_id, - self.vlan_name, - self.vlan_id]) - self.assertEqual(networks.__len__(), self.ucs_count) - + # Create the network in the test DB, then with the model + self.net_id = db.network_create(tenant_id, net_name)[const.UUID] + networks = self._l2network_multiblade.create_network([tenant_id, + net_name, + self.net_id, + vlan_name(self.net_id), + vlan_id]) + cdb.add_vlan_binding(vlan_id, vlan_name(self.net_id), self.net_id) + + self.assertEqual(networks.__len__(), self.ucs_count) for network in networks: self.assertEqual(network[const.NET_ID], self.net_id) - self.assertEqual(network[const.NET_NAME], self.net_name) + self.assertEqual(network[const.NET_NAME], net_name) - self.tearDownNetwork(self.tenant_id, self.net_id) LOG.debug("test_create_network - END") - def test_get_all_networks(self): - """Not implemented for this model""" - pass - def test_delete_network(self): """Support for the Quantum core API call""" LOG.debug("test_delete_network - START") - self._l2network_multiblade.create_network([self.tenant_id, - self.net_name, + # Create the network in the test DB, then with the model + self.net_id = db.network_create(tenant_id, net_name)[const.UUID] + self._l2network_multiblade.create_network([tenant_id, + net_name, self.net_id, - self.vlan_name, - self.vlan_id]) - networks = self._l2network_multiblade.delete_network([self.tenant_id, + vlan_name(self.net_id), + vlan_id]) + + cdb.add_vlan_binding(vlan_id, vlan_name(self.net_id), self.net_id) + + networks = self._l2network_multiblade.delete_network([tenant_id, self.net_id]) self.assertEqual(networks.__len__(), self.ucs_count) - for network in networks: self.assertEqual(network[const.NET_ID], self.net_id) self.assertEqual(network[const.NET_NAME], self.net_name) + LOG.debug("test_delete_network - END") def test_delete_networkDNE(self): @@ -126,27 +160,28 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): LOG.debug("test_delete_networkDNE - START") self.assertRaises(exc.NetworkNotFound, self._l2network_multiblade.delete_network, - [self.tenant_id, self.net_id_DNE]) + [tenant_id, net_id]) LOG.debug("test_delete_networkDNE - END") def test_rename_network(self): """Support for the Quantum core API call""" LOG.debug("test_rename_network - START") - self._l2network_multiblade.create_network([self.tenant_id, - self.net_name, + self.net_id = db.network_create(tenant_id, net_name)[const.UUID] + self._l2network_multiblade.create_network([tenant_id, + net_name, self.net_id, - self.vlan_name, - self.vlan_id]) - networks = self._l2network_multiblade.rename_network([self.tenant_id, + vlan_name(self.net_id), + vlan_id]) + + db.network_rename(tenant_id, self.net_id, new_net_name) + networks = self._l2network_multiblade.rename_network([tenant_id, self.net_id, - self.new_net_name]) + new_net_name]) self.assertEqual(networks.__len__(), self.ucs_count) - for network in networks: self.assertEqual(network[const.NET_ID], self.net_id) - self.assertEqual(network[const.NET_NAME], self.net_name) - self.tearDownNetwork(self.tenant_id, self.net_id) + self.assertEqual(network[const.NET_NAME], new_net_name) LOG.debug("test_rename_network - END") def test_rename_networkDNE(self): @@ -154,84 +189,108 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): LOG.debug("test_rename_networkDNE - START") self.assertRaises(exc.NetworkNotFound, self._l2network_multiblade.rename_network, - [self.tenant_id, self.net_id_DNE,self.new_net_name]) + [tenant_id, net_id, new_net_name]) LOG.debug("test_rename_networkDNE - END") + def test_get_all_networks(self): + """Not implemented for this model""" + pass + def test_get_network_details(self): """Not implemented for this model""" pass def test_create_port(self): LOG.debug("test_create_port - START") - port = db.port_create(self.net_id, self.port_state) - self._l2network_multiblade.create_network([self.tenant_id, - self.net_name, - self.net_id, - self.vlan_name, - self.vlan_id]) - - port = self._l2network_multiblade.create_port([self.tenant_id, + self.net_id = db.network_create(tenant_id, net_name)[const.UUID] + self._l2network_multiblade.create_network([tenant_id, + net_name, + self.net_id, + vlan_name(self.net_id), + vlan_id]) + + self.port_id = db.port_create(self.net_id, port_state)[const.UUID] + port = self._l2network_multiblade.create_port([tenant_id, self.net_id, - self.port_state, - port[const.UUID]])[0] - print 'testingtestingtest' - print port - self.tearDownNetworkPort(self.tenant_id, self.net_id, - port.port_id) - self.tearDownNetwork(self.tenant_id, self.net_id) + port_state, + self.port_id]) + + self.assertEqual(self.port_id, port[0][const.PORTID]) LOG.debug("test_create_port - END") def test_delete_port(self): LOG.debug("test_delete_port - START") - self._l2network_multiblade.create_network([self.tenant_id, - self.net_name, + self.net_id = db.network_create(tenant_id, net_name)[const.UUID] + self._l2network_multiblade.create_network([tenant_id, + net_name, self.net_id, - self.vlan_name, - self.vlan_id]) - self._l2network_multiblade.create_port([self.tenant_id, - self.net_name, self.net_id, - self.port_state]) + vlan_name(self.net_id), + vlan_id]) + + self.port_id = db.port_create(self.net_id, port_state)[const.UUID] + self._l2network_multiblade.create_port([tenant_id, + self.net_id, + port_state,self.port_id]) - self._l2network_multiblade.delete_port([self.tenant_id, + port = self._l2network_multiblade.delete_port([tenant_id, self.net_id, self.port_id]) - self.tearDownNetworkPort(self, self.tenant_id, self.network_dict_id, - self.port_id) - self.tearDownNetwork(self.tenant_id, self.net_id) + self.assertEqual(self.port_id, port[0][const.PORTID]) LOG.debug("test_delete_port - END") def test_create_port_networkDNE(self): LOG.debug("test_create_port_networkDNE - START") self.assertRaises(exc.NetworkNotFound, self._l2network_multiblade.create_port, - [self.tenant_id, self.net_name, self.net_id_DNE, self.port_state]) + [tenant_id, net_id, self.port_state, port_id]) LOG.debug("test_create_port_networkDNE - END") - def test_delete_port_networkDNE(self): - LOG.debug("test_delete_port_networkDNE - START") - self.assertRaises(exc.NetworkNotFound, - self._l2network_multiblade.delete_port, - [self.tenant_id, self.net_id_DNE, self.port_id]) - LOG.debug("test_delete_port_networkDNE - END") + #def test_delete_port_networkDNE(self): + # LOG.debug("test_delete_port_networkDNE - START") + # self.assertRaises(exc.NetworkNotFound, + # self._l2network_multiblade.delete_port, + # [tenant_id, net_id, port_id]) + # LOG.debug("test_delete_port_networkDNE - END") def test_delete_portDNE(self): LOG.debug("test_delete_portDNE - START") + self.net_id = db.network_create(tenant_id, net_name)[const.UUID] + self._l2network_multiblade.create_network([tenant_id, + net_name, + self.net_id, + vlan_name(self.net_id), + vlan_id]) + self.assertRaises(exc.PortNotFound, self._l2network_multiblade.delete_port, - [self.tenant_id, self.net_id, self.port_id]) + [tenant_id, self.net_id, port_id]) LOG.debug("test_delete_portDNE - END") - def test_delete_portInUse(self): - LOG.debug("test_delete_portInUse - START") - self.assertRaises(exc.PortInUse, - self._l2network_multiblade.delete_port, - [self.tenant_id, self.net_id_DNE, self.port_id]) - LOG.debug("test_delete_portInUse - END") + #def test_delete_portInUse(self): + # LOG.debug("test_delete_portInUse - START") + # self.net_id = db.network_create(tenant_id, net_name)[const.UUID] + # self._l2network_multiblade.create_network([tenant_id, + # net_name, + # self.net_id, + # vlan_name(self.net_id), + # vlan_id]) + # cdb.add_vlan_binding(vlan_id, vlan_name(self.net_id), self.net_id) - def test_update_port_networkDNE(self): - """Not implemented for this model""" - pass + # self.port_id = db.port_create(self.net_id, port_state)[const.UUID] + # self._l2network_multiblade.create_port([tenant_id, + # self.net_id, + # port_state,self.port_id]) + + # int = self._l2network_multiblade.plug_interface([tenant_id, self.net_id, + # self.port_id, interface_id]) + # db.port_set_attachment(self.net_id, self.port_id, interface_id) + # port = db.port_get(self.net_id, self.port_id) + # self._l2network_multiblade.delete_port([tenant_id,self.net_id,self.port_id]) + #self.assertRaises(exc.PortInUse, + # self._l2network_multiblade.delete_port, + # [tenant_id, self.net_id, self.port_id]) + # LOG.debug("test_delete_portInUse - END") def test_get_all_ports(self): """Not implemented for this model""" @@ -240,13 +299,80 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): def test_update_port(self): """Not implemented for this model""" pass + + def test_update_portDNE(self): + """Not implemented for this model""" + pass + + def test_update_port_networkDNE(self): + """Not implemented for this model""" + pass def test_port_details(self): """Not implemented for this model""" pass - - def tearDownNetwork(self , tenant_id, net_id ): - self._l2network_multiblade.delete_network([tenant_id, net_id]) - def tearDownNetworkPort(self, tenant_id, net_id, port_id): - self._l2network_multiblade.delete_port([tenant_id, net_id, port_id]) + def test_plug_interface(self): + LOG.debug("test_plug_interface - START") + self.net_id = db.network_create(tenant_id, net_name)[const.UUID] + self._l2network_multiblade.create_network([tenant_id, + net_name, + self.net_id, + vlan_name(self.net_id), + vlan_id]) + cdb.add_vlan_binding(vlan_id, vlan_name(self.net_id), self.net_id) + + self.port_id = db.port_create(self.net_id, port_state)[const.UUID] + self._l2network_multiblade.create_port([tenant_id, + self.net_id, + port_state,self.port_id]) + + int = self._l2network_multiblade.plug_interface([tenant_id, self.net_id, + self.port_id, interface_id]) + port = db.port_set_attachment(self.net_id, self.port_id, interface_id) + + self.assertEqual(self.port_id, int[0][const.PORTID]) + self.assertEqual(port[const.INTERFACEID], interface_id) + LOG.debug("test_plug_interface - END") + + def test_plug_interface_portDNE(self): + LOG.debug("test_plug_interface_portDNE - START") + self.net_id = db.network_create(tenant_id, net_name)[const.UUID] + self._l2network_multiblade.create_network([tenant_id, + net_name, + self.net_id, + vlan_name(self.net_id), + vlan_id]) + cdb.add_vlan_binding(vlan_id, vlan_name(self.net_id), self.net_id) + + self.assertRaises(exc.PortNotFound, + self._l2network_multiblade.plug_interface, + [tenant_id, self.net_id, port_id, interface_id]) + + LOG.debug("test_plug_interface_portDNE - START") + + def test_unplug_interface(self): + LOG.debug("test_unplug_interface - START") + self.net_id = db.network_create(tenant_id, net_name)[const.UUID] + self._l2network_multiblade.create_network([tenant_id, + net_name, + self.net_id, + vlan_name(self.net_id), + vlan_id]) + cdb.add_vlan_binding(vlan_id, vlan_name(self.net_id), self.net_id) + + self.port_id = db.port_create(self.net_id, port_state)[const.UUID] + self._l2network_multiblade.create_port([tenant_id, + self.net_id, + port_state,self.port_id]) + + self._l2network_multiblade.plug_interface([tenant_id, self.net_id, + self.port_id, interface_id]) + port = db.port_set_attachment(self.net_id, self.port_id, interface_id) + int = self._l2network_multiblade.unplug_interface([tenant_id, self.net_id, + self.port_id]) + + self.assertEqual(self.port_id, int[0][const.PORTID]) + LOG.debug("test_unplug_interface - END") + + From d70b7afdf5ecd234c3eb579e9de190ea797f6877 Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Mon, 3 Jan 2011 22:41:08 -0500 Subject: [PATCH 08/18] Removing some negative tests until I can figure out how to implement them --- .../tests/unit/test_l2network_multi_blade.py | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index 8cef379b7d..8e9532ab6c 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -246,15 +246,6 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): [tenant_id, net_id, self.port_state, port_id]) LOG.debug("test_create_port_networkDNE - END") - #def test_delete_port_networkDNE(self): - # LOG.debug("test_delete_port_networkDNE - START") - # self.assertRaises(exc.NetworkNotFound, - # self._l2network_multiblade.delete_port, - # [tenant_id, net_id, port_id]) - # LOG.debug("test_delete_port_networkDNE - END") - - def test_delete_portDNE(self): - LOG.debug("test_delete_portDNE - START") self.net_id = db.network_create(tenant_id, net_name)[const.UUID] self._l2network_multiblade.create_network([tenant_id, net_name, @@ -267,31 +258,6 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): [tenant_id, self.net_id, port_id]) LOG.debug("test_delete_portDNE - END") - #def test_delete_portInUse(self): - # LOG.debug("test_delete_portInUse - START") - # self.net_id = db.network_create(tenant_id, net_name)[const.UUID] - # self._l2network_multiblade.create_network([tenant_id, - # net_name, - # self.net_id, - # vlan_name(self.net_id), - # vlan_id]) - # cdb.add_vlan_binding(vlan_id, vlan_name(self.net_id), self.net_id) - - # self.port_id = db.port_create(self.net_id, port_state)[const.UUID] - # self._l2network_multiblade.create_port([tenant_id, - # self.net_id, - # port_state,self.port_id]) - - # int = self._l2network_multiblade.plug_interface([tenant_id, self.net_id, - # self.port_id, interface_id]) - # db.port_set_attachment(self.net_id, self.port_id, interface_id) - # port = db.port_get(self.net_id, self.port_id) - # self._l2network_multiblade.delete_port([tenant_id,self.net_id,self.port_id]) - #self.assertRaises(exc.PortInUse, - # self._l2network_multiblade.delete_port, - # [tenant_id, self.net_id, self.port_id]) - # LOG.debug("test_delete_portInUse - END") - def test_get_all_ports(self): """Not implemented for this model""" pass From 7a4fc599c388a2abd6f5809f4997f0f8537d0bd9 Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Mon, 3 Jan 2011 22:44:37 -0500 Subject: [PATCH 09/18] Removing a negative test until I can figure out how to implement it --- .../tests/unit/test_l2network_multi_blade.py | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index 8e9532ab6c..4218961498 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -239,25 +239,6 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.assertEqual(self.port_id, port[0][const.PORTID]) LOG.debug("test_delete_port - END") - def test_create_port_networkDNE(self): - LOG.debug("test_create_port_networkDNE - START") - self.assertRaises(exc.NetworkNotFound, - self._l2network_multiblade.create_port, - [tenant_id, net_id, self.port_state, port_id]) - LOG.debug("test_create_port_networkDNE - END") - - self.net_id = db.network_create(tenant_id, net_name)[const.UUID] - self._l2network_multiblade.create_network([tenant_id, - net_name, - self.net_id, - vlan_name(self.net_id), - vlan_id]) - - self.assertRaises(exc.PortNotFound, - self._l2network_multiblade.delete_port, - [tenant_id, self.net_id, port_id]) - LOG.debug("test_delete_portDNE - END") - def test_get_all_ports(self): """Not implemented for this model""" pass From 5ff0e956d0ccc507e9a17be8b718c949ef85befb Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Mon, 3 Jan 2011 22:47:43 -0500 Subject: [PATCH 10/18] Adding author information --- quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index 4218961498..51f846b4e2 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -16,6 +16,9 @@ # under the License. # # @author: Shubhangi Satras, Cisco Systems, Inc. +# @author: Peter Strunk, Cisco Systems, Inc. +# @author: Atul Gaikad, Cisco Systems, Inc. +# @author: Tyler Smith, Cisco Systems, Inc. # """ From f65891b5414a17ed9ce28a3f283e5296f6f8f7f6 Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Tue, 4 Jan 2011 19:40:41 -0500 Subject: [PATCH 11/18] Adding some tests, fixing some bugs, and making the tearDown correctly remove PortProfiles. --- .../tests/unit/test_l2network_multi_blade.py | 90 ++++++++++++------- 1 file changed, 58 insertions(+), 32 deletions(-) diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index 51f846b4e2..036d2df2e0 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -23,10 +23,10 @@ """ import unittest -from copy import deepcopy -import inspect +#from copy import deepcopy +#import inspect import logging as LOG -import platform +#import platform from quantum.common import exceptions as exc from quantum.common import utils @@ -38,10 +38,12 @@ from quantum.plugins.cisco.common import cisco_credentials as creds from quantum.plugins.cisco.models import l2network_multi_blade from quantum.plugins.cisco.db import api as db from quantum.plugins.cisco.db import l2network_db as cdb + LOG.basicConfig(level=LOG.WARN) LOG.getLogger(__name__) +# Set some data to use in tests tenant_id = "network_admin" net_name = "TestNetwork1" new_net_name = "NewTestNetwork1" @@ -72,42 +74,33 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): cdb.initialize() creds.Store.initialize() - # Set some data to use in tests - self.tenant_id = "network_admin" - self.net_name = "TestNetwork1" - self.profile_name = "test_tenant_port_profile" - self.port_state = const.PORT_UP - self.net_id = '44' - self.net_id_DNE = '458' - self.port_id = 'p0005' - self.vlan_name = "q-" + str(self.net_id) + "vlan" - self.vlan_id = 102 - self.new_net_name="New_test_network" + # Create a place a store net and port ids for the druation of the test + self.net_id = 0 + self.port_id = 0 + # Create the multiblade object self._l2network_multiblade = l2network_multi_blade.\ L2NetworkMultiBlade() self.plugin_key = "quantum.plugins.cisco.ucs.cisco_ucs_plugin"+\ ".UCSVICPlugin" - self.test_device_ip = "172.18.117.45" + # Get UCS inventory to make sure all UCSs are affected by tests for key in conf.PLUGINS[const.PLUGINS].keys(): self._inventory[key] = utils.import_object( conf.PLUGINS[const.INVENTORY][key]) - #for ip in self._inventory['ucs_plugin']._inventory.keys(): - # try: - # print "tyleertylertyelr" - # print cdb.get_credential_name(tenant_id, ip) - # except cexc.CredentialNameNotFound: - # print 'asdfasdfasdfasdfasdf' - # cdb.add_credential(tenant_id, ip, - # creds.Store.getUsername(ip), - # creds.Store.getPassword(ip)) self.ucs_count = self._inventory['ucs_plugin'].\ _inventory.__len__() def tearDown(self): + try: + self._l2network_multiblade.delete_port([tenant_id, self.net_id, + self.port_id]) + except exc.PortNotFound: + # We won't always have a port to remove + pass + try: self._l2network_multiblade.delete_network([tenant_id, self.net_id]) except exc.NetworkNotFound: @@ -126,7 +119,6 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.net_id, vlan_name(self.net_id), vlan_id]) - cdb.add_vlan_binding(vlan_id, vlan_name(self.net_id), self.net_id) self.assertEqual(networks.__len__(), self.ucs_count) for network in networks: @@ -134,10 +126,22 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.assertEqual(network[const.NET_NAME], net_name) LOG.debug("test_create_network - END") - + + def test_create_networkDNE(self): + """Support for the Quantum core API call""" + LOG.debug("test_create_networkDNE - START") + + self.assertRaises(exc.NetworkNotFound, + self._l2network_multiblade.create_network, + [tenant_id, net_name, net_id, + vlan_name(net_id), vlan_id]) + + LOG.debug("test_create_networkDNE - END") + def test_delete_network(self): """Support for the Quantum core API call""" LOG.debug("test_delete_network - START") + # Create the network in the test DB, then with the model self.net_id = db.network_create(tenant_id, net_name)[const.UUID] self._l2network_multiblade.create_network([tenant_id, @@ -145,7 +149,6 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.net_id, vlan_name(self.net_id), vlan_id]) - cdb.add_vlan_binding(vlan_id, vlan_name(self.net_id), self.net_id) networks = self._l2network_multiblade.delete_network([tenant_id, @@ -154,21 +157,24 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.assertEqual(networks.__len__(), self.ucs_count) for network in networks: self.assertEqual(network[const.NET_ID], self.net_id) - self.assertEqual(network[const.NET_NAME], self.net_name) + self.assertEqual(network[const.NET_NAME], net_name) LOG.debug("test_delete_network - END") def test_delete_networkDNE(self): """Support for the Quantum core API call""" LOG.debug("test_delete_networkDNE - START") + self.assertRaises(exc.NetworkNotFound, self._l2network_multiblade.delete_network, [tenant_id, net_id]) + LOG.debug("test_delete_networkDNE - END") def test_rename_network(self): """Support for the Quantum core API call""" LOG.debug("test_rename_network - START") + self.net_id = db.network_create(tenant_id, net_name)[const.UUID] self._l2network_multiblade.create_network([tenant_id, net_name, @@ -277,7 +283,7 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.net_id, port_state,self.port_id]) - int = self._l2network_multiblade.plug_interface([tenant_id, self.net_id, + int = self._l2network_multiblade.plug_interface([tenant_id,self.net_id, self.port_id, interface_id]) port = db.port_set_attachment(self.net_id, self.port_id, interface_id) @@ -285,6 +291,27 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.assertEqual(port[const.INTERFACEID], interface_id) LOG.debug("test_plug_interface - END") + def test_plug_interface_networkDNE(self): + LOG.debug("test_plug_interface_networkDNE - START") + self.net_id = db.network_create(tenant_id, net_name)[const.UUID] + self._l2network_multiblade.create_network([tenant_id, + net_name, + self.net_id, + vlan_name(self.net_id), + vlan_id]) + cdb.add_vlan_binding(vlan_id, vlan_name(self.net_id), self.net_id) + + self.port_id = db.port_create(self.net_id, port_state)[const.UUID] + self._l2network_multiblade.create_port([tenant_id, + self.net_id, + port_state,self.port_id]) + + self.assertRaises(exc.NetworkNotFound, + self._l2network_multiblade.plug_interface, + [tenant_id, net_id, self.port_id, interface_id]) + + LOG.debug("test_plug_interface_networkDNE - END") + def test_plug_interface_portDNE(self): LOG.debug("test_plug_interface_portDNE - START") self.net_id = db.network_create(tenant_id, net_name)[const.UUID] @@ -319,10 +346,9 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self._l2network_multiblade.plug_interface([tenant_id, self.net_id, self.port_id, interface_id]) port = db.port_set_attachment(self.net_id, self.port_id, interface_id) - int = self._l2network_multiblade.unplug_interface([tenant_id, self.net_id, - self.port_id]) + int = self._l2network_multiblade.unplug_interface([tenant_id, + self.net_id, self.port_id]) self.assertEqual(self.port_id, int[0][const.PORTID]) LOG.debug("test_unplug_interface - END") - From 8f1bede1804bd8915f4e87b3aaa1f2d0b37a39d2 Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Tue, 4 Jan 2011 19:48:22 -0500 Subject: [PATCH 12/18] Removing a couple extra lines --- .../plugins/cisco/tests/unit/test_l2network_multi_blade.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index 036d2df2e0..d1e8ce34f3 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -23,10 +23,7 @@ """ import unittest -#from copy import deepcopy -#import inspect import logging as LOG -#import platform from quantum.common import exceptions as exc from quantum.common import utils @@ -51,7 +48,6 @@ net_id = "44" port_id = "p0005" port_state = const.PORT_UP interface_id = "vif-01" -#vlan_name = "q-%svlan" % net_id vlan_id = "102" def vlan_name(id): From b95cf7a8c7bd0f9c73d28fd3cbb7176a4c70a0a7 Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Tue, 4 Jan 2011 23:08:54 -0500 Subject: [PATCH 13/18] Fixing pep8 errors and pushing pylint score up to 8.57 --- .../tests/unit/test_l2network_multi_blade.py | 74 ++++++++++--------- 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index d1e8ce34f3..75029e829a 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -27,10 +27,10 @@ import logging as LOG from quantum.common import exceptions as exc from quantum.common import utils -from quantum.plugins.cisco.l2network_model_base import L2NetworkModelBase +#from quantum.plugins.cisco.l2network_model_base import L2NetworkModelBase from quantum.plugins.cisco import l2network_plugin_configuration as conf from quantum.plugins.cisco.common import cisco_constants as const -from quantum.plugins.cisco.common import cisco_exceptions as cexc +#from quantum.plugins.cisco.common import cisco_exceptions as cexc from quantum.plugins.cisco.common import cisco_credentials as creds from quantum.plugins.cisco.models import l2network_multi_blade from quantum.plugins.cisco.db import api as db @@ -50,10 +50,12 @@ port_state = const.PORT_UP interface_id = "vif-01" vlan_id = "102" + def vlan_name(id): return "q-%svlan" % id -class Test_L2NetworkMultiBlade(unittest.TestCase): + +class TestMultiBlade(unittest.TestCase): """ Implements the L2NetworkModelBase This implementation works with UCS and Nexus plugin for the @@ -65,20 +67,20 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): _inventory = {} def setUp(self): + """Setup our tests""" # Initialize cdb and credentials db.configure_db({'sql_connection': 'sqlite:///:memory:'}) cdb.initialize() creds.Store.initialize() - # Create a place a store net and port ids for the druation of the test self.net_id = 0 self.port_id = 0 # Create the multiblade object - self._l2network_multiblade = l2network_multi_blade.\ + self._l2network_multiblade = l2network_multi_blade. \ L2NetworkMultiBlade() - self.plugin_key = "quantum.plugins.cisco.ucs.cisco_ucs_plugin"+\ + self.plugin_key = "quantum.plugins.cisco.ucs.cisco_ucs_plugin" + \ ".UCSVICPlugin" # Get UCS inventory to make sure all UCSs are affected by tests @@ -90,6 +92,7 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): _inventory.__len__() def tearDown(self): + """Tear down our tests""" try: self._l2network_multiblade.delete_port([tenant_id, self.net_id, self.port_id]) @@ -116,13 +119,13 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): vlan_name(self.net_id), vlan_id]) - self.assertEqual(networks.__len__(), self.ucs_count) + self.assertEqual(networks.__len__(), self.ucs_count) for network in networks: self.assertEqual(network[const.NET_ID], self.net_id) self.assertEqual(network[const.NET_NAME], net_name) LOG.debug("test_create_network - END") - + def test_create_networkDNE(self): """Support for the Quantum core API call""" LOG.debug("test_create_networkDNE - START") @@ -206,6 +209,7 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): pass def test_create_port(self): + """Support for the Quantum core API call""" LOG.debug("test_create_port - START") self.net_id = db.network_create(tenant_id, net_name)[const.UUID] self._l2network_multiblade.create_network([tenant_id, @@ -216,14 +220,15 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.port_id = db.port_create(self.net_id, port_state)[const.UUID] port = self._l2network_multiblade.create_port([tenant_id, - self.net_id, + self.net_id, port_state, self.port_id]) self.assertEqual(self.port_id, port[0][const.PORTID]) LOG.debug("test_create_port - END") - + def test_delete_port(self): + """Support for the Quantum core API call""" LOG.debug("test_delete_port - START") self.net_id = db.network_create(tenant_id, net_name)[const.UUID] self._l2network_multiblade.create_network([tenant_id, @@ -234,11 +239,11 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.port_id = db.port_create(self.net_id, port_state)[const.UUID] self._l2network_multiblade.create_port([tenant_id, - self.net_id, - port_state,self.port_id]) - + self.net_id, + port_state, self.port_id]) + port = self._l2network_multiblade.delete_port([tenant_id, - self.net_id, + self.net_id, self.port_id]) self.assertEqual(self.port_id, port[0][const.PORTID]) @@ -259,13 +264,14 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): def test_update_port_networkDNE(self): """Not implemented for this model""" pass - + def test_port_details(self): """Not implemented for this model""" pass def test_plug_interface(self): - LOG.debug("test_plug_interface - START") + """Support for the Quantum core API call""" + LOG.debug("test_plug_interface - START") self.net_id = db.network_create(tenant_id, net_name)[const.UUID] self._l2network_multiblade.create_network([tenant_id, net_name, @@ -276,19 +282,20 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.port_id = db.port_create(self.net_id, port_state)[const.UUID] self._l2network_multiblade.create_port([tenant_id, - self.net_id, - port_state,self.port_id]) + self.net_id, + port_state, self.port_id]) - int = self._l2network_multiblade.plug_interface([tenant_id,self.net_id, - self.port_id, interface_id]) + interface = self._l2network_multiblade.plug_interface([tenant_id, + self.net_id, self.port_id, interface_id]) port = db.port_set_attachment(self.net_id, self.port_id, interface_id) - self.assertEqual(self.port_id, int[0][const.PORTID]) + self.assertEqual(self.port_id, interface[0][const.PORTID]) self.assertEqual(port[const.INTERFACEID], interface_id) LOG.debug("test_plug_interface - END") def test_plug_interface_networkDNE(self): - LOG.debug("test_plug_interface_networkDNE - START") + """Support for the Quantum core API call""" + LOG.debug("test_plug_interface_networkDNE - START") self.net_id = db.network_create(tenant_id, net_name)[const.UUID] self._l2network_multiblade.create_network([tenant_id, net_name, @@ -299,8 +306,8 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.port_id = db.port_create(self.net_id, port_state)[const.UUID] self._l2network_multiblade.create_port([tenant_id, - self.net_id, - port_state,self.port_id]) + self.net_id, + port_state, self.port_id]) self.assertRaises(exc.NetworkNotFound, self._l2network_multiblade.plug_interface, @@ -309,7 +316,8 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): LOG.debug("test_plug_interface_networkDNE - END") def test_plug_interface_portDNE(self): - LOG.debug("test_plug_interface_portDNE - START") + """Support for the Quantum core API call""" + LOG.debug("test_plug_interface_portDNE - START") self.net_id = db.network_create(tenant_id, net_name)[const.UUID] self._l2network_multiblade.create_network([tenant_id, net_name, @@ -322,10 +330,11 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self._l2network_multiblade.plug_interface, [tenant_id, self.net_id, port_id, interface_id]) - LOG.debug("test_plug_interface_portDNE - START") + LOG.debug("test_plug_interface_portDNE - START") def test_unplug_interface(self): - LOG.debug("test_unplug_interface - START") + """Support for the Quantum core API call""" + LOG.debug("test_unplug_interface - START") self.net_id = db.network_create(tenant_id, net_name)[const.UUID] self._l2network_multiblade.create_network([tenant_id, net_name, @@ -336,15 +345,14 @@ class Test_L2NetworkMultiBlade(unittest.TestCase): self.port_id = db.port_create(self.net_id, port_state)[const.UUID] self._l2network_multiblade.create_port([tenant_id, - self.net_id, - port_state,self.port_id]) + self.net_id, + port_state, self.port_id]) self._l2network_multiblade.plug_interface([tenant_id, self.net_id, self.port_id, interface_id]) - port = db.port_set_attachment(self.net_id, self.port_id, interface_id) - int = self._l2network_multiblade.unplug_interface([tenant_id, + db.port_set_attachment(self.net_id, self.port_id, interface_id) + interface = self._l2network_multiblade.unplug_interface([tenant_id, self.net_id, self.port_id]) - self.assertEqual(self.port_id, int[0][const.PORTID]) + self.assertEqual(self.port_id, interface[0][const.PORTID]) LOG.debug("test_unplug_interface - END") - From d727c0878ba9edb449ec51f01c1f96ac7b1ff33a Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Tue, 4 Jan 2011 23:30:45 -0500 Subject: [PATCH 14/18] Removing excess imports --- quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index 75029e829a..bbbcf1e845 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -27,10 +27,8 @@ import logging as LOG from quantum.common import exceptions as exc from quantum.common import utils -#from quantum.plugins.cisco.l2network_model_base import L2NetworkModelBase from quantum.plugins.cisco import l2network_plugin_configuration as conf from quantum.plugins.cisco.common import cisco_constants as const -#from quantum.plugins.cisco.common import cisco_exceptions as cexc from quantum.plugins.cisco.common import cisco_credentials as creds from quantum.plugins.cisco.models import l2network_multi_blade from quantum.plugins.cisco.db import api as db From b587498b2a1c54c149d3aaae6165fda07b2c26ee Mon Sep 17 00:00:00 2001 From: Shweta P Date: Thu, 8 Sep 2011 22:23:28 -0700 Subject: [PATCH 15/18] Ading Ucs db tests --- .../plugins/cisco/common/cisco_constants.py | 2 +- .../cisco/tests/unit/test_ucs_plugin.py | 725 ++++++++---------- 2 files changed, 323 insertions(+), 404 deletions(-) diff --git a/quantum/plugins/cisco/common/cisco_constants.py b/quantum/plugins/cisco/common/cisco_constants.py index fbcc9b94cc..c9f9992649 100644 --- a/quantum/plugins/cisco/common/cisco_constants.py +++ b/quantum/plugins/cisco/common/cisco_constants.py @@ -85,7 +85,7 @@ PASSWORD = 'password' LOGGER_COMPONENT_NAME = "cisco_plugin" -BLADE_INTF_DN = "blade-intf-distinguished-name" +BLADE_INTF_DN = "blade_intf_distinguished_name" BLADE_INTF_ORDER = "blade-intf-order" BLADE_INTF_LINK_STATE = "blade-intf-link-state" BLADE_INTF_OPER_STATE = "blade-intf-operational-state" diff --git a/quantum/plugins/cisco/tests/unit/test_ucs_plugin.py b/quantum/plugins/cisco/tests/unit/test_ucs_plugin.py index 3d6f19845a..721532be5c 100644 --- a/quantum/plugins/cisco/tests/unit/test_ucs_plugin.py +++ b/quantum/plugins/cisco/tests/unit/test_ucs_plugin.py @@ -14,6 +14,7 @@ # under the License. # # @author: Shubhangi Satras, Cisco Systems, Inc. +# Shweta Padubidri, Cisco Systems, Inc. # import unittest import logging as LOG @@ -21,39 +22,54 @@ from quantum.common import exceptions as exc from quantum.plugins.cisco.common import cisco_constants as const from quantum.plugins.cisco.ucs import cisco_ucs_plugin from quantum.plugins.cisco.ucs import cisco_ucs_configuration as conf +from quantum.plugins.cisco.common import cisco_credentials as cred + +from quantum.plugins.cisco.db import api as db +from quantum.plugins.cisco.db import l2network_db as cdb +from quantum.plugins.cisco.common import cisco_exceptions as c_exc + +from quantum.plugins.cisco.ucs import cisco_ucs_inventory as ucsinv LOG.basicConfig(level=LOG.WARN) -LOG.getLogger("cisco_plugin") +LOG.getLogger("cisco_ucs_plugin") class UCSVICTestPlugin(unittest.TestCase): def setUp(self): - """ - Set up function. - """ self.tenant_id = "test_tenant_cisco12" self.net_name = "test_network_cisco12" self.net_id = 000011 - self.vlan_name = "q-" + str(self.net_id) + "vlan" - self.vlan_id = 266 + self.vlan_name = conf.DEFAULT_VLAN_NAME + self.vlan_id = conf.DEFAULT_VLAN_ID self.port_id = "4" + cdb.initialize() + cred.Store.initialize() self._cisco_ucs_plugin = cisco_ucs_plugin.UCSVICPlugin() + self.device_ip = conf.UCSM_IP_ADDRESS + self._ucs_inventory = ucsinv.UCSInventory() + self.chassis_id = '1' + self.blade_id = '5' + self.blade_intf_distinguished_name = 'sys/chassis-1/blade-5/'\ + 'adaptor-1/host-eth-6' def test_create_network(self): """ Tests creation of new Virtual Network. """ LOG.debug("UCSVICTestPlugin:_test_create_network() called\n") + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) new_net_dict = self._cisco_ucs_plugin.create_network( - self.tenant_id, self.net_name, self.net_id, - self.vlan_name, self.vlan_id) - self.assertEqual(new_net_dict[const.NET_ID], self.net_id) - self.assertEqual(new_net_dict[const.NET_NAME], self.net_name) - self.assertEqual(new_net_dict[const.NET_VLAN_NAME], self.vlan_name) - self.assertEqual(new_net_dict[const.NET_VLAN_ID], self.vlan_id) - self.tearDownNetwork(self.tenant_id, self.net_id) + self.tenant_id, new_network[const.NETWORKNAME], + new_network[const.UUID], self.vlan_name, self.vlan_id, + device_ip=self.device_ip) + self.assertEqual(new_net_dict[const.NET_ID], new_network[const.UUID]) + self.assertEqual(new_net_dict[const.NET_NAME], + new_network[const.NETWORKNAME]) + self.tearDownNetwork(self.tenant_id, new_network[const.UUID]) def test_delete_network(self): """ @@ -61,12 +77,16 @@ class UCSVICTestPlugin(unittest.TestCase): belonging to the specified tenant. """ LOG.debug("UCSVICTestPlugin:test_delete_network() called\n") - self._cisco_ucs_plugin.create_network( - self.tenant_id, self.net_name, self.net_id, - self.vlan_name, self.vlan_id) + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) + new_net_dict = self._cisco_ucs_plugin.create_network( + self.tenant_id, new_network[const.NETWORKNAME], + new_network[const.UUID], self.vlan_name, self.vlan_id, + device_ip=self.device_ip) new_net_dict = self._cisco_ucs_plugin.delete_network( - self.tenant_id, self.net_id) - self.assertEqual(new_net_dict[const.NET_ID], self.net_id) + self.tenant_id, new_network[const.UUID], device_ip=self.device_ip) + self.assertEqual(new_net_dict[const.NET_ID], new_network[const.UUID]) def test_get_network_details(self): """ @@ -74,15 +94,20 @@ class UCSVICTestPlugin(unittest.TestCase): spec """ LOG.debug("UCSVICTestPlugin:test_get_network_details() called\n") - self._cisco_ucs_plugin.create_network( - self.tenant_id, self.net_name, self.net_id, - self.vlan_name, self.vlan_id) + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) + new_net_dict = self._cisco_ucs_plugin.create_network( + self.tenant_id, new_network[const.NETWORKNAME], + new_network[const.UUID], self.vlan_name, self.vlan_id, + device_ip=self.device_ip) new_net_dict = self._cisco_ucs_plugin.get_network_details( - self.tenant_id, self.net_id) - self.assertEqual(new_net_dict[const.NET_ID], self.net_id) - self.assertEqual(new_net_dict[const.NET_VLAN_NAME], self.vlan_name) - self.assertEqual(new_net_dict[const.NET_VLAN_ID], self.vlan_id) - self.tearDownNetwork(self.tenant_id, self.net_id) + self.tenant_id, new_network[const.UUID], + device_ip=self.device_ip) + self.assertEqual(new_net_dict[const.NET_ID], new_network[const.UUID]) + self.assertEqual(new_net_dict[const.NET_NAME], + new_network[const.NETWORKNAME]) + self.tearDownNetwork(self.tenant_id, new_network[const.UUID]) def test_get_all_networks(self): """ @@ -91,18 +116,28 @@ class UCSVICTestPlugin(unittest.TestCase): the specified tenant. """ LOG.debug("UCSVICTestPlugin:test_get_all_networks() called\n") + new_network1 = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network1[const.UUID]) new_net_dict1 = self._cisco_ucs_plugin.create_network( - self.tenant_id, self.net_name, self.net_id, - self.vlan_name, self.vlan_id) + self.tenant_id, new_network1[const.NETWORKNAME], + new_network1[const.UUID], self.vlan_name, self.vlan_id, + device_ip=self.device_ip) + new_network2 = db.network_create(self.tenant_id, "test_network2") + cdb.add_vlan_binding("6", "q-000006vlan", new_network2[const.UUID]) new_net_dict2 = self._cisco_ucs_plugin.create_network( - self.tenant_id, "test_network2", - 000006, "q-000006vlan", "6") - net_list = self._cisco_ucs_plugin.get_all_networks(self.tenant_id) + self.tenant_id, new_network2[const.NETWORKNAME], + new_network2[const.UUID], "q-000006vlan", "6", + device_ip=self.device_ip) + + net_list = self._cisco_ucs_plugin.get_all_networks( + self.tenant_id, device_ip=self.device_ip) net_id_list = [new_net_dict1, new_net_dict2] + self.assertTrue(net_list[0] in net_id_list) self.assertTrue(net_list[1] in net_id_list) - self.tearDownNetwork(self.tenant_id, new_net_dict1[const.NET_ID]) - self.tearDownNetwork(self.tenant_id, new_net_dict2[const.NET_ID]) + self.tearDownNetwork(self.tenant_id, new_network1[const.UUID]) + self.tearDownNetwork(self.tenant_id, new_network2[const.UUID]) def test_get_all_ports(self): """ @@ -110,74 +145,81 @@ class UCSVICTestPlugin(unittest.TestCase): specified Virtual Network. """ LOG.debug("UCSVICPlugin:get_all_ports() called\n") + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) new_net_dict = self._cisco_ucs_plugin.create_network( - self.tenant_id, self.net_name, self.net_id, - self.vlan_name, self.vlan_id) + self.tenant_id, new_network[const.NETWORKNAME], + new_network[const.UUID], self.vlan_name, self.vlan_id, + device_ip=self.device_ip) + new_port1 = db.port_create(new_network[const.UUID], const.PORT_UP) port_dict1 = self._cisco_ucs_plugin.create_port( - self.tenant_id, self.net_id, const.PORT_UP, - self.port_id) + self.tenant_id, self.net_id, const.PORT_UP, + new_port1[const.UUID], device_ip=self.device_ip, + ucs_inventory=self._ucs_inventory, + least_rsvd_blade_dict=self._ucs_inventory.\ + get_least_reserved_blade()) + new_port2 = db.port_create(new_network[const.UUID], const.PORT_UP) port_dict2 = self._cisco_ucs_plugin.create_port( - self.tenant_id, self.net_id, - const.PORT_UP, "10") + self.tenant_id, self.net_id, const.PORT_UP, + new_port2[const.UUID], device_ip=self.device_ip, + ucs_inventory=self._ucs_inventory, + least_rsvd_blade_dict=self._ucs_inventory.\ + get_least_reserved_blade()) ports_on_net = self._cisco_ucs_plugin.get_all_ports( - self.tenant_id, self.net_id) + self.tenant_id, new_net_dict[const.NET_ID], + device_ip=self.device_ip, + ucs_inventory=self._ucs_inventory, + least_rsvd_blade_dict=self._ucs_inventory.\ + get_least_reserved_blade()) port_list = [port_dict1, port_dict2] - self.assertTrue(port_list[0] in ports_on_net) - self.assertTrue(port_list[1] in ports_on_net) - self._cisco_ucs_plugin.delete_port(self.tenant_id, self.net_id, - self.port_id) - self.tearDownNetworkPort(self.tenant_id, new_net_dict[const.NET_ID], - port_dict2[const.PORT_ID]) + self.assertTrue(str(ports_on_net[1]) == str(port_list[1]) or + str(ports_on_net[1]) == str(port_list[0])) + self.assertTrue(str(ports_on_net[0]) == str(port_list[1]) or + str(ports_on_net[0]) == str(port_list[0])) - def _test_rename_network(self, new_name): - """ - Tests whether symbolic name is updated for the particular - Virtual Network. - """ - LOG.debug("UCSVICTestPlugin:_test_rename_network() called\n") - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - new_net_dict = self._cisco_ucs_plugin.rename_network( - self.tenant_id, self.net_id, new_name) - self.assertEqual(new_net_dict[const.NET_NAME], new_name) - self.tearDownNetwork(self.tenant_id, self.net_id) + self._cisco_ucs_plugin.delete_port( + self.tenant_id, new_net_dict[const.NET_ID], + port_dict1[const.PORTID], device_ip=self.device_ip, + ucs_inventory=self._ucs_inventory, + chassis_id=self.chassis_id, blade_id=self.blade_id, + blade_intf_distinguished_name=self.\ + blade_intf_distinguished_name, + least_rsvd_blade_dict=self._ucs_inventory.\ + get_least_reserved_blade()) + self.tearDownNetworkPort( + self.tenant_id, new_net_dict[const.NET_ID], + port_dict2[const.PORTID]) - def test_rename_network(self): - """ - Tests rename network. - """ - self._test_rename_network("new_test_network1") - - def _test_create_port(self, port_state): + def test_create_port(self): """ Tests creation of a port on the specified Virtual Network. """ LOG.debug("UCSVICTestPlugin:_test_create_port() called\n") - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - new_port_dict = self._cisco_ucs_plugin.create_port( - self.tenant_id, self.net_id, port_state, self.port_id) - self.assertEqual(new_port_dict[const.PORT_ID], self.port_id) - self.assertEqual(new_port_dict[const.PORT_STATE], port_state) - self.assertEqual(new_port_dict[const.ATTACHMENT], None) - profile_name = self._cisco_ucs_plugin._get_profile_name(self.port_id) - new_port_profile = new_port_dict[const.PORT_PROFILE] - self.assertEqual(new_port_profile[const.PROFILE_NAME], profile_name) - self.assertEqual(new_port_profile[const.PROFILE_VLAN_NAME], - conf.DEFAULT_VLAN_NAME) - self.assertEqual(new_port_profile[const.PROFILE_VLAN_ID], - conf.DEFAULT_VLAN_ID) - self.tearDownNetworkPort(self.tenant_id, self.net_id, self.port_id) - def test_create_port(self): - """ - Tests create port. - """ - self._test_create_port(const.PORT_UP) + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) + new_net_dict = self._cisco_ucs_plugin.create_network( + self.tenant_id, new_network[const.NETWORKNAME], + new_network[const.UUID], self.vlan_name, self.vlan_id, + device_ip=self.device_ip) + new_port = db.port_create(new_network[const.UUID], const.PORT_UP) + port_dict = self._cisco_ucs_plugin.create_port( + self.tenant_id, self.net_id, const.PORT_UP, + new_port[const.UUID], device_ip=self.device_ip, + ucs_inventory=self._ucs_inventory, + least_rsvd_blade_dict=self._ucs_inventory.\ + get_least_reserved_blade()) + self.assertEqual(port_dict[const.PORTID], new_port[const.UUID]) + profile_name = self._cisco_ucs_plugin.\ + _get_profile_name(port_dict[const.PORTID]) + self.assertTrue(profile_name != None) + self.tearDownNetworkPort( + self.tenant_id, new_net_dict[const.NET_ID], + port_dict[const.PORTID]) - def _test_delete_port(self, port_state): + def test_delete_port(self): """ Tests Deletion of a port on a specified Virtual Network, if the port contains a remote interface attachment, @@ -185,378 +227,255 @@ class UCSVICTestPlugin(unittest.TestCase): then the port can be deleted. """ LOG.debug("UCSVICTestPlugin:_test_delete_port() called\n") - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - self._cisco_ucs_plugin.create_port(self.tenant_id, self.net_id, - port_state, self.port_id) - self._cisco_ucs_plugin.delete_port(self.tenant_id, self.net_id, - self.port_id) - net = self._cisco_ucs_plugin._get_network(self.tenant_id, self.net_id) - self.assertEqual(net[const.NET_PORTS], {}) - self.tearDownNetwork(self.tenant_id, self.net_id) + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) + new_net_dict = self._cisco_ucs_plugin.create_network( + self.tenant_id, new_network[const.NETWORKNAME], + new_network[const.UUID], self.vlan_name, self.vlan_id, + device_ip=self.device_ip) + new_port = db.port_create(new_network[const.UUID], const.PORT_UP) + port_dict = self._cisco_ucs_plugin.create_port( + self.tenant_id, self.net_id, const.PORT_UP, + new_port[const.UUID], device_ip=self.device_ip, + ucs_inventory=self._ucs_inventory, + least_rsvd_blade_dict=self._ucs_inventory.\ + get_least_reserved_blade()) + port_bind = self._cisco_ucs_plugin.delete_port( + self.tenant_id, new_net_dict[const.NET_ID], + port_dict[const.PORTID], device_ip=self.device_ip, + ucs_inventory=self._ucs_inventory, + chassis_id=self.chassis_id, blade_id=self.blade_id, + blade_intf_distinguished_name=self.\ + blade_intf_distinguished_name, + least_rsvd_blade_dict=self._ucs_inventory.\ + get_least_reserved_blade()) - def test_delete_port(self): - """ - Tests delete port. - """ - self._test_delete_port(const.PORT_UP) + self.assertEqual(port_bind[const.PORTID], new_port[const.UUID]) + self.tearDownNetwork(self.tenant_id, new_net_dict[const.NET_ID]) - def _test_update_port(self, port_state): - """ - Tests Updation of the state of a port on the specified Virtual Network. - """ - LOG.debug("UCSVICTestPlugin:_test_update_port() called\n") - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - self._cisco_ucs_plugin.create_port(self.tenant_id, self.net_id, - port_state, self.port_id) - port = self._cisco_ucs_plugin.update_port( - self.tenant_id, self.net_id, - self.port_id, port_state) - self.assertEqual(port[const.PORT_STATE], port_state) - self.tearDownNetworkPort(self.tenant_id, self.net_id, self.port_id) - - def test_update_port_state_up(self): - """ - Tests update port state up - """ - self._test_update_port(const.PORT_UP) - - def test_update_port_state_down(self): - """ - Tests update port state down - """ - self._test_update_port(const.PORT_DOWN) - - def _test_get_port_details_state_up(self, port_state): + def _test_get_port_details(self, port_state): """ Tests whether user is able to retrieve a remote interface that is attached to this particular port when port state is Up. """ - LOG.debug("UCSVICTestPlugin:_test_get_port_details_state_up()" + - "called\n") - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - self._cisco_ucs_plugin.create_port(self.tenant_id, self.net_id, - port_state, self.port_id) - port = self._cisco_ucs_plugin.get_port_details( - self.tenant_id, self.net_id, self.port_id) - self.assertEqual(port[const.PORT_ID], self.port_id) - self.assertEqual(port[const.PORT_STATE], port_state) - self.assertEqual(port[const.ATTACHMENT], None) - new_port_profile = port[const.PORT_PROFILE] - profile_name = self._cisco_ucs_plugin._get_profile_name(self.port_id) - self.assertEqual(new_port_profile[const.PROFILE_VLAN_NAME], - conf.DEFAULT_VLAN_NAME) - self.assertEqual(new_port_profile[const.PROFILE_VLAN_ID], - conf.DEFAULT_VLAN_ID) - self.assertEqual(new_port_profile[const.PROFILE_NAME], profile_name) - self.tearDownNetworkPort(self.tenant_id, self.net_id, self.port_id) + LOG.debug("UCSVICTestPlugin:_test_get_port_details() called\n") + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) + new_net_dict = self._cisco_ucs_plugin.create_network( + self.tenant_id, new_network[const.NETWORKNAME], + new_network[const.UUID], self.vlan_name, self.vlan_id, + device_ip=self.device_ip) + new_port = db.port_create(new_network[const.UUID], port_state) + port_dict = self._cisco_ucs_plugin.create_port( + self.tenant_id, self.net_id, port_state, + new_port[const.UUID], device_ip=self.device_ip, + ucs_inventory=self._ucs_inventory, + least_rsvd_blade_dict=self._ucs_inventory.\ + get_least_reserved_blade()) - def _test_show_port_state_down(self, port_state): - """ - Tests whether user is able to retrieve a remote interface - that is attached to this particular port when port state is down. - """ - LOG.debug("UCSVICTestPlugin:_test_show_port_state_down()" + - "called\n") - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - self._cisco_ucs_plugin.create_port(self.tenant_id, self.net_id, - port_state, self.port_id) - port = self._cisco_ucs_plugin.get_port_details(self.tenant_id, - self.net_id, - self.port_id) - self.assertEqual(port[const.PORT_ID], self.port_id) - self.assertNotEqual(port[const.PORT_STATE], port_state) - self.assertEqual(port[const.ATTACHMENT], None) - new_port_profile = port[const.PORT_PROFILE] - profile_name = self._cisco_ucs_plugin._get_profile_name(self.port_id) - self.assertEqual(new_port_profile[const.PROFILE_VLAN_NAME], - conf.DEFAULT_VLAN_NAME) - self.assertEqual(new_port_profile[const.PROFILE_VLAN_ID], - conf.DEFAULT_VLAN_ID) - self.assertEqual(new_port_profile[const.PROFILE_NAME], profile_name) - self.tearDownNetworkPort(self.tenant_id, self.net_id, self.port_id) + port_detail = self._cisco_ucs_plugin.get_port_details( + self.tenant_id, new_net_dict[const.NET_ID], + port_dict[const.PORTID], device_ip=self.device_ip) + self.assertEqual(str(port_dict), str(port_detail)) + self.tearDownNetworkPort( + self.tenant_id, new_net_dict[const.NET_ID], + port_dict[const.PORTID]) def test_get_port_details_state_up(self): - """ - Tests get port details state up - """ - self._test_get_port_details_state_up(const.PORT_UP) + self._test_get_port_details(const.PORT_UP) def test_show_port_state_down(self): - """ - Tests show port state down - """ - self._test_show_port_state_down(const.PORT_DOWN) + self._test_get_port_details(const.PORT_DOWN) def test_create_port_profile(self): - """ - Tests create port profile - """ LOG.debug("UCSVICTestPlugin:test_create_port_profile() called\n") + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) + new_port = db.port_create(new_network[const.UUID], const.PORT_UP) + self._cisco_ucs_plugin._set_ucsm(self.device_ip) new_port_profile = self._cisco_ucs_plugin._create_port_profile( - self.tenant_id, self.net_id, self.port_id, - self.vlan_name, self.vlan_id) - profile_name = self._cisco_ucs_plugin._get_profile_name(self.port_id) + self.tenant_id, new_network[const.UUID], + new_port[const.UUID], self.vlan_name, + self.vlan_id) + profile_name = self._cisco_ucs_plugin.\ + _get_profile_name(new_port[const.UUID]) self.assertEqual(new_port_profile[const.PROFILE_NAME], profile_name) self.assertEqual(new_port_profile[const.PROFILE_VLAN_NAME], - self.vlan_name) + self.vlan_name) self.assertEqual(new_port_profile[const.PROFILE_VLAN_ID], self.vlan_id) - self._cisco_ucs_plugin._delete_port_profile(self.port_id, profile_name) + self._cisco_ucs_plugin._delete_port_profile(new_port[const.UUID], + profile_name) def test_delete_port_profile(self): - """ - Tests delete port profile - """ LOG.debug("UCSVICTestPlugin:test_delete_port_profile() called\n") + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) + new_port = db.port_create(new_network[const.UUID], const.PORT_UP) + self._cisco_ucs_plugin._set_ucsm(self.device_ip) self._cisco_ucs_plugin._create_port_profile( - self.tenant_id, self.net_id, self.port_id, self.vlan_name, - self.vlan_id) - profile_name = self._cisco_ucs_plugin._get_profile_name(self.port_id) - counter1 = self._cisco_ucs_plugin._port_profile_counter - self._cisco_ucs_plugin._delete_port_profile(self.port_id, - profile_name) - counter2 = self._cisco_ucs_plugin._port_profile_counter - self.assertNotEqual(counter1, counter2) + self.tenant_id, new_network[const.UUID], + new_port[const.UUID], self.vlan_name, + self.vlan_id) + profile_name = self._cisco_ucs_plugin.\ + _get_profile_name(new_port[const.UUID]) - def _test_plug_interface(self, remote_interface_id): + counter1 = self._cisco_ucs_plugin._port_profile_counter + self._cisco_ucs_plugin._delete_port_profile(new_port[const.UUID], + profile_name) + counter2 = self._cisco_ucs_plugin._port_profile_counter + self.assertEqual(counter1 - 1, counter2) + + def test_plug_interface(self, remote_interface_id=None, + new_vlanid=10, new_vlan_name='new_vlan'): """ Attaches a remote interface to the specified port on the specified Virtual Network. """ LOG.debug("UCSVICTestPlugin:_test_plug_interface() called\n") - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - self._cisco_ucs_plugin.create_port(self.tenant_id, self.net_id, - const.PORT_UP, self.port_id) - self._cisco_ucs_plugin.plug_interface(self.tenant_id, self.net_id, - self.port_id, - remote_interface_id) - port = self._cisco_ucs_plugin._get_port( - self.tenant_id, self.net_id, self.port_id) - self.assertEqual(port[const.ATTACHMENT], remote_interface_id) - port_profile = port[const.PORT_PROFILE] - new_vlan_name = self._cisco_ucs_plugin._get_vlan_name_for_network( - self.tenant_id, self.net_id) - new_vlan_id = self._cisco_ucs_plugin._get_vlan_id_for_network( - self.tenant_id, self.net_id) - self.assertEqual(port_profile[const.PROFILE_VLAN_NAME], new_vlan_name) - self.assertEqual(port_profile[const.PROFILE_VLAN_ID], new_vlan_id) - self.tearDownNetworkPortInterface(self.tenant_id, self.net_id, - self.port_id) + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) + new_net_dict = self._cisco_ucs_plugin.create_network( + self.tenant_id, new_network[const.NETWORKNAME], + new_network[const.UUID], self.vlan_name, self.vlan_id, + device_ip=self.device_ip) + new_port = db.port_create(new_network[const.UUID], const.PORT_UP) + port_dict = self._cisco_ucs_plugin.create_port( + self.tenant_id, new_net_dict[const.NET_ID], + const.PORT_UP, new_port[const.UUID], + device_ip=self.device_ip, + ucs_inventory=self._ucs_inventory, + least_rsvd_blade_dict=self._ucs_inventory.\ + get_least_reserved_blade()) + cdb.update_vlan_binding(new_network[const.UUID], + str(new_vlanid), new_vlan_name) + port_bind = self._cisco_ucs_plugin.plug_interface( + self.tenant_id, new_net_dict[const.NET_ID], + port_dict[const.PORTID], remote_interface_id, + device_ip=self.device_ip) + self.assertEqual(port_bind[const.VLANNAME], new_vlan_name) + self.assertEqual(port_bind[const.VLANID], new_vlanid) + self.tearDownNetworkPortInterface( + self.tenant_id, new_net_dict[const.NET_ID], + new_port[const.UUID]) - def test_plug_interface(self): - """ - Tests test plug interface - """ - self._test_plug_interface("4") - - def _test_unplug_interface(self, remote_interface_id): + def test_unplug_interface(self, remote_interface_id=None, + new_vlanid=10, new_vlan_name='new_vlan'): """ Tests whether remote interface detaches from the specified port on the specified Virtual Network. """ LOG.debug("UCSVICTestPlugin:_test_unplug_interface() called\n") - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - self._cisco_ucs_plugin.create_port(self.tenant_id, self.net_id, - const.PORT_UP, self.port_id) - self._cisco_ucs_plugin.plug_interface(self.tenant_id, self.net_id, - self.port_id, - remote_interface_id) - self._cisco_ucs_plugin.unplug_interface(self.tenant_id, self.net_id, - self.port_id) - port = self._cisco_ucs_plugin._get_port( - self.tenant_id, self.net_id, self.port_id) - self.assertEqual(port[const.ATTACHMENT], None) - port_profile = port[const.PORT_PROFILE] - self.assertEqual(port_profile[const.PROFILE_VLAN_NAME], - conf.DEFAULT_VLAN_NAME) - self.assertEqual(port_profile[const.PROFILE_VLAN_ID], - conf.DEFAULT_VLAN_ID) - self.tearDownNetworkPort(self.tenant_id, self.net_id, self.port_id) + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) + new_net_dict = self._cisco_ucs_plugin.create_network( + self.tenant_id, new_network[const.NETWORKNAME], + new_network[const.UUID], self.vlan_name, self.vlan_id, + device_ip=self.device_ip) + new_port = db.port_create(new_network[const.UUID], const.PORT_UP) + port_dict = self._cisco_ucs_plugin.create_port( + self.tenant_id, new_net_dict[const.NET_ID], + const.PORT_UP, new_port[const.UUID], + device_ip=self.device_ip, + ucs_inventory=self._ucs_inventory, + least_rsvd_blade_dict=self._ucs_inventory.\ + get_least_reserved_blade()) + cdb.update_vlan_binding(new_network[const.UUID], + str(new_vlanid), new_vlan_name) + self._cisco_ucs_plugin.plug_interface( + self.tenant_id, new_net_dict[const.NET_ID], + port_dict[const.PORTID], remote_interface_id, + device_ip=self.device_ip) - def test_unplug_interface(self): - """ - Tests unplug interface - """ - self._test_unplug_interface("4") + port_bind = self._cisco_ucs_plugin.unplug_interface( + self.tenant_id, new_net_dict[const.NET_ID], + port_dict[const.PORTID], device_ip=self.device_ip) + self.assertEqual(port_bind[const.VLANNAME], self.vlan_name) + self.assertEqual(port_bind[const.VLANID], self.vlan_id) + self.tearDownNetworkPortInterface( + self.tenant_id, new_net_dict[const.NET_ID], + new_port[const.UUID]) def test_get_vlan_name_for_network(self): - """ - Tests get vlan name for network - """ LOG.debug("UCSVICTestPlugin:test_get_vlan_name_for_network() called\n") - net = self._cisco_ucs_plugin.create_network( - self.tenant_id, self.net_name, self.net_id, - self.vlan_name, self.vlan_id) - self.assertEqual(net[const.NET_VLAN_NAME], self.vlan_name) - self.tearDownNetwork(self.tenant_id, self.net_id) + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) + vlan_bind_name = self._cisco_ucs_plugin._get_vlan_name_for_network( + self.tenant_id, new_network[const.UUID]) + + self.assertEqual(vlan_bind_name, self.vlan_name) def test_get_vlan_id_for_network(self): - """ - Tests get vlan id for network - """ LOG.debug("UCSVICTestPlugin:test_get_vlan_id_for_network() called\n") - net = self._cisco_ucs_plugin.create_network( - self.tenant_id, self.net_name, self.net_id, self.vlan_name, - self.vlan_id) - self.assertEqual(net[const.NET_VLAN_ID], self.vlan_id) - self.tearDownNetwork(self.tenant_id, self.net_id) + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) + vlan_bind_id = self._cisco_ucs_plugin._get_vlan_id_for_network( + self.tenant_id, new_network[const.UUID]) + self.assertEqual(str(vlan_bind_id), self.vlan_id) - def test_get_network(self): - """ - Tests get network - """ - LOG.debug("UCSVICTestPlugin:test_get_network() called\n") - net = self._cisco_ucs_plugin.create_network( - self.tenant_id, self.net_name, self.net_id, self.vlan_name, - self.vlan_id) - self.assertEqual(net[const.NET_ID], self.net_id) - self.tearDownNetwork(self.tenant_id, self.net_id) - - def test_get_port(self): - """ - Tests get port - """ - LOG.debug("UCSVICTestPlugin:test_get_port() called\n") - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - new_port_dict = self._cisco_ucs_plugin.create_port( - self.tenant_id, self.net_id, - const.PORT_UP, self.port_id) - self.assertEqual(new_port_dict[const.PORT_ID], self.port_id) - self.tearDownNetworkPort(self.tenant_id, self.net_id, self.port_id) - - def test_get_network_NetworkNotFound(self): - """ - Tests get network not found - """ + def test_show_network_NetworkNotFound(self): self.assertRaises(exc.NetworkNotFound, - self._cisco_ucs_plugin._get_network, - self.tenant_id, self.net_id) + self._cisco_ucs_plugin.get_network_details, + self.tenant_id, self.net_id, + device_ip=self.device_ip) def test_delete_network_NetworkNotFound(self): - """ - Tests delete network not found - """ self.assertRaises(exc.NetworkNotFound, self._cisco_ucs_plugin.delete_network, - self.tenant_id, self.net_id) - - def test_delete_port_PortInUse(self): - """ - Tests delete port in use - """ - self._test_delete_port_PortInUse("4") - - def _test_delete_port_PortInUse(self, remote_interface_id): - """ - Tests delete port in use - """ - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - self._cisco_ucs_plugin.create_port(self.tenant_id, self.net_id, - const.PORT_UP, self.port_id) - self._cisco_ucs_plugin.plug_interface(self.tenant_id, self.net_id, - self.port_id, - remote_interface_id) - self.assertRaises(exc.PortInUse, self._cisco_ucs_plugin.delete_port, - self.tenant_id, self.net_id, self.port_id) - self.tearDownNetworkPortInterface(self.tenant_id, self.net_id, - self.port_id) + self.tenant_id, self.net_id, + device_ip=self.device_ip) def test_delete_port_PortNotFound(self): - """ - Tests delete port not found - """ - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - self.assertRaises(exc.PortNotFound, self._cisco_ucs_plugin.delete_port, - self.tenant_id, self.net_id, self.port_id) - self.tearDownNetwork(self.tenant_id, self.net_id) + new_network = db.network_create(self.tenant_id, self.net_name) + cdb.add_vlan_binding(str(self.vlan_id), self.vlan_name, + new_network[const.UUID]) + new_net_dict = self._cisco_ucs_plugin.create_network( + self.tenant_id, new_network[const.NETWORKNAME], + new_network[const.UUID], self.vlan_name, self.vlan_id, + device_ip=self.device_ip) - def test_plug_interface_PortInUse(self): - """ - Tests plug interface port in use - """ - self._test_plug_interface_PortInUse("6", "5") + self.assertRaises(c_exc.PortVnicNotFound, + self._cisco_ucs_plugin.delete_port, + self.tenant_id, new_net_dict[const.NET_ID], + self.port_id, device_ip=self.device_ip, + ucs_inventory=self._ucs_inventory, + chassis_id=self.chassis_id, blade_id=self.blade_id, + blade_intf_distinguished_name=self.\ + blade_intf_distinguished_name, + least_rsvd_blade_dict=self._ucs_inventory.\ + get_least_reserved_blade()) - def _test_plug_interface_PortInUse(self, remote_interface_id1, - remote_interface_id2): - """ - Tests plug interface port in use - """ - LOG.debug("UCSVICTestPlugin:_test_plug_interface_PortInUse() called\n") - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - self._cisco_ucs_plugin.create_port(self.tenant_id, self.net_id, - const.PORT_UP, self.port_id) - self._cisco_ucs_plugin.plug_interface(self.tenant_id, self.net_id, - self.port_id, - remote_interface_id1) - self.assertRaises(exc.PortInUse, self._cisco_ucs_plugin.plug_interface, - self.tenant_id, self.net_id, self.port_id, - remote_interface_id2) - self.tearDownNetworkPortInterface(self.tenant_id, self.net_id, - self.port_id) + self.tearDownNetwork(self.tenant_id, new_net_dict[const.NET_ID]) - def test_attachment_exists(self): - """ - Tests attachment exists - """ - LOG.debug("UCSVICTestPlugin:testValidateAttachmentAlreadyAttached") - self._test_attachment_exists("4") - - def _test_attachment_exists(self, remote_interface_id): - """ - Tests attachment exists - """ - LOG.debug("UCSVICTestPlugin:_test_validate_attachmentAlreadyAttached") - self._cisco_ucs_plugin.create_network(self.tenant_id, self.net_name, - self.net_id, self.vlan_name, - self.vlan_id) - self._cisco_ucs_plugin.create_port(self.tenant_id, self.net_id, - const.PORT_UP, self.port_id) - self._cisco_ucs_plugin.plug_interface(self.tenant_id, self.net_id, - self.port_id, - remote_interface_id) - self.assertRaises( - exc.PortInUse, self._cisco_ucs_plugin._validate_attachment, - self.tenant_id, self.net_id, self.port_id, remote_interface_id) - self.tearDownNetworkPortInterface(self.tenant_id, self.net_id, - self.port_id) + def tearDown(self): + """Clear the test environment""" + # Remove database contents + db.clear_db() def tearDownNetwork(self, tenant_id, net_id): - """ - Tear down network - """ - self._cisco_ucs_plugin.delete_network(tenant_id, net_id) + self._cisco_ucs_plugin.delete_network(tenant_id, net_id, + device_ip=self.device_ip) def tearDownNetworkPort(self, tenant_id, net_id, port_id): - """ - Tear down network port - """ - self._cisco_ucs_plugin.delete_port(tenant_id, net_id, - port_id) + self._cisco_ucs_plugin.delete_port( + tenant_id, net_id, port_id, device_ip=self.device_ip, + ucs_inventory=self._ucs_inventory, + chassis_id=self.chassis_id, blade_id=self.blade_id, + blade_intf_distinguished_name=self.\ + blade_intf_distinguished_name, + least_rsvd_blade_dict=self._ucs_inventory.\ + get_least_reserved_blade()) self.tearDownNetwork(tenant_id, net_id) def tearDownNetworkPortInterface(self, tenant_id, net_id, port_id): - """ - Tear down network port interface - """ - self._cisco_ucs_plugin.unplug_interface(tenant_id, net_id, - port_id) + self._cisco_ucs_plugin.unplug_interface( + tenant_id, net_id, port_id, + device_ip=self.device_ip) self.tearDownNetworkPort(tenant_id, net_id, port_id) From 298b520188cfb26158cf627a733870843714d64f Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Fri, 7 Jan 2011 19:46:28 -0500 Subject: [PATCH 16/18] Adding UCS inventory tests --- .../cisco/tests/unit/test_ucs_inventory.py | 204 ++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 quantum/plugins/cisco/tests/unit/test_ucs_inventory.py diff --git a/quantum/plugins/cisco/tests/unit/test_ucs_inventory.py b/quantum/plugins/cisco/tests/unit/test_ucs_inventory.py new file mode 100644 index 0000000000..7276f4e0dd --- /dev/null +++ b/quantum/plugins/cisco/tests/unit/test_ucs_inventory.py @@ -0,0 +1,204 @@ +""" +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright 2011 Cisco Systems, Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# @author: Shubhangi Satras, Cisco Systems, Inc. +# @author: Tyler Smith, Cisco Systems, Inc. +# +""" + +import unittest +import logging as LOG + +from quantum.common import exceptions as exc +from quantum.plugins.cisco.l2network_plugin import L2Network +from quantum.plugins.cisco.common import cisco_constants as const +from quantum.plugins.cisco.common import cisco_credentials as creds +from quantum.plugins.cisco.db import api as db +from quantum.plugins.cisco.db import l2network_db as cdb +from quantum.plugins.cisco.ucs.cisco_ucs_inventory import UCSInventory + +LOG.basicConfig(level=LOG.WARN) +LOG.getLogger(__name__) + +# Set some data to use in tests +tenant = 'shubh' +net_name = 'TestNetwork1' +port_state = const.PORT_UP +interface_id = 'vif-01' + + +class TestUCSInventory(unittest.TestCase): + """ + Tests for the UCS Inventory. Each high-level operation should return + some information about which devices to perform the action on. + """ + + def setUp(self): + """Setup our tests""" + # Initialize cdb and credentials + db.configure_db({'sql_connection': 'sqlite:///:memory:'}) + cdb.initialize() + creds.Store.initialize() + + # Create the ucs inventory object + self._ucs_inventory = UCSInventory() + self.inventory = self._ucs_inventory._inventory + + # Create a plugin instance to create networks/ports + self._l2network = L2Network() + + def assertValidUCM(self, ip_address): + """Asserts that the given ip is in the UCS inventory""" + if ip_address in self.inventory.keys(): + assert(1) + return + assert(0) + + def assertPortNotFound(self, cmd, args): + """Asserts that the given command raises a PortNotFound exception""" + cmd = getattr(self._ucs_inventory, cmd) + self.assertRaises(exc.PortNotFound, cmd, args) + + def _test_get_all_ucms(self, cmd): + """Runs tests for commands that expect a list of all UCMS""" + LOG.debug("test_%s - START", cmd) + results = getattr(self._ucs_inventory, cmd)([]) + self.assertEqual(results[const.DEVICE_IP], self.inventory.keys()) + LOG.debug("test_%s - END", cmd) + + def _test_with_port_creation(self, cmd, params=None): + """Tests commands that requires a port to exist""" + LOG.debug("test_%s - START", cmd) + net = self._l2network.create_network(tenant, net_name) + port = self._l2network.create_port(tenant, net[const.NET_ID], + port_state) + + args = [tenant, net[const.NET_ID], port[const.PORT_ID]] + if params is not None: + args.extend(params) + + ip_address = getattr(self._ucs_inventory, cmd)(args) + ip_address = ip_address[const.DEVICE_IP][0] + self.assertValidUCM(ip_address) + + # Clean up created network and port + try: + self._l2network.unplug_interface(tenant, + net[const.NET_ID], port[const.PORT_ID]) + except: + pass + self._l2network.delete_port(tenant, + net[const.NET_ID], port[const.PORT_ID]) + self._l2network.delete_network(tenant, net[const.NET_ID]) + + LOG.debug("test_%s - END", cmd) + + def _test_port_not_found(self, cmd, params=None): + """Tests commands that should raise a PortNotFound exception""" + # Figure out the correct name of this test + name = cmd + if name[-5:] == "_port": + name += "_not_found" + else: + name += "_port_not_found" + + LOG.debug("test_%s - START", name) + args = [tenant, 1, 1] + if params is not None: + args.extend(params) + + self.assertPortNotFound(cmd, args) + LOG.debug("test_%s - END", name) + + def test_create_port(self): + """Test that the UCS Inventory returns the correct devices to use""" + LOG.debug("test_create_port - START") + results = self._ucs_inventory.create_port([]) + results = results[const.LEAST_RSVD_BLADE_DICT] + + ip_address = results[const.LEAST_RSVD_BLADE_UCSM] + chassis = results[const.LEAST_RSVD_BLADE_CHASSIS] + blade = results[const.LEAST_RSVD_BLADE_ID] + + if blade not in self.inventory[ip_address][chassis]: + self.assertEqual(0, 1) + self.assertEqual(1, 1) + LOG.debug("test_create_port - END") + + def test_get_all_networks(self): + """Test that the UCS Inventory returns the correct devices to use""" + self._test_get_all_ucms('get_all_networks') + + def test_create_network(self): + """Test that the UCS Inventory returns the correct devices to use""" + self._test_get_all_ucms('create_network') + + def test_delete_network(self): + """Test that the UCS Inventory returns the correct devices to use""" + self._test_get_all_ucms('delete_network') + + def test_get_network_details(self): + """Test that the UCS Inventory returns the correct devices to use""" + self._test_get_all_ucms('get_network_details') + + def test_rename_network(self): + """Test that the UCS Inventory returns the correct devices to use""" + self._test_get_all_ucms('rename_network') + + def test_get_all_ports(self): + """Test that the UCS Inventory returns the correct devices to use""" + self._test_get_all_ucms('get_all_ports') + + def test_delete_port(self): + """Test that the UCS Inventory returns a valid UCM""" + self._test_with_port_creation('delete_port') + + def test_get_port_details(self): + """Test that the UCS Inventory returns a valid UCM""" + self._test_with_port_creation('get_port_details') + + def test_update_port(self): + """Test that the UCS Inventory returns a valid UCM""" + self._test_with_port_creation('update_port', [port_state]) + + def test_plug_interface(self): + """Test that the UCS Inventory returns a valid UCM""" + self._test_with_port_creation('plug_interface', [interface_id]) + + def test_unplug_interface(self): + """Test that the UCS Inventory returns a valid UCM""" + self._test_with_port_creation('unplug_interface') + + def test_delete_port_not_found(self): + """Test that the UCS Inventory raises a PortNotFound exception""" + self._test_port_not_found('delete_port') + + def test_update_port_not_found(self): + """Test that the UCS Inventory raises a PortNotFound exception""" + self._test_port_not_found('update_port') + + def test_get_port_details_port_not_found(self): + """Test that the UCS Inventory raises a PortNotFound exception""" + self._test_port_not_found('get_port_details') + + def test_plug_interface_port_not_found(self): + """Test that the UCS Inventory raises a PortNotFound exception""" + self._test_port_not_found('plug_interface', [interface_id]) + + def test_unplug_interface_port_not_found(self): + """Test that the UCS Inventory raises a PortNotFound exception""" + self._test_port_not_found('unplug_interface') From a63a1f0012f09f895313a2642c2f7103eeddbcfd Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Sat, 8 Jan 2011 01:40:40 -0500 Subject: [PATCH 17/18] Fixing issues discussed in merge prop. The UCS Inventory clears the DB on teardown. The multiblade tests now check to see if a port exists in the db before deleting it. It checks to make sure the UCSInventory is set in the config. --- .../tests/unit/test_l2network_multi_blade.py | 23 +++++++++++++------ .../cisco/tests/unit/test_ucs_inventory.py | 1 + 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py index bbbcf1e845..6e46381db9 100644 --- a/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py +++ b/quantum/plugins/cisco/tests/unit/test_l2network_multi_blade.py @@ -55,11 +55,7 @@ def vlan_name(id): class TestMultiBlade(unittest.TestCase): """ - Implements the L2NetworkModelBase - This implementation works with UCS and Nexus plugin for the - following topology: - One or more UCSM (each with one or more chasses connected) - All UCSM connected to a single Nexus Switch + Tests for the multi-blade model for the L2Network plugin """ _plugins = {} _inventory = {} @@ -83,8 +79,9 @@ class TestMultiBlade(unittest.TestCase): # Get UCS inventory to make sure all UCSs are affected by tests for key in conf.PLUGINS[const.PLUGINS].keys(): - self._inventory[key] = utils.import_object( - conf.PLUGINS[const.INVENTORY][key]) + if key in conf.PLUGINS[const.INVENTORY].keys(): + self._inventory[key] = utils.import_object( + conf.PLUGINS[const.INVENTORY][key]) self.ucs_count = self._inventory['ucs_plugin'].\ _inventory.__len__() @@ -92,13 +89,18 @@ class TestMultiBlade(unittest.TestCase): def tearDown(self): """Tear down our tests""" try: + port = db.port_get(self.net_id, self.port_id) self._l2network_multiblade.delete_port([tenant_id, self.net_id, self.port_id]) + except exc.NetworkNotFound: + # We won't always have a port to remove + pass except exc.PortNotFound: # We won't always have a port to remove pass try: + net = db.network_get(self.net_id) self._l2network_multiblade.delete_network([tenant_id, self.net_id]) except exc.NetworkNotFound: # We won't always have a network to remove @@ -245,6 +247,13 @@ class TestMultiBlade(unittest.TestCase): self.port_id]) self.assertEqual(self.port_id, port[0][const.PORTID]) + + # Recreating port so tear down doesn't cause an error + self.port_id = db.port_create(self.net_id, port_state)[const.UUID] + self._l2network_multiblade.create_port([tenant_id, + self.net_id, + port_state, self.port_id]) + LOG.debug("test_delete_port - END") def test_get_all_ports(self): diff --git a/quantum/plugins/cisco/tests/unit/test_ucs_inventory.py b/quantum/plugins/cisco/tests/unit/test_ucs_inventory.py index 7276f4e0dd..a3e30034f9 100644 --- a/quantum/plugins/cisco/tests/unit/test_ucs_inventory.py +++ b/quantum/plugins/cisco/tests/unit/test_ucs_inventory.py @@ -104,6 +104,7 @@ class TestUCSInventory(unittest.TestCase): self._l2network.delete_port(tenant, net[const.NET_ID], port[const.PORT_ID]) self._l2network.delete_network(tenant, net[const.NET_ID]) + db.clear_db() LOG.debug("test_%s - END", cmd) From 3aacfcbfb77d6e8b293cb8c621185e20b0caa914 Mon Sep 17 00:00:00 2001 From: Shweta P Date: Fri, 9 Sep 2011 15:20:07 -0700 Subject: [PATCH 18/18] Minor Fix in ucs tests --- .../cisco/tests/unit/test_ucs_inventory.py | 4 ---- .../cisco/tests/unit/test_ucs_plugin.py | 24 +++++++++---------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/quantum/plugins/cisco/tests/unit/test_ucs_inventory.py b/quantum/plugins/cisco/tests/unit/test_ucs_inventory.py index 7276f4e0dd..13fd9bb4d2 100644 --- a/quantum/plugins/cisco/tests/unit/test_ucs_inventory.py +++ b/quantum/plugins/cisco/tests/unit/test_ucs_inventory.py @@ -183,10 +183,6 @@ class TestUCSInventory(unittest.TestCase): """Test that the UCS Inventory returns a valid UCM""" self._test_with_port_creation('unplug_interface') - def test_delete_port_not_found(self): - """Test that the UCS Inventory raises a PortNotFound exception""" - self._test_port_not_found('delete_port') - def test_update_port_not_found(self): """Test that the UCS Inventory raises a PortNotFound exception""" self._test_port_not_found('update_port') diff --git a/quantum/plugins/cisco/tests/unit/test_ucs_plugin.py b/quantum/plugins/cisco/tests/unit/test_ucs_plugin.py index 721532be5c..6c1e54a701 100644 --- a/quantum/plugins/cisco/tests/unit/test_ucs_plugin.py +++ b/quantum/plugins/cisco/tests/unit/test_ucs_plugin.py @@ -158,20 +158,20 @@ class UCSVICTestPlugin(unittest.TestCase): new_port1[const.UUID], device_ip=self.device_ip, ucs_inventory=self._ucs_inventory, least_rsvd_blade_dict=self._ucs_inventory.\ - get_least_reserved_blade()) + _get_least_reserved_blade()) new_port2 = db.port_create(new_network[const.UUID], const.PORT_UP) port_dict2 = self._cisco_ucs_plugin.create_port( self.tenant_id, self.net_id, const.PORT_UP, new_port2[const.UUID], device_ip=self.device_ip, ucs_inventory=self._ucs_inventory, least_rsvd_blade_dict=self._ucs_inventory.\ - get_least_reserved_blade()) + _get_least_reserved_blade()) ports_on_net = self._cisco_ucs_plugin.get_all_ports( self.tenant_id, new_net_dict[const.NET_ID], device_ip=self.device_ip, ucs_inventory=self._ucs_inventory, least_rsvd_blade_dict=self._ucs_inventory.\ - get_least_reserved_blade()) + _get_least_reserved_blade()) port_list = [port_dict1, port_dict2] self.assertTrue(str(ports_on_net[1]) == str(port_list[1]) or str(ports_on_net[1]) == str(port_list[0])) @@ -186,7 +186,7 @@ class UCSVICTestPlugin(unittest.TestCase): blade_intf_distinguished_name=self.\ blade_intf_distinguished_name, least_rsvd_blade_dict=self._ucs_inventory.\ - get_least_reserved_blade()) + _get_least_reserved_blade()) self.tearDownNetworkPort( self.tenant_id, new_net_dict[const.NET_ID], port_dict2[const.PORTID]) @@ -210,7 +210,7 @@ class UCSVICTestPlugin(unittest.TestCase): new_port[const.UUID], device_ip=self.device_ip, ucs_inventory=self._ucs_inventory, least_rsvd_blade_dict=self._ucs_inventory.\ - get_least_reserved_blade()) + _get_least_reserved_blade()) self.assertEqual(port_dict[const.PORTID], new_port[const.UUID]) profile_name = self._cisco_ucs_plugin.\ _get_profile_name(port_dict[const.PORTID]) @@ -240,7 +240,7 @@ class UCSVICTestPlugin(unittest.TestCase): new_port[const.UUID], device_ip=self.device_ip, ucs_inventory=self._ucs_inventory, least_rsvd_blade_dict=self._ucs_inventory.\ - get_least_reserved_blade()) + _get_least_reserved_blade()) port_bind = self._cisco_ucs_plugin.delete_port( self.tenant_id, new_net_dict[const.NET_ID], port_dict[const.PORTID], device_ip=self.device_ip, @@ -249,7 +249,7 @@ class UCSVICTestPlugin(unittest.TestCase): blade_intf_distinguished_name=self.\ blade_intf_distinguished_name, least_rsvd_blade_dict=self._ucs_inventory.\ - get_least_reserved_blade()) + _get_least_reserved_blade()) self.assertEqual(port_bind[const.PORTID], new_port[const.UUID]) self.tearDownNetwork(self.tenant_id, new_net_dict[const.NET_ID]) @@ -273,7 +273,7 @@ class UCSVICTestPlugin(unittest.TestCase): new_port[const.UUID], device_ip=self.device_ip, ucs_inventory=self._ucs_inventory, least_rsvd_blade_dict=self._ucs_inventory.\ - get_least_reserved_blade()) + _get_least_reserved_blade()) port_detail = self._cisco_ucs_plugin.get_port_details( self.tenant_id, new_net_dict[const.NET_ID], @@ -350,7 +350,7 @@ class UCSVICTestPlugin(unittest.TestCase): device_ip=self.device_ip, ucs_inventory=self._ucs_inventory, least_rsvd_blade_dict=self._ucs_inventory.\ - get_least_reserved_blade()) + _get_least_reserved_blade()) cdb.update_vlan_binding(new_network[const.UUID], str(new_vlanid), new_vlan_name) port_bind = self._cisco_ucs_plugin.plug_interface( @@ -384,7 +384,7 @@ class UCSVICTestPlugin(unittest.TestCase): device_ip=self.device_ip, ucs_inventory=self._ucs_inventory, least_rsvd_blade_dict=self._ucs_inventory.\ - get_least_reserved_blade()) + _get_least_reserved_blade()) cdb.update_vlan_binding(new_network[const.UUID], str(new_vlanid), new_vlan_name) self._cisco_ucs_plugin.plug_interface( @@ -450,7 +450,7 @@ class UCSVICTestPlugin(unittest.TestCase): blade_intf_distinguished_name=self.\ blade_intf_distinguished_name, least_rsvd_blade_dict=self._ucs_inventory.\ - get_least_reserved_blade()) + _get_least_reserved_blade()) self.tearDownNetwork(self.tenant_id, new_net_dict[const.NET_ID]) @@ -471,7 +471,7 @@ class UCSVICTestPlugin(unittest.TestCase): blade_intf_distinguished_name=self.\ blade_intf_distinguished_name, least_rsvd_blade_dict=self._ucs_inventory.\ - get_least_reserved_blade()) + _get_least_reserved_blade()) self.tearDownNetwork(tenant_id, net_id) def tearDownNetworkPortInterface(self, tenant_id, net_id, port_id):