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_rovim_vmware
.vimconn_vmware
import vimconnector
26 from osm_ro_plugin
.vimconn
import (
27 VimConnUnexpectedResponse
,
28 VimConnNotFoundException
,
31 from pyvcloud
.vcd
.client
import Client
32 from lxml
import etree
as lxmlElementTree
33 from pyvcloud
.vcd
.org
import Org
34 from pyvcloud
.vcd
.vdc
import VDC
35 from pyvcloud
.vcd
.vapp
import VApp
38 from unittest
import mock
39 import test_vimconn_vmware_xml_response
as xml_resp
42 __author__
= "Prakash Kasar"
45 class TestVimconn_VMware(unittest
.TestCase
):
48 "admin_password": "admin",
49 "admin_username": "user",
51 "nsx_password": "nsx",
52 "nsx_manager": "https://test-nsx",
55 self
.client
= Client("test", verify_ssl_certs
=False)
58 org_resp
= xml_resp
.org_xml_response
59 get_org
= lxmlElementTree
.fromstring(org_resp
)
60 self
.org
= Org(self
.client
, resource
=get_org
)
62 self
.vim
= vimconnector(
71 @mock.patch
.object(vimconnector
, "get_vdc_details")
72 @mock.patch
.object(vimconnector
, "connect")
73 @mock.patch
.object(vimconnector
, "perform_request")
74 def test_get_network_not_found(self
, perform_request
, connect
, get_vdc_details
):
76 Testcase to get network with invalid network id
79 vdc_xml_resp
= xml_resp
.vdc_xml_response
80 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
82 # assumed return value from VIM connector
83 get_vdc_details
.return_value
= self
.org
, vdc
84 self
.vim
.client
= self
.vim
.connect()
85 perform_request
.return_value
.status_code
= 200
86 perform_request
.return_value
.content
= xml_resp
.vdc_xml_response
88 # call to VIM connector method with invalid id
89 self
.assertRaises(VimConnNotFoundException
, self
.vim
.get_network
, "mgmt-net")
91 @mock.patch
.object(vimconnector
, "perform_request")
92 @mock.patch
.object(vimconnector
, "get_vdc_details")
93 @mock.patch
.object(vimconnector
, "connect")
94 def test_get_network(self
, connect
, get_vdc_details
, perform_request
):
96 Testcase to get network with valid network id
98 net_id
= "5c04dc6d-6096-47c6-b72b-68f19013d491"
100 vdc_xml_resp
= xml_resp
.vdc_xml_response
101 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
103 # assumed return value from VIM connector
104 get_vdc_details
.return_value
= self
.org
, vdc
105 self
.vim
.client
= self
.vim
.connect()
106 perform_request
.side_effect
= [
107 mock
.Mock(status_code
=200, content
=xml_resp
.vdc_xml_response
),
108 mock
.Mock(status_code
=200, content
=xml_resp
.network_xml_response
),
110 # call to VIM connector method with network_id
111 result
= self
.vim
.get_network(net_id
)
113 # assert verified expected and return result from VIM connector
114 self
.assertEqual(net_id
, result
["id"])
116 @mock.patch
.object(vimconnector
, "perform_request")
117 @mock.patch
.object(vimconnector
, "get_vdc_details")
118 @mock.patch
.object(vimconnector
, "connect")
119 def test_get_network_list_not_found(
120 self
, connect
, get_vdc_details
, perform_request
123 Testcase to get list of available networks by invalid network id
125 vdc_xml_resp
= xml_resp
.vdc_xml_response
126 network_xml_resp
= xml_resp
.network_xml_response
128 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
130 # assumed return value from VIM connector
131 get_vdc_details
.return_value
= self
.org
, vdc
132 self
.vim
.client
= self
.vim
.connect()
133 perform_request
.return_value
.status_code
= 200
134 perform_request
.return_value
.content
= network_xml_resp
136 # call to VIM connector method with network_id
137 result
= self
.vim
.get_network_list({"id": "45hdfg-345nb-345"})
139 # assert verified expected and return result from VIM connector
140 self
.assertEqual(list(), result
)
142 @mock.patch
.object(vimconnector
, "perform_request")
143 @mock.patch
.object(vimconnector
, "get_vdc_details")
144 @mock.patch
.object(vimconnector
, "connect")
145 def test_get_network_list(self
, connect
, get_vdc_details
, perform_request
):
147 Testcase to get list of available networks by valid network id
149 # import pdb;pdb.set_trace() ## Not working
150 vdc_xml_resp
= xml_resp
.vdc_xml_response
151 net_id
= "5c04dc6d-6096-47c6-b72b-68f19013d491"
153 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
154 # created network object
155 network_xml_resp
= xml_resp
.network_xml_response
156 # assumed return value from VIM connector
157 get_vdc_details
.return_value
= self
.org
, vdc
158 self
.vim
.client
= self
.vim
.connect()
159 perform_request
.side_effect
= [
160 mock
.Mock(status_code
=200, content
=xml_resp
.vdc_xml_response
),
161 mock
.Mock(status_code
=200, content
=network_xml_resp
),
163 perform_request
.reset_mock()
166 # call to VIM connector method with network_id
167 result
= self
.vim
.get_network_list({"id": net_id
})
169 # assert verified expected and return result from VIM connector
171 self
.assertEqual(item
.get("id"), net_id
)
172 self
.assertEqual(item
.get("status"), "ACTIVE")
173 self
.assertEqual(item
.get("shared"), False)
175 @mock.patch
.object(vimconnector
, "create_network_rest")
176 def test_new_network(self
, create_network_rest
):
178 Testcase to create new network by passing network name and type
180 # create network reposnse
181 create_net_xml_resp
= xml_resp
.create_network_xml_response
182 net_name
= "Test_network"
184 # assumed return value from VIM connector
185 create_network_rest
.return_value
= create_net_xml_resp
186 # call to VIM connector method with network name and type
187 result
= self
.vim
.new_network(net_name
, net_type
)
189 # assert verified expected and return result from VIM connector
190 self
.assertEqual(result
, ("df1956fa-da04-419e-a6a2-427b6f83788f", {}))
192 @mock.patch
.object(vimconnector
, "create_network_rest")
193 def test_new_network_not_created(self
, create_network_rest
):
195 Testcase to create new network by assigning empty xml data
197 # assumed return value from VIM connector
198 create_network_rest
.return_value
= """<?xml version="1.0" encoding="UTF-8"?>
199 <OrgVdcNetwork></OrgVdcNetwork>"""
201 # assert verified expected and return result from VIM connector
203 VimConnUnexpectedResponse
, self
.vim
.new_network
, "test_net", "bridge"
206 @mock.patch
.object(vimconnector
, "connect")
207 @mock.patch
.object(vimconnector
, "get_network_action")
208 @mock.patch
.object(vimconnector
, "delete_network_action")
209 def test_delete_network(self
, delete_network_action
, get_network_action
, connect
):
211 Testcase to delete network by network id
213 net_uuid
= "0a55e5d1-43a2-4688-bc92-cb304046bf87"
214 # delete network response
215 delete_net_xml_resp
= xml_resp
.delete_network_xml_response
217 # assumed return value from VIM connector
218 self
.vim
.client
= self
.vim
.connect()
219 get_network_action
.return_value
= delete_net_xml_resp
220 delete_network_action
.return_value
= True
221 # call to VIM connector method with network_id
222 result
= self
.vim
.delete_network(net_uuid
)
224 # assert verified expected and return result from VIM connector
225 self
.assertEqual(result
, net_uuid
)
227 @mock.patch
.object(vimconnector
, "get_vcd_network")
228 def test_delete_network_not_found(self
, get_vcd_network
):
230 Testcase to delete network by invalid network id
232 # assumed return value from VIM connector
233 get_vcd_network
.return_value
= False
234 # assert verified expected and return result from VIM connector
236 VimConnNotFoundException
,
237 self
.vim
.delete_network
,
238 "2a23e5d1-42a2-0648-bc92-cb508046bf87",
241 def test_get_flavor(self
):
243 Testcase to get flavor data
246 "a646eb8a-95bd-4e81-8321-5413ee72b62e": {
252 vimconnector
.flavorlist
= flavor_data
253 result
= self
.vim
.get_flavor("a646eb8a-95bd-4e81-8321-5413ee72b62e")
255 # assert verified expected and return result from VIM connector
256 self
.assertEqual(result
, flavor_data
["a646eb8a-95bd-4e81-8321-5413ee72b62e"])
258 def test_get_flavor_not_found(self
):
260 Testcase to get flavor data with invalid id
262 vimconnector
.flavorlist
= {}
263 # assert verified expected and return result from VIM connector
265 VimConnNotFoundException
,
267 "a646eb8a-95bd-4e81-8321-5413ee72b62e",
270 def test_new_flavor(self
):
272 Testcase to create new flavor data
274 flavor_data
= {"disk": 10, "vcpus": 1, "ram": 1024}
275 result
= self
.vim
.new_flavor(flavor_data
)
276 # assert verified expected and return result from VIM connector
277 self
.assertIsNotNone(result
)
279 def test_delete_flavor(self
):
281 Testcase to delete flavor data
284 "2cb3dffb-5c51-4355-8406-28553ead28ac": {
290 vimconnector
.flavorlist
= flavor_data
291 # return value from VIM connector
292 result
= self
.vim
.delete_flavor("2cb3dffb-5c51-4355-8406-28553ead28ac")
294 # assert verified expected and return result from VIM connector
295 self
.assertEqual(result
, "2cb3dffb-5c51-4355-8406-28553ead28ac")
297 @mock.patch
.object(vimconnector
, "connect_as_admin")
298 @mock.patch
.object(vimconnector
, "perform_request")
299 def test_delete_image_not_found(self
, perform_request
, connect_as_admin
):
301 Testcase to delete image by invalid image id
303 # creating conn object
304 self
.vim
.client
= self
.vim
.connect_as_admin()
306 # assumed return value from VIM connector
307 perform_request
.side_effect
= [
308 mock
.Mock(status_code
=200, content
=xml_resp
.delete_catalog_xml_response
),
310 status_code
=201, content
=xml_resp
.delete_catalog_item_xml_response
314 # assert verified expected and return result from VIM connector
315 self
.assertRaises(VimConnNotFoundException
, self
.vim
.delete_image
, "invali3453")
317 @mock.patch
.object(vimconnector
, "get_vdc_details")
318 @mock.patch
.object(vimconnector
, "connect")
319 @mock.patch
.object(Org
, "list_catalogs")
320 def test_get_image_list(self
, list_catalogs
, connect
, get_vdc_details
):
322 Testcase to get image list by valid image id
325 vdc_xml_resp
= xml_resp
.vdc_xml_response
326 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
327 self
.vim
.client
= self
.vim
.connect()
329 # assumed return value from VIM connector
330 get_vdc_details
.return_value
= self
.org
, vdc
331 list_catalogs
.return_value
= [
334 "numberOfVAppTemplates": "1",
336 "isPublished": "false",
337 "ownerName": "system",
338 "numberOfMedia": "0",
339 "creationDate": "2017-10-15T02:03:59.403-07:00",
340 "id": "34925a30-0f4a-4018-9759-0d6799063b51",
341 "name": "Ubuntu_1nic",
345 "numberOfVAppTemplates": "1",
347 "isPublished": "false",
348 "ownerName": "orgadmin",
349 "numberOfMedia": "1",
350 "creationDate": "2018-02-15T02:16:58.300-08:00",
351 "id": "4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a",
356 "numberOfVAppTemplates": "1",
358 "isPublished": "true",
359 "ownerName": "system",
360 "numberOfMedia": "0",
361 "creationDate": "2018-01-26T02:09:12.387-08:00",
362 "id": "b139ed82-7ca4-49fb-9882-5f841f59c890",
363 "name": "Ubuntu_plugtest-1",
367 "numberOfVAppTemplates": "1",
369 "isPublished": "false",
370 "ownerName": "system",
371 "numberOfMedia": "0",
372 "creationDate": "2017-06-18T21:33:16.430-07:00",
373 "id": "b31e6973-86d2-404b-a522-b16846d099dc",
374 "name": "Ubuntu_Cat",
378 "numberOfVAppTemplates": "1",
380 "isPublished": "false",
381 "ownerName": "orgadmin",
382 "numberOfMedia": "0",
383 "creationDate": "2018-02-15T22:26:28.910-08:00",
384 "id": "c3b56180-f980-4256-9109-a93168d73ff2",
385 "name": "de4ffcf2ad21f1a5d0714d6b868e2645",
389 "numberOfVAppTemplates": "0",
391 "isPublished": "false",
392 "ownerName": "system",
393 "numberOfMedia": "0",
394 "creationDate": "2017-08-23T05:54:56.780-07:00",
395 "id": "d0eb0b02-718d-42e0-b889-56575000b52d",
396 "name": "Test_Cirros",
400 "numberOfVAppTemplates": "0",
402 "isPublished": "false",
403 "ownerName": "system",
404 "numberOfMedia": "0",
405 "creationDate": "2017-03-08T21:25:05.923-08:00",
406 "id": "d3fa3df2-b311-4571-9138-4c66541d7f46",
411 "numberOfVAppTemplates": "0",
413 "isPublished": "false",
414 "ownerName": "system",
415 "numberOfMedia": "0",
416 "creationDate": "2017-07-12T22:45:20.537-07:00",
417 "id": "d64b2617-ea4b-4b90-910b-102c99dd2031",
422 "numberOfVAppTemplates": "1",
424 "isPublished": "true",
425 "ownerName": "system",
426 "numberOfMedia": "1",
427 "creationDate": "2017-10-14T23:52:37.260-07:00",
428 "id": "e8d953db-8dc9-46d5-9cab-329774cd2ad9",
429 "name": "Ubuntu_no_nic",
433 result
= self
.vim
.get_image_list({"id": "4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a"})
435 # assert verified expected and return result from VIM connector
437 self
.assertEqual(item
["id"], "4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a")
439 @mock.patch
.object(vimconnector
, "get_vapp_details_rest")
440 @mock.patch
.object(vimconnector
, "get_vdc_details")
441 def test_get_vminstance(self
, get_vdc_details
, get_vapp_details_rest
):
443 Testcase to get vminstance by valid vm id
447 "acquireMksTicket": {
448 "href": "https://localhost/api/vApp/vm-47d12505-5968-4e16-95a7"
449 "-18743edb0c8b/screen/action/acquireMksTicket",
450 "type": "application/vnd.vmware.vcloud.mksTicket+xml",
451 "rel": "screen:acquireMksTicket",
453 "vm_virtual_hardware": {
454 "disk_edit_href": "https://localhost/api/vApp/vm-47d12505-5968"
455 "-4e16-95a7-18743edb0c8b/virtualHardwareSection/disks",
456 "disk_size": "40960",
458 "name": "Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa",
459 "created": "2017-09-21T01:15:31.627-07:00",
461 "EndAddress": "12.16.24.199",
464 "MACAddress": "00:50:56:01:12:a2",
465 "NetworkConnectionIndex": "0",
466 "network": "testing_T6nODiW4-68f68d93-0350-4d86-b40b-6e74dedf994d",
467 "IpAddressAllocationMode": "DHCP",
468 "IsConnected": "true",
469 "IpAddress": "12.16.24.200",
472 "ovfDescriptorUploaded": "true",
473 "nestedHypervisorEnabled": "false",
474 "Gateway": "12.16.24.1",
476 "href": "https://localhost/api/vApp/vm-47d12505-5968-4e16"
477 "-95a7-18743edb0c8b/screen/action/acquireTicket",
478 "rel": "screen:acquireTicket",
480 "vmuuid": "47d12505-5968-4e16-95a7-18743edb0c8b",
481 "Netmask": "255.255.255.0",
482 "StartAddress": "12.16.24.100",
483 "primarynetwork": "0",
484 "networkname": "External-Network-1074",
485 "IsInherited": "false",
489 vdc_xml_resp
= xml_resp
.vdc_xml_response
490 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
491 # assumed return value from VIM connector
492 get_vdc_details
.return_value
= self
.org
, vdc
493 get_vapp_details_rest
.return_value
= vapp_info
495 result
= self
.vim
.get_vminstance("47d12505-5968-4e16-95a7-18743edb0c8b")
496 # assert verified expected and return result from VIM connector
497 self
.assertEqual(result
["status"], "ACTIVE")
498 self
.assertEqual(result
["hostId"], "47d12505-5968-4e16-95a7-18743edb0c8b")
500 @mock.patch
.object(vimconnector
, "connect")
501 @mock.patch
.object(vimconnector
, "get_namebyvappid")
502 @mock.patch
.object(vimconnector
, "get_vdc_details")
503 @mock.patch
.object(VDC
, "get_vapp")
504 @mock.patch
.object(VApp
, "power_off")
505 @mock.patch
.object(VApp
, "undeploy")
506 @mock.patch
.object(VDC
, "delete_vapp")
507 @mock.patch
.object(Client
, "get_task_monitor")
508 def x_test_delete_vminstance(
520 Testcase to delete vminstance by valid vm id
522 vm_id
= "4f6a9b49-e92d-4935-87a1-0e4dc9c3a069"
523 vm_name
= "Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa"
525 vdc_xml_resp
= xml_resp
.vdc_xml_response
526 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
528 # assumed return value from VIM connector
529 self
.vim
.client
= self
.vim
.connect()
530 get_vdc_details
.return_value
= self
.org
, vdc
531 get_namebyvappid
.return_name
= vm_name
533 vapp_resp
= xml_resp
.vapp_xml_response
534 vapp
= lxmlElementTree
.fromstring(vapp_resp
)
535 get_vapp
.return_value
= vapp
537 power_off_resp
= xml_resp
.poweroff_task_xml
538 power_off
= lxmlElementTree
.fromstring(power_off_resp
)
539 poweroff
.return_value
= power_off
541 status_resp
= xml_resp
.status_task_xml
542 status
= lxmlElementTree
.fromstring(status_resp
)
543 self
.vim
.connect
.return_value
.get_task_monitor
.return_value
.wait_for_success
.return_value
= (
547 # call to VIM connector method
548 result
= self
.vim
.delete_vminstance(vm_id
)
550 # assert verified expected and return result from VIM connector
551 self
.assertEqual(result
, vm_id
)
553 @mock.patch
.object(vimconnector
, "get_network_id_by_name")
554 @mock.patch
.object(vimconnector
, "get_vm_pci_details")
555 @mock.patch
.object(VDC
, "get_vapp")
556 @mock.patch
.object(vimconnector
, "connect")
557 @mock.patch
.object(vimconnector
, "get_namebyvappid")
558 @mock.patch
.object(vimconnector
, "get_vdc_details")
559 @mock.patch
.object(vimconnector
, "perform_request")
560 @mock.patch
.object(VApp
, "get_all_vms")
561 def test_refresh_vms_status(
570 get_network_id_by_name
,
573 Testcase to refresh vms status by valid vm id
575 vm_id
= "53a529b2-10d8-4d56-a7ad-8182acdbe71c"
578 vdc_xml_resp
= xml_resp
.vdc_xml_response
579 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
580 # assumed return value from VIM connector
581 self
.vim
.client
= self
.vim
.connect()
582 get_vdc_details
.return_value
= self
.org
, vdc
584 get_namebyvappid
.return_value
= "Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa"
585 get_vm_pci_details
.return_value
= {
586 "host_name": "test-esx-1.corp.local",
587 "host_ip": "12.19.24.31",
589 vapp_resp
= xml_resp
.vapp_xml_response
590 vapp
= lxmlElementTree
.fromstring(vapp_resp
)
591 get_vapp
.return_value
= vapp
592 get_network_id_by_name
.return_value
= "47d12505-5968-4e16-95a7-18743edb0c8b"
594 vm_resp
= xml_resp
.vm_xml_response
595 vm_list
= lxmlElementTree
.fromstring(vm_resp
)
596 get_all_vms
.return_value
= vm_list
598 perform_request
.return_value
.status_code
= 200
599 perform_request
.return_value
.content
= vm_resp
600 # call to VIM connector method
601 result
= self
.vim
.refresh_vms_status([vm_id
])
602 for attr
in result
[vm_id
]:
604 # assert verified expected and return result from VIM connector
605 self
.assertEqual(result
[vm_id
][attr
], "ACTIVE")
607 @mock.patch
.object(vimconnector
, "get_vcd_network")
608 def test_refresh_nets_status(self
, get_vcd_network
):
609 net_id
= "c2d0f28f-d38b-4588-aecc-88af3d4af58b"
614 "EndAddress": "12.19.21.15",
615 "name": "testing_gwyRXlvWYL1-9ebb6d7b-5c74-472f-be77-963ed050d44d",
616 "Dns1": "12.19.21.10",
618 "Gateway": "12.19.21.23",
619 "Netmask": "255.255.255.0",
620 "RetainNetInfoAcrossDeployments": "false",
623 "DnsSuffix": "corp.local",
624 "StartAddress": "12.19.21.11",
627 "FenceMode": "bridged",
628 "IsInherited": "true",
629 "uuid": "c2d0f28f-d38b-4588-aecc-88af3d4af58b",
631 # assumed return value from VIM connector
632 get_vcd_network
.return_value
= network_dict
633 result
= self
.vim
.refresh_nets_status([net_id
])
634 # assert verified expected and return result from VIM connector
635 for attr
in result
[net_id
]:
637 self
.assertEqual(result
[net_id
][attr
], "ACTIVE")
639 @mock.patch
.object(VDC
, "get_vapp")
640 @mock.patch
.object(vimconnector
, "connect")
641 @mock.patch
.object(vimconnector
, "get_namebyvappid")
642 @mock.patch
.object(vimconnector
, "get_vdc_details")
643 def test_action_vminstance(
644 self
, get_vdc_details
, get_namebyvappid
, connect
, get_vapp
647 Testcase for action vm instance by vm id
649 # task_resp = xml_resp.poweroff_task_xml
650 vm_id
= "05e6047b-6938-4275-8940-22d1ea7245b8"
652 vdc_xml_resp
= xml_resp
.vdc_xml_response
653 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
654 # assumed return value from VIM connector
655 get_vdc_details
.return_value
= self
.org
, vdc
656 get_namebyvappid
.return_value
= "Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa"
657 self
.vim
.client
= self
.vim
.connect()
658 power_off_resp
= xml_resp
.poweroff_task_xml
659 power_off
= lxmlElementTree
.fromstring(power_off_resp
)
660 get_vapp
.return_value
.undeploy
.return_value
= power_off
662 status_resp
= xml_resp
.status_task_xml
663 status
= lxmlElementTree
.fromstring(status_resp
)
664 self
.vim
.connect
.return_value
.get_task_monitor
.return_value
.wait_for_success
.return_value
= (
668 # call to VIM connector method
669 result
= self
.vim
.action_vminstance(vm_id
, {"shutdown": None})
671 # assert verified expected and return result from VIM connector
672 self
.assertEqual(result
, vm_id
)
674 @mock.patch
.object(vimconnector
, "get_org")
675 def test_get_tenant_list(self
, get_org
):
677 Test case for get tenant list
681 "4c4fdb5d-0c7d-4fee-9efd-cb061f327a01": "80d8488f67ba1de98b7f485fba6abbd2",
682 "1b98ca02-b0a6-4ca7-babe-eadc0ae59677": "Ubuntu",
683 "e7f27dfe-14b7-49e1-918e-173bda02683a": "834bdd1f28fd15dcbe830456ec58fbca",
684 "9441ee69-0486-4438-ac62-8d8082c51302": "centos",
685 "e660cce0-47a6-4315-a5b9-97a39299a374": "cirros01",
686 "0fd96c61-c3d1-4abf-9a34-0dff8fb65743": "cirros034",
687 "1c703be3-9bd2-46a2-854c-3e678d5cdda8": "Ubuntu_plugtest-1",
688 "bc4e342b-f84c-41bd-a93a-480f35bacf69": "Cirros",
689 "8a206fb5-3ef9-4571-9bcc-137615f4d930": "255eb079a62ac155e7f942489f14b0c4",
692 "e6436c6a-d922-4b39-9c1c-b48e766fce5e": "osm",
693 "3852f762-18ae-4833-a229-42684b6e7373": "cloud-1-vdc",
696 "e203cacd-9320-4422-9be0-12c7def3ab56": "testing_lNejr37B-38e4ca67-1e26-486f-ad2f-f14bb099e068",
697 "a6623349-2bef-4367-9fda-d33f9ab927f8": "Vlan_3151",
698 "adf780cb-358c-47c2-858d-ae5778ccaf17": "testing_xwBultc-99b8a2ae-c091-4dd3-bbf7-762a51612385",
699 "721f9efc-11fe-4c13-936d-252ba0ed93c8": "testing_tLljy8WB5e-a898cb28-e75b-4867-a22e-f2bad285c144",
700 "1512d97a-929d-4b06-b8af-cf5ac42a2aee": "Managment",
701 "d9167301-28af-4b89-b9e0-09f612e962fa": "testing_prMW1VThk-063cb428-eaee-44b8-9d0d-df5fb77a5b4d",
702 "004ae853-f899-43fd-8981-7513a3b40d6b": "testing_RTtKVi09rld-fab00b16-7996-49af-8249-369c6bbfa02d",
706 get_org
.return_value
= org_dict
708 # call to VIM connector method
709 results
= self
.vim
.get_tenant_list({"name": tenant_name
})
710 # assert verified expected and return result from VIM connector
711 for result
in results
:
712 self
.assertEqual(tenant_name
, result
["name"])
714 @mock.patch
.object(vimconnector
, "get_org")
715 def test_get_tenant_list_negative(self
, get_org
):
717 Test case for get tenant list negative
719 org_dict
= {"vdcs": {}}
720 tenant_name
= "testosm"
721 get_org
.return_value
= org_dict
723 # call to VIM connector method
724 results
= self
.vim
.get_tenant_list({"name": tenant_name
})
725 # assert verified expected and return result from VIM connector
726 self
.assertEqual(results
, [])
728 @mock.patch
.object(vimconnector
, "create_vdc")
729 def test_new_tenant(self
, create_vdc
):
731 Test case for create new tenant
735 "a493aa2c-3104-4d63-969b-fc9e72304c9f": "https://localhost/api/task/e658d84c-007d-4fd8-9590-3a8f93cc0de4"
737 create_vdc
.return_value
= vdc
739 # call to VIM connector method
740 result
= self
.vim
.new_tenant(tenant_name
)
741 # assert verified expected and return result from VIM connector
742 self
.assertEqual("a493aa2c-3104-4d63-969b-fc9e72304c9f", result
)
744 @mock.patch
.object(vimconnector
, "create_vdc")
745 def test_new_tenant_negative(self
, create_vdc
):
747 Test case for create new tenant
750 create_vdc
.return_value
= None
752 # assert verified expected and return result from VIM connector
753 self
.assertRaises(VimConnException
, self
.vim
.new_tenant
, tenant_name
)
755 @mock.patch
.object(vimconnector
, "connect_as_admin")
756 @mock.patch
.object(vimconnector
, "connect")
757 @mock.patch
.object(vimconnector
, "perform_request")
758 def test_delete_tenant(self
, perform_request
, connect
, connect_as_admin
):
760 Test case to delete tenant
762 tenant_id
= "753227f5-d6c6-4478-9546-acc5cfff21e9"
763 delete_tenant_resp
= xml_resp
.delete_tenant
765 self
.vim
.client
= self
.vim
.connect()
766 perform_request
.side_effect
= [
767 mock
.Mock(status_code
=200, content
=delete_tenant_resp
),
768 mock
.Mock(status_code
=202, content
=None),
771 # call to VIM connector method
772 result
= self
.vim
.delete_tenant(tenant_id
)
773 # assert verified expected and return result from VIM connector
774 self
.assertEqual(tenant_id
, result
)
776 @mock.patch
.object(vimconnector
, "connect_as_admin")
777 @mock.patch
.object(vimconnector
, "connect")
778 @mock.patch
.object(vimconnector
, "perform_request")
779 def test_delete_tenant_negative(self
, perform_request
, connect
, connect_as_admin
):
781 Test case to delete tenant
783 tenant_id
= "ten45klsjdf"
785 self
.vim
.client
= self
.vim
.connect()
786 perform_request
.return_value
.status_code
= 201
788 # assert verified expected and return result from VIM connector
789 self
.assertRaises(VimConnNotFoundException
, self
.vim
.delete_tenant
, tenant_id
)
791 @mock.patch
.object(vimconnector
, "get_vdc_details")
792 @mock.patch
.object(Org
, "list_catalogs")
793 @mock.patch
.object(vimconnector
, "get_vcd_network")
794 @mock.patch
.object(Org
, "get_vdc")
795 @mock.patch
.object(Org
, "get_catalog_item")
796 @mock.patch
.object(vimconnector
, "connect")
797 @mock.patch
.object(vimconnector
, "perform_request")
798 @mock.patch
.object(Client
, "get_task_monitor")
799 @mock.patch
.object(VDC
, "get_vapp")
800 @mock.patch
.object(vimconnector
, "get_network_list")
801 @mock.patch
.object(vimconnector
, "power_on_vapp")
802 def test_new_vminstance(
817 Test case for new vm instance
819 image_id
= "34925a30-0f4a-4018-9759-0d6799063b51"
820 vimconnector
.flavorlist
= {
821 "123347db-536b-4936-8b62-1fcdc721865d": {
828 flavor_id
= "123347db-536b-4936-8b62-1fcdc721865d"
833 "floating_ip": False,
834 "vpci": "0000:00:11.0",
835 "port_security": True,
837 "net_id": "69c713cb-3eec-452c-9a32-0e95c8ffe567",
844 "numberOfVAppTemplates": "1",
846 "isPublished": "false",
847 "ownerName": "system",
848 "numberOfMedia": "0",
849 "creationDate": "2017-10-15T02:03:59.403-07:00",
850 "id": "34925a30-0f4a-4018-9759-0d6799063b51",
851 "name": "Ubuntu_1nic",
859 "EndAddress": "192.169.241.150",
860 "name": "testing_6n5mJwUyx-ad9d62fc-8223-4dbe-88c4-9f16458ebeec",
861 "Dns1": "192.169.241.102",
863 "Gateway": "192.169.241.253",
864 "Netmask": "255.255.255.0",
865 "RetainNetInfoAcrossDeployments": "false",
868 "DnsSuffix": "corp.local",
869 "StartAddress": "192.169.241.115",
872 "FenceMode": "bridged",
873 "IsInherited": "true",
874 "uuid": "69c713cb-3eec-452c-9a32-0e95c8ffe567",
881 "admin_state_up": True,
883 "tenant_id": "2584137f-6541-4c04-a2a2-e56bfca14c69",
885 "id": "1fd6421e-929a-4576-bc19-a0c48aea1969",
890 vdc_xml_resp
= xml_resp
.vdc_xml_response
891 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
893 catalog_list
= lxmlElementTree
.fromstring(xml_resp
.catalog_list_xml
)
894 # assumed return value from VIM connector
895 get_vdc_details
.return_value
= self
.org
, vdc
896 list_catalogs
.return_value
= cat_list
897 get_vcd_network
.return_value
= network_dict
898 get_vdc
.return_value
= vdc
899 get_catalog_item
.return_value
= catalog_list
900 self
.vim
.client
= self
.vim
.connect()
901 perform_request
.side_effect
= [
902 mock
.Mock(status_code
=200, content
=xml_resp
.catalogItem_xml
),
903 mock
.Mock(status_code
=200, content
=xml_resp
.vapp_template_xml
),
904 mock
.Mock(status_code
=201, content
=xml_resp
.deployed_vapp_xml
),
907 status_resp
= xml_resp
.status_task_xml
908 status
= lxmlElementTree
.fromstring(status_resp
)
909 self
.vim
.connect
.return_value
.get_task_monitor
.return_value
.wait_for_success
.return_value
= (
912 vapp_resp
= xml_resp
.vapp_xml_response
913 vapp
= lxmlElementTree
.fromstring(vapp_resp
)
914 get_vapp
.return_value
= vapp
915 get_network_list
.return_value
= network_list
916 power_on_resp
= xml_resp
.poweroff_task_xml
917 poweron
= lxmlElementTree
.fromstring(power_on_resp
)
918 power_on
.return_value
= poweron
920 # call to VIM connector method
921 result
= self
.vim
.new_vminstance(
922 name
="Test1_vm", image_id
=image_id
, flavor_id
=flavor_id
, net_list
=net_list
924 # assert verified expected and return result from VIM connector
925 self
.assertIsNotNone(result
)
927 @mock.patch
.object(vimconnector
, "get_vdc_details")
928 @mock.patch
.object(Org
, "list_catalogs")
929 @mock.patch
.object(vimconnector
, "get_vcd_network")
930 @mock.patch
.object(Org
, "get_vdc")
931 @mock.patch
.object(Org
, "get_catalog_item")
932 @mock.patch
.object(vimconnector
, "connect")
933 @mock.patch
.object(vimconnector
, "perform_request")
934 @mock.patch
.object(Client
, "get_task_monitor")
935 @mock.patch
.object(VDC
, "get_vapp")
936 @mock.patch
.object(vimconnector
, "get_network_list")
937 @mock.patch
.object(vimconnector
, "power_on_vapp")
938 def test_new_vminstance_negative(
953 Test case for new vm instance
955 image_id
= "34925a30-0f4a-4018-9759-0d6799063b51"
956 vimconnector
.flavorlist
= {
957 "123347db-536b-4936-8b62-1fcdc721865d": {
963 flavor_id
= "123347db-536b-4936-8b62-1fcdc721865d"
968 "floating_ip": False,
969 "vpci": "0000:00:11.0",
970 "port_security": True,
972 "net_id": "69c713cb-3eec-452c-9a32-0e95c8ffe567",
979 "numberOfVAppTemplates": "1",
981 "isPublished": "false",
982 "ownerName": "system",
983 "numberOfMedia": "0",
984 "creationDate": "2017-10-15T02:03:59.403-07:00",
985 "id": "34925a30-0f4a-4018-9759-0d6799063b51",
986 "name": "Ubuntu_1nic",
994 "EndAddress": "192.169.241.150",
995 "name": "testing_6n5mJwUyx-ad9d62fc-8223-4dbe-88c4-9f16458ebeec",
996 "Dns1": "192.169.241.102",
998 "Gateway": "192.169.241.253",
999 "Netmask": "255.255.255.0",
1000 "RetainNetInfoAcrossDeployments": "false",
1002 "IsEnabled": "true",
1003 "DnsSuffix": "corp.local",
1004 "StartAddress": "192.169.241.115",
1006 "Configuration": "",
1007 "FenceMode": "bridged",
1008 "IsInherited": "true",
1009 "uuid": "69c713cb-3eec-452c-9a32-0e95c8ffe567",
1012 # created vdc object
1013 vdc_xml_resp
= xml_resp
.vdc_xml_response
1014 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1016 catalog_list
= lxmlElementTree
.fromstring(xml_resp
.catalog_list_xml
)
1017 # assumed return value from VIM connector
1018 get_vdc_details
.return_value
= self
.org
, vdc
1019 list_catalogs
.return_value
= cat_list
1020 get_vcd_network
.return_value
= network_dict
1021 get_vdc
.return_value
= vdc
1022 get_catalog_item
.return_value
= catalog_list
1023 self
.vim
.client
= self
.vim
.connect()
1024 perform_request
.side_effect
= [
1025 mock
.Mock(status_code
=200, content
=xml_resp
.catalogItem_xml
),
1026 mock
.Mock(status_code
=200, content
=xml_resp
.vapp_template_xml
),
1027 mock
.Mock(status_code
=400, content
="Bad request error"),
1030 # call to VIM connector method
1032 VimConnUnexpectedResponse
,
1033 self
.vim
.new_vminstance
,
1036 flavor_id
=flavor_id
,
1040 @mock.patch
.object(vimconnector
, "get_catalogid")
1041 @mock.patch
.object(vimconnector
, "upload_vimimage")
1042 @mock.patch
.object(Org
, "create_catalog")
1043 @mock.patch
.object(Org
, "list_catalogs")
1044 @mock.patch
.object(vimconnector
, "get_vdc_details")
1045 @mock.patch
.object(path
, "isfile")
1046 @mock.patch
.object(os
, "access")
1058 Test case for create new image
1060 path
= "/tmp/cirros/cirros.ovf"
1063 "isShared": "false",
1064 "numberOfVAppTemplates": "1",
1066 "isPublished": "false",
1067 "ownerName": "system",
1068 "numberOfMedia": "0",
1069 "creationDate": "2017-10-15T02:03:59.403-07:00",
1070 "id": "9759-0d6799063b51",
1074 # created vdc object
1075 vdc_xml_resp
= xml_resp
.vdc_xml_response
1076 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1078 catalog
= lxmlElementTree
.fromstring(xml_resp
.catalog1_xml_response
)
1080 # assumed return value from VIM connector
1081 isfile
.return_value
= True
1082 access
.return_value
= True
1083 get_vdc_details
.return_value
= self
.org
, vdc
1084 list_catalogs
.return_value
= cat_list
1085 create_catalog
.return_value
= catalog
1086 upload_vimimage
.return_value
= True
1087 get_catalogid
.return_value
= "9759-0d6799063b51"
1088 result
= self
.vim
.new_image({"name": "TestImage", "location": path
})
1090 # assert verified expected and return result from VIM connector
1091 self
.assertIsNotNone(result
)
1093 @mock.patch
.object(vimconnector
, "get_catalogid")
1094 @mock.patch
.object(vimconnector
, "upload_vimimage")
1095 @mock.patch
.object(Org
, "create_catalog")
1096 @mock.patch
.object(Org
, "list_catalogs")
1097 @mock.patch
.object(vimconnector
, "get_vdc_details")
1098 def test_new_image_negative(
1107 Test case for create new image with negative scenario
1109 path
= "/tmp/cirros/cirros.ovf"
1112 "isShared": "false",
1113 "numberOfVAppTemplates": "1",
1115 "ownerName": "system",
1116 "numberOfMedia": "0",
1117 "creationDate": "2017-10-15",
1118 "id": "34925a30-0f4a-4018-9759-0d6799063b51",
1122 # created vdc object
1123 vdc_xml_resp
= xml_resp
.vdc_xml_response
1124 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1126 catalog
= lxmlElementTree
.fromstring(xml_resp
.catalog1_xml_response
)
1128 # assumed return value from VIM connector
1129 get_vdc_details
.return_value
= self
.org
, vdc
1130 list_catalogs
.return_value
= cat_list
1131 create_catalog
.return_value
= catalog
1132 upload_vimimage
.return_value
= False
1133 get_catalogid
.return_value
= "34925a30-0f4a-4018-9759-0d6799063b51"
1135 # assert verified expected and return result from VIM connector
1139 {"name": "TestImage", "location": path
},
1142 @mock.patch
.object(vimconnector
, "connect_as_admin")
1143 @mock.patch
.object(vimconnector
, "perform_request")
1144 def test_delete_image(self
, perform_request
, connect_as_admin
):
1146 Testcase to delete image by image id
1148 image_id
= "f3bf3733-465b-419f-b675-52f91d18edbb"
1149 # creating conn object
1150 self
.vim
.client
= self
.vim
.connect_as_admin()
1152 # assumed return value from VIM connector
1153 perform_request
.side_effect
= [
1154 mock
.Mock(status_code
=200, content
=xml_resp
.delete_catalog_xml_response
),
1156 status_code
=200, content
=xml_resp
.delete_catalog_item_xml_response
1158 mock
.Mock(status_code
=204, content
=""),
1159 mock
.Mock(status_code
=204, content
=""),
1162 # call to vim connctor method
1163 result
= self
.vim
.delete_image(image_id
)
1164 # assert verified expected and return result from VIM connector
1165 self
.assertEqual(image_id
, result
)
1167 @mock.patch
.object(vimconnector
, "get_catalogid")
1168 @mock.patch
.object(vimconnector
, "upload_vimimage")
1169 @mock.patch
.object(Org
, "create_catalog")
1170 @mock.patch
.object(Org
, "list_catalogs")
1171 @mock.patch
.object(vimconnector
, "get_vdc_details")
1172 @mock.patch
.object(path
, "isfile")
1173 @mock.patch
.object(os
, "access")
1174 def test_get_image_id_from_path(
1185 Test case to get image id from image path
1187 path
= "/tmp/ubuntu/ubuntu.ovf"
1190 "isShared": "false",
1191 "numberOfVAppTemplates": "1",
1193 "isPublished": "false",
1194 "ownerName": "system",
1195 "numberOfMedia": "0",
1196 "creationDate": "2017-10-15T02:03:59.403-07:00",
1197 "id": "7208-0f6777052c30",
1202 # created vdc object
1203 vdc_xml_resp
= xml_resp
.vdc_xml_response
1204 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1206 catalog
= lxmlElementTree
.fromstring(xml_resp
.catalog1_xml_response
)
1208 # assumed return value from VIM connector
1209 isfile
.return_value
= True
1210 access
.return_value
= True
1211 get_vdc_details
.return_value
= self
.org
, vdc
1212 list_catalogs
.return_value
= cat_list
1213 create_catalog
.return_value
= catalog
1214 upload_vimimage
.return_value
= True
1215 get_catalogid
.return_value
= "7208-0f6777052c30"
1216 result
= self
.vim
.get_image_id_from_path(path
=path
)
1218 # assert verified expected and return result from VIM connector
1219 self
.assertIsNotNone(result
)
1221 @mock.patch
.object(vimconnector
, "get_catalogid")
1222 @mock.patch
.object(vimconnector
, "upload_vimimage")
1223 @mock.patch
.object(Org
, "create_catalog")
1224 @mock.patch
.object(Org
, "list_catalogs")
1225 @mock.patch
.object(vimconnector
, "get_vdc_details")
1226 @mock.patch
.object(path
, "isfile")
1227 @mock.patch
.object(os
, "access")
1228 def test_get_image_id_from_path_negative(
1239 Test case to get image id from image path with negative scenario
1241 path
= "/tmp/ubuntu/ubuntu.ovf"
1244 "isShared": "false",
1245 "numberOfVAppTemplates": "1",
1247 "isPublished": "false",
1248 "ownerName": "system",
1249 "numberOfMedia": "0",
1250 "creationDate": "2017-10-15T02:03:59.403-07:00",
1251 "id": "7208-0f6777052c30",
1256 # created vdc object
1257 vdc_xml_resp
= xml_resp
.vdc_xml_response
1258 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1260 catalog
= lxmlElementTree
.fromstring(xml_resp
.catalog1_xml_response
)
1262 # assumed return value from VIM connector
1263 isfile
.return_value
= True
1264 access
.return_value
= True
1265 get_vdc_details
.return_value
= self
.org
, vdc
1266 list_catalogs
.return_value
= cat_list
1267 create_catalog
.return_value
= catalog
1268 upload_vimimage
.return_value
= False
1269 get_catalogid
.return_value
= "7208-0f6777052c30"
1270 self
.assertRaises(VimConnException
, self
.vim
.get_image_id_from_path
, path
)
1272 @mock.patch
.object(vimconnector
, "get_vdc_details")
1273 @mock.patch
.object(vimconnector
, "connect")
1274 @mock.patch
.object(Org
, "list_catalogs")
1275 def test_get_image_list_negative(self
, list_catalogs
, connect
, get_vdc_details
):
1277 Testcase to get image list by invalid image id
1279 # created vdc object
1280 vdc_xml_resp
= xml_resp
.vdc_xml_response
1281 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1282 self
.vim
.client
= self
.vim
.connect()
1284 # assumed return value from VIM connector
1285 get_vdc_details
.return_value
= self
.org
, vdc
1286 list_catalogs
.return_value
= [
1288 "isShared": "false",
1289 "numberOfVAppTemplates": "1",
1291 "isPublished": "false",
1292 "ownerName": "system",
1293 "numberOfMedia": "0",
1294 "creationDate": "2017-10-15T02:03:59.403-07:00",
1295 "id": "34925a30-0f4a-4018-9759-0d6799063b51",
1296 "name": "Ubuntu_1nic",
1299 "isShared": "false",
1300 "numberOfVAppTemplates": "1",
1302 "isPublished": "false",
1303 "ownerName": "orgadmin",
1304 "numberOfMedia": "1",
1305 "creationDate": "2018-02-15T02:16:58.300-08:00",
1306 "id": "4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a",
1307 "name": "cirros034",
1311 # call to vim connector method with invalid image id
1312 self
.vim
.get_image_list({"id": "b46c-3f35ba45ca4a"})
1314 @mock.patch
.object(vimconnector
, "get_vapp_details_rest")
1315 @mock.patch
.object(vimconnector
, "get_vdc_details")
1316 def test_get_vminstance_negative(self
, get_vdc_details
, get_vapp_details_rest
):
1318 Testcase to get vminstance by invalid vm id
1321 invalid_vmid
= "18743edb0c8b-sdfsf-fg"
1322 # created vdc object
1323 vdc_xml_resp
= xml_resp
.vdc_xml_response
1324 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1325 # assumed return value from VIM connector
1326 get_vdc_details
.return_value
= self
.org
, vdc
1327 get_vapp_details_rest
.return_value
= False
1329 # assert verified expected and return result from VIM connector
1331 VimConnNotFoundException
, self
.vim
.get_vminstance
, invalid_vmid
1334 @mock.patch
.object(vimconnector
, "connect")
1335 @mock.patch
.object(vimconnector
, "get_namebyvappid")
1336 @mock.patch
.object(vimconnector
, "get_vdc_details")
1337 @mock.patch
.object(VDC
, "get_vapp")
1338 def test_delete_vminstance_negative(
1339 self
, get_vapp
, get_vdc_details
, get_namebyvappid
, connect
1342 Testcase to delete vminstance by invalid vm id
1344 vm_id
= "sdfrtt4935-87a1-0e4dc9c3a069"
1345 vm_name
= "Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa"
1346 # created vdc object
1347 vdc_xml_resp
= xml_resp
.vdc_xml_response
1348 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1350 # assumed return value from VIM connector
1351 self
.vim
.client
= self
.vim
.connect()
1352 get_vdc_details
.return_value
= self
.org
, vdc
1353 get_namebyvappid
.return_name
= vm_name
1355 get_vapp
.return_value
= None
1357 # call to VIM connector method
1358 self
.assertRaises(VimConnException
, self
.vim
.delete_vminstance
, vm_id
)
1360 @mock.patch
.object(vimconnector
, "get_vcd_network")
1361 def test_refresh_nets_status_negative(self
, get_vcd_network
):
1363 Testcase for refresh nets status by invalid vm id
1365 net_id
= "sjkldf-456mfd-345"
1367 # assumed return value from VIM connector
1368 get_vcd_network
.return_value
= None
1369 result
= self
.vim
.refresh_nets_status([net_id
])
1371 # assert verified expected and return result from VIM connector
1372 for attr
in result
[net_id
]:
1373 if attr
== "status":
1374 self
.assertEqual(result
[net_id
][attr
], "DELETED")
1376 @mock.patch
.object(vimconnector
, "connect")
1377 @mock.patch
.object(vimconnector
, "get_namebyvappid")
1378 @mock.patch
.object(vimconnector
, "get_vdc_details")
1379 def test_action_vminstance_negative(
1380 self
, get_vdc_details
, get_namebyvappid
, connect
1383 Testcase for action vm instance by invalid action
1385 vm_id
= "8413-4cb8-bad7-b5afaec6f9fa"
1386 # created vdc object
1387 vdc_xml_resp
= xml_resp
.vdc_xml_response
1388 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1389 # assumed return value from VIM connector
1390 get_vdc_details
.return_value
= self
.org
, vdc
1391 get_namebyvappid
.return_value
= "Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa"
1392 self
.vim
.client
= self
.vim
.connect()
1394 # call to VIM connector method
1396 VimConnException
, self
.vim
.action_vminstance
, vm_id
, {"invalid": None}