1 # -*- coding: utf-8 -*-
4 # Copyright 2016-2017 VMware Inc.
5 # This file is part of ETSI OSM
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
12 # http://www.apache.org/licenses/LICENSE-2.0
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
20 # For those usages not covered by the Apache License, Version 2.0 please
21 # contact: osslegalrouting@vmware.com
25 from osm_ro
.vimconn_vmware
import vimconnector
26 from osm_ro
.vimconn
import vimconnUnexpectedResponse
,vimconnNotFoundException
,vimconnException
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
35 import test_vimconn_vmware_xml_response
as xml_resp
38 __author__
= "Prakash Kasar"
40 class TestVimconn_VMware(unittest
.TestCase
):
42 config
= { "admin_password": "admin",
43 "admin_username":"user",
45 "nsx_password": "nsx",
46 "nsx_manager":"https://test-nsx" }
48 self
.client
= Client('test', verify_ssl_certs
=False)
51 org_resp
= xml_resp
.org_xml_response
52 get_org
= lxmlElementTree
.fromstring(org_resp
)
53 self
.org
= Org(self
.client
, resource
=get_org
)
55 self
.vim
= vimconnector(uuid
='12354',
63 @mock.patch
.object(vimconnector
,'get_vdc_details')
64 @mock.patch
.object(vimconnector
,'connect')
65 @mock.patch
.object(vimconnector
,'perform_request')
66 def test_get_network_not_found(self
, perform_request
, connect
, get_vdc_details
):
68 Testcase to get network with invalid network id
71 vdc_xml_resp
= xml_resp
.vdc_xml_response
72 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
74 # assumed return value from VIM connector
75 get_vdc_details
.return_value
= self
.org
, vdc
76 self
.vim
.client
= self
.vim
.connect()
77 perform_request
.return_value
.status_code
= 200
78 perform_request
.return_value
.content
= xml_resp
.vdc_xml_response
80 # call to VIM connector method with invalid id
81 self
.assertRaises(vimconnNotFoundException
,self
.vim
.get_network
,'mgmt-net')
83 @mock.patch
.object(vimconnector
,'perform_request')
84 @mock.patch
.object(vimconnector
,'get_vdc_details')
85 @mock.patch
.object(vimconnector
,'connect')
86 def test_get_network(self
, connect
, get_vdc_details
, perform_request
):
88 Testcase to get network with valid network id
90 net_id
= '5c04dc6d-6096-47c6-b72b-68f19013d491'
92 vdc_xml_resp
= xml_resp
.vdc_xml_response
93 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
95 # assumed return value from VIM connector
96 get_vdc_details
.return_value
= self
.org
, vdc
97 self
.vim
.client
= self
.vim
.connect()
98 perform_request
.side_effect
= [mock
.Mock(status_code
= 200,
99 content
= xml_resp
.vdc_xml_response
),
100 mock
.Mock(status_code
= 200,
101 content
= xml_resp
.network_xml_response
)]
102 # call to VIM connector method with network_id
103 result
= self
.vim
.get_network(net_id
)
105 # assert verified expected and return result from VIM connector
106 self
.assertEqual(net_id
, result
['id'])
108 @mock.patch
.object(vimconnector
,'perform_request')
109 @mock.patch
.object(vimconnector
,'get_vdc_details')
110 @mock.patch
.object(vimconnector
,'connect')
111 def test_get_network_list_not_found(self
, connect
, get_vdc_details
, perform_request
):
113 Testcase to get list of available networks by invalid network id
115 vdc_xml_resp
= xml_resp
.vdc_xml_response
116 network_xml_resp
= xml_resp
.network_xml_response
118 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
120 # assumed return value from VIM connector
121 get_vdc_details
.return_value
= self
.org
, vdc
122 self
.vim
.client
= self
.vim
.connect()
123 perform_request
.return_value
.status_code
= 200
124 perform_request
.return_value
.content
= network_xml_resp
126 # call to VIM connector method with network_id
127 result
= self
.vim
.get_network_list({'id':'45hdfg-345nb-345'})
129 # assert verified expected and return result from VIM connector
130 self
.assertEqual(list(), result
)
132 @mock.patch
.object(vimconnector
,'perform_request')
133 @mock.patch
.object(vimconnector
,'get_vdc_details')
134 @mock.patch
.object(vimconnector
,'connect')
135 def test_get_network_list(self
, connect
, get_vdc_details
, perform_request
):
137 Testcase to get list of available networks by valid network id
139 #import pdb;pdb.set_trace() ## Not working
140 vdc_xml_resp
= xml_resp
.vdc_xml_response
141 net_id
= '5c04dc6d-6096-47c6-b72b-68f19013d491'
143 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
144 # created network object
145 network_xml_resp
= xml_resp
.network_xml_response
146 # assumed return value from VIM connector
147 get_vdc_details
.return_value
= self
.org
, vdc
148 self
.vim
.client
= self
.vim
.connect()
149 perform_request
.side_effect
= [mock
.Mock(status_code
= 200,
150 content
= xml_resp
.vdc_xml_response
),
151 mock
.Mock(status_code
= 200,
152 content
= network_xml_resp
)]
153 perform_request
.reset_mock()
156 # call to VIM connector method with network_id
157 result
= self
.vim
.get_network_list({'id': net_id
})
159 # assert verified expected and return result from VIM connector
161 self
.assertEqual(item
.get('id'), net_id
)
162 self
.assertEqual(item
.get('status'), 'ACTIVE')
163 self
.assertEqual(item
.get('shared'), False)
165 @mock.patch
.object(vimconnector
,'create_network_rest')
166 def test_new_network(self
, create_network_rest
):
168 Testcase to create new network by passing network name and type
170 # create network reposnse
171 create_net_xml_resp
= xml_resp
.create_network_xml_response
172 net_name
= 'Test_network'
174 # assumed return value from VIM connector
175 create_network_rest
.return_value
= create_net_xml_resp
176 # call to VIM connector method with network name and type
177 result
= self
.vim
.new_network(net_name
, net_type
)
179 # assert verified expected and return result from VIM connector
180 self
.assertEqual(result
, 'df1956fa-da04-419e-a6a2-427b6f83788f')
182 @mock.patch
.object(vimconnector
, 'create_network_rest')
183 def test_new_network_not_created(self
, create_network_rest
):
185 Testcase to create new network by assigning empty xml data
187 # assumed return value from VIM connector
188 create_network_rest
.return_value
= """<?xml version="1.0" encoding="UTF-8"?>
189 <OrgVdcNetwork></OrgVdcNetwork>"""
191 # assert verified expected and return result from VIM connector
192 self
.assertRaises(vimconnUnexpectedResponse
,self
.vim
.new_network
,
196 @mock.patch
.object(vimconnector
, 'connect')
197 @mock.patch
.object(vimconnector
, 'get_network_action')
198 @mock.patch
.object(vimconnector
, 'delete_network_action')
199 def test_delete_network(self
, delete_network_action
, get_network_action
, connect
):
201 Testcase to delete network by network id
203 net_uuid
= '0a55e5d1-43a2-4688-bc92-cb304046bf87'
204 # delete network response
205 delete_net_xml_resp
= xml_resp
.delete_network_xml_response
207 # assumed return value from VIM connector
208 self
.vim
.client
= self
.vim
.connect()
209 get_network_action
.return_value
= delete_net_xml_resp
210 delete_network_action
.return_value
= True
211 # call to VIM connector method with network_id
212 result
= self
.vim
.delete_network(net_uuid
)
214 # assert verified expected and return result from VIM connector
215 self
.assertEqual(result
, net_uuid
)
217 @mock.patch
.object(vimconnector
, 'get_vcd_network')
218 def test_delete_network_not_found(self
, get_vcd_network
):
220 Testcase to delete network by invalid network id
222 # assumed return value from VIM connector
223 get_vcd_network
.return_value
= False
224 # assert verified expected and return result from VIM connector
225 self
.assertRaises(vimconnNotFoundException
,self
.vim
.delete_network
,
226 '2a23e5d1-42a2-0648-bc92-cb508046bf87')
228 def test_get_flavor(self
):
230 Testcase to get flavor data
232 flavor_data
= {'a646eb8a-95bd-4e81-8321-5413ee72b62e': {'disk': 10,
235 vimconnector
.flavorlist
= flavor_data
236 result
= self
.vim
.get_flavor('a646eb8a-95bd-4e81-8321-5413ee72b62e')
238 # assert verified expected and return result from VIM connector
239 self
.assertEqual(result
, flavor_data
['a646eb8a-95bd-4e81-8321-5413ee72b62e'])
241 def test_get_flavor_not_found(self
):
243 Testcase to get flavor data with invalid id
245 vimconnector
.flavorlist
= {}
246 # assert verified expected and return result from VIM connector
247 self
.assertRaises(vimconnNotFoundException
,self
.vim
.get_flavor
,
248 'a646eb8a-95bd-4e81-8321-5413ee72b62e')
250 def test_new_flavor(self
):
252 Testcase to create new flavor data
254 flavor_data
= {'disk': 10, 'vcpus': 1, 'ram': 1024}
255 result
= self
.vim
.new_flavor(flavor_data
)
256 # assert verified expected and return result from VIM connector
257 self
.assertIsNotNone(result
)
259 def test_delete_flavor(self
):
261 Testcase to delete flavor data
263 flavor_data
= {'2cb3dffb-5c51-4355-8406-28553ead28ac': {'disk': 10,
266 vimconnector
.flavorlist
= flavor_data
267 # return value from VIM connector
268 result
= self
.vim
.delete_flavor('2cb3dffb-5c51-4355-8406-28553ead28ac')
270 # assert verified expected and return result from VIM connector
271 self
.assertEqual(result
, '2cb3dffb-5c51-4355-8406-28553ead28ac')
273 @mock.patch
.object(vimconnector
,'connect_as_admin')
274 @mock.patch
.object(vimconnector
,'perform_request')
275 def test_delete_image_not_found(self
, perform_request
, connect_as_admin
):
277 Testcase to delete image by invalid image id
279 # creating conn object
280 self
.vim
.client
= self
.vim
.connect_as_admin()
282 # assumed return value from VIM connector
283 perform_request
.side_effect
= [mock
.Mock(status_code
= 200,
284 content
= xml_resp
.delete_catalog_xml_response
),
285 mock
.Mock(status_code
= 201,
286 content
= xml_resp
.delete_catalog_item_xml_response
)
289 # assert verified expected and return result from VIM connector
290 self
.assertRaises(vimconnNotFoundException
, self
.vim
.delete_image
, 'invali3453')
292 @mock.patch
.object(vimconnector
,'get_vdc_details')
293 @mock.patch
.object(vimconnector
,'connect')
294 @mock.patch
.object(Org
,'list_catalogs')
295 def test_get_image_list(self
, list_catalogs
, connect
, get_vdc_details
):
297 Testcase to get image list by valid image id
300 vdc_xml_resp
= xml_resp
.vdc_xml_response
301 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
302 self
.vim
.client
= self
.vim
.connect()
304 # assumed return value from VIM connector
305 get_vdc_details
.return_value
= self
.org
, vdc
306 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'}]
308 result
= self
.vim
.get_image_list({'id': '4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a'})
310 # assert verified expected and return result from VIM connector
312 self
.assertEqual(item
['id'], '4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a')
314 @mock.patch
.object(vimconnector
,'get_vapp_details_rest')
315 @mock.patch
.object(vimconnector
,'get_vdc_details')
316 def test_get_vminstance(self
, get_vdc_details
, get_vapp_details_rest
):
318 Testcase to get vminstance by valid vm id
320 vapp_info
= {'status': '4',
321 'acquireMksTicket': {'href': 'https://localhost/api/vApp/vm-47d12505-5968-4e16-95a7-18743edb0c8b/screen/action/acquireMksTicket',
322 'type': 'application/vnd.vmware.vcloud.mksTicket+xml', 'rel': 'screen:acquireMksTicket'},
323 'vm_virtual_hardware': {'disk_edit_href': 'https://localhost/api/vApp/vm-47d12505-5968-4e16-95a7-18743edb0c8b/virtualHardwareSection/disks', 'disk_size': '40960'},
324 'name': 'Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa',
325 'created': '2017-09-21T01:15:31.627-07:00',
327 'EndAddress': '12.16.24.199',
328 'interfaces': [{'MACAddress': '00:50:56:01:12:a2',
329 'NetworkConnectionIndex': '0',
330 'network': 'testing_T6nODiW4-68f68d93-0350-4d86-b40b-6e74dedf994d',
331 'IpAddressAllocationMode': 'DHCP',
332 'IsConnected': 'true',
333 'IpAddress': '12.16.24.200'}],
334 'ovfDescriptorUploaded': 'true',
335 'nestedHypervisorEnabled': 'false',
336 'Gateway': '12.16.24.1',
337 'acquireTicket': {'href': 'https://localhost/api/vApp/vm-47d12505-5968-4e16-95a7-18743edb0c8b/screen/action/acquireTicket',
338 'rel': 'screen:acquireTicket'},
339 'vmuuid': '47d12505-5968-4e16-95a7-18743edb0c8b',
340 'Netmask': '255.255.255.0',
341 'StartAddress': '12.16.24.100',
342 'primarynetwork': '0',
343 'networkname': 'External-Network-1074',
344 'IsInherited': 'false',
347 vdc_xml_resp
= xml_resp
.vdc_xml_response
348 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
349 # assumed return value from VIM connector
350 get_vdc_details
.return_value
= self
.org
, vdc
351 get_vapp_details_rest
.return_value
= vapp_info
353 result
= self
.vim
.get_vminstance('47d12505-5968-4e16-95a7-18743edb0c8b')
354 # assert verified expected and return result from VIM connector
355 self
.assertEqual(result
['status'], 'ACTIVE')
356 self
.assertEqual(result
['hostId'], '47d12505-5968-4e16-95a7-18743edb0c8b')
359 @mock.patch
.object(vimconnector
,'connect')
360 @mock.patch
.object(vimconnector
,'get_namebyvappid')
361 @mock.patch
.object(vimconnector
,'get_vdc_details')
362 @mock.patch
.object(VDC
,'get_vapp')
363 @mock.patch
.object(VApp
,'power_off')
364 @mock.patch
.object(VApp
,'undeploy')
365 @mock.patch
.object(VDC
,'delete_vapp')
366 @mock.patch
.object(Client
,'get_task_monitor')
367 def test_delete_vminstance(self
, get_task_monitor
, delete_vapp
,
369 get_vapp
, get_vdc_details
,
370 get_namebyvappid
, connect
):
372 Testcase to delete vminstance by valid vm id
374 vm_id
= '4f6a9b49-e92d-4935-87a1-0e4dc9c3a069'
375 vm_name
= 'Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa'
377 vdc_xml_resp
= xml_resp
.vdc_xml_response
378 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
380 # assumed return value from VIM connector
381 self
.vim
.client
= self
.vim
.connect()
382 get_vdc_details
.return_value
= self
.org
, vdc
383 get_namebyvappid
.return_name
= vm_name
385 vapp_resp
= xml_resp
.vapp_xml_response
386 vapp
= lxmlElementTree
.fromstring(vapp_resp
)
387 get_vapp
.return_value
= vapp
389 power_off_resp
= xml_resp
.poweroff_task_xml
390 power_off
= lxmlElementTree
.fromstring(power_off_resp
)
391 poweroff
.return_value
= power_off
393 status_resp
= xml_resp
.status_task_xml
394 status
= lxmlElementTree
.fromstring(status_resp
)
395 self
.vim
.connect
.return_value
.get_task_monitor
.return_value
.wait_for_success
.return_value
= status
397 # call to VIM connector method
398 result
= self
.vim
.delete_vminstance(vm_id
)
400 # assert verified expected and return result from VIM connector
401 self
.assertEqual(result
, vm_id
)
403 @mock.patch
.object(vimconnector
,'get_network_id_by_name')
404 @mock.patch
.object(vimconnector
,'get_vm_pci_details')
405 @mock.patch
.object(VDC
,'get_vapp')
406 @mock.patch
.object(vimconnector
,'connect')
407 @mock.patch
.object(vimconnector
,'get_namebyvappid')
408 @mock.patch
.object(vimconnector
,'get_vdc_details')
409 @mock.patch
.object(vimconnector
,'perform_request')
410 @mock.patch
.object(VApp
,'get_all_vms')
411 def test_refresh_vms_status(self
, get_all_vms
, perform_request
, get_vdc_details
,
412 get_namebyvappid
, connect
,
413 get_vapp
, get_vm_pci_details
,
414 get_network_id_by_name
):
416 Testcase to refresh vms status by valid vm id
418 vm_id
= '53a529b2-10d8-4d56-a7ad-8182acdbe71c'
421 vdc_xml_resp
= xml_resp
.vdc_xml_response
422 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
423 # assumed return value from VIM connector
424 self
.vim
.client
= self
.vim
.connect()
425 get_vdc_details
.return_value
= self
.org
, vdc
427 get_namebyvappid
.return_value
= 'Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa'
428 get_vm_pci_details
.return_value
= {'host_name': 'test-esx-1.corp.local', 'host_ip': '12.19.24.31'}
429 vapp_resp
= xml_resp
.vapp_xml_response
430 vapp
= lxmlElementTree
.fromstring(vapp_resp
)
431 get_vapp
.return_value
= vapp
432 get_network_id_by_name
.return_value
= '47d12505-5968-4e16-95a7-18743edb0c8b'
434 vm_resp
= xml_resp
.vm_xml_response
435 vm_list
= lxmlElementTree
.fromstring(vm_resp
)
436 get_all_vms
.return_value
= vm_list
438 perform_request
.return_value
.status_code
= 200
439 perform_request
.return_value
.content
= vm_resp
440 # call to VIM connector method
441 result
= self
.vim
.refresh_vms_status([vm_id
])
442 for attr
in result
[vm_id
]:
444 # assert verified expected and return result from VIM connector
445 self
.assertEqual(result
[vm_id
][attr
], 'ACTIVE')
447 @mock.patch
.object(vimconnector
,'get_vcd_network')
448 def test_refresh_nets_status(self
, get_vcd_network
):
449 net_id
= 'c2d0f28f-d38b-4588-aecc-88af3d4af58b'
450 network_dict
= {'status': '1','isShared': 'false','IpScope': '',
451 'EndAddress':'12.19.21.15',
452 'name': 'testing_gwyRXlvWYL1-9ebb6d7b-5c74-472f-be77-963ed050d44d',
453 'Dns1': '12.19.21.10', 'IpRanges': '',
454 'Gateway': '12.19.21.23', 'Netmask': '255.255.255.0',
455 'RetainNetInfoAcrossDeployments': 'false',
456 'IpScopes': '', 'IsEnabled': 'true', 'DnsSuffix': 'corp.local',
457 'StartAddress': '12.19.21.11', 'IpRange': '',
458 'Configuration': '', 'FenceMode': 'bridged',
459 'IsInherited': 'true', 'uuid': 'c2d0f28f-d38b-4588-aecc-88af3d4af58b'}
460 # assumed return value from VIM connector
461 get_vcd_network
.return_value
= network_dict
462 result
= self
.vim
.refresh_nets_status([net_id
])
463 # assert verified expected and return result from VIM connector
464 for attr
in result
[net_id
]:
466 self
.assertEqual(result
[net_id
][attr
], 'ACTIVE')
468 @mock.patch
.object(VDC
,'get_vapp')
469 @mock.patch
.object(vimconnector
,'connect')
470 @mock.patch
.object(vimconnector
,'get_namebyvappid')
471 @mock.patch
.object(vimconnector
,'get_vdc_details')
472 def test_action_vminstance(self
, get_vdc_details
, get_namebyvappid
,
476 Testcase for action vm instance by vm id
478 task_resp
= xml_resp
.poweroff_task_xml
479 vm_id
= '05e6047b-6938-4275-8940-22d1ea7245b8'
481 vdc_xml_resp
= xml_resp
.vdc_xml_response
482 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
483 # assumed return value from VIM connector
484 get_vdc_details
.return_value
= self
.org
, vdc
485 get_namebyvappid
.return_value
= 'Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa'
486 self
.vim
.client
= self
.vim
.connect()
487 power_off_resp
= xml_resp
.poweroff_task_xml
488 power_off
= lxmlElementTree
.fromstring(power_off_resp
)
489 get_vapp
.return_value
.undeploy
.return_value
= power_off
491 status_resp
= xml_resp
.status_task_xml
492 status
= lxmlElementTree
.fromstring(status_resp
)
493 self
.vim
.connect
.return_value
.get_task_monitor
.return_value
.wait_for_success
.return_value
= status
495 # call to VIM connector method
496 result
= self
.vim
.action_vminstance(vm_id
,{'shutdown': None})
498 # assert verified expected and return result from VIM connector
499 self
.assertEqual(result
, vm_id
)
501 @mock.patch
.object(vimconnector
,'get_org')
502 def test_get_tenant_list(self
, get_org
):
504 Test case for get tenant list
506 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'}}
508 get_org
.return_value
= org_dict
510 # call to VIM connector method
511 results
= self
.vim
.get_tenant_list({'name' : tenant_name
})
512 # assert verified expected and return result from VIM connector
513 for result
in results
:
514 self
.assertEqual(tenant_name
,result
['name'])
516 @mock.patch
.object(vimconnector
,'get_org')
517 def test_get_tenant_list_negative(self
, get_org
):
519 Test case for get tenant list negative
521 org_dict
= {'vdcs': {}}
522 tenant_name
= 'testosm'
523 get_org
.return_value
= org_dict
525 # call to VIM connector method
526 results
= self
.vim
.get_tenant_list({'name' : tenant_name
})
527 # assert verified expected and return result from VIM connector
528 self
.assertEqual(results
, [])
530 @mock.patch
.object(vimconnector
,'create_vdc')
531 def test_new_tenant(self
, create_vdc
):
533 Test case for create new tenant
536 vdc
= {'a493aa2c-3104-4d63-969b-fc9e72304c9f': 'https://localhost/api/task/e658d84c-007d-4fd8-9590-3a8f93cc0de4'}
537 create_vdc
.return_value
= vdc
539 # call to VIM connector method
540 result
= self
.vim
.new_tenant(tenant_name
)
541 # assert verified expected and return result from VIM connector
542 self
.assertEqual('a493aa2c-3104-4d63-969b-fc9e72304c9f', result
)
544 @mock.patch
.object(vimconnector
,'create_vdc')
545 def test_new_tenant_negative(self
, create_vdc
):
547 Test case for create new tenant
550 create_vdc
.return_value
= None
552 # assert verified expected and return result from VIM connector
553 self
.assertRaises(vimconnException
,self
.vim
.new_tenant
,tenant_name
)
555 @mock.patch
.object(vimconnector
,'connect_as_admin')
556 @mock.patch
.object(vimconnector
,'connect')
557 @mock.patch
.object(vimconnector
,'perform_request')
558 def test_delete_tenant(self
, perform_request
, connect
, connect_as_admin
):
560 Test case to delete tenant
562 tenant_id
= '753227f5-d6c6-4478-9546-acc5cfff21e9'
563 delete_tenant_resp
= xml_resp
.delete_tenant
565 self
.vim
.client
= self
.vim
.connect()
566 perform_request
.side_effect
= [mock
.Mock(status_code
= 200,
567 content
= delete_tenant_resp
),
568 mock
.Mock(status_code
= 202,
572 # call to VIM connector method
573 result
= self
.vim
.delete_tenant(tenant_id
)
574 # assert verified expected and return result from VIM connector
575 self
.assertEqual(tenant_id
, result
)
577 @mock.patch
.object(vimconnector
,'connect_as_admin')
578 @mock.patch
.object(vimconnector
,'connect')
579 @mock.patch
.object(vimconnector
,'perform_request')
580 def test_delete_tenant_negative(self
, perform_request
, connect
, connect_as_admin
):
582 Test case to delete tenant
584 tenant_id
= 'ten45klsjdf'
586 self
.vim
.client
= self
.vim
.connect()
587 perform_request
.return_value
.status_code
= 201
589 # assert verified expected and return result from VIM connector
590 self
.assertRaises(vimconnNotFoundException
,self
.vim
.delete_tenant
,tenant_id
)
592 @mock.patch
.object(vimconnector
,'get_vdc_details')
593 @mock.patch
.object(Org
,'list_catalogs')
594 @mock.patch
.object(vimconnector
,'get_vcd_network')
595 @mock.patch
.object(Org
,'get_vdc')
596 @mock.patch
.object(Org
,'get_catalog_item')
597 @mock.patch
.object(vimconnector
,'connect')
598 @mock.patch
.object(vimconnector
,'perform_request')
599 @mock.patch
.object(Client
,'get_task_monitor')
600 @mock.patch
.object(VDC
,'get_vapp')
601 @mock.patch
.object(vimconnector
,'get_network_list')
602 @mock.patch
.object(vimconnector
,'power_on_vapp')
603 def test_new_vminstance(self
, power_on
, get_network_list
, get_vapp
,
604 get_task_monitor
, perform_request
, connect
,
605 get_catalog_item
, get_vdc
, get_vcd_network
,
606 list_catalogs
, get_vdc_details
):
608 Test case for new vm instance
610 image_id
= '34925a30-0f4a-4018-9759-0d6799063b51'
611 vimconnector
.flavorlist
= {'123347db-536b-4936-8b62-1fcdc721865d': {'vcpus': 1,
615 flavor_id
= '123347db-536b-4936-8b62-1fcdc721865d'
616 net_list
= [{'use': 'bridge', 'name': 'eth0', 'floating_ip': False, 'vpci': '0000:00:11.0', 'port_security': True, 'type': 'virtual', 'net_id': '69c713cb-3eec-452c-9a32-0e95c8ffe567'}]
618 cat_list
= [{'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'}]
620 network_dict
= {'status': '1', 'isShared': 'false', 'IpScope': '', 'EndAddress': '192.169.241.150', 'name': 'testing_6n5mJwUyx-ad9d62fc-8223-4dbe-88c4-9f16458ebeec', 'Dns1': '192.169.241.102', 'IpRanges': '', 'Gateway': '192.169.241.253', 'Netmask': '255.255.255.0', 'RetainNetInfoAcrossDeployments': 'false', 'IpScopes': '', 'IsEnabled': 'true', 'DnsSuffix': 'corp.local', 'StartAddress': '192.169.241.115', 'IpRange': '', 'Configuration': '', 'FenceMode': 'bridged', 'IsInherited': 'true', 'uuid': '69c713cb-3eec-452c-9a32-0e95c8ffe567'}
622 network_list
= [{'status': 'ACTIVE', 'name': 'default', 'admin_state_up': True, 'shared': False, 'tenant_id': '2584137f-6541-4c04-a2a2-e56bfca14c69', 'type': 'bridge', 'id': '1fd6421e-929a-4576-bc19-a0c48aea1969'}]
625 vdc_xml_resp
= xml_resp
.vdc_xml_response
626 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
628 catalog_list
= lxmlElementTree
.fromstring(xml_resp
.catalog_list_xml
)
629 # assumed return value from VIM connector
630 get_vdc_details
.return_value
= self
.org
, vdc
631 list_catalogs
.return_value
= cat_list
632 get_vcd_network
.return_value
= network_dict
633 get_vdc
.return_value
= vdc
634 get_catalog_item
.return_value
= catalog_list
635 self
.vim
.client
= self
.vim
.connect()
636 perform_request
.side_effect
= [mock
.Mock(status_code
= 200,
637 content
= xml_resp
.catalogItem_xml
),
638 mock
.Mock(status_code
= 200,
639 content
= xml_resp
.vapp_template_xml
),
640 mock
.Mock(status_code
= 201,
641 content
= xml_resp
.deployed_vapp_xml
)]
643 status_resp
= xml_resp
.status_task_xml
644 status
= lxmlElementTree
.fromstring(status_resp
)
645 self
.vim
.connect
.return_value
.get_task_monitor
.return_value
.wait_for_success
.return_value
= status
646 vapp_resp
= xml_resp
.vapp_xml_response
647 vapp
= lxmlElementTree
.fromstring(vapp_resp
)
648 get_vapp
.return_value
= vapp
649 get_network_list
.return_value
= network_list
650 power_on_resp
= xml_resp
.poweroff_task_xml
651 poweron
= lxmlElementTree
.fromstring(power_on_resp
)
652 power_on
.return_value
= poweron
654 # call to VIM connector method
655 result
= self
.vim
.new_vminstance(name
='Test1_vm', image_id
=image_id
,
658 # assert verified expected and return result from VIM connector
659 self
.assertIsNotNone(result
)
662 @mock.patch
.object(vimconnector
,'get_vdc_details')
663 @mock.patch
.object(Org
,'list_catalogs')
664 @mock.patch
.object(vimconnector
,'get_vcd_network')
665 @mock.patch
.object(Org
,'get_vdc')
666 @mock.patch
.object(Org
,'get_catalog_item')
667 @mock.patch
.object(vimconnector
,'connect')
668 @mock.patch
.object(vimconnector
,'perform_request')
669 @mock.patch
.object(Client
,'get_task_monitor')
670 @mock.patch
.object(VDC
,'get_vapp')
671 @mock.patch
.object(vimconnector
,'get_network_list')
672 @mock.patch
.object(vimconnector
,'power_on_vapp')
673 def test_new_vminstance_negative(self
, power_on
, get_network_list
, get_vapp
,
674 get_task_monitor
, perform_request
, connect
,
675 get_catalog_item
, get_vdc
, get_vcd_network
,
676 list_catalogs
, get_vdc_details
):
678 Test case for new vm instance
680 image_id
= '34925a30-0f4a-4018-9759-0d6799063b51'
681 vimconnector
.flavorlist
= {'123347db-536b-4936-8b62-1fcdc721865d': {'vcpus': 1,
684 flavor_id
= '123347db-536b-4936-8b62-1fcdc721865d'
685 net_list
= [{'use': 'bridge', 'name': 'eth0', 'floating_ip': False, 'vpci': '0000:00:11.0', 'port_security': True, 'type': 'virtual', 'net_id': '69c713cb-3eec-452c-9a32-0e95c8ffe567'}]
687 cat_list
= [{'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'}]
689 network_dict
= {'status': '1', 'isShared': 'false', 'IpScope': '', 'EndAddress': '192.169.241.150', 'name': 'testing_6n5mJwUyx-ad9d62fc-8223-4dbe-88c4-9f16458ebeec', 'Dns1': '192.169.241.102', 'IpRanges': '', 'Gateway': '192.169.241.253', 'Netmask': '255.255.255.0', 'RetainNetInfoAcrossDeployments': 'false', 'IpScopes': '', 'IsEnabled': 'true', 'DnsSuffix': 'corp.local', 'StartAddress': '192.169.241.115', 'IpRange': '', 'Configuration': '', 'FenceMode': 'bridged', 'IsInherited': 'true', 'uuid': '69c713cb-3eec-452c-9a32-0e95c8ffe567'}
692 vdc_xml_resp
= xml_resp
.vdc_xml_response
693 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
695 catalog_list
= lxmlElementTree
.fromstring(xml_resp
.catalog_list_xml
)
696 # assumed return value from VIM connector
697 get_vdc_details
.return_value
= self
.org
, vdc
698 list_catalogs
.return_value
= cat_list
699 get_vcd_network
.return_value
= network_dict
700 get_vdc
.return_value
= vdc
701 get_catalog_item
.return_value
= catalog_list
702 self
.vim
.client
= self
.vim
.connect()
703 perform_request
.side_effect
= [mock
.Mock(status_code
= 200,
704 content
= xml_resp
.catalogItem_xml
),
705 mock
.Mock(status_code
= 200,
706 content
= xml_resp
.vapp_template_xml
),
707 mock
.Mock(status_code
= 400,
708 content
= "Bad request error")]
710 # call to VIM connector method
711 self
.assertRaises(vimconnUnexpectedResponse
,self
.vim
.new_vminstance
,
717 @mock.patch
.object(vimconnector
,'get_catalogid')
718 @mock.patch
.object(vimconnector
,'upload_vimimage')
719 @mock.patch
.object(Org
,'create_catalog')
720 @mock.patch
.object(Org
,'list_catalogs')
721 @mock.patch
.object(vimconnector
,'get_vdc_details')
722 @mock.patch
.object(path
,'isfile')
723 @mock.patch
.object(os
,'access')
724 def test_new_image(self
, access
, isfile
,
731 Test case for create new image
733 path
= '/tmp/cirros/cirros.ovf'
734 cat_list
= [{'isShared': 'false', 'numberOfVAppTemplates': '1', 'orgName': 'Org3', 'isPublished': 'false', 'ownerName': 'system', 'numberOfMedia': '0', 'creationDate': '2017-10-15T02:03:59.403-07:00', 'id': '9759-0d6799063b51', 'name': 'cirros'}]
736 vdc_xml_resp
= xml_resp
.vdc_xml_response
737 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
739 catalog
= lxmlElementTree
.fromstring(xml_resp
.catalog1_xml_response
)
741 # assumed return value from VIM connector
742 isfile
.return_value
= True
743 access
.return_value
= True
744 get_vdc_details
.return_value
= self
.org
, vdc
745 list_catalogs
.return_value
= cat_list
746 create_catalog
.return_value
= catalog
747 upload_vimimage
.return_value
= True
748 get_catalogid
.return_value
= '9759-0d6799063b51'
749 result
= self
.vim
.new_image({'name': 'TestImage', 'location' : path
})
751 # assert verified expected and return result from VIM connector
752 self
.assertIsNotNone(result
)
754 @mock.patch
.object(vimconnector
,'get_catalogid')
755 @mock.patch
.object(vimconnector
,'upload_vimimage')
756 @mock.patch
.object(Org
,'create_catalog')
757 @mock.patch
.object(Org
,'list_catalogs')
758 @mock.patch
.object(vimconnector
,'get_vdc_details')
759 def test_new_image_negative(self
, get_vdc_details
, list_catalogs
,
764 Test case for create new image with negative scenario
766 path
= '/tmp/cirros/cirros.ovf'
767 cat_list
= [{'isShared': 'false', 'numberOfVAppTemplates': '1', 'orgName': 'Org1', 'ownerName': 'system', 'numberOfMedia': '0', 'creationDate': '2017-10-15', 'id': '34925a30-0f4a-4018-9759-0d6799063b51', 'name': 'test'}]
769 vdc_xml_resp
= xml_resp
.vdc_xml_response
770 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
772 catalog
= lxmlElementTree
.fromstring(xml_resp
.catalog1_xml_response
)
774 # assumed return value from VIM connector
775 get_vdc_details
.return_value
= self
.org
, vdc
776 list_catalogs
.return_value
= cat_list
777 create_catalog
.return_value
= catalog
778 upload_vimimage
.return_value
= False
779 get_catalogid
.return_value
= '34925a30-0f4a-4018-9759-0d6799063b51'
781 # assert verified expected and return result from VIM connector
782 self
.assertRaises(vimconnException
,self
.vim
.new_image
,{'name':'TestImage', 'location':path
})
784 @mock.patch
.object(vimconnector
,'connect_as_admin')
785 @mock.patch
.object(vimconnector
,'perform_request')
786 def test_delete_image(self
, perform_request
, connect_as_admin
):
788 Testcase to delete image by image id
790 image_id
= 'f3bf3733-465b-419f-b675-52f91d18edbb'
791 # creating conn object
792 self
.vim
.client
= self
.vim
.connect_as_admin()
794 # assumed return value from VIM connector
795 perform_request
.side_effect
= [mock
.Mock(status_code
= 200,
796 content
= xml_resp
.delete_catalog_xml_response
),
797 mock
.Mock(status_code
= 200,
798 content
= xml_resp
.delete_catalog_item_xml_response
),
799 mock
.Mock(status_code
= 204,
801 mock
.Mock(status_code
= 204,
805 # call to vim connctor method
806 result
= self
.vim
.delete_image(image_id
)
807 # assert verified expected and return result from VIM connector
808 self
.assertEqual(image_id
, result
)
810 @mock.patch
.object(vimconnector
,'get_catalogid')
811 @mock.patch
.object(vimconnector
,'upload_vimimage')
812 @mock.patch
.object(Org
,'create_catalog')
813 @mock.patch
.object(Org
,'list_catalogs')
814 @mock.patch
.object(vimconnector
,'get_vdc_details')
815 @mock.patch
.object(path
,'isfile')
816 @mock.patch
.object(os
,'access')
817 def test_get_image_id_from_path(self
, access
, isfile
,
824 Test case to get image id from image path
826 path
= '/tmp/ubuntu/ubuntu.ovf'
827 cat_list
= [{'isShared': 'false', 'numberOfVAppTemplates': '1', 'orgName': 'Org3', 'isPublished': 'false', 'ownerName': 'system', 'numberOfMedia': '0', 'creationDate': '2017-10-15T02:03:59.403-07:00', 'id': '7208-0f6777052c30', 'name': 'ubuntu'}]
830 vdc_xml_resp
= xml_resp
.vdc_xml_response
831 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
833 catalog
= lxmlElementTree
.fromstring(xml_resp
.catalog1_xml_response
)
835 # assumed return value from VIM connector
836 isfile
.return_value
= True
837 access
.return_value
= True
838 get_vdc_details
.return_value
= self
.org
, vdc
839 list_catalogs
.return_value
= cat_list
840 create_catalog
.return_value
= catalog
841 upload_vimimage
.return_value
= True
842 get_catalogid
.return_value
= '7208-0f6777052c30'
843 result
= self
.vim
.get_image_id_from_path(path
=path
)
845 # assert verified expected and return result from VIM connector
846 self
.assertIsNotNone(result
)
848 @mock.patch
.object(vimconnector
,'get_catalogid')
849 @mock.patch
.object(vimconnector
,'upload_vimimage')
850 @mock.patch
.object(Org
,'create_catalog')
851 @mock.patch
.object(Org
,'list_catalogs')
852 @mock.patch
.object(vimconnector
,'get_vdc_details')
853 @mock.patch
.object(path
,'isfile')
854 @mock.patch
.object(os
,'access')
855 def test_get_image_id_from_path_negative(self
, access
, isfile
,
862 Test case to get image id from image path with negative scenario
864 path
= '/tmp/ubuntu/ubuntu.ovf'
865 cat_list
= [{'isShared': 'false', 'numberOfVAppTemplates': '1', 'orgName': 'Org3', 'isPublished': 'false', 'ownerName': 'system', 'numberOfMedia': '0', 'creationDate': '2017-10-15T02:03:59.403-07:00', 'id': '7208-0f6777052c30', 'name': 'ubuntu'}]
868 vdc_xml_resp
= xml_resp
.vdc_xml_response
869 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
871 catalog
= lxmlElementTree
.fromstring(xml_resp
.catalog1_xml_response
)
873 # assumed return value from VIM connector
874 isfile
.return_value
= True
875 access
.return_value
= True
876 get_vdc_details
.return_value
= self
.org
, vdc
877 list_catalogs
.return_value
= cat_list
878 create_catalog
.return_value
= catalog
879 upload_vimimage
.return_value
= False
880 get_catalogid
.return_value
= '7208-0f6777052c30'
881 self
.assertRaises(vimconnException
, self
.vim
.get_image_id_from_path
, path
)
883 @mock.patch
.object(vimconnector
,'get_vdc_details')
884 @mock.patch
.object(vimconnector
,'connect')
885 @mock.patch
.object(Org
,'list_catalogs')
886 def test_get_image_list_negative(self
, list_catalogs
, connect
, get_vdc_details
):
888 Testcase to get image list by invalid image id
891 vdc_xml_resp
= xml_resp
.vdc_xml_response
892 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
893 self
.vim
.client
= self
.vim
.connect()
895 # assumed return value from VIM connector
896 get_vdc_details
.return_value
= self
.org
, vdc
897 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'}]
899 # call to vim connector method with invalid image id
900 self
.vim
.get_image_list({'id': 'b46c-3f35ba45ca4a'})
902 @mock.patch
.object(vimconnector
,'get_vapp_details_rest')
903 @mock.patch
.object(vimconnector
,'get_vdc_details')
904 def test_get_vminstance_negative(self
, get_vdc_details
, get_vapp_details_rest
):
906 Testcase to get vminstance by invalid vm id
909 invalid_vmid
= '18743edb0c8b-sdfsf-fg'
911 vdc_xml_resp
= xml_resp
.vdc_xml_response
912 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
913 # assumed return value from VIM connector
914 get_vdc_details
.return_value
= self
.org
, vdc
915 get_vapp_details_rest
.return_value
= False
917 # assert verified expected and return result from VIM connector
918 self
.assertRaises(vimconnNotFoundException
, self
.vim
.get_vminstance
,invalid_vmid
)
920 @mock.patch
.object(vimconnector
,'connect')
921 @mock.patch
.object(vimconnector
,'get_namebyvappid')
922 @mock.patch
.object(vimconnector
,'get_vdc_details')
923 @mock.patch
.object(VDC
,'get_vapp')
924 def test_delete_vminstance_negative(self
, get_vapp
, get_vdc_details
,
925 get_namebyvappid
, connect
):
927 Testcase to delete vminstance by invalid vm id
929 vm_id
= 'sdfrtt4935-87a1-0e4dc9c3a069'
930 vm_name
= 'Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa'
932 vdc_xml_resp
= xml_resp
.vdc_xml_response
933 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
935 # assumed return value from VIM connector
936 self
.vim
.client
= self
.vim
.connect()
937 get_vdc_details
.return_value
= self
.org
, vdc
938 get_namebyvappid
.return_name
= vm_name
940 get_vapp
.return_value
= None
942 # call to VIM connector method
943 self
.assertRaises(vimconnException
, self
.vim
.delete_vminstance
,vm_id
)
945 @mock.patch
.object(vimconnector
,'get_vcd_network')
946 def test_refresh_nets_status_negative(self
, get_vcd_network
):
948 Testcase for refresh nets status by invalid vm id
950 net_id
= 'sjkldf-456mfd-345'
952 # assumed return value from VIM connector
953 get_vcd_network
.return_value
= None
954 result
= self
.vim
.refresh_nets_status([net_id
])
956 # assert verified expected and return result from VIM connector
957 for attr
in result
[net_id
]:
959 self
.assertEqual(result
[net_id
][attr
], 'DELETED')
961 @mock.patch
.object(vimconnector
,'connect')
962 @mock.patch
.object(vimconnector
,'get_namebyvappid')
963 @mock.patch
.object(vimconnector
,'get_vdc_details')
964 def test_action_vminstance_negative(self
, get_vdc_details
,
968 Testcase for action vm instance by invalid action
970 vm_id
= '8413-4cb8-bad7-b5afaec6f9fa'
972 vdc_xml_resp
= xml_resp
.vdc_xml_response
973 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
974 # assumed return value from VIM connector
975 get_vdc_details
.return_value
= self
.org
, vdc
976 get_namebyvappid
.return_value
= 'Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa'
977 self
.vim
.client
= self
.vim
.connect()
979 # call to VIM connector method
980 self
.assertRaises(vimconnException
, self
.vim
.action_vminstance
, vm_id
,{'invalid': None})