11from unittest import TestCase
22
3+ from cloudshell .cp .vcenter .network .dvswitch .name_generator import DvPortGroupNameGenerator
34from cloudshell .cp .vcenter .vm .portgroup_configurer import VirtualMachinePortGroupConfigurer
4- from mock import Mock
5+ from mock import Mock , MagicMock
56from pyVmomi import vim
67
78from cloudshell .cp .vcenter .vm .dvswitch_connector import ConnectRequest
@@ -27,6 +28,13 @@ def setUp(self):
2728 self .network .config .distributedVirtualSwitch .uuid = "422254d5-5226-946e-26fb-60c21898b73f"
2829 self .py_vmomi_service = Mock ()
2930
31+ self .network2 = Mock ()
32+ self .network2 .key = "network2-key"
33+ self .network2 .name = "QS_network2"
34+ self .network3 = Mock ()
35+ self .network3 .key = "network3-key"
36+ self .network3 .name = "QS_network3"
37+
3038 self .vm = Mock ()
3139 self .vm .config .hardware = Mock ()
3240 self .vnic = Mock (spec = vim .vm .device .VirtualEthernetCard )
@@ -46,12 +54,14 @@ def setUp(self):
4654 self .vnic_to_network_mapper .map_request_to_vnics = Mock (return_value = mapping )
4755 self .vnics = {'vnic 1' : self .vnic }
4856
57+ self .port_group_name_generator = DvPortGroupNameGenerator ()
58+
4959 self .vnic_service .map_vnics = Mock (return_value = self .vnics )
5060 self .configurer = VirtualMachinePortGroupConfigurer (self .py_vmomi_service ,
5161 self .synchronous_task_waiter ,
5262 self .vnic_to_network_mapper ,
5363 self .vnic_service ,
54- Mock () )
64+ self . port_group_name_generator )
5565
5666 def test_get_networks_on_vnics (self ):
5767 res = self .configurer .get_networks_on_vnics (self .vm , [self .vnic ], logger = Mock ())
@@ -73,3 +83,28 @@ def test_connect_vnic_to_networks(self):
7383 mapping = [ConnectRequest ('vnic 1' , (Mock (spec = vim .Network ), None ))]
7484 res = self .configurer .connect_vnic_to_networks (self .vm , mapping , Mock (spec = vim .Network ), [], logger = Mock ())
7585 self .assertIsNotNone (res [0 ].vnic )
86+
87+ def test_disconnect_network_that_two_vms_have (self ):
88+ def side_effect (* args , ** keys ):
89+ del self .network .name
90+
91+ self .network .vm = None
92+ self .port_group_name_generator .is_generated_name = MagicMock (return_value = True )
93+ self .configurer .destroy_port_group_task = MagicMock (side_effect = side_effect )
94+ self .configurer .erase_network_by_mapping ([self .network , self .network ], [], logger = Mock ())
95+
96+ def test_disconnect_vm_with_three_networks (self ):
97+ def side_effect (* args , ** keys ):
98+ del args [0 ].name
99+
100+ self .network .vm = None
101+ self .network2 .vm = None
102+ self .network3 .vm = None
103+ self .port_group_name_generator .is_generated_name = MagicMock (return_value = True )
104+ self .configurer .destroy_port_group_task = MagicMock (side_effect = side_effect )
105+ self .configurer .erase_network_by_mapping ([self .network , self .network2 , self .network3 ], [], logger = Mock ())
106+
107+ # Assert
108+ self .assertFalse (hasattr (self .network , 'name' ))
109+ self .assertFalse (hasattr (self .network2 , 'name' ))
110+ self .assertFalse (hasattr (self .network3 , 'name' ))
0 commit comments