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
28 from unittest
import mock
30 from lxml
import etree
as lxmlElementTree
31 from osm_ro_plugin
.vimconn
import (
33 VimConnNotFoundException
,
34 VimConnUnexpectedResponse
,
36 from osm_rovim_vmware
.vimconn_vmware
import vimconnector
37 from pyvcloud
.vcd
.client
import Client
38 from pyvcloud
.vcd
.org
import Org
39 from pyvcloud
.vcd
.vapp
import VApp
40 from pyvcloud
.vcd
.vdc
import VDC
41 import tests
.test_vimconn_vmware_xml_response
as xml_resp
43 __author__
= "Prakash Kasar"
46 class TestVimconn_VMware(unittest
.TestCase
):
49 "admin_password": "admin",
50 "admin_username": "user",
52 "nsx_password": "nsx",
53 "nsx_manager": "https://test-nsx",
56 self
.client
= Client("test", verify_ssl_certs
=False)
59 org_resp
= xml_resp
.org_xml_response
60 get_org
= lxmlElementTree
.fromstring(org_resp
)
61 self
.org
= Org(self
.client
, resource
=get_org
)
63 self
.vim
= vimconnector(
72 @mock.patch
.object(vimconnector
, "get_vdc_details")
73 @mock.patch
.object(vimconnector
, "connect")
74 @mock.patch
.object(vimconnector
, "perform_request")
75 def test_get_network_not_found(self
, perform_request
, connect
, get_vdc_details
):
77 Testcase to get network with invalid network id
80 vdc_xml_resp
= xml_resp
.vdc_xml_response
81 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
83 # assumed return value from VIM connector
84 get_vdc_details
.return_value
= self
.org
, vdc
85 self
.vim
.client
= self
.vim
.connect()
86 perform_request
.return_value
.status_code
= 200
87 perform_request
.return_value
.content
= xml_resp
.vdc_xml_response
89 # call to VIM connector method with invalid id
90 self
.assertRaises(VimConnNotFoundException
, self
.vim
.get_network
, "mgmt-net")
92 @mock.patch
.object(vimconnector
, "perform_request")
93 @mock.patch
.object(vimconnector
, "get_vdc_details")
94 @mock.patch
.object(vimconnector
, "connect")
95 def test_get_network(self
, connect
, get_vdc_details
, perform_request
):
97 Testcase to get network with valid network id
99 net_id
= "5c04dc6d-6096-47c6-b72b-68f19013d491"
101 vdc_xml_resp
= xml_resp
.vdc_xml_response
102 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
104 # assumed return value from VIM connector
105 get_vdc_details
.return_value
= self
.org
, vdc
106 self
.vim
.client
= self
.vim
.connect()
107 perform_request
.side_effect
= [
108 mock
.Mock(status_code
=200, content
=xml_resp
.vdc_xml_response
),
109 mock
.Mock(status_code
=200, content
=xml_resp
.network_xml_response
),
111 # call to VIM connector method with network_id
112 result
= self
.vim
.get_network(net_id
)
114 # assert verified expected and return result from VIM connector
115 self
.assertEqual(net_id
, result
["id"])
117 @mock.patch
.object(vimconnector
, "perform_request")
118 @mock.patch
.object(vimconnector
, "get_vdc_details")
119 @mock.patch
.object(vimconnector
, "connect")
120 def test_get_network_list_not_found(
121 self
, connect
, get_vdc_details
, perform_request
124 Testcase to get list of available networks by invalid network id
126 vdc_xml_resp
= xml_resp
.vdc_xml_response
127 network_xml_resp
= xml_resp
.network_xml_response
129 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
131 # assumed return value from VIM connector
132 get_vdc_details
.return_value
= self
.org
, vdc
133 self
.vim
.client
= self
.vim
.connect()
134 perform_request
.return_value
.status_code
= 200
135 perform_request
.return_value
.content
= network_xml_resp
137 # call to VIM connector method with network_id
138 result
= self
.vim
.get_network_list({"id": "45hdfg-345nb-345"})
140 # assert verified expected and return result from VIM connector
141 self
.assertEqual(list(), result
)
143 @mock.patch
.object(vimconnector
, "perform_request")
144 @mock.patch
.object(vimconnector
, "get_vdc_details")
145 @mock.patch
.object(vimconnector
, "connect")
146 def test_get_network_list(self
, connect
, get_vdc_details
, perform_request
):
148 Testcase to get list of available networks by valid network id
150 # import pdb;pdb.set_trace() ## Not working
151 vdc_xml_resp
= xml_resp
.vdc_xml_response
152 net_id
= "5c04dc6d-6096-47c6-b72b-68f19013d491"
154 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
155 # created network object
156 network_xml_resp
= xml_resp
.network_xml_response
157 # assumed return value from VIM connector
158 get_vdc_details
.return_value
= self
.org
, vdc
159 self
.vim
.client
= self
.vim
.connect()
160 perform_request
.side_effect
= [
161 mock
.Mock(status_code
=200, content
=xml_resp
.vdc_xml_response
),
162 mock
.Mock(status_code
=200, content
=network_xml_resp
),
164 perform_request
.reset_mock()
167 # call to VIM connector method with network_id
168 result
= self
.vim
.get_network_list({"id": net_id
})
170 # assert verified expected and return result from VIM connector
172 self
.assertEqual(item
.get("id"), net_id
)
173 self
.assertEqual(item
.get("status"), "ACTIVE")
174 self
.assertEqual(item
.get("shared"), False)
176 @mock.patch
.object(vimconnector
, "create_network_rest")
177 def test_new_network(self
, create_network_rest
):
179 Testcase to create new network by passing network name and type
181 # create network reposnse
182 create_net_xml_resp
= xml_resp
.create_network_xml_response
183 net_name
= "Test_network"
185 # assumed return value from VIM connector
186 create_network_rest
.return_value
= create_net_xml_resp
187 # call to VIM connector method with network name and type
188 result
= self
.vim
.new_network(net_name
, net_type
)
190 # assert verified expected and return result from VIM connector
191 self
.assertEqual(result
, ("df1956fa-da04-419e-a6a2-427b6f83788f", {}))
193 @mock.patch
.object(vimconnector
, "create_network_rest")
194 def test_new_network_not_created(self
, create_network_rest
):
196 Testcase to create new network by assigning empty xml data
198 # assumed return value from VIM connector
199 create_network_rest
.return_value
= """<?xml version="1.0" encoding="UTF-8"?>
200 <OrgVdcNetwork></OrgVdcNetwork>"""
202 # assert verified expected and return result from VIM connector
204 VimConnUnexpectedResponse
, self
.vim
.new_network
, "test_net", "bridge"
207 @mock.patch
.object(vimconnector
, "connect")
208 @mock.patch
.object(vimconnector
, "get_network_action")
209 @mock.patch
.object(vimconnector
, "delete_network_action")
210 def test_delete_network(self
, delete_network_action
, get_network_action
, connect
):
212 Testcase to delete network by network id
214 net_uuid
= "0a55e5d1-43a2-4688-bc92-cb304046bf87"
215 # delete network response
216 delete_net_xml_resp
= xml_resp
.delete_network_xml_response
218 # assumed return value from VIM connector
219 self
.vim
.client
= self
.vim
.connect()
220 get_network_action
.return_value
= delete_net_xml_resp
221 delete_network_action
.return_value
= True
222 # call to VIM connector method with network_id
223 result
= self
.vim
.delete_network(net_uuid
)
225 # assert verified expected and return result from VIM connector
226 self
.assertEqual(result
, net_uuid
)
228 @mock.patch
.object(vimconnector
, "get_vcd_network")
229 def test_delete_network_not_found(self
, get_vcd_network
):
231 Testcase to delete network by invalid network id
233 # assumed return value from VIM connector
234 get_vcd_network
.return_value
= False
235 # assert verified expected and return result from VIM connector
237 VimConnNotFoundException
,
238 self
.vim
.delete_network
,
239 "2a23e5d1-42a2-0648-bc92-cb508046bf87",
242 def test_get_flavor(self
):
244 Testcase to get flavor data
247 "a646eb8a-95bd-4e81-8321-5413ee72b62e": {
253 vimconnector
.flavorlist
= flavor_data
254 result
= self
.vim
.get_flavor("a646eb8a-95bd-4e81-8321-5413ee72b62e")
256 # assert verified expected and return result from VIM connector
257 self
.assertEqual(result
, flavor_data
["a646eb8a-95bd-4e81-8321-5413ee72b62e"])
259 def test_get_flavor_not_found(self
):
261 Testcase to get flavor data with invalid id
263 vimconnector
.flavorlist
= {}
264 # assert verified expected and return result from VIM connector
266 VimConnNotFoundException
,
268 "a646eb8a-95bd-4e81-8321-5413ee72b62e",
271 def test_new_flavor(self
):
273 Testcase to create new flavor data
275 flavor_data
= {"disk": 10, "vcpus": 1, "ram": 1024}
276 result
= self
.vim
.new_flavor(flavor_data
)
277 # assert verified expected and return result from VIM connector
278 self
.assertIsNotNone(result
)
280 def test_delete_flavor(self
):
282 Testcase to delete flavor data
285 "2cb3dffb-5c51-4355-8406-28553ead28ac": {
291 vimconnector
.flavorlist
= flavor_data
292 # return value from VIM connector
293 result
= self
.vim
.delete_flavor("2cb3dffb-5c51-4355-8406-28553ead28ac")
295 # assert verified expected and return result from VIM connector
296 self
.assertEqual(result
, "2cb3dffb-5c51-4355-8406-28553ead28ac")
298 @mock.patch
.object(vimconnector
, "connect_as_admin")
299 @mock.patch
.object(vimconnector
, "perform_request")
300 def test_delete_image_not_found(self
, perform_request
, connect_as_admin
):
302 Testcase to delete image by invalid image id
304 # creating conn object
305 self
.vim
.client
= self
.vim
.connect_as_admin()
307 # assumed return value from VIM connector
308 perform_request
.side_effect
= [
309 mock
.Mock(status_code
=200, content
=xml_resp
.delete_catalog_xml_response
),
311 status_code
=201, content
=xml_resp
.delete_catalog_item_xml_response
315 # assert verified expected and return result from VIM connector
316 self
.assertRaises(VimConnNotFoundException
, self
.vim
.delete_image
, "invali3453")
318 @mock.patch
.object(vimconnector
, "get_vdc_details")
319 @mock.patch
.object(vimconnector
, "connect")
320 @mock.patch
.object(Org
, "list_catalogs")
321 def test_get_image_list(self
, list_catalogs
, connect
, get_vdc_details
):
323 Testcase to get image list by valid image id
326 vdc_xml_resp
= xml_resp
.vdc_xml_response
327 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
328 self
.vim
.client
= self
.vim
.connect()
330 # assumed return value from VIM connector
331 get_vdc_details
.return_value
= self
.org
, vdc
332 list_catalogs
.return_value
= [
335 "numberOfVAppTemplates": "1",
337 "isPublished": "false",
338 "ownerName": "system",
339 "numberOfMedia": "0",
340 "creationDate": "2017-10-15T02:03:59.403-07:00",
341 "id": "34925a30-0f4a-4018-9759-0d6799063b51",
342 "name": "Ubuntu_1nic",
346 "numberOfVAppTemplates": "1",
348 "isPublished": "false",
349 "ownerName": "orgadmin",
350 "numberOfMedia": "1",
351 "creationDate": "2018-02-15T02:16:58.300-08:00",
352 "id": "4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a",
357 "numberOfVAppTemplates": "1",
359 "isPublished": "true",
360 "ownerName": "system",
361 "numberOfMedia": "0",
362 "creationDate": "2018-01-26T02:09:12.387-08:00",
363 "id": "b139ed82-7ca4-49fb-9882-5f841f59c890",
364 "name": "Ubuntu_plugtest-1",
368 "numberOfVAppTemplates": "1",
370 "isPublished": "false",
371 "ownerName": "system",
372 "numberOfMedia": "0",
373 "creationDate": "2017-06-18T21:33:16.430-07:00",
374 "id": "b31e6973-86d2-404b-a522-b16846d099dc",
375 "name": "Ubuntu_Cat",
379 "numberOfVAppTemplates": "1",
381 "isPublished": "false",
382 "ownerName": "orgadmin",
383 "numberOfMedia": "0",
384 "creationDate": "2018-02-15T22:26:28.910-08:00",
385 "id": "c3b56180-f980-4256-9109-a93168d73ff2",
386 "name": "de4ffcf2ad21f1a5d0714d6b868e2645",
390 "numberOfVAppTemplates": "0",
392 "isPublished": "false",
393 "ownerName": "system",
394 "numberOfMedia": "0",
395 "creationDate": "2017-08-23T05:54:56.780-07:00",
396 "id": "d0eb0b02-718d-42e0-b889-56575000b52d",
397 "name": "Test_Cirros",
401 "numberOfVAppTemplates": "0",
403 "isPublished": "false",
404 "ownerName": "system",
405 "numberOfMedia": "0",
406 "creationDate": "2017-03-08T21:25:05.923-08:00",
407 "id": "d3fa3df2-b311-4571-9138-4c66541d7f46",
412 "numberOfVAppTemplates": "0",
414 "isPublished": "false",
415 "ownerName": "system",
416 "numberOfMedia": "0",
417 "creationDate": "2017-07-12T22:45:20.537-07:00",
418 "id": "d64b2617-ea4b-4b90-910b-102c99dd2031",
423 "numberOfVAppTemplates": "1",
425 "isPublished": "true",
426 "ownerName": "system",
427 "numberOfMedia": "1",
428 "creationDate": "2017-10-14T23:52:37.260-07:00",
429 "id": "e8d953db-8dc9-46d5-9cab-329774cd2ad9",
430 "name": "Ubuntu_no_nic",
434 result
= self
.vim
.get_image_list({"id": "4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a"})
436 # assert verified expected and return result from VIM connector
438 self
.assertEqual(item
["id"], "4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a")
440 @mock.patch
.object(vimconnector
, "get_vapp_details_rest")
441 @mock.patch
.object(vimconnector
, "get_vdc_details")
442 def test_get_vminstance(self
, get_vdc_details
, get_vapp_details_rest
):
444 Testcase to get vminstance by valid vm id
448 "acquireMksTicket": {
449 "href": "https://localhost/api/vApp/vm-47d12505-5968-4e16-95a7"
450 "-18743edb0c8b/screen/action/acquireMksTicket",
451 "type": "application/vnd.vmware.vcloud.mksTicket+xml",
452 "rel": "screen:acquireMksTicket",
454 "vm_virtual_hardware": {
455 "disk_edit_href": "https://localhost/api/vApp/vm-47d12505-5968"
456 "-4e16-95a7-18743edb0c8b/virtualHardwareSection/disks",
457 "disk_size": "40960",
459 "name": "Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa",
460 "created": "2017-09-21T01:15:31.627-07:00",
462 "EndAddress": "12.16.24.199",
465 "MACAddress": "00:50:56:01:12:a2",
466 "NetworkConnectionIndex": "0",
467 "network": "testing_T6nODiW4-68f68d93-0350-4d86-b40b-6e74dedf994d",
468 "IpAddressAllocationMode": "DHCP",
469 "IsConnected": "true",
470 "IpAddress": "12.16.24.200",
473 "ovfDescriptorUploaded": "true",
474 "nestedHypervisorEnabled": "false",
475 "Gateway": "12.16.24.1",
477 "href": "https://localhost/api/vApp/vm-47d12505-5968-4e16"
478 "-95a7-18743edb0c8b/screen/action/acquireTicket",
479 "rel": "screen:acquireTicket",
481 "vmuuid": "47d12505-5968-4e16-95a7-18743edb0c8b",
482 "Netmask": "255.255.255.0",
483 "StartAddress": "12.16.24.100",
484 "primarynetwork": "0",
485 "networkname": "External-Network-1074",
486 "IsInherited": "false",
490 vdc_xml_resp
= xml_resp
.vdc_xml_response
491 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
492 # assumed return value from VIM connector
493 get_vdc_details
.return_value
= self
.org
, vdc
494 get_vapp_details_rest
.return_value
= vapp_info
496 result
= self
.vim
.get_vminstance("47d12505-5968-4e16-95a7-18743edb0c8b")
497 # assert verified expected and return result from VIM connector
498 self
.assertEqual(result
["status"], "ACTIVE")
499 self
.assertEqual(result
["hostId"], "47d12505-5968-4e16-95a7-18743edb0c8b")
501 @mock.patch
.object(vimconnector
, "connect")
502 @mock.patch
.object(vimconnector
, "get_namebyvappid")
503 @mock.patch
.object(vimconnector
, "get_vdc_details")
504 @mock.patch
.object(VDC
, "get_vapp")
505 @mock.patch
.object(VApp
, "power_off")
506 @mock.patch
.object(VApp
, "undeploy")
507 @mock.patch
.object(VDC
, "delete_vapp")
508 @mock.patch
.object(Client
, "get_task_monitor")
509 def x_test_delete_vminstance(
521 Testcase to delete vminstance by valid vm id
523 vm_id
= "4f6a9b49-e92d-4935-87a1-0e4dc9c3a069"
524 vm_name
= "Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa"
526 vdc_xml_resp
= xml_resp
.vdc_xml_response
527 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
529 # assumed return value from VIM connector
530 self
.vim
.client
= self
.vim
.connect()
531 get_vdc_details
.return_value
= self
.org
, vdc
532 get_namebyvappid
.return_name
= vm_name
534 vapp_resp
= xml_resp
.vapp_xml_response
535 vapp
= lxmlElementTree
.fromstring(vapp_resp
)
536 get_vapp
.return_value
= vapp
538 power_off_resp
= xml_resp
.poweroff_task_xml
539 power_off
= lxmlElementTree
.fromstring(power_off_resp
)
540 poweroff
.return_value
= power_off
542 status_resp
= xml_resp
.status_task_xml
543 status
= lxmlElementTree
.fromstring(status_resp
)
544 self
.vim
.connect
.return_value
.get_task_monitor
.return_value
.wait_for_success
.return_value
= (
548 # call to VIM connector method
549 result
= self
.vim
.delete_vminstance(vm_id
)
551 # assert verified expected and return result from VIM connector
552 self
.assertEqual(result
, vm_id
)
554 @mock.patch
.object(vimconnector
, "get_network_id_by_name")
555 @mock.patch
.object(vimconnector
, "get_vm_pci_details")
556 @mock.patch
.object(VDC
, "get_vapp")
557 @mock.patch
.object(vimconnector
, "connect")
558 @mock.patch
.object(vimconnector
, "get_namebyvappid")
559 @mock.patch
.object(vimconnector
, "get_vdc_details")
560 @mock.patch
.object(vimconnector
, "perform_request")
561 @mock.patch
.object(VApp
, "get_all_vms")
562 def test_refresh_vms_status(
571 get_network_id_by_name
,
574 Testcase to refresh vms status by valid vm id
576 vm_id
= "53a529b2-10d8-4d56-a7ad-8182acdbe71c"
579 vdc_xml_resp
= xml_resp
.vdc_xml_response
580 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
581 # assumed return value from VIM connector
582 self
.vim
.client
= self
.vim
.connect()
583 get_vdc_details
.return_value
= self
.org
, vdc
585 get_namebyvappid
.return_value
= "Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa"
586 get_vm_pci_details
.return_value
= {
587 "host_name": "test-esx-1.corp.local",
588 "host_ip": "12.19.24.31",
590 vapp_resp
= xml_resp
.vapp_xml_response
591 vapp
= lxmlElementTree
.fromstring(vapp_resp
)
592 get_vapp
.return_value
= vapp
593 get_network_id_by_name
.return_value
= "47d12505-5968-4e16-95a7-18743edb0c8b"
595 vm_resp
= xml_resp
.vm_xml_response
596 vm_list
= lxmlElementTree
.fromstring(vm_resp
)
597 get_all_vms
.return_value
= vm_list
599 perform_request
.return_value
.status_code
= 200
600 perform_request
.return_value
.content
= vm_resp
601 # call to VIM connector method
602 result
= self
.vim
.refresh_vms_status([vm_id
])
603 for attr
in result
[vm_id
]:
605 # assert verified expected and return result from VIM connector
606 self
.assertEqual(result
[vm_id
][attr
], "ACTIVE")
608 @mock.patch
.object(vimconnector
, "get_vcd_network")
609 def test_refresh_nets_status(self
, get_vcd_network
):
610 net_id
= "c2d0f28f-d38b-4588-aecc-88af3d4af58b"
615 "EndAddress": "12.19.21.15",
616 "name": "testing_gwyRXlvWYL1-9ebb6d7b-5c74-472f-be77-963ed050d44d",
617 "Dns1": "12.19.21.10",
619 "Gateway": "12.19.21.23",
620 "Netmask": "255.255.255.0",
621 "RetainNetInfoAcrossDeployments": "false",
624 "DnsSuffix": "corp.local",
625 "StartAddress": "12.19.21.11",
628 "FenceMode": "bridged",
629 "IsInherited": "true",
630 "uuid": "c2d0f28f-d38b-4588-aecc-88af3d4af58b",
632 # assumed return value from VIM connector
633 get_vcd_network
.return_value
= network_dict
634 result
= self
.vim
.refresh_nets_status([net_id
])
635 # assert verified expected and return result from VIM connector
636 for attr
in result
[net_id
]:
638 self
.assertEqual(result
[net_id
][attr
], "ACTIVE")
640 @mock.patch
.object(VDC
, "get_vapp")
641 @mock.patch
.object(vimconnector
, "connect")
642 @mock.patch
.object(vimconnector
, "get_namebyvappid")
643 @mock.patch
.object(vimconnector
, "get_vdc_details")
644 def test_action_vminstance(
645 self
, get_vdc_details
, get_namebyvappid
, connect
, get_vapp
648 Testcase for action vm instance by vm id
650 # task_resp = xml_resp.poweroff_task_xml
651 vm_id
= "05e6047b-6938-4275-8940-22d1ea7245b8"
653 vdc_xml_resp
= xml_resp
.vdc_xml_response
654 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
655 # assumed return value from VIM connector
656 get_vdc_details
.return_value
= self
.org
, vdc
657 get_namebyvappid
.return_value
= "Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa"
658 self
.vim
.client
= self
.vim
.connect()
659 power_off_resp
= xml_resp
.poweroff_task_xml
660 power_off
= lxmlElementTree
.fromstring(power_off_resp
)
661 get_vapp
.return_value
.undeploy
.return_value
= power_off
663 status_resp
= xml_resp
.status_task_xml
664 status
= lxmlElementTree
.fromstring(status_resp
)
665 self
.vim
.connect
.return_value
.get_task_monitor
.return_value
.wait_for_success
.return_value
= (
669 # call to VIM connector method
670 result
= self
.vim
.action_vminstance(vm_id
, {"shutdown": None})
672 # assert verified expected and return result from VIM connector
673 self
.assertEqual(result
, vm_id
)
675 @mock.patch
.object(vimconnector
, "get_org")
676 def test_get_tenant_list(self
, get_org
):
678 Test case for get tenant list
682 "4c4fdb5d-0c7d-4fee-9efd-cb061f327a01": "80d8488f67ba1de98b7f485fba6abbd2",
683 "1b98ca02-b0a6-4ca7-babe-eadc0ae59677": "Ubuntu",
684 "e7f27dfe-14b7-49e1-918e-173bda02683a": "834bdd1f28fd15dcbe830456ec58fbca",
685 "9441ee69-0486-4438-ac62-8d8082c51302": "centos",
686 "e660cce0-47a6-4315-a5b9-97a39299a374": "cirros01",
687 "0fd96c61-c3d1-4abf-9a34-0dff8fb65743": "cirros034",
688 "1c703be3-9bd2-46a2-854c-3e678d5cdda8": "Ubuntu_plugtest-1",
689 "bc4e342b-f84c-41bd-a93a-480f35bacf69": "Cirros",
690 "8a206fb5-3ef9-4571-9bcc-137615f4d930": "255eb079a62ac155e7f942489f14b0c4",
693 "e6436c6a-d922-4b39-9c1c-b48e766fce5e": "osm",
694 "3852f762-18ae-4833-a229-42684b6e7373": "cloud-1-vdc",
697 "e203cacd-9320-4422-9be0-12c7def3ab56": "testing_lNejr37B-38e4ca67-1e26-486f-ad2f-f14bb099e068",
698 "a6623349-2bef-4367-9fda-d33f9ab927f8": "Vlan_3151",
699 "adf780cb-358c-47c2-858d-ae5778ccaf17": "testing_xwBultc-99b8a2ae-c091-4dd3-bbf7-762a51612385",
700 "721f9efc-11fe-4c13-936d-252ba0ed93c8": "testing_tLljy8WB5e-a898cb28-e75b-4867-a22e-f2bad285c144",
701 "1512d97a-929d-4b06-b8af-cf5ac42a2aee": "Managment",
702 "d9167301-28af-4b89-b9e0-09f612e962fa": "testing_prMW1VThk-063cb428-eaee-44b8-9d0d-df5fb77a5b4d",
703 "004ae853-f899-43fd-8981-7513a3b40d6b": "testing_RTtKVi09rld-fab00b16-7996-49af-8249-369c6bbfa02d",
707 get_org
.return_value
= org_dict
709 # call to VIM connector method
710 results
= self
.vim
.get_tenant_list({"name": tenant_name
})
711 # assert verified expected and return result from VIM connector
712 for result
in results
:
713 self
.assertEqual(tenant_name
, result
["name"])
715 @mock.patch
.object(vimconnector
, "get_org")
716 def test_get_tenant_list_negative(self
, get_org
):
718 Test case for get tenant list negative
720 org_dict
= {"vdcs": {}}
721 tenant_name
= "testosm"
722 get_org
.return_value
= org_dict
724 # call to VIM connector method
725 results
= self
.vim
.get_tenant_list({"name": tenant_name
})
726 # assert verified expected and return result from VIM connector
727 self
.assertEqual(results
, [])
729 @mock.patch
.object(vimconnector
, "create_vdc")
730 def test_new_tenant(self
, create_vdc
):
732 Test case for create new tenant
736 "a493aa2c-3104-4d63-969b-fc9e72304c9f": "https://localhost/api/task/e658d84c-007d-4fd8-9590-3a8f93cc0de4"
738 create_vdc
.return_value
= vdc
740 # call to VIM connector method
741 result
= self
.vim
.new_tenant(tenant_name
)
742 # assert verified expected and return result from VIM connector
743 self
.assertEqual("a493aa2c-3104-4d63-969b-fc9e72304c9f", result
)
745 @mock.patch
.object(vimconnector
, "create_vdc")
746 def test_new_tenant_negative(self
, create_vdc
):
748 Test case for create new tenant
751 create_vdc
.return_value
= None
753 # assert verified expected and return result from VIM connector
754 self
.assertRaises(VimConnException
, self
.vim
.new_tenant
, tenant_name
)
756 @mock.patch
.object(vimconnector
, "connect_as_admin")
757 @mock.patch
.object(vimconnector
, "connect")
758 @mock.patch
.object(vimconnector
, "perform_request")
759 def test_delete_tenant(self
, perform_request
, connect
, connect_as_admin
):
761 Test case to delete tenant
763 tenant_id
= "753227f5-d6c6-4478-9546-acc5cfff21e9"
764 delete_tenant_resp
= xml_resp
.delete_tenant
766 self
.vim
.client
= self
.vim
.connect()
767 perform_request
.side_effect
= [
768 mock
.Mock(status_code
=200, content
=delete_tenant_resp
),
769 mock
.Mock(status_code
=202, content
=None),
772 # call to VIM connector method
773 result
= self
.vim
.delete_tenant(tenant_id
)
774 # assert verified expected and return result from VIM connector
775 self
.assertEqual(tenant_id
, result
)
777 @mock.patch
.object(vimconnector
, "connect_as_admin")
778 @mock.patch
.object(vimconnector
, "connect")
779 @mock.patch
.object(vimconnector
, "perform_request")
780 def test_delete_tenant_negative(self
, perform_request
, connect
, connect_as_admin
):
782 Test case to delete tenant
784 tenant_id
= "ten45klsjdf"
786 self
.vim
.client
= self
.vim
.connect()
787 perform_request
.return_value
.status_code
= 201
789 # assert verified expected and return result from VIM connector
790 self
.assertRaises(VimConnNotFoundException
, self
.vim
.delete_tenant
, tenant_id
)
792 @mock.patch
.object(vimconnector
, "get_vdc_details")
793 @mock.patch
.object(Org
, "list_catalogs")
794 @mock.patch
.object(vimconnector
, "get_vcd_network")
795 @mock.patch
.object(Org
, "get_vdc")
796 @mock.patch
.object(Org
, "get_catalog_item")
797 @mock.patch
.object(vimconnector
, "connect")
798 @mock.patch
.object(vimconnector
, "perform_request")
799 @mock.patch
.object(Client
, "get_task_monitor")
800 @mock.patch
.object(VDC
, "get_vapp")
801 @mock.patch
.object(vimconnector
, "get_network_list")
802 @mock.patch
.object(vimconnector
, "power_on_vapp")
803 def test_new_vminstance(
818 Test case for new vm instance
820 image_id
= "34925a30-0f4a-4018-9759-0d6799063b51"
821 vimconnector
.flavorlist
= {
822 "123347db-536b-4936-8b62-1fcdc721865d": {
829 flavor_id
= "123347db-536b-4936-8b62-1fcdc721865d"
834 "floating_ip": False,
835 "vpci": "0000:00:11.0",
836 "port_security": True,
838 "net_id": "69c713cb-3eec-452c-9a32-0e95c8ffe567",
845 "numberOfVAppTemplates": "1",
847 "isPublished": "false",
848 "ownerName": "system",
849 "numberOfMedia": "0",
850 "creationDate": "2017-10-15T02:03:59.403-07:00",
851 "id": "34925a30-0f4a-4018-9759-0d6799063b51",
852 "name": "Ubuntu_1nic",
860 "EndAddress": "192.169.241.150",
861 "name": "testing_6n5mJwUyx-ad9d62fc-8223-4dbe-88c4-9f16458ebeec",
862 "Dns1": "192.169.241.102",
864 "Gateway": "192.169.241.253",
865 "Netmask": "255.255.255.0",
866 "RetainNetInfoAcrossDeployments": "false",
869 "DnsSuffix": "corp.local",
870 "StartAddress": "192.169.241.115",
873 "FenceMode": "bridged",
874 "IsInherited": "true",
875 "uuid": "69c713cb-3eec-452c-9a32-0e95c8ffe567",
882 "admin_state_up": True,
884 "tenant_id": "2584137f-6541-4c04-a2a2-e56bfca14c69",
886 "id": "1fd6421e-929a-4576-bc19-a0c48aea1969",
891 vdc_xml_resp
= xml_resp
.vdc_xml_response
892 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
894 catalog_list
= lxmlElementTree
.fromstring(xml_resp
.catalog_list_xml
)
895 # assumed return value from VIM connector
896 get_vdc_details
.return_value
= self
.org
, vdc
897 list_catalogs
.return_value
= cat_list
898 get_vcd_network
.return_value
= network_dict
899 get_vdc
.return_value
= vdc
900 get_catalog_item
.return_value
= catalog_list
901 self
.vim
.client
= self
.vim
.connect()
902 perform_request
.side_effect
= [
903 mock
.Mock(status_code
=200, content
=xml_resp
.catalogItem_xml
),
904 mock
.Mock(status_code
=200, content
=xml_resp
.vapp_template_xml
),
905 mock
.Mock(status_code
=201, content
=xml_resp
.deployed_vapp_xml
),
908 status_resp
= xml_resp
.status_task_xml
909 status
= lxmlElementTree
.fromstring(status_resp
)
910 self
.vim
.connect
.return_value
.get_task_monitor
.return_value
.wait_for_success
.return_value
= (
913 vapp_resp
= xml_resp
.vapp_xml_response
914 vapp
= lxmlElementTree
.fromstring(vapp_resp
)
915 get_vapp
.return_value
= vapp
916 get_network_list
.return_value
= network_list
917 power_on_resp
= xml_resp
.poweroff_task_xml
918 poweron
= lxmlElementTree
.fromstring(power_on_resp
)
919 power_on
.return_value
= poweron
921 # call to VIM connector method
922 result
= self
.vim
.new_vminstance(
923 name
="Test1_vm", image_id
=image_id
, flavor_id
=flavor_id
, net_list
=net_list
925 # assert verified expected and return result from VIM connector
926 self
.assertIsNotNone(result
)
928 @mock.patch
.object(vimconnector
, "get_vdc_details")
929 @mock.patch
.object(Org
, "list_catalogs")
930 @mock.patch
.object(vimconnector
, "get_vcd_network")
931 @mock.patch
.object(Org
, "get_vdc")
932 @mock.patch
.object(Org
, "get_catalog_item")
933 @mock.patch
.object(vimconnector
, "connect")
934 @mock.patch
.object(vimconnector
, "perform_request")
935 @mock.patch
.object(Client
, "get_task_monitor")
936 @mock.patch
.object(VDC
, "get_vapp")
937 @mock.patch
.object(vimconnector
, "get_network_list")
938 @mock.patch
.object(vimconnector
, "power_on_vapp")
939 def test_new_vminstance_negative(
954 Test case for new vm instance
956 image_id
= "34925a30-0f4a-4018-9759-0d6799063b51"
957 vimconnector
.flavorlist
= {
958 "123347db-536b-4936-8b62-1fcdc721865d": {
964 flavor_id
= "123347db-536b-4936-8b62-1fcdc721865d"
969 "floating_ip": False,
970 "vpci": "0000:00:11.0",
971 "port_security": True,
973 "net_id": "69c713cb-3eec-452c-9a32-0e95c8ffe567",
980 "numberOfVAppTemplates": "1",
982 "isPublished": "false",
983 "ownerName": "system",
984 "numberOfMedia": "0",
985 "creationDate": "2017-10-15T02:03:59.403-07:00",
986 "id": "34925a30-0f4a-4018-9759-0d6799063b51",
987 "name": "Ubuntu_1nic",
995 "EndAddress": "192.169.241.150",
996 "name": "testing_6n5mJwUyx-ad9d62fc-8223-4dbe-88c4-9f16458ebeec",
997 "Dns1": "192.169.241.102",
999 "Gateway": "192.169.241.253",
1000 "Netmask": "255.255.255.0",
1001 "RetainNetInfoAcrossDeployments": "false",
1003 "IsEnabled": "true",
1004 "DnsSuffix": "corp.local",
1005 "StartAddress": "192.169.241.115",
1007 "Configuration": "",
1008 "FenceMode": "bridged",
1009 "IsInherited": "true",
1010 "uuid": "69c713cb-3eec-452c-9a32-0e95c8ffe567",
1013 # created vdc object
1014 vdc_xml_resp
= xml_resp
.vdc_xml_response
1015 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1017 catalog_list
= lxmlElementTree
.fromstring(xml_resp
.catalog_list_xml
)
1018 # assumed return value from VIM connector
1019 get_vdc_details
.return_value
= self
.org
, vdc
1020 list_catalogs
.return_value
= cat_list
1021 get_vcd_network
.return_value
= network_dict
1022 get_vdc
.return_value
= vdc
1023 get_catalog_item
.return_value
= catalog_list
1024 self
.vim
.client
= self
.vim
.connect()
1025 perform_request
.side_effect
= [
1026 mock
.Mock(status_code
=200, content
=xml_resp
.catalogItem_xml
),
1027 mock
.Mock(status_code
=200, content
=xml_resp
.vapp_template_xml
),
1028 mock
.Mock(status_code
=400, content
="Bad request error"),
1031 # call to VIM connector method
1033 VimConnUnexpectedResponse
,
1034 self
.vim
.new_vminstance
,
1037 flavor_id
=flavor_id
,
1041 @mock.patch
.object(vimconnector
, "get_catalogid")
1042 @mock.patch
.object(vimconnector
, "upload_vimimage")
1043 @mock.patch
.object(Org
, "create_catalog")
1044 @mock.patch
.object(Org
, "list_catalogs")
1045 @mock.patch
.object(vimconnector
, "get_vdc_details")
1046 @mock.patch
.object(path
, "isfile")
1047 @mock.patch
.object(os
, "access")
1059 Test case for create new image
1061 path
= "/tmp/cirros/cirros.ovf"
1064 "isShared": "false",
1065 "numberOfVAppTemplates": "1",
1067 "isPublished": "false",
1068 "ownerName": "system",
1069 "numberOfMedia": "0",
1070 "creationDate": "2017-10-15T02:03:59.403-07:00",
1071 "id": "9759-0d6799063b51",
1075 # created vdc object
1076 vdc_xml_resp
= xml_resp
.vdc_xml_response
1077 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1079 catalog
= lxmlElementTree
.fromstring(xml_resp
.catalog1_xml_response
)
1081 # assumed return value from VIM connector
1082 isfile
.return_value
= True
1083 access
.return_value
= True
1084 get_vdc_details
.return_value
= self
.org
, vdc
1085 list_catalogs
.return_value
= cat_list
1086 create_catalog
.return_value
= catalog
1087 upload_vimimage
.return_value
= True
1088 get_catalogid
.return_value
= "9759-0d6799063b51"
1089 result
= self
.vim
.new_image({"name": "TestImage", "location": path
})
1091 # assert verified expected and return result from VIM connector
1092 self
.assertIsNotNone(result
)
1094 @mock.patch
.object(vimconnector
, "get_catalogid")
1095 @mock.patch
.object(vimconnector
, "upload_vimimage")
1096 @mock.patch
.object(Org
, "create_catalog")
1097 @mock.patch
.object(Org
, "list_catalogs")
1098 @mock.patch
.object(vimconnector
, "get_vdc_details")
1099 def test_new_image_negative(
1108 Test case for create new image with negative scenario
1110 path
= "/tmp/cirros/cirros.ovf"
1113 "isShared": "false",
1114 "numberOfVAppTemplates": "1",
1116 "ownerName": "system",
1117 "numberOfMedia": "0",
1118 "creationDate": "2017-10-15",
1119 "id": "34925a30-0f4a-4018-9759-0d6799063b51",
1123 # created vdc object
1124 vdc_xml_resp
= xml_resp
.vdc_xml_response
1125 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1127 catalog
= lxmlElementTree
.fromstring(xml_resp
.catalog1_xml_response
)
1129 # assumed return value from VIM connector
1130 get_vdc_details
.return_value
= self
.org
, vdc
1131 list_catalogs
.return_value
= cat_list
1132 create_catalog
.return_value
= catalog
1133 upload_vimimage
.return_value
= False
1134 get_catalogid
.return_value
= "34925a30-0f4a-4018-9759-0d6799063b51"
1136 # assert verified expected and return result from VIM connector
1140 {"name": "TestImage", "location": path
},
1143 @mock.patch
.object(vimconnector
, "connect_as_admin")
1144 @mock.patch
.object(vimconnector
, "perform_request")
1145 def test_delete_image(self
, perform_request
, connect_as_admin
):
1147 Testcase to delete image by image id
1149 image_id
= "f3bf3733-465b-419f-b675-52f91d18edbb"
1150 # creating conn object
1151 self
.vim
.client
= self
.vim
.connect_as_admin()
1153 # assumed return value from VIM connector
1154 perform_request
.side_effect
= [
1155 mock
.Mock(status_code
=200, content
=xml_resp
.delete_catalog_xml_response
),
1157 status_code
=200, content
=xml_resp
.delete_catalog_item_xml_response
1159 mock
.Mock(status_code
=204, content
=""),
1160 mock
.Mock(status_code
=204, content
=""),
1163 # call to vim connctor method
1164 result
= self
.vim
.delete_image(image_id
)
1165 # assert verified expected and return result from VIM connector
1166 self
.assertEqual(image_id
, result
)
1168 @mock.patch
.object(vimconnector
, "get_catalogid")
1169 @mock.patch
.object(vimconnector
, "upload_vimimage")
1170 @mock.patch
.object(Org
, "create_catalog")
1171 @mock.patch
.object(Org
, "list_catalogs")
1172 @mock.patch
.object(vimconnector
, "get_vdc_details")
1173 @mock.patch
.object(path
, "isfile")
1174 @mock.patch
.object(os
, "access")
1175 def test_get_image_id_from_path(
1186 Test case to get image id from image path
1188 path
= "/tmp/ubuntu/ubuntu.ovf"
1191 "isShared": "false",
1192 "numberOfVAppTemplates": "1",
1194 "isPublished": "false",
1195 "ownerName": "system",
1196 "numberOfMedia": "0",
1197 "creationDate": "2017-10-15T02:03:59.403-07:00",
1198 "id": "7208-0f6777052c30",
1203 # created vdc object
1204 vdc_xml_resp
= xml_resp
.vdc_xml_response
1205 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1207 catalog
= lxmlElementTree
.fromstring(xml_resp
.catalog1_xml_response
)
1209 # assumed return value from VIM connector
1210 isfile
.return_value
= True
1211 access
.return_value
= True
1212 get_vdc_details
.return_value
= self
.org
, vdc
1213 list_catalogs
.return_value
= cat_list
1214 create_catalog
.return_value
= catalog
1215 upload_vimimage
.return_value
= True
1216 get_catalogid
.return_value
= "7208-0f6777052c30"
1217 result
= self
.vim
.get_image_id_from_path(path
=path
)
1219 # assert verified expected and return result from VIM connector
1220 self
.assertIsNotNone(result
)
1222 @mock.patch
.object(vimconnector
, "get_catalogid")
1223 @mock.patch
.object(vimconnector
, "upload_vimimage")
1224 @mock.patch
.object(Org
, "create_catalog")
1225 @mock.patch
.object(Org
, "list_catalogs")
1226 @mock.patch
.object(vimconnector
, "get_vdc_details")
1227 @mock.patch
.object(path
, "isfile")
1228 @mock.patch
.object(os
, "access")
1229 def test_get_image_id_from_path_negative(
1240 Test case to get image id from image path with negative scenario
1242 path
= "/tmp/ubuntu/ubuntu.ovf"
1245 "isShared": "false",
1246 "numberOfVAppTemplates": "1",
1248 "isPublished": "false",
1249 "ownerName": "system",
1250 "numberOfMedia": "0",
1251 "creationDate": "2017-10-15T02:03:59.403-07:00",
1252 "id": "7208-0f6777052c30",
1257 # created vdc object
1258 vdc_xml_resp
= xml_resp
.vdc_xml_response
1259 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1261 catalog
= lxmlElementTree
.fromstring(xml_resp
.catalog1_xml_response
)
1263 # assumed return value from VIM connector
1264 isfile
.return_value
= True
1265 access
.return_value
= True
1266 get_vdc_details
.return_value
= self
.org
, vdc
1267 list_catalogs
.return_value
= cat_list
1268 create_catalog
.return_value
= catalog
1269 upload_vimimage
.return_value
= False
1270 get_catalogid
.return_value
= "7208-0f6777052c30"
1271 self
.assertRaises(VimConnException
, self
.vim
.get_image_id_from_path
, path
)
1273 @mock.patch
.object(vimconnector
, "get_vdc_details")
1274 @mock.patch
.object(vimconnector
, "connect")
1275 @mock.patch
.object(Org
, "list_catalogs")
1276 def test_get_image_list_negative(self
, list_catalogs
, connect
, get_vdc_details
):
1278 Testcase to get image list by invalid image id
1280 # created vdc object
1281 vdc_xml_resp
= xml_resp
.vdc_xml_response
1282 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1283 self
.vim
.client
= self
.vim
.connect()
1285 # assumed return value from VIM connector
1286 get_vdc_details
.return_value
= self
.org
, vdc
1287 list_catalogs
.return_value
= [
1289 "isShared": "false",
1290 "numberOfVAppTemplates": "1",
1292 "isPublished": "false",
1293 "ownerName": "system",
1294 "numberOfMedia": "0",
1295 "creationDate": "2017-10-15T02:03:59.403-07:00",
1296 "id": "34925a30-0f4a-4018-9759-0d6799063b51",
1297 "name": "Ubuntu_1nic",
1300 "isShared": "false",
1301 "numberOfVAppTemplates": "1",
1303 "isPublished": "false",
1304 "ownerName": "orgadmin",
1305 "numberOfMedia": "1",
1306 "creationDate": "2018-02-15T02:16:58.300-08:00",
1307 "id": "4b94b67e-c2c6-49ec-b46c-3f35ba45ca4a",
1308 "name": "cirros034",
1312 # call to vim connector method with invalid image id
1313 self
.vim
.get_image_list({"id": "b46c-3f35ba45ca4a"})
1315 @mock.patch
.object(vimconnector
, "get_vapp_details_rest")
1316 @mock.patch
.object(vimconnector
, "get_vdc_details")
1317 def test_get_vminstance_negative(self
, get_vdc_details
, get_vapp_details_rest
):
1319 Testcase to get vminstance by invalid vm id
1322 invalid_vmid
= "18743edb0c8b-sdfsf-fg"
1323 # created vdc object
1324 vdc_xml_resp
= xml_resp
.vdc_xml_response
1325 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1326 # assumed return value from VIM connector
1327 get_vdc_details
.return_value
= self
.org
, vdc
1328 get_vapp_details_rest
.return_value
= False
1330 # assert verified expected and return result from VIM connector
1332 VimConnNotFoundException
, self
.vim
.get_vminstance
, invalid_vmid
1335 @mock.patch
.object(vimconnector
, "connect")
1336 @mock.patch
.object(vimconnector
, "get_namebyvappid")
1337 @mock.patch
.object(vimconnector
, "get_vdc_details")
1338 @mock.patch
.object(VDC
, "get_vapp")
1339 def test_delete_vminstance_negative(
1340 self
, get_vapp
, get_vdc_details
, get_namebyvappid
, connect
1343 Testcase to delete vminstance by invalid vm id
1345 vm_id
= "sdfrtt4935-87a1-0e4dc9c3a069"
1346 vm_name
= "Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa"
1347 # created vdc object
1348 vdc_xml_resp
= xml_resp
.vdc_xml_response
1349 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1351 # assumed return value from VIM connector
1352 self
.vim
.client
= self
.vim
.connect()
1353 get_vdc_details
.return_value
= self
.org
, vdc
1354 get_namebyvappid
.return_name
= vm_name
1356 get_vapp
.return_value
= None
1358 # call to VIM connector method
1359 self
.assertRaises(VimConnException
, self
.vim
.delete_vminstance
, vm_id
)
1361 @mock.patch
.object(vimconnector
, "get_vcd_network")
1362 def test_refresh_nets_status_negative(self
, get_vcd_network
):
1364 Testcase for refresh nets status by invalid vm id
1366 net_id
= "sjkldf-456mfd-345"
1368 # assumed return value from VIM connector
1369 get_vcd_network
.return_value
= None
1370 result
= self
.vim
.refresh_nets_status([net_id
])
1372 # assert verified expected and return result from VIM connector
1373 for attr
in result
[net_id
]:
1374 if attr
== "status":
1375 self
.assertEqual(result
[net_id
][attr
], "DELETED")
1377 @mock.patch
.object(vimconnector
, "connect")
1378 @mock.patch
.object(vimconnector
, "get_namebyvappid")
1379 @mock.patch
.object(vimconnector
, "get_vdc_details")
1380 def test_action_vminstance_negative(
1381 self
, get_vdc_details
, get_namebyvappid
, connect
1384 Testcase for action vm instance by invalid action
1386 vm_id
= "8413-4cb8-bad7-b5afaec6f9fa"
1387 # created vdc object
1388 vdc_xml_resp
= xml_resp
.vdc_xml_response
1389 vdc
= lxmlElementTree
.fromstring(vdc_xml_resp
)
1390 # assumed return value from VIM connector
1391 get_vdc_details
.return_value
= self
.org
, vdc
1392 get_namebyvappid
.return_value
= "Test1_vm-69a18104-8413-4cb8-bad7-b5afaec6f9fa"
1393 self
.vim
.client
= self
.vim
.connect()
1395 # call to VIM connector method
1397 VimConnException
, self
.vim
.action_vminstance
, vm_id
, {"invalid": None}