/quantum/plugins/cisco/tests/unit/test_nexus_plugin.py

https://github.com/rnirmal/quantum · Python · 286 lines · 194 code · 42 blank · 50 comment · 38 complexity · aa7970ccad09f75a1c2d40edfa433e9d MD5 · raw file

  1. # copyright 2011 Cisco Systems, Inc. All rights reserved.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License"); you may
  4. # not use this file except in compliance with the License. You may obtain
  5. # a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  11. # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  12. # License for the specific language governing permissions and limitations
  13. # under the License.
  14. #
  15. # @author: Shweta Padubidri, Peter Strunk, Cisco Systems, Inc.
  16. #
  17. import logging
  18. import unittest
  19. from quantum.common import exceptions as exc
  20. from quantum.plugins.cisco.common import cisco_constants as const
  21. from quantum.plugins.cisco.db import l2network_db as cdb
  22. from quantum.plugins.cisco.db import api as db
  23. from quantum.plugins.cisco.nexus import cisco_nexus_plugin
  24. LOG = logging.getLogger('quantum.tests.test_nexus')
  25. class TestNexusPlugin(unittest.TestCase):
  26. def setUp(self):
  27. """
  28. Set up function
  29. """
  30. self.tenant_id = "test_tenant_cisco1"
  31. self.net_name = "test_network_cisco1"
  32. self.net_id = 000007
  33. self.vlan_name = "q-" + str(self.net_id) + "vlan"
  34. self.vlan_id = 267
  35. self.port_id = "9"
  36. cdb.initialize()
  37. self._cisco_nexus_plugin = cisco_nexus_plugin.NexusPlugin()
  38. def test_create_network(self, net_tenant_id=None, network_name=None,
  39. network_id=None, net_vlan_name=None,
  40. net_vlan_id=None):
  41. """
  42. Tests creation of new Virtual Network.
  43. """
  44. LOG.debug("test_create_network - START")
  45. if net_tenant_id:
  46. tenant_id = net_tenant_id
  47. else:
  48. tenant_id = self.tenant_id
  49. if network_name:
  50. net_name = network_name
  51. else:
  52. net_name = self.net_name
  53. if network_id:
  54. net_id = network_id
  55. else:
  56. net_id = self.net_id
  57. if net_vlan_name:
  58. vlan_name = net_vlan_name
  59. else:
  60. vlan_name = self.vlan_name
  61. if net_vlan_id:
  62. vlan_id = net_vlan_id
  63. else:
  64. vlan_id = self.vlan_id
  65. network_created = self.create_network(tenant_id, net_id)
  66. cdb.add_vlan_binding(vlan_id, vlan_name, network_created["net-id"])
  67. new_net_dict = self._cisco_nexus_plugin.create_network(
  68. tenant_id, net_name, net_id, vlan_name, vlan_id)
  69. self.assertEqual(new_net_dict[const.NET_ID], self.net_id)
  70. self.assertEqual(new_net_dict[const.NET_NAME], self.net_name)
  71. self.assertEqual(new_net_dict[const.NET_VLAN_NAME], self.vlan_name)
  72. self.assertEqual(new_net_dict[const.NET_VLAN_ID], self.vlan_id)
  73. self.tearDownNetwork(tenant_id, new_net_dict[const.NET_ID])
  74. LOG.debug("test_create_network - END")
  75. def test_delete_network(self, net_tenant_id=None, network_id=None):
  76. """
  77. Tests deletion of a Virtual Network.
  78. """
  79. LOG.debug("test_delete_network - START")
  80. if net_tenant_id:
  81. tenant_id = net_tenant_id
  82. else:
  83. tenant_id = self.tenant_id
  84. if network_id:
  85. net_id = network_id
  86. else:
  87. net_id = self.net_id
  88. new_net_dict = self._cisco_nexus_plugin.create_network(
  89. tenant_id, self.net_name, net_id, self.vlan_name, self.vlan_id)
  90. deleted_net_dict = self._cisco_nexus_plugin.delete_network(
  91. tenant_id, new_net_dict[const.NET_ID])
  92. self.assertEqual(deleted_net_dict[const.NET_ID], net_id)
  93. LOG.debug("test_delete_network - END")
  94. def test_delete_network_DNE(self, net_tenant_id=None, net_id='0005'):
  95. """
  96. Tests deletion of a Virtual Network when Network does not exist.
  97. """
  98. LOG.debug("test_delete_network_DNE - START")
  99. if net_tenant_id:
  100. tenant_id = net_tenant_id
  101. else:
  102. tenant_id = self.tenant_id
  103. self.assertRaises(exc.NetworkNotFound,
  104. self._cisco_nexus_plugin.delete_network,
  105. tenant_id, net_id)
  106. LOG.debug("test_delete_network_DNE - END")
  107. def test_get_network_details(self, net_tenant_id=None, network_id=None):
  108. """
  109. Tests displays details of a Virtual Network .
  110. """
  111. LOG.debug("test_get_network_details - START")
  112. if net_tenant_id:
  113. tenant_id = net_tenant_id
  114. else:
  115. tenant_id = self.tenant_id
  116. if network_id:
  117. net_id = network_id
  118. else:
  119. net_id = self.net_id
  120. new_net_dict = self._cisco_nexus_plugin.create_network(
  121. tenant_id, self.net_name, net_id, self.vlan_name, self.vlan_id)
  122. check_net_dict = self._cisco_nexus_plugin.get_network_details(
  123. tenant_id, net_id)
  124. self.assertEqual(check_net_dict[const.NET_ID], net_id)
  125. self.assertEqual(check_net_dict[const.NET_NAME], self.net_name)
  126. self.assertEqual(check_net_dict[const.NET_VLAN_NAME], self.vlan_name)
  127. self.assertEqual(check_net_dict[const.NET_VLAN_ID], self.vlan_id)
  128. self.tearDownNetwork(tenant_id, new_net_dict[const.NET_ID])
  129. LOG.debug("test_get_network_details - END")
  130. def test_get_networkDNE(self, net_tenant_id=None, net_id='0005'):
  131. """
  132. Tests display of a Virtual Network when Network does not exist.
  133. """
  134. LOG.debug("test_get_network_details_network_does_not_exist - START")
  135. if net_tenant_id:
  136. tenant_id = net_tenant_id
  137. else:
  138. tenant_id = self.tenant_id
  139. self.assertRaises(exc.NetworkNotFound,
  140. self._cisco_nexus_plugin.get_network_details,
  141. tenant_id, net_id)
  142. LOG.debug("test_get_network_details_network_does_not_exist - END")
  143. def test_rename_network(self, new_name="new_network_name",
  144. net_tenant_id=None, network_id=None):
  145. """
  146. Tests rename of a Virtual Network .
  147. """
  148. LOG.debug("test_rename_network - START")
  149. if net_tenant_id:
  150. tenant_id = net_tenant_id
  151. else:
  152. tenant_id = self.tenant_id
  153. if network_id:
  154. net_id = network_id
  155. else:
  156. net_id = self.net_id
  157. new_net_dict = self._cisco_nexus_plugin.create_network(
  158. tenant_id, self.net_name, net_id, self.vlan_name,
  159. self.vlan_id)
  160. rename_net_dict = self._cisco_nexus_plugin.rename_network(
  161. tenant_id, new_net_dict[const.NET_ID], new_name)
  162. self.assertEqual(rename_net_dict[const.NET_NAME], new_name)
  163. self.tearDownNetwork(tenant_id, new_net_dict[const.NET_ID])
  164. LOG.debug("test_rename_network - END")
  165. def test_rename_network_DNE(self, new_name="new_network_name",
  166. net_tenant_id=None, network_id='0005'):
  167. """
  168. Tests rename of a Virtual Network when Network does not exist.
  169. """
  170. LOG.debug("test_rename_network_DNE - START")
  171. if net_tenant_id:
  172. tenant_id = net_tenant_id
  173. else:
  174. tenant_id = self.tenant_id
  175. if network_id:
  176. net_id = network_id
  177. else:
  178. net_id = self.net_id
  179. self.assertRaises(exc.NetworkNotFound,
  180. self._cisco_nexus_plugin.rename_network,
  181. new_name, tenant_id, net_id)
  182. LOG.debug("test_rename_network_DNE - END")
  183. def test_list_all_networks(self, net_tenant_id=None):
  184. """
  185. Tests listing of all the Virtual Networks .
  186. """
  187. LOG.debug("test_list_all_networks - START")
  188. if net_tenant_id:
  189. tenant_id = net_tenant_id
  190. else:
  191. tenant_id = self.tenant_id
  192. new_net_dict1 = self._cisco_nexus_plugin.create_network(
  193. tenant_id, self.net_name, self.net_id,
  194. self.vlan_name, self.vlan_id)
  195. new_net_dict2 = self._cisco_nexus_plugin.create_network(
  196. tenant_id, "New_Network2", "0011",
  197. "second_vlan", "2003")
  198. list_net_dict = self._cisco_nexus_plugin.get_all_networks(tenant_id)
  199. net_temp_list = [new_net_dict1, new_net_dict2]
  200. self.assertEqual(len(list_net_dict), 2)
  201. self.assertTrue(list_net_dict[0] in net_temp_list)
  202. self.assertTrue(list_net_dict[1] in net_temp_list)
  203. self.tearDownNetwork(tenant_id, new_net_dict1[const.NET_ID])
  204. self.tearDownNetwork(tenant_id, new_net_dict2[const.NET_ID])
  205. LOG.debug("test_list_all_networks - END")
  206. def test_get_vlan_id_for_network(self, net_tenant_id=None,
  207. network_id=None):
  208. """
  209. Tests retrieval of vlan id for a Virtual Networks .
  210. """
  211. LOG.debug("test_get_vlan_id_for_network - START")
  212. if net_tenant_id:
  213. tenant_id = net_tenant_id
  214. else:
  215. tenant_id = self.tenant_id
  216. if network_id:
  217. net_id = network_id
  218. else:
  219. net_id = self.net_id
  220. new_net_dict = self._cisco_nexus_plugin.create_network(
  221. tenant_id, self.net_name, net_id, self.vlan_name,
  222. self.vlan_id)
  223. result_vlan_id = self._cisco_nexus_plugin._get_vlan_id_for_network(
  224. tenant_id, net_id)
  225. self.assertEqual(result_vlan_id, self.vlan_id)
  226. self.tearDownNetwork(tenant_id, new_net_dict[const.NET_ID])
  227. LOG.debug("test_get_vlan_id_for_network - END")
  228. def create_network(self, tenant_id, net_name):
  229. """Create a network"""
  230. net_dict = {}
  231. try:
  232. res = db.network_create(tenant_id, net_name)
  233. LOG.debug("Created network: %s" % res.uuid)
  234. net_dict["tenant-id"] = res.tenant_id
  235. net_dict["net-id"] = str(res.uuid)
  236. net_dict["net-name"] = res.name
  237. return net_dict
  238. except Exception, exc:
  239. LOG.error("Failed to create network: %s" % str(exc))
  240. def tearDownNetwork(self, tenant_id, network_dict_id):
  241. """
  242. Clean up functions after the tests
  243. """
  244. self._cisco_nexus_plugin.delete_network(tenant_id, network_dict_id)