Modified vcd unit tests as per latest pyvcloud changes
[osm/RO.git] / osm_ro / tests / test_vimconn_vmware.py
1 # -*- coding: utf-8 -*-
2
3 ##
4 # Copyright 2016-2017 VMware Inc.
5 # This file is part of ETSI OSM
6 # All Rights Reserved.
7 #
8 # Licensed under the Apache License, Version 2.0 (the "License"); you may
9 # not use this file except in compliance with the License. You may obtain
10 # a copy of the License at
11 #
12 # http://www.apache.org/licenses/LICENSE-2.0
13 #
14 # Unless required by applicable law or agreed to in writing, software
15 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
17 # License for the specific language governing permissions and limitations
18 # under the License.
19 #
20 # For those usages not covered by the Apache License, Version 2.0 please
21 # contact: osslegalrouting@vmware.com
22 ##
23
24
25 from osm_ro.vimconn_vmware import vimconnector
26 from osm_ro.vimconn import vimconnUnexpectedResponse,vimconnNotFoundException
27 from pyvcloud.vcd.client import Client
28 from lxml import etree as lxmlElementTree
29 from pyvcloud.vcd.org import Org
30 from pyvcloud.vcd.vdc import VDC
31 from pyvcloud.vcd.vapp import VApp
32 import unittest
33 import mock
34 import test_vimconn_vmware_xml_response as xml_resp
35
36 __author__ = "Prakash Kasar"
37
38 class TestVimconn_VMware(unittest.TestCase):
39 def setUp(self):
40 config = { "admin_password": "admin",
41 "admin_username":"user",
42 "nsx_user": "nsx",
43 "nsx_password": "nsx",
44 "nsx_manager":"https://test-nsx" }
45
46 self.client = Client('test', verify_ssl_certs=False)
47
48 # get vcd org object
49 org_resp = xml_resp.org_xml_response
50 get_org = lxmlElementTree.fromstring(org_resp)
51 self.org = Org(self.client, resource=get_org)
52
53 self.vim = vimconnector(uuid='12354',
54 name='test',
55 tenant_id='abc1234',
56 tenant_name='test',
57 url='https://test',
58 config=config)
59
60
61 @mock.patch.object(vimconnector,'get_vdc_details')
62 @mock.patch.object(vimconnector,'connect')
63 @mock.patch.object(vimconnector,'perform_request')
64 def test_get_network_not_found(self, perform_request, connect, get_vdc_details):
65 """
66 Testcase to get network with invalid network id
67 """
68 # created vdc object
69 vdc_xml_resp = xml_resp.vdc_xml_response
70 vdc = lxmlElementTree.fromstring(vdc_xml_resp)
71
72 # assumed return value from VIM connector
73 get_vdc_details.return_value = self.org, vdc
74 self.vim.client = self.vim.connect()
75 perform_request.return_value.status_code = 200
76 perform_request.return_value.content = xml_resp.vdc_xml_response
77
78 # call to VIM connector method with invalid id
79 self.assertRaises(vimconnNotFoundException,self.vim.get_network,'mgmt-net')
80
81 @mock.patch.object(vimconnector,'perform_request')
82 @mock.patch.object(vimconnector,'get_vdc_details')
83 @mock.patch.object(vimconnector,'connect')
84 def test_get_network(self, connect, get_vdc_details, perform_request):
85 """
86 Testcase to get network with valid network id
87 """
88 net_id = '5c04dc6d-6096-47c6-b72b-68f19013d491'
89 # created vdc object
90 vdc_xml_resp = xml_resp.vdc_xml_response
91 vdc = lxmlElementTree.fromstring(vdc_xml_resp)
92
93 # assumed return value from VIM connector
94 get_vdc_details.return_value = self.org, vdc
95 self.vim.client = self.vim.connect()
96 perform_request.side_effect = [mock.Mock(status_code = 200,
97 content = xml_resp.vdc_xml_response),
98 mock.Mock(status_code = 200,
99 content = xml_resp.network_xml_response)]
100 # call to VIM connector method with network_id
101 result = self.vim.get_network(net_id)
102
103 # assert verified expected and return result from VIM connector
104 self.assertEqual(net_id, result['id'])
105
106 @mock.patch.object(vimconnector,'perform_request')
107 @mock.patch.object(vimconnector,'get_vdc_details')
108 @mock.patch.object(vimconnector,'connect')
109 def test_get_network_list_not_found(self, connect, get_vdc_details, perform_request):
110 """
111 Testcase to get list of available networks by invalid network id
112 """
113 vdc_xml_resp = xml_resp.vdc_xml_response
114 network_xml_resp = xml_resp.network_xml_response
115 # created vdc object
116 vdc = lxmlElementTree.fromstring(vdc_xml_resp)
117
118 # assumed return value from VIM connector
119 get_vdc_details.return_value = self.org, vdc
120 self.vim.client = self.vim.connect()
121 perform_request.return_value.status_code = 200
122 perform_request.return_value.content = network_xml_resp
123
124 # call to VIM connector method with network_id
125 result = self.vim.get_network_list({'id':'45hdfg-345nb-345'})
126
127 # assert verified expected and return result from VIM connector
128 self.assertEqual(list(), result)
129
130 @mock.patch.object(vimconnector,'perform_request')
131 @mock.patch.object(vimconnector,'get_vdc_details')
132 @mock.patch.object(vimconnector,'connect')
133 def test_get_network_list(self, connect, get_vdc_details, perform_request):
134 """
135 Testcase to get list of available networks by valid network id
136 """
137 #import pdb;pdb.set_trace() ## Not working
138 vdc_xml_resp = xml_resp.vdc_xml_response
139 net_id = '5c04dc6d-6096-47c6-b72b-68f19013d491'
140 # created vdc object
141 vdc = lxmlElementTree.fromstring(vdc_xml_resp)
142 # created network object
143 network_xml_resp = xml_resp.network_xml_response
144 # assumed return value from VIM connector
145 get_vdc_details.return_value = self.org, vdc
146 self.vim.client = self.vim.connect()
147 perform_request.side_effect = [mock.Mock(status_code = 200,
148 content = xml_resp.vdc_xml_response),
149 mock.Mock(status_code = 200,
150 content = network_xml_resp)]
151 perform_request.reset_mock()
152 perform_request()
153
154 # call to VIM connector method with network_id
155 result = self.vim.get_network_list({'id': net_id})
156
157 # assert verified expected and return result from VIM connector
158 for item in result:
159 self.assertEqual(item.get('id'), net_id)
160 self.assertEqual(item.get('status'), 'ACTIVE')
161 self.assertEqual(item.get('shared'), False)
162
163 @mock.patch.object(vimconnector,'create_network_rest')
164 def test_new_network(self, create_network_rest):
165 """
166 Testcase to create new network by passing network name and type
167 """
168 # create network reposnse
169 create_net_xml_resp = xml_resp.create_network_xml_response
170 net_name = 'Test_network'
171 net_type = 'bridge'
172 # assumed return value from VIM connector
173 create_network_rest.return_value = create_net_xml_resp
174 # call to VIM connector method with network name and type
175 result = self.vim.new_network(net_name, net_type)
176
177 # assert verified expected and return result from VIM connector
178 self.assertEqual(result, 'df1956fa-da04-419e-a6a2-427b6f83788f')
179
180 @mock.patch.object(vimconnector, 'create_network_rest')
181 def test_new_network_not_created(self, create_network_rest):
182 """
183 Testcase to create new network by assigning empty xml data
184 """
185 # assumed return value from VIM connector
186 create_network_rest.return_value = """<?xml version="1.0" encoding="UTF-8"?>
187 <OrgVdcNetwork></OrgVdcNetwork>"""
188
189
190 # assert verified expected and return result from VIM connector
191 self.assertRaises(vimconnUnexpectedResponse,self.vim.new_network,
192 'test_net',
193 'bridge')
194
195 @mock.patch.object(vimconnector, 'connect')
196 @mock.patch.object(vimconnector, 'get_network_action')
197 @mock.patch.object(vimconnector, 'delete_network_action')
198 def test_delete_network(self, delete_network_action, get_network_action, connect):
199 """
200 Testcase to delete network by network id
201 """
202 net_uuid = '0a55e5d1-43a2-4688-bc92-cb304046bf87'
203 # delete network response
204 delete_net_xml_resp = xml_resp.delete_network_xml_response
205
206 # assumed return value from VIM connector
207 self.vim.client = self.vim.connect()
208 get_network_action.return_value = delete_net_xml_resp
209 delete_network_action.return_value = True
210 # call to VIM connector method with network_id
211 result = self.vim.delete_network(net_uuid)
212
213 # assert verified expected and return result from VIM connector
214 self.assertEqual(result, net_uuid)
215
216 @mock.patch.object(vimconnector, 'get_vcd_network')
217 def test_delete_network_not_found(self, get_vcd_network):
218 """
219 Testcase to delete network by invalid network id
220 """
221 # assumed return value from VIM connector
222 get_vcd_network.return_value = False
223 # assert verified expected and return result from VIM connector
224 self.assertRaises(vimconnNotFoundException,self.vim.delete_network,
225 '2a23e5d1-42a2-0648-bc92-cb508046bf87')
226
227 def test_get_flavor(self):
228 """
229 Testcase to get flavor data
230 """
231 flavor_data = {'a646eb8a-95bd-4e81-8321-5413ee72b62e': {'disk': 10,
232 'vcpus': 1,
233 'ram': 1024}}
234 vimconnector.flavorlist = flavor_data
235 result = self.vim.get_flavor('a646eb8a-95bd-4e81-8321-5413ee72b62e')
236
237 # assert verified expected and return result from VIM connector
238 self.assertEqual(result, flavor_data['a646eb8a-95bd-4e81-8321-5413ee72b62e'])
239
240 def test_get_flavor_not_found(self):
241 """
242 Testcase to get flavor data with invalid id
243 """
244 vimconnector.flavorlist = {}
245 # assert verified expected and return result from VIM connector
246 self.assertRaises(vimconnNotFoundException,self.vim.get_flavor,
247 'a646eb8a-95bd-4e81-8321-5413ee72b62e')
248
249 def test_new_flavor(self):
250 """
251 Testcase to create new flavor data
252 """
253 flavor_data = {'disk': 10, 'vcpus': 1, 'ram': 1024}
254 result = self.vim.new_flavor(flavor_data)
255 # assert verified expected and return result from VIM connector
256 self.assertIsNotNone(result)
257
258 def test_delete_flavor(self):
259 """
260 Testcase to delete flavor data
261 """
262 flavor_data = {'2cb3dffb-5c51-4355-8406-28553ead28ac': {'disk': 10,
263 'vcpus': 1,
264 'ram': 1024}}
265 vimconnector.flavorlist = flavor_data
266 # return value from VIM connector
267 result = self.vim.delete_flavor('2cb3dffb-5c51-4355-8406-28553ead28ac')
268
269 # assert verified expected and return result from VIM connector
270 self.assertEqual(result, '2cb3dffb-5c51-4355-8406-28553ead28ac')
271
272 @mock.patch.object(vimconnector,'connect_as_admin')
273 @mock.patch.object(vimconnector,'perform_request')
274 def test_delete_image_not_found(self, perform_request, connect_as_admin):
275 """
276 Testcase to delete image by invalid image id
277 """
278 # creating conn object
279 self.vim.client = self.vim.connect_as_admin()
280
281 # assumed return value from VIM connector
282 perform_request.side_effect = [mock.Mock(status_code = 200,
283 content = xml_resp.delete_catalog_xml_response),
284 mock.Mock(status_code = 201,
285 content = xml_resp.delete_catalog_item_xml_response)
286 ]
287
288 # assert verified expected and return result from VIM connector
289 self.assertRaises(vimconnNotFoundException, self.vim.delete_image, 'invali3453')
290
291 @mock.patch.object(vimconnector,'get_vdc_details')
292 @mock.patch.object(vimconnector,'connect')
293 @mock.patch.object(Org,'list_catalogs')
294 def test_get_image_list(self, list_catalogs, connect, get_vdc_details):
295 """
296 Testcase to get image list by valid image id
297 """
298 # created vdc object
299 vdc_xml_resp = xml_resp.vdc_xml_response
300 vdc = lxmlElementTree.fromstring(vdc_xml_resp)
301 self.vim.client = self.vim.connect()
302
303 # assumed return value from VIM connector
304 get_vdc_details.return_value = self.org, vdc
305 list_catalogs.return_value = [{'isShared': 'false', 'numberOfVAppTemplates': '1', 'orgName': 'Org3', 'isPublished': 'false', 'ownerName': 'system', 'numberOfMedia': '0', 'creationDate': '2017-10-15T02:03:59.403-07:00', 'id': '34925a30-0f4a-4018-9759-0d6799063b51', 'name': 'Ubuntu_1nic'}, {'isShared': 'false', 'numberOfVAppTemplates': '1', 'orgName': 'Org3', 'isPublished': 'false', 'ownerName': 'orgadmin', 'numberOfMedia': '1', 'creationDate': '2018-02-15T02:16:58.300-08:00', 'id': '4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a', 'name': 'cirros034'}, {'isShared': 'true', 'numberOfVAppTemplates': '1', 'orgName': 'Org3', 'isPublished': 'true', 'ownerName': 'system', 'numberOfMedia': '0', 'creationDate': '2018-01-26T02:09:12.387-08:00', 'id': 'b139ed82-7ca4-49fb-9882-5f841f59c890', 'name': 'Ubuntu_plugtest-1'}, {'isShared': 'true', 'numberOfVAppTemplates': '1', 'orgName': 'Org2', 'isPublished': 'false', 'ownerName': 'system', 'numberOfMedia': '0', 'creationDate': '2017-06-18T21:33:16.430-07:00', 'id': 'b31e6973-86d2-404b-a522-b16846d099dc', 'name': 'Ubuntu_Cat'}, {'isShared': 'false', 'numberOfVAppTemplates': '1', 'orgName': 'Org3', 'isPublished': 'false', 'ownerName': 'orgadmin', 'numberOfMedia': '0', 'creationDate': '2018-02-15T22:26:28.910-08:00', 'id': 'c3b56180-f980-4256-9109-a93168d73ff2', 'name': 'de4ffcf2ad21f1a5d0714d6b868e2645'}, {'isShared': 'false', 'numberOfVAppTemplates': '0', 'orgName': 'Org3', 'isPublished': 'false', 'ownerName': 'system', 'numberOfMedia': '0', 'creationDate': '2017-08-23T05:54:56.780-07:00', 'id': 'd0eb0b02-718d-42e0-b889-56575000b52d', 'name': 'Test_Cirros'}, {'isShared': 'false', 'numberOfVAppTemplates': '0', 'orgName': 'Org3', 'isPublished': 'false', 'ownerName': 'system', 'numberOfMedia': '0', 'creationDate': '2017-03-08T21:25:05.923-08:00', 'id': 'd3fa3df2-b311-4571-9138-4c66541d7f46', 'name': 'cirros_10'}, {'isShared': 'false', 'numberOfVAppTemplates': '0', 'orgName': 'Org3', 'isPublished': 'false', 'ownerName': 'system', 'numberOfMedia': '0', 'creationDate': '2017-07-12T22:45:20.537-07:00', 'id': 'd64b2617-ea4b-4b90-910b-102c99dd2031', 'name': 'Ubuntu16'}, {'isShared': 'true', 'numberOfVAppTemplates': '1', 'orgName': 'Org3', 'isPublished': 'true', 'ownerName': 'system', 'numberOfMedia': '1', 'creationDate': '2017-10-14T23:52:37.260-07:00', 'id': 'e8d953db-8dc9-46d5-9cab-329774cd2ad9', 'name': 'Ubuntu_no_nic'}]
306
307 result = self.vim.get_image_list({'id': '4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a'})
308
309 # assert verified expected and return result from VIM connector
310 for item in result:
311 self.assertEqual(item['id'], '4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a')
312
313 @mock.patch.object(vimconnector,'get_vapp_details_rest')
314 @mock.patch.object(vimconnector,'get_vdc_details')
315 def test_get_vminstance(self, get_vdc_details, get_vapp_details_rest):
316 """
317 Testcase to get vminstance by valid vm id
318 """
319 vapp_info = {'status': '4',
320 'acquireMksTicket': {'href': 'https://localhost/api/vApp/vm-47d12505-5968-4e16-95a7-18743edb0c8b/screen/action/acquireMksTicket',
321 'type': 'application/vnd.vmware.vcloud.mksTicket+xml', 'rel': 'screen:acquireMksTicket'},
322 'vm_virtual_hardware': {'disk_edit_href': 'https://localhost/api/vApp/vm-47d12505-5968-4e16-95a7-18743edb0c8b/virtualHardwareSection/disks', 'disk_size': '40960'},
323 'name': 'Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa',
324 'created': '2017-09-21T01:15:31.627-07:00',
325 'IsEnabled': 'true',
326 'EndAddress': '12.16.24.199',
327 'interfaces': [{'MACAddress': '00:50:56:01:12:a2',
328 'NetworkConnectionIndex': '0',
329 'network': 'testing_T6nODiW4-68f68d93-0350-4d86-b40b-6e74dedf994d',
330 'IpAddressAllocationMode': 'DHCP',
331 'IsConnected': 'true',
332 'IpAddress': '12.16.24.200'}],
333 'ovfDescriptorUploaded': 'true',
334 'nestedHypervisorEnabled': 'false',
335 'Gateway': '12.16.24.1',
336 'acquireTicket': {'href': 'https://localhost/api/vApp/vm-47d12505-5968-4e16-95a7-18743edb0c8b/screen/action/acquireTicket',
337 'rel': 'screen:acquireTicket'},
338 'vmuuid': '47d12505-5968-4e16-95a7-18743edb0c8b',
339 'Netmask': '255.255.255.0',
340 'StartAddress': '12.16.24.100',
341 'primarynetwork': '0',
342 'networkname': 'External-Network-1074',
343 'IsInherited': 'false',
344 'deployed': 'true'}
345 # created vdc object
346 vdc_xml_resp = xml_resp.vdc_xml_response
347 vdc = lxmlElementTree.fromstring(vdc_xml_resp)
348 # assumed return value from VIM connector
349 get_vdc_details.return_value = self.org, vdc
350 get_vapp_details_rest.return_value = vapp_info
351
352 result = self.vim.get_vminstance('47d12505-5968-4e16-95a7-18743edb0c8b')
353 # assert verified expected and return result from VIM connector
354 self.assertEqual(result['status'], 'ACTIVE')
355 self.assertEqual(result['hostId'], '47d12505-5968-4e16-95a7-18743edb0c8b')
356
357
358 @mock.patch.object(vimconnector,'connect')
359 @mock.patch.object(vimconnector,'get_namebyvappid')
360 @mock.patch.object(vimconnector,'get_vdc_details')
361 @mock.patch.object(VDC,'get_vapp')
362 @mock.patch.object(VApp,'power_off')
363 @mock.patch.object(VApp,'undeploy')
364 @mock.patch.object(VDC,'delete_vapp')
365 @mock.patch.object(Client,'get_task_monitor')
366 def test_delete_vminstance(self, get_task_monitor, delete_vapp,
367 undeploy, poweroff,
368 get_vapp, get_vdc_details,
369 get_namebyvappid, connect):
370 """
371 Testcase to delete vminstance by valid vm id
372 """
373 vm_id = '4f6a9b49-e92d-4935-87a1-0e4dc9c3a069'
374 vm_name = 'Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa'
375 # created vdc object
376 vdc_xml_resp = xml_resp.vdc_xml_response
377 vdc = lxmlElementTree.fromstring(vdc_xml_resp)
378
379 # assumed return value from VIM connector
380 self.vim.client = self.vim.connect()
381 get_vdc_details.return_value = self.org, vdc
382 get_namebyvappid.return_name = vm_name
383
384 vapp_resp = xml_resp.vapp_xml_response
385 vapp = lxmlElementTree.fromstring(vapp_resp)
386 get_vapp.return_value = vapp
387
388 power_off_resp = xml_resp.poweroff_task_xml
389 power_off = lxmlElementTree.fromstring(power_off_resp)
390 poweroff.return_value = power_off
391
392 status_resp = xml_resp.status_task_xml
393 status = lxmlElementTree.fromstring(status_resp)
394 self.vim.connect.return_value.get_task_monitor.return_value.wait_for_success.return_value = status
395
396 # call to VIM connector method
397 result = self.vim.delete_vminstance(vm_id)
398
399 # assert verified expected and return result from VIM connector
400 self.assertEqual(result, vm_id)
401
402 @mock.patch.object(vimconnector,'get_network_id_by_name')
403 @mock.patch.object(vimconnector,'get_vm_pci_details')
404 @mock.patch.object(VDC,'get_vapp')
405 @mock.patch.object(vimconnector,'connect')
406 @mock.patch.object(vimconnector,'get_namebyvappid')
407 @mock.patch.object(vimconnector,'get_vdc_details')
408 @mock.patch.object(vimconnector,'perform_request')
409 @mock.patch.object(VApp,'get_all_vms')
410 def test_refresh_vms_status(self, get_all_vms, perform_request, get_vdc_details,
411 get_namebyvappid, connect,
412 get_vapp, get_vm_pci_details,
413 get_network_id_by_name):
414 """
415 Testcase to refresh vms status by valid vm id
416 """
417 vm_id = '53a529b2-10d8-4d56-a7ad-8182acdbe71c'
418
419 # created vdc object
420 vdc_xml_resp = xml_resp.vdc_xml_response
421 vdc = lxmlElementTree.fromstring(vdc_xml_resp)
422 # assumed return value from VIM connector
423 self.vim.client = self.vim.connect()
424 get_vdc_details.return_value = self.org, vdc
425
426 get_namebyvappid.return_value = 'Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa'
427 get_vm_pci_details.return_value = {'host_name': 'test-esx-1.corp.local', 'host_ip': '12.19.24.31'}
428 vapp_resp = xml_resp.vapp_xml_response
429 vapp = lxmlElementTree.fromstring(vapp_resp)
430 get_vapp.return_value = vapp
431 get_network_id_by_name.return_value = '47d12505-5968-4e16-95a7-18743edb0c8b'
432
433 vm_resp = xml_resp.vm_xml_response
434 vm_list = lxmlElementTree.fromstring(vm_resp)
435 get_all_vms.return_value = vm_list
436
437 perform_request.return_value.status_code = 200
438 perform_request.return_value.content = vm_resp
439 # call to VIM connector method
440 result = self.vim.refresh_vms_status([vm_id])
441 for attr in result[vm_id]:
442 if attr == 'status':
443 # assert verified expected and return result from VIM connector
444 self.assertEqual(result[vm_id][attr], 'ACTIVE')
445
446 @mock.patch.object(vimconnector,'get_vcd_network')
447 def test_refresh_nets_status(self, get_vcd_network):
448 net_id = 'c2d0f28f-d38b-4588-aecc-88af3d4af58b'
449 network_dict = {'status': '1','isShared': 'false','IpScope': '',
450 'EndAddress':'12.19.21.15',
451 'name': 'testing_gwyRXlvWYL1-9ebb6d7b-5c74-472f-be77-963ed050d44d',
452 'Dns1': '12.19.21.10', 'IpRanges': '',
453 'Gateway': '12.19.21.23', 'Netmask': '255.255.255.0',
454 'RetainNetInfoAcrossDeployments': 'false',
455 'IpScopes': '', 'IsEnabled': 'true', 'DnsSuffix': 'corp.local',
456 'StartAddress': '12.19.21.11', 'IpRange': '',
457 'Configuration': '', 'FenceMode': 'bridged',
458 'IsInherited': 'true', 'uuid': 'c2d0f28f-d38b-4588-aecc-88af3d4af58b'}
459 # assumed return value from VIM connector
460 get_vcd_network.return_value = network_dict
461 result = self.vim.refresh_nets_status([net_id])
462 # assert verified expected and return result from VIM connector
463 for attr in result[net_id]:
464 if attr == 'status':
465 self.assertEqual(result[net_id][attr], 'ACTIVE')
466
467 @mock.patch.object(VDC,'get_vapp')
468 @mock.patch.object(vimconnector,'connect')
469 @mock.patch.object(vimconnector,'get_namebyvappid')
470 @mock.patch.object(vimconnector,'get_vdc_details')
471 def test_action_vminstance(self, get_vdc_details, get_namebyvappid,
472 connect,
473 get_vapp):
474 """
475 Testcase for action vm instance by vm id
476 """
477 task_resp = xml_resp.poweroff_task_xml
478 vm_id = '05e6047b-6938-4275-8940-22d1ea7245b8'
479 # created vdc object
480 vdc_xml_resp = xml_resp.vdc_xml_response
481 vdc = lxmlElementTree.fromstring(vdc_xml_resp)
482 # assumed return value from VIM connector
483 get_vdc_details.return_value = self.org, vdc
484 get_namebyvappid.return_value = 'Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa'
485 self.vim.client = self.vim.connect()
486 power_off_resp = xml_resp.poweroff_task_xml
487 power_off = lxmlElementTree.fromstring(power_off_resp)
488 get_vapp.return_value.undeploy.return_value = power_off
489
490 status_resp = xml_resp.status_task_xml
491 status = lxmlElementTree.fromstring(status_resp)
492 self.vim.connect.return_value.get_task_monitor.return_value.wait_for_success.return_value = status
493
494 # call to VIM connector method
495 result = self.vim.action_vminstance(vm_id,{'shutdown': None})
496
497 # assert verified expected and return result from VIM connector
498 self.assertEqual(result, vm_id)
499
500 @mock.patch.object(vimconnector,'get_org')
501 def test_get_tenant_list(self, get_org):
502 """
503 Test case for get tenant list
504 """
505 org_dict = {'catalogs': {'4c4fdb5d-0c7d-4fee-9efd-cb061f327a01': '80d8488f67ba1de98b7f485fba6abbd2', '1b98ca02-b0a6-4ca7-babe-eadc0ae59677': 'Ubuntu', 'e7f27dfe-14b7-49e1-918e-173bda02683a': '834bdd1f28fd15dcbe830456ec58fbca', '9441ee69-0486-4438-ac62-8d8082c51302': 'centos', 'e660cce0-47a6-4315-a5b9-97a39299a374': 'cirros01', '0fd96c61-c3d1-4abf-9a34-0dff8fb65743': 'cirros034', '1c703be3-9bd2-46a2-854c-3e678d5cdda8': 'Ubuntu_plugtest-1', 'bc4e342b-f84c-41bd-a93a-480f35bacf69': 'Cirros', '8a206fb5-3ef9-4571-9bcc-137615f4d930': '255eb079a62ac155e7f942489f14b0c4'}, 'vdcs': {'e6436c6a-d922-4b39-9c1c-b48e766fce5e': 'osm', '3852f762-18ae-4833-a229-42684b6e7373': 'cloud-1-vdc'}, 'networks': {'e203cacd-9320-4422-9be0-12c7def3ab56': 'testing_lNejr37B-38e4ca67-1e26-486f-ad2f-f14bb099e068', 'a6623349-2bef-4367-9fda-d33f9ab927f8': 'Vlan_3151', 'adf780cb-358c-47c2-858d-ae5778ccaf17': 'testing_xwBultc-99b8a2ae-c091-4dd3-bbf7-762a51612385', '721f9efc-11fe-4c13-936d-252ba0ed93c8': 'testing_tLljy8WB5e-a898cb28-e75b-4867-a22e-f2bad285c144', '1512d97a-929d-4b06-b8af-cf5ac42a2aee': 'Managment', 'd9167301-28af-4b89-b9e0-09f612e962fa': 'testing_prMW1VThk-063cb428-eaee-44b8-9d0d-df5fb77a5b4d', '004ae853-f899-43fd-8981-7513a3b40d6b': 'testing_RTtKVi09rld-fab00b16-7996-49af-8249-369c6bbfa02d'}}
506 tenant_name = 'osm'
507 get_org.return_value = org_dict
508
509 # call to VIM connector method
510 results = self.vim.get_tenant_list({'name' : tenant_name})
511 # assert verified expected and return result from VIM connector
512 for result in results:
513 self.assertEqual(tenant_name,result['name'])
514
515 @mock.patch.object(vimconnector,'get_org')
516 def test_get_tenant_list_negative(self, get_org):
517 """
518 Test case for get tenant list negative
519 """
520 org_dict = {'vdcs': {}}
521 tenant_name = 'testosm'
522 get_org.return_value = org_dict
523
524 # call to VIM connector method
525 results = self.vim.get_tenant_list({'name' : tenant_name})
526 # assert verified expected and return result from VIM connector
527 self.assertEqual(results, [])