filtered-openstack-compute.res 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612
  1. cloudbridge.test.test_compute_service.CloudComputeServiceTestCase
  2. Error during cleanup: CloudBridgeBaseException: Unable to complete operation on subnet 0b8a4758-2741-4893-a281-c1800b2c5998: One or more ports have an IP allocation from this subnet.
  3. Neutron server returns request_ids: ['req-069e73eb-05f5-4458-b0f6-c91bc62e6446'] from exception type: <class 'neutronclient.common.exceptions.Conflict'>
  4. Error during cleanup: CloudBridgeBaseException: ConflictException: 409: Client Error for url: http://130.56.249.49:9696/v2.0/security-groups/f1d2ea25-5850-4b1f-8789-34cdf4ae2da4, {"NeutronError": {"message": "Security Group f1d2ea25-5850-4b1f-8789-34cdf4ae2da4 in use.", "type": "SecurityGroupInUse", "detail": ""}} from exception type: <class 'openstack.exceptions.ConflictException'>
  5. Test output
  6. s.EEE.
  7. ======================================================================
  8. ERROR: test_crud_instance (cloudbridge.test.test_compute_service.CloudComputeServiceTestCase)
  9. ----------------------------------------------------------------------
  10. Traceback (most recent call last):
  11. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/cloud/base/middleware.py", line 45, in wrap_exception
  12. return next_handler.invoke(event_args, *args, **kwargs)
  13. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/pyeventsystem/events.py", line 110, in invoke
  14. result = self.callback(*args, **kwargs)
  15. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/line_profiler.py", line 115, in wrapper
  16. result = func(*args, **kwds)
  17. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/cloud/providers/openstack/services.py", line 868, in create
  18. nics=nics)
  19. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/novaclient/v2/servers.py", line 1327, in create
  20. return self._boot(response_key, *boot_args, **boot_kwargs)
  21. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/novaclient/v2/servers.py", line 776, in _boot
  22. return_raw=return_raw, **kwargs)
  23. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/novaclient/base.py", line 366, in _create
  24. resp, body = self.api.client.post(url, body=body)
  25. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/keystoneauth1/adapter.py", line 357, in post
  26. return self.request(url, 'POST', **kwargs)
  27. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/novaclient/client.py", line 83, in request
  28. raise exceptions.from_response(resp, body, url, method)
  29. novaclient.exceptions.BadRequest: Can not find requested image (HTTP 400) (Request-ID: req-abda1555-9666-43cc-85d9-f5fe92697d32)
  30. The above exception was the direct cause of the following exception:
  31. Traceback (most recent call last):
  32. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/helpers/__init__.py", line 41, in wrapper
  33. func(self, *args, **kwargs)
  34. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/test_compute_service.py", line 74, in test_crud_instance
  35. custom_check_delete=check_deleted)
  36. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/helpers/standard_interface_tests.py", line 339, in check_crud
  37. obj = create_func(label)
  38. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/test_compute_service.py", line 47, in create_inst
  39. subnet=subnet, user_data={})
  40. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/helpers/__init__.py", line 207, in get_test_instance
  41. user_data=user_data)
  42. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/helpers/__init__.py", line 192, in create_test_instance
  43. user_data=user_data)
  44. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/pyeventsystem/middleware.py", line 74, in wrapper
  45. return dispatcher.dispatch(self, event, *args, **kwargs)
  46. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/pyeventsystem/events.py", line 218, in dispatch
  47. return handlers[0].invoke(event_args, *args, **kwargs)
  48. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/pyeventsystem/events.py", line 78, in invoke
  49. result = self.callback(event_args, *args, **kwargs)
  50. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/cloud/base/middleware.py", line 55, in wrap_exception
  51. six.raise_from(cb_ex, e)
  52. File "<string>", line 3, in raise_from
  53. cloudbridge.cloud.interfaces.exceptions.CloudBridgeBaseException: CloudBridgeBaseException: Can not find requested image (HTTP 400) (Request-ID: req-abda1555-9666-43cc-85d9-f5fe92697d32) from exception type: <class 'novaclient.exceptions.BadRequest'>
  54. ======================================================================
  55. ERROR: test_instance_methods (cloudbridge.test.test_compute_service.CloudComputeServiceTestCase)
  56. ----------------------------------------------------------------------
  57. Traceback (most recent call last):
  58. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/cloud/base/middleware.py", line 45, in wrap_exception
  59. return next_handler.invoke(event_args, *args, **kwargs)
  60. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/pyeventsystem/events.py", line 110, in invoke
  61. result = self.callback(*args, **kwargs)
  62. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/line_profiler.py", line 115, in wrapper
  63. result = func(*args, **kwds)
  64. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/cloud/providers/openstack/services.py", line 868, in create
  65. nics=nics)
  66. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/novaclient/v2/servers.py", line 1327, in create
  67. return self._boot(response_key, *boot_args, **boot_kwargs)
  68. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/novaclient/v2/servers.py", line 776, in _boot
  69. return_raw=return_raw, **kwargs)
  70. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/novaclient/base.py", line 366, in _create
  71. resp, body = self.api.client.post(url, body=body)
  72. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/keystoneauth1/adapter.py", line 357, in post
  73. return self.request(url, 'POST', **kwargs)
  74. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/novaclient/client.py", line 83, in request
  75. raise exceptions.from_response(resp, body, url, method)
  76. novaclient.exceptions.BadRequest: Can not find requested image (HTTP 400) (Request-ID: req-74b2f0be-3720-46c7-b73a-93756e6f272f)
  77. The above exception was the direct cause of the following exception:
  78. Traceback (most recent call last):
  79. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/helpers/__init__.py", line 41, in wrapper
  80. func(self, *args, **kwargs)
  81. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/test_compute_service.py", line 340, in test_instance_methods
  82. subnet=subnet)
  83. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/helpers/__init__.py", line 207, in get_test_instance
  84. user_data=user_data)
  85. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/helpers/__init__.py", line 192, in create_test_instance
  86. user_data=user_data)
  87. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/pyeventsystem/middleware.py", line 74, in wrapper
  88. return dispatcher.dispatch(self, event, *args, **kwargs)
  89. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/pyeventsystem/events.py", line 218, in dispatch
  90. return handlers[0].invoke(event_args, *args, **kwargs)
  91. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/pyeventsystem/events.py", line 78, in invoke
  92. result = self.callback(event_args, *args, **kwargs)
  93. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/cloud/base/middleware.py", line 55, in wrap_exception
  94. six.raise_from(cb_ex, e)
  95. File "<string>", line 3, in raise_from
  96. cloudbridge.cloud.interfaces.exceptions.CloudBridgeBaseException: CloudBridgeBaseException: Can not find requested image (HTTP 400) (Request-ID: req-74b2f0be-3720-46c7-b73a-93756e6f272f) from exception type: <class 'novaclient.exceptions.BadRequest'>
  97. ======================================================================
  98. ERROR: test_instance_properties (cloudbridge.test.test_compute_service.CloudComputeServiceTestCase)
  99. ----------------------------------------------------------------------
  100. Traceback (most recent call last):
  101. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/cloud/base/middleware.py", line 45, in wrap_exception
  102. return next_handler.invoke(event_args, *args, **kwargs)
  103. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/pyeventsystem/events.py", line 110, in invoke
  104. result = self.callback(*args, **kwargs)
  105. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/line_profiler.py", line 115, in wrapper
  106. result = func(*args, **kwds)
  107. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/cloud/providers/openstack/services.py", line 868, in create
  108. nics=nics)
  109. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/novaclient/v2/servers.py", line 1327, in create
  110. return self._boot(response_key, *boot_args, **boot_kwargs)
  111. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/novaclient/v2/servers.py", line 776, in _boot
  112. return_raw=return_raw, **kwargs)
  113. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/novaclient/base.py", line 366, in _create
  114. resp, body = self.api.client.post(url, body=body)
  115. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/keystoneauth1/adapter.py", line 357, in post
  116. return self.request(url, 'POST', **kwargs)
  117. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/novaclient/client.py", line 83, in request
  118. raise exceptions.from_response(resp, body, url, method)
  119. novaclient.exceptions.BadRequest: Can not find requested image (HTTP 400) (Request-ID: req-651d0ec1-307c-4760-a55e-aaeeaa505bcd)
  120. The above exception was the direct cause of the following exception:
  121. Traceback (most recent call last):
  122. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/helpers/__init__.py", line 41, in wrapper
  123. func(self, *args, **kwargs)
  124. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/test_compute_service.py", line 104, in test_instance_properties
  125. subnet=subnet)
  126. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/helpers/__init__.py", line 207, in get_test_instance
  127. user_data=user_data)
  128. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/test/helpers/__init__.py", line 192, in create_test_instance
  129. user_data=user_data)
  130. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/pyeventsystem/middleware.py", line 74, in wrapper
  131. return dispatcher.dispatch(self, event, *args, **kwargs)
  132. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/pyeventsystem/events.py", line 218, in dispatch
  133. return handlers[0].invoke(event_args, *args, **kwargs)
  134. File "/Users/alex/Desktop/work/line/lib/python3.6/site-packages/pyeventsystem/events.py", line 78, in invoke
  135. result = self.callback(event_args, *args, **kwargs)
  136. File "/Users/alex/Desktop/work/cloudbridge/cloudbridge/cloud/base/middleware.py", line 55, in wrap_exception
  137. six.raise_from(cb_ex, e)
  138. File "<string>", line 3, in raise_from
  139. cloudbridge.cloud.interfaces.exceptions.CloudBridgeBaseException: CloudBridgeBaseException: Can not find requested image (HTTP 400) (Request-ID: req-651d0ec1-307c-4760-a55e-aaeeaa505bcd) from exception type: <class 'novaclient.exceptions.BadRequest'>
  140. ----------------------------------------------------------------------
  141. Ran 6 tests in 41.244s
  142. FAILED (errors=3, skipped=1)
  143. Wrote profile results to run_single.py.lprof
  144. Timer unit: 1e-06 s
  145. Total time: 13.802 s
  146. Function: create at line 787
  147. Line # Hits Time Per Hit % Time Line Contents
  148. ==============================================================
  149. 787 @dispatch(event="provider.compute.instances.create",
  150. 788 priority=BaseInstanceService.STANDARD_EVENT_PRIORITY)
  151. 789 @profile
  152. 790 def create(self, label, image, vm_type, subnet, zone,
  153. 791 key_pair=None, vm_firewalls=None, user_data=None,
  154. 792 launch_config=None, **kwargs):
  155. 793 13 189.0 14.5 0.0 OpenStackInstance.assert_valid_resource_label(label)
  156. 794 3 10.0 3.3 0.0 image_id = image.id if isinstance(image, MachineImage) else image
  157. 795 vm_size = vm_type.id if \
  158. 796 3 7.0 2.3 0.0 isinstance(vm_type, VMType) else \
  159. 797 3 20.0 6.7 0.0 self.provider.compute.vm_types.find(
  160. 798 3 7000174.0 2333391.3 50.7 name=vm_type)[0].id
  161. 799 3 11.0 3.7 0.0 if isinstance(subnet, Subnet):
  162. 800 3 16.0 5.3 0.0 subnet_id = subnet.id
  163. 801 3 11.0 3.7 0.0 net_id = subnet.network_id
  164. 802 else:
  165. 803 subnet_id = subnet
  166. 804 net_id = (self.provider.networking.subnets
  167. 805 .get(subnet_id).network_id
  168. 806 if subnet_id else None)
  169. 807 3 8.0 2.7 0.0 zone_id = zone.id if isinstance(zone, PlacementZone) else zone
  170. 808 key_pair_name = key_pair.name if \
  171. 809 3 13.0 4.3 0.0 isinstance(key_pair, KeyPair) else key_pair
  172. 810 3 6.0 2.0 0.0 bdm = None
  173. 811 3 7.0 2.3 0.0 if launch_config:
  174. 812 bdm = self._to_block_device_mapping(launch_config)
  175. 813
  176. 814 # Security groups must be passed in as a list of IDs and attached to a
  177. 815 # port if a port is being created. Otherwise, the security groups must
  178. 816 # be passed in as a list of names to the servers.create() call.
  179. 817 # OpenStack will respect the port's security groups first and then
  180. 818 # fall-back to the named security groups.
  181. 819 3 7.0 2.3 0.0 sg_name_list = []
  182. 820 3 6.0 2.0 0.0 nics = None
  183. 821 3 8.0 2.7 0.0 if subnet_id:
  184. 822 3 9.0 3.0 0.0 log.debug("Creating network port for %s in subnet: %s",
  185. 823 3 23.0 7.7 0.0 label, subnet_id)
  186. 824 3 7.0 2.3 0.0 sg_list = []
  187. 825 3 6.0 2.0 0.0 if vm_firewalls:
  188. 826 1 3.0 3.0 0.0 if isinstance(vm_firewalls, list) and \
  189. 827 1 3.0 3.0 0.0 isinstance(vm_firewalls[0], VMFirewall):
  190. 828 1 2.0 2.0 0.0 sg_list = vm_firewalls
  191. 829 else:
  192. 830 sg_list = (self.provider.security.vm_firewalls
  193. 831 .find(label=sg) for sg in vm_firewalls)
  194. 832 sg_list = (sg[0] for sg in sg_list if sg)
  195. 833 3 29.0 9.7 0.0 sg_id_list = [sg.id for sg in sg_list]
  196. 834 port_def = {
  197. 835 3 6.0 2.0 0.0 "port": {
  198. 836 3 8.0 2.7 0.0 "admin_state_up": True,
  199. 837 3 10.0 3.3 0.0 "name": OpenStackInstance._generate_name_from_label(
  200. 838 3 190.0 63.3 0.0 label, 'cb-port'),
  201. 839 3 6.0 2.0 0.0 "network_id": net_id,
  202. 840 3 8.0 2.7 0.0 "fixed_ips": [{"subnet_id": subnet_id}],
  203. 841 3 9.0 3.0 0.0 "security_groups": sg_id_list
  204. 842 }
  205. 843 }
  206. 844 3 3157095.0 1052365.0 22.9 port_id = self.provider.neutron.create_port(port_def)['port']['id']
  207. 845 3 16.0 5.3 0.0 nics = [{'net-id': net_id, 'port-id': port_id}]
  208. 846 else:
  209. 847 if vm_firewalls:
  210. 848 if isinstance(vm_firewalls, list) and \
  211. 849 isinstance(vm_firewalls[0], VMFirewall):
  212. 850 sg_name_list = [sg.name for sg in vm_firewalls]
  213. 851 else:
  214. 852 sg_list = (self.provider.security.vm_firewalls.get(sg)
  215. 853 for sg in vm_firewalls)
  216. 854 sg_name_list = (sg[0].name for sg in sg_list if sg)
  217. 855
  218. 856 3 35.0 11.7 0.0 log.debug("Launching in subnet %s", subnet_id)
  219. 857 3 36.0 12.0 0.0 os_instance = self.provider.nova.servers.create(
  220. 858 3 8.0 2.7 0.0 label,
  221. 859 3 16.0 5.3 0.0 None if self._has_root_device(launch_config) else image_id,
  222. 860 3 8.0 2.7 0.0 vm_size,
  223. 861 3 8.0 2.7 0.0 min_count=1,
  224. 862 3 8.0 2.7 0.0 max_count=1,
  225. 863 3 8.0 2.7 0.0 availability_zone=zone_id,
  226. 864 3 8.0 2.7 0.0 key_name=key_pair_name,
  227. 865 3 8.0 2.7 0.0 security_groups=sg_name_list,
  228. 866 3 13.0 4.3 0.0 userdata=str(user_data) or None,
  229. 867 3 8.0 2.7 0.0 block_device_mapping_v2=bdm,
  230. 868 3 3643903.0 1214634.3 26.4 nics=nics)
  231. 869 return OpenStackInstance(self.provider, os_instance)
  232. Total time: 9.72766 s
  233. Function: find at line 225
  234. Line # Hits Time Per Hit % Time Line Contents
  235. ==============================================================
  236. 225 @dispatch(event="provider.compute.vm_types.find",
  237. 226 priority=BaseCloudService.STANDARD_EVENT_PRIORITY)
  238. 227 @profile
  239. 228 def find(self, **kwargs):
  240. 229 4 4.0 1.0 0.0 obj_list = self
  241. 230 4 3.0 0.8 0.0 filters = ['name']
  242. 231 4 9727539.0 2431884.8 100.0 matches = cb_helpers.generic_find(filters, kwargs, obj_list)
  243. 232 4 118.0 29.5 0.0 return ClientPagedResultList(self._provider, list(matches))
  244. Total time: 9.66376 s
  245. Function: list at line 942
  246. Line # Hits Time Per Hit % Time Line Contents
  247. ==============================================================
  248. 942 @dispatch(event="provider.compute.vm_types.list",
  249. 943 priority=BaseVMTypeService.STANDARD_EVENT_PRIORITY)
  250. 944 @profile
  251. 945 def list(self, limit=None, marker=None):
  252. 946 cb_itypes = [
  253. 947 8 10.0 1.2 0.0 OpenStackVMType(self.provider, obj)
  254. 948 8 1864288.0 233036.0 19.3 for obj in self.provider.nova.flavors.list(
  255. 949 8 236.0 29.5 0.0 limit=oshelpers.os_result_limit(self.provider, limit),
  256. 950 8 7798932.0 974866.5 80.7 marker=marker)]
  257. 951
  258. 952 8 292.0 36.5 0.0 return oshelpers.to_server_paged_list(self.provider, cb_itypes, limit)
  259. Total time: 4.68956 s
  260. Function: delete at line 1083
  261. Line # Hits Time Per Hit % Time Line Contents
  262. ==============================================================
  263. 1083 @dispatch(event="provider.networking.networks.delete",
  264. 1084 priority=BaseNetworkService.STANDARD_EVENT_PRIORITY)
  265. 1085 @profile
  266. 1086 def delete(self, network):
  267. 1087 1 3.0 3.0 0.0 network = (network if isinstance(network, OpenStackNetwork) else
  268. 1088 self.get(network))
  269. 1089 1 1.0 1.0 0.0 if not network:
  270. 1090 return
  271. 1091 1 7.0 7.0 0.0 if not network.external and network.id in str(
  272. 1092 1 358126.0 358126.0 7.6 self.provider.neutron.list_networks()):
  273. 1093 # If there are ports associated with the network, it won't delete
  274. 1094 1 8.0 8.0 0.0 ports = self.provider.neutron.list_ports(
  275. 1095 1 441220.0 441220.0 9.4 network_id=network.id).get('ports', [])
  276. 1096 3 8.0 2.7 0.0 for port in ports:
  277. 1097 2 2.0 1.0 0.0 try:
  278. 1098 2 1842265.0 921132.5 39.3 self.provider.neutron.delete_port(port.get('id'))
  279. 1099 except PortNotFoundClient:
  280. 1100 # Ports could have already been deleted if instances
  281. 1101 # are terminated etc. so exceptions can be safely ignored
  282. 1102 pass
  283. 1103 1 2047921.0 2047921.0 43.7 self.provider.neutron.delete_network(network.id)
  284. Total time: 3.89371 s
  285. Function: list at line 1118
  286. Line # Hits Time Per Hit % Time Line Contents
  287. ==============================================================
  288. 1118 @dispatch(event="provider.networking.subnets.list",
  289. 1119 priority=BaseSubnetService.STANDARD_EVENT_PRIORITY)
  290. 1120 @profile
  291. 1121 def list(self, network=None, limit=None, marker=None):
  292. 1122 4 5.0 1.2 0.0 if network:
  293. 1123 1 4.0 4.0 0.0 network_id = (network.id if isinstance(network, OpenStackNetwork)
  294. 1124 else network)
  295. 1125 1 47.0 47.0 0.0 subnets = [subnet for subnet in self if network_id ==
  296. 1126 subnet.network_id]
  297. 1127 else:
  298. 1128 3 3.0 1.0 0.0 subnets = [OpenStackSubnet(self.provider, subnet) for subnet in
  299. 1129 3 3893477.0 1297825.7 100.0 self.provider.neutron.list_subnets().get('subnets', [])]
  300. 1130 4 15.0 3.8 0.0 return ClientPagedResultList(self.provider, subnets,
  301. 1131 4 163.0 40.8 0.0 limit=limit, marker=marker)
  302. Total time: 3.58635 s
  303. Function: get_or_create_default at line 1155
  304. Line # Hits Time Per Hit % Time Line Contents
  305. ==============================================================
  306. 1155 @profile
  307. 1156 def get_or_create_default(self, zone):
  308. 1157 """
  309. 1158 Subnet zone is not supported by OpenStack and is thus ignored.
  310. 1159 """
  311. 1160 2 4.0 2.0 0.0 try:
  312. 1161 2 3586339.0 1793169.5 100.0 sn = self.find(label=OpenStackSubnet.CB_DEFAULT_SUBNET_LABEL)
  313. 1162 2 3.0 1.5 0.0 if sn:
  314. 1163 2 3.0 1.5 0.0 return sn[0]
  315. 1164 # No default subnet look for default network, then create subnet
  316. 1165 net = self.provider.networking.networks.get_or_create_default()
  317. 1166 sn = self.provider.networking.subnets.create(
  318. 1167 label=OpenStackSubnet.CB_DEFAULT_SUBNET_LABEL,
  319. 1168 cidr_block=OpenStackSubnet.CB_DEFAULT_SUBNET_IPV4RANGE,
  320. 1169 network=net, zone=zone)
  321. 1170 router = self.provider.networking.routers.get_or_create_default(
  322. 1171 net)
  323. 1172 router.attach_subnet(sn)
  324. 1173 gateway = net.gateways.get_or_create()
  325. 1174 router.attach_gateway(gateway)
  326. 1175 return sn
  327. 1176 except NeutronClientException:
  328. 1177 return None
  329. Total time: 3.56473 s
  330. Function: find at line 308
  331. Line # Hits Time Per Hit % Time Line Contents
  332. ==============================================================
  333. 308 @dispatch(event="provider.networking.subnets.find",
  334. 309 priority=BaseCloudService.STANDARD_EVENT_PRIORITY)
  335. 310 @profile
  336. 311 def find(self, network=None, **kwargs):
  337. 312 2 2.0 1.0 0.0 if not network:
  338. 313 2 1.0 0.5 0.0 obj_list = self
  339. 314 else:
  340. 315 obj_list = network.subnets
  341. 316 2 1.0 0.5 0.0 filters = ['label']
  342. 317 2 3564667.0 1782333.5 100.0 matches = cb_helpers.generic_find(filters, kwargs, obj_list)
  343. 318 2 59.0 29.5 0.0 return ClientPagedResultList(self._provider, list(matches))
  344. Total time: 3.46815 s
  345. Function: create at line 1071
  346. Line # Hits Time Per Hit % Time Line Contents
  347. ==============================================================
  348. 1071 @dispatch(event="provider.networking.networks.create",
  349. 1072 priority=BaseNetworkService.STANDARD_EVENT_PRIORITY)
  350. 1073 @profile
  351. 1074 def create(self, label, cidr_block):
  352. 1075 1 8.0 8.0 0.0 OpenStackNetwork.assert_valid_resource_label(label)
  353. 1076 1 1.0 1.0 0.0 net_info = {'name': label or ""}
  354. 1077 1 2225770.0 2225770.0 64.2 network = self.provider.neutron.create_network({'network': net_info})
  355. 1078 1 38.0 38.0 0.0 cb_net = OpenStackNetwork(self.provider, network.get('network'))
  356. 1079 1 1.0 1.0 0.0 if label:
  357. 1080 1 1242335.0 1242335.0 35.8 cb_net.label = label
  358. 1081 1 1.0 1.0 0.0 return cb_net
  359. Total time: 3.09715 s
  360. Function: create at line 190
  361. Line # Hits Time Per Hit % Time Line Contents
  362. ==============================================================
  363. 190 @dispatch(event="provider.security.key_pairs.create",
  364. 191 priority=BaseKeyPairService.STANDARD_EVENT_PRIORITY)
  365. 192 @profile
  366. 193 def create(self, name, public_key_material=None):
  367. 194 1 8.0 8.0 0.0 OpenStackKeyPair.assert_valid_resource_name(name)
  368. 195 1 2450763.0 2450763.0 79.1 existing_kp = self.find(name=name)
  369. 196 1 1.0 1.0 0.0 if existing_kp:
  370. 197 raise DuplicateResourceException(
  371. 198 'Keypair already exists with name {0}'.format(name))
  372. 199
  373. 200 1 1.0 1.0 0.0 private_key = None
  374. 201 1 1.0 1.0 0.0 if not public_key_material:
  375. 202 1 81076.0 81076.0 2.6 public_key_material, private_key = cb_helpers.generate_key_pair()
  376. 203
  377. 204 1 7.0 7.0 0.0 kp = self.provider.nova.keypairs.create(name,
  378. 205 1 565276.0 565276.0 18.3 public_key=public_key_material)
  379. 206 1 15.0 15.0 0.0 cb_kp = OpenStackKeyPair(self.provider, kp)
  380. 207 1 3.0 3.0 0.0 cb_kp.material = private_key
  381. 208 1 1.0 1.0 0.0 return cb_kp
  382. Total time: 3.02151 s
  383. Function: get at line 690
  384. Line # Hits Time Per Hit % Time Line Contents
  385. ==============================================================
  386. 690 @profile
  387. 691 def get(self, image_id):
  388. 692 """
  389. 693 Returns an Image given its id
  390. 694 """
  391. 695 1 10.0 10.0 0.0 log.debug("Getting OpenStack Image with the id: %s", image_id)
  392. 696 1 0.0 0.0 0.0 try:
  393. 697 1 0.0 0.0 0.0 return OpenStackMachineImage(
  394. 698 1 3021456.0 3021456.0 100.0 self.provider, self.provider.os_conn.image.get_image(image_id))
  395. 699 1 3.0 3.0 0.0 except (NotFoundException, ResourceNotFound):
  396. 700 1 10.0 10.0 0.0 log.debug("Image %s not found", image_id)
  397. 701 1 36.0 36.0 0.0 return None
  398. Total time: 2.4398 s
  399. Function: find at line 172
  400. Line # Hits Time Per Hit % Time Line Contents
  401. ==============================================================
  402. 172 @dispatch(event="provider.security.key_pairs.find",
  403. 173 priority=BaseKeyPairService.STANDARD_EVENT_PRIORITY)
  404. 174 @profile
  405. 175 def find(self, **kwargs):
  406. 176 1 1.0 1.0 0.0 name = kwargs.pop('name', None)
  407. 177
  408. 178 # All kwargs should have been popped at this time.
  409. 179 1 1.0 1.0 0.0 if len(kwargs) > 0:
  410. 180 raise InvalidParamException(
  411. 181 "Unrecognised parameters for search: %s. Supported "
  412. 182 "attributes: %s" % (kwargs, 'name'))
  413. 183
  414. 184 1 2439732.0 2439732.0 100.0 keypairs = self.provider.nova.keypairs.findall(name=name)
  415. 185 1 4.0 4.0 0.0 results = [OpenStackKeyPair(self.provider, kp)
  416. 186 1 3.0 3.0 0.0 for kp in keypairs]
  417. 187 1 12.0 12.0 0.0 log.debug("Searching for %s in: %s", name, keypairs)
  418. 188 1 46.0 46.0 0.0 return ClientPagedResultList(self.provider, results)
  419. Total time: 2.07037 s
  420. Function: create at line 250
  421. Line # Hits Time Per Hit % Time Line Contents
  422. ==============================================================
  423. 250 @cb_helpers.deprecated_alias(network_id='network')
  424. 251 @dispatch(event="provider.security.vm_firewalls.create",
  425. 252 priority=BaseVMFirewallService.STANDARD_EVENT_PRIORITY)
  426. 253 @profile
  427. 254 def create(self, label, network, description=None):
  428. 255 1 8.0 8.0 0.0 OpenStackVMFirewall.assert_valid_resource_label(label)
  429. 256 1 1.0 1.0 0.0 net_id = network.id if isinstance(network, Network) else network
  430. 257 # We generally simulate a network being associated with a firewall
  431. 258 # by storing the supplied value in the firewall description field that
  432. 259 # is not modifiable after creation; however, because of some networking
  433. 260 # specificity in Nectar, we must also allow an empty network id value.
  434. 261 1 1.0 1.0 0.0 if not net_id:
  435. 262 net_id = ""
  436. 263 1 1.0 1.0 0.0 if not description:
  437. 264 description = ""
  438. 265 1 1.0 1.0 0.0 description += " [{}{}]".format(OpenStackVMFirewall._network_id_tag,
  439. 266 1 3.0 3.0 0.0 net_id)
  440. 267 1 1260211.0 1260211.0 60.9 sg = self.provider.os_conn.network.create_security_group(
  441. 268 1 810110.0 810110.0 39.1 name=label, description=description)
  442. 269 1 2.0 2.0 0.0 if sg:
  443. 270 1 30.0 30.0 0.0 return OpenStackVMFirewall(self.provider, sg)
  444. 271 return None
  445. Total time: 1.72135 s
  446. Function: get at line 1035
  447. Line # Hits Time Per Hit % Time Line Contents
  448. ==============================================================
  449. 1035 @dispatch(event="provider.networking.networks.get",
  450. 1036 priority=BaseNetworkService.STANDARD_EVENT_PRIORITY)
  451. 1037 @profile
  452. 1038 def get(self, network_id):
  453. 1039 4 13.0 3.2 0.0 network = (n for n in self if n.id == network_id)
  454. 1040 4 1721333.0 430333.2 100.0 return next(network, None)
  455. Total time: 1.69941 s
  456. Function: list at line 1042
  457. Line # Hits Time Per Hit % Time Line Contents
  458. ==============================================================
  459. 1042 @dispatch(event="provider.networking.networks.list",
  460. 1043 priority=BaseNetworkService.STANDARD_EVENT_PRIORITY)
  461. 1044 @profile
  462. 1045 def list(self, limit=None, marker=None):
  463. 1046 4 5.0 1.2 0.0 networks = [OpenStackNetwork(self.provider, network)
  464. 1047 4 1698958.0 424739.5 100.0 for network in self.provider.neutron.list_networks()
  465. 1048 4 280.0 70.0 0.0 .get('networks') if network]
  466. 1049 4 9.0 2.2 0.0 return ClientPagedResultList(self.provider, networks,
  467. 1050 4 157.0 39.2 0.0 limit=limit, marker=marker)
  468. Total time: 1.343 s
  469. Function: refresh at line 842
  470. Line # Hits Time Per Hit % Time Line Contents
  471. ==============================================================
  472. 842 @profile
  473. 843 def refresh(self):
  474. 844 """Refresh the state of this network by re-querying the provider."""
  475. 845 3 1342994.0 447664.7 100.0 network = self._provider.networking.networks.get(self.id)
  476. 846 3 3.0 1.0 0.0 if network:
  477. 847 # pylint:disable=protected-access
  478. 848 1 2.0 2.0 0.0 self._network = network._network
  479. 849 else:
  480. 850 # Network no longer exists
  481. 851 2 4.0 2.0 0.0 self._network = {}
  482. Total time: 1.24232 s
  483. Function: label at line 811
  484. Line # Hits Time Per Hit % Time Line Contents
  485. ==============================================================
  486. 811 @label.setter
  487. 812 @profile
  488. 813 def label(self, value):
  489. 814 """
  490. 815 Set the network label.
  491. 816 """
  492. 817 1 9.0 9.0 0.0 self.assert_valid_resource_label(value)
  493. 818 1 6.0 6.0 0.0 self._provider.neutron.update_network(
  494. 819 1 832175.0 832175.0 67.0 self.id, {'network': {'name': value or ""}})
  495. 820 1 410128.0 410128.0 33.0 self.refresh()
  496. Total time: 0.560666 s
  497. Function: create at line 1133
  498. Line # Hits Time Per Hit % Time Line Contents
  499. ==============================================================
  500. 1133 @dispatch(event="provider.networking.subnets.create",
  501. 1134 priority=BaseSubnetService.STANDARD_EVENT_PRIORITY)
  502. 1135 @profile
  503. 1136 def create(self, label, network, cidr_block, zone):
  504. 1137 """zone param is ignored."""
  505. 1138 1 9.0 9.0 0.0 OpenStackSubnet.assert_valid_resource_label(label)
  506. 1139 1 3.0 3.0 0.0 network_id = (network.id if isinstance(network, OpenStackNetwork)
  507. 1140 else network)
  508. 1141 1 1.0 1.0 0.0 subnet_info = {'name': label, 'network_id': network_id,
  509. 1142 1 1.0 1.0 0.0 'cidr': cidr_block, 'ip_version': 4}
  510. 1143 1 560631.0 560631.0 100.0 subnet = (self.provider.neutron.create_subnet({'subnet': subnet_info})
  511. 1144 1 3.0 3.0 0.0 .get('subnet'))
  512. 1145 1 17.0 17.0 0.0 cb_subnet = OpenStackSubnet(self.provider, subnet)
  513. 1146 1 1.0 1.0 0.0 return cb_subnet
  514. Total time: 0.510433 s
  515. Function: delete at line 210
  516. Line # Hits Time Per Hit % Time Line Contents
  517. ==============================================================
  518. 210 @dispatch(event="provider.security.key_pairs.delete",
  519. 211 priority=BaseKeyPairService.STANDARD_EVENT_PRIORITY)
  520. 212 @profile
  521. 213 def delete(self, key_pair):
  522. 214 1 3.0 3.0 0.0 keypair = (key_pair if isinstance(key_pair, OpenStackKeyPair)
  523. 215 else self.get(key_pair))
  524. 216 1 1.0 1.0 0.0 if keypair:
  525. 217 # pylint:disable=protected-access
  526. 218 1 510429.0 510429.0 100.0 keypair._key_pair.delete()
  527. Total time: 0.3819 s
  528. Function: delete at line 1148
  529. Line # Hits Time Per Hit % Time Line Contents
  530. ==============================================================
  531. 1148 @dispatch(event="provider.networking.subnets.delete",
  532. 1149 priority=BaseSubnetService.STANDARD_EVENT_PRIORITY)
  533. 1150 @profile
  534. 1151 def delete(self, subnet):
  535. 1152 1 4.0 4.0 0.0 sn_id = subnet.id if isinstance(subnet, OpenStackSubnet) else subnet
  536. 1153 1 381896.0 381896.0 100.0 self.provider.neutron.delete_subnet(sn_id)
  537. Total time: 0.36989 s
  538. Function: delete at line 273
  539. Line # Hits Time Per Hit % Time Line Contents
  540. ==============================================================
  541. 273 @dispatch(event="provider.security.vm_firewalls.delete",
  542. 274 priority=BaseVMFirewallService.STANDARD_EVENT_PRIORITY)
  543. 275 @profile
  544. 276 def delete(self, vm_firewall):
  545. 277 1 3.0 3.0 0.0 fw = (vm_firewall if isinstance(vm_firewall, OpenStackVMFirewall)
  546. 278 else self.get(vm_firewall))
  547. 279 1 1.0 1.0 0.0 if fw:
  548. 280 # pylint:disable=protected-access
  549. 281 1 369886.0 369886.0 100.0 fw._vm_firewall.delete(self.provider.os_conn.session)
  550. Total time: 7e-06 s
  551. Function: create_launch_config at line 783
  552. Line # Hits Time Per Hit % Time Line Contents
  553. ==============================================================
  554. 783 @profile
  555. 784 def create_launch_config(self):
  556. 785 1 7.0 7.0 100.0 return BaseLaunchConfig(self.provider)