Skip to content

Commit 00ce2e4

Browse files
committed
Merge pull request #114 from QualiSystems/feature/alex_59_app_orchestration
Feature/alex 59 app orchestration
2 parents a0b1447 + 2781b85 commit 00ce2e4

7 files changed

Lines changed: 74 additions & 93 deletions

File tree

tests/test_command_executer_service.py

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ def test_deploy_from_template(self):
5050
self.assertTrue(self.serializer.decode.called_with(deploy_param))
5151
self.assertTrue(self.connection_retriever.connection_details.called)
5252
self.assertTrue(self.command_wrapper.execute_command_with_connection.called_with(
53-
self.connection_details,
54-
deploy_from_template.execute_deploy_from_template,
55-
deploy_data))
53+
self.connection_details,
54+
deploy_from_template.execute_deploy_from_template,
55+
deploy_data))
5656
self.assertTrue(self.serializer.encode.called_with(deploy_result))
5757

5858
def test_power_off(self):
@@ -140,7 +140,6 @@ def test_destroyVirtualMachineCommand(self):
140140
Destroyer = Mock()
141141
connection_retriever = Mock()
142142
connection_details = Mock()
143-
command_wrapper = Mock()
144143

145144
resource_att.fullname = 'full_name'
146145
connection_retriever.getVCenterInventoryPathAttributeData = \
@@ -168,19 +167,20 @@ def test_destroyVirtualMachineCommand(self):
168167

169168
# assert
170169
self.assertTrue(connection_retriever.getVCenterInventoryPathAttributeData.called_with(resource_att))
171-
self.assertTrue(command_wrapper.execute_command_with_connection.called_with(connection_details,
172-
Destroyer.destroy,
173-
VmContext.VM_UUID,
174-
resource_att.fullname))
170+
self.assertTrue(self.command_wrapper.execute_command_with_connection.called_with(connection_details,
171+
Destroyer.destroy,
172+
VmContext.VM_UUID,
173+
resource_att.fullname))
175174
self.assertTrue(connection_retriever.connection_details.called_with(vcenter_name))
176175

177176
def test_disconnect(self):
178177
# arrange
178+
connection_details = Mock()
179179
virtual_switch_disconnect_command = Mock()
180180
virtual_switch_disconnect_command.disconnect = Mock(return_value=True)
181181
command_executer_service = CommandExecuterService(Mock(),
182182
Mock(),
183-
Mock(),
183+
self.command_wrapper,
184184
Mock(),
185185
Mock(),
186186
Mock(),
@@ -191,22 +191,26 @@ def test_disconnect(self):
191191
Mock())
192192

193193
CommandContextMocker.set_vm_uuid_param(VmContext.VM_UUID)
194-
CommandContextMocker.set_vm_uuid_param(VmContext.VCENTER_NAME)
195-
CommandContextMocker.set_vm_uuid_param(VmContext.NETWORK_NAME)
194+
CommandContextMocker.set_command_param(VmContext.NETWORK_NAME, VmContext.NETWORK_NAME)
196195

197196
# act
198197
command_executer_service.disconnect()
199198

200199
# assert
201-
self.assertTrue(virtual_switch_disconnect_command.disconnect.called)
200+
self.assertTrue(self.command_wrapper.execute_command_with_connection
201+
.called_with(connection_details,
202+
virtual_switch_disconnect_command.disconnect,
203+
VmContext.VM_UUID,
204+
VmContext.NETWORK_NAME))
202205

203206
def test_disconnect_all(self):
204207
# arrange
208+
connection_details = Mock()
205209
virtual_switch_disconnect_command = Mock()
206210
virtual_switch_disconnect_command.disconnect_all = Mock(return_value=True)
207211
command_executer_service = CommandExecuterService(Mock(),
208212
Mock(),
209-
Mock(),
213+
self.command_wrapper,
210214
Mock(),
211215
Mock(),
212216
Mock(),
@@ -215,11 +219,15 @@ def test_disconnect_all(self):
215219
virtual_switch_disconnect_command,
216220
Mock(),
217221
Mock())
222+
218223
CommandContextMocker.set_vm_uuid_param(VmContext.VM_UUID)
219-
CommandContextMocker.set_vm_uuid_param(VmContext.VCENTER_NAME)
224+
CommandContextMocker.set_command_param(VmContext.NETWORK_NAME, VmContext.NETWORK_NAME)
220225

221226
# act
222227
command_executer_service.disconnect_all()
223228

224229
# assert
225-
self.assertTrue(virtual_switch_disconnect_command.disconnect_all.called)
230+
self.assertTrue(self.command_wrapper.execute_command_with_connection
231+
.called_with(connection_details,
232+
virtual_switch_disconnect_command.disconnect_all,
233+
VmContext.VM_UUID))

tests/test_commands/test_disconnect_vm.py

Lines changed: 10 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ class TestVirtualSwitchToMachineDisconnectCommand(TestCase):
1212
def test_delete_all(self):
1313
# arrange
1414
uuid = 'uuid'
15-
vcenter_name = 'vcenter_name'
1615
si = Mock()
1716
vm = Mock()
1817

@@ -22,21 +21,17 @@ def test_delete_all(self):
2221
connection_detail.password = Mock()
2322
connection_detail.port = Mock()
2423

25-
connection_retriever = Mock()
26-
connection_retriever.connection_details = Mock(return_value=connection_detail)
27-
2824
pv_service = Mock()
2925
pv_service.connect = Mock(return_value=si)
3026
pv_service.find_by_uuid = Mock(return_value=vm)
3127

32-
connector = VirtualSwitchToMachineDisconnectCommand(pv_service, connection_retriever, Mock(), 'anetwork')
28+
connector = VirtualSwitchToMachineDisconnectCommand(pv_service, Mock(), 'anetwork')
3329
# virtual_switch_to_machine_connector.remove_interfaces_from_vm = Mock(return_value=True)
3430
connector.get_network_by_name = lambda x, y: Mock()
3531

3632
# act
37-
res = connector.disconnect(vcenter_name, uuid)
33+
res = connector.disconnect(si, uuid)
3834
# assert
39-
self.assertTrue(connection_retriever.connection_details.called_with(vcenter_name))
4035
self.assertTrue(pv_service.connect.called_with(connection_detail.host,
4136
connection_detail.username,
4237
connection_detail.password,
@@ -48,7 +43,6 @@ def test_delete_all(self):
4843
def test_delete(self):
4944
# arrange
5045
uuid = 'uuid'
51-
vcenter_name = 'vcenter_name'
5246
network_name = 'network_name'
5347

5448
network = Mock()
@@ -63,25 +57,21 @@ def test_delete(self):
6357
connection_detail.password = Mock()
6458
connection_detail.port = Mock()
6559

66-
connection_retriever = Mock()
67-
connection_retriever.connection_details = Mock(return_value=connection_detail)
68-
6960
pv_service = Mock()
7061
pv_service.connect = Mock(return_value=si)
7162
pv_service.find_by_uuid = Mock(return_value=vm)
7263

73-
connector = VirtualSwitchToMachineDisconnectCommand(pv_service, connection_retriever, Mock(), 'anetwork')
64+
connector = VirtualSwitchToMachineDisconnectCommand(pv_service, Mock(), 'anetwork')
7465

7566
# act
76-
res = connector.disconnect(vcenter_name, uuid, network_name)
67+
res = connector.disconnect(si, uuid, network_name)
68+
7769
# assert
78-
self.assertTrue(connection_retriever.connection_details.called_with(vcenter_name))
7970
self.assertTrue(pv_service.connect.called_with(connection_detail.host,
8071
connection_detail.username,
8172
connection_detail.password,
8273
connection_detail.port))
8374
self.assertTrue(pv_service.find_by_uuid.called_with(si, uuid))
84-
# self.assertTrue(virtual_switch_to_machine_connector.remove_interfaces_from_vm_task.called)
8575
self.assertTrue(res)
8676

8777
def test_is_device_match_network_port_type(self):
@@ -94,11 +84,7 @@ def test_is_device_match_network_port_type(self):
9484
backing.port = port
9585
port.portgroupKey = 'port key'
9686

97-
virtual_switch_to_machine_connector = VirtualSwitchToMachineDisconnectCommand(Mock(), Mock(), Mock(),
98-
'anetwork')
99-
10087
# act
101-
# res = virtual_switch_to_machine_connector.is_device_match_network(device, port.portgroupKey)
10288
res = VNicService.device_is_attached_to_network(device, port.portgroupKey)
10389

10490
# assert
@@ -114,11 +100,7 @@ def test_is_device_match_network_other_type(self):
114100
backing.network = nerwork
115101
nerwork.name = 'vln name or network name'
116102

117-
virtual_switch_to_machine_connector = VirtualSwitchToMachineDisconnectCommand(Mock(), Mock(), Mock(),
118-
'anetwork')
119-
120103
# act
121-
# res = virtual_switch_to_machine_connector.is_device_match_network(device, nerwork.name)
122104
res = VNicService.device_is_attached_to_network(device, nerwork.name)
123105

124106
# assert
@@ -129,8 +111,7 @@ def test_is_device_match_network_not_found(self):
129111
device = Mock()
130112
device.backing = Mock(spec=[])
131113

132-
virtual_switch_to_machine_connector = VirtualSwitchToMachineDisconnectCommand(Mock(), Mock(), Mock(),
133-
'anetwork')
114+
virtual_switch_to_machine_connector = VirtualSwitchToMachineDisconnectCommand(Mock(), Mock(), 'anetwork')
134115

135116
# act
136117
# res = virtual_switch_to_machine_connector.is_device_match_network(device, 'Fake name')
@@ -146,8 +127,7 @@ def test_remove_interfaces_from_vm_no_nic_found(self):
146127
vm.config.hardware()
147128
vm.config.hardware.device = []
148129

149-
virtual_switch_to_machine_connector = VirtualSwitchToMachineDisconnectCommand(Mock(), Mock(), Mock(),
150-
'anetwork')
130+
virtual_switch_to_machine_connector = VirtualSwitchToMachineDisconnectCommand(Mock(), Mock(), 'anetwork')
151131

152132
# act
153133
res = virtual_switch_to_machine_connector.remove_interfaces_from_vm_task(vm)
@@ -164,9 +144,7 @@ def test_remove_interfaces_from_vm_no_filter(self):
164144
vm.config.hardware()
165145
vm.config.hardware.device = [device2, device1]
166146

167-
virtual_switch_to_machine_connector = VirtualSwitchToMachineDisconnectCommand(Mock(), Mock(), Mock(),
168-
'anetwork')
169-
virtual_switch_to_machine_connector.remove_devices = Mock(return_value=True)
147+
virtual_switch_to_machine_connector = VirtualSwitchToMachineDisconnectCommand(Mock(), Mock(), 'anetwork')
170148

171149
# act
172150
res = virtual_switch_to_machine_connector.remove_interfaces_from_vm_task(vm)
@@ -190,8 +168,8 @@ def test_remove_interfaces_from_vm_with_filter(self):
190168
vm.config.hardware()
191169
vm.config.hardware.device = [device3, device2, device1]
192170

193-
connector = VirtualSwitchToMachineDisconnectCommand(Mock(), Mock(), Mock(), 'anetwork')
194-
connector.remove_devices = Mock(return_value=True)
171+
connector = VirtualSwitchToMachineDisconnectCommand(Mock(), Mock(), 'anetwork')
172+
#connector.remove_devices = Mock(return_value=True)
195173

196174
# act
197175
condition = lambda device: device.name == device1.name

vCenterShell/bootstrap.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from vCenterShell.vm.deploy import VirtualMachineDeployer
2929
from vCenterShell.vm.dvswitch_connector import VirtualSwitchToMachineConnector
3030
from vCenterShell.vm.portgroup_configurer import VirtualMachinePortGroupConfigurer
31-
31+
from common.utilites.common_name import generate_unique_name
3232

3333
class Bootstrapper(object):
3434
def __init__(self):
@@ -38,8 +38,7 @@ def __init__(self):
3838
cloudshell_data_retriever_service)
3939
resource_remover = CloudshellResourceRemover(helpers)
4040
command_wrapper = CommandWrapper(getLogger, py_vmomi_service)
41-
name_generator = DvPortGroupNameGenerator()
42-
template_deployer = VirtualMachineDeployer(py_vmomi_service, name_generator)
41+
template_deployer = VirtualMachineDeployer(py_vmomi_service, generate_unique_name)
4342

4443
deploy_from_template_command = DeployFromTemplateCommand(template_deployer)
4544

@@ -48,7 +47,8 @@ def __init__(self):
4847
vc_data_model = vc_model_retriever.get_vcenter_data_model()
4948

5049
#vnic_to_network_mapper = VnicToNetworkMapper(name_generator, vc_data_model.default_network)
51-
vnic_to_network_mapper = VnicToNetworkMapper(name_generator)
50+
port_group_name_generator = DvPortGroupNameGenerator()
51+
vnic_to_network_mapper = VnicToNetworkMapper(port_group_name_generator)
5252

5353
# Virtual Switch Connect
5454
synchronous_task_waiter = SynchronousTaskWaiter()
@@ -70,7 +70,6 @@ def __init__(self):
7070
# Virtual Switch Revoke
7171
virtual_switch_disconnect_command = \
7272
VirtualSwitchToMachineDisconnectCommand(py_vmomi_service,
73-
resource_connection_details_retriever,
7473
virtual_machine_port_group_configurer,
7574
vc_data_model.default_network)
7675

vCenterShell/command_executer.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,30 @@ def connect(self):
6565
default_network)
6666

6767
def disconnect_all(self):
68-
vcener_name = self.qualipy_helpers.get_user_param('VCENTER_NAME')
69-
virtual_machine_id = self.qualipy_helpers.get_user_param('VM_UUID')
70-
default_network_name = self.qualipy_helpers.get_user_param('DEFAULT_NETWORK_FULL_NAME')
71-
self.virtual_switch_disconnect_command.disconnect_all(vcener_name, virtual_machine_id, default_network_name)
68+
vm_uuid = self.qualipy_helpers.get_user_param('VM_UUID')
69+
70+
# prepare for execute command
71+
connection_details = self.connection_retriever.connection_details()
72+
73+
# execute command
74+
self.command_wrapper.execute_command_with_connection(
75+
connection_details,
76+
self.virtual_switch_disconnect_command.disconnect_all,
77+
vm_uuid)
7278

7379
def disconnect(self):
74-
vcener_name = self.qualipy_helpers.get_user_param('VCENTER_NAME')
75-
virtual_machine_id = self.qualipy_helpers.get_user_param('VM_UUID')
80+
vm_uuid = self.qualipy_helpers.get_user_param('VM_UUID')
7681
network_name = self.qualipy_helpers.get_user_param('NETWORK_NAME')
77-
default_network_name = self.qualipy_helpers.get_user_param('DEFAULT_NETWORK_FULL_NAME')
78-
self.virtual_switch_disconnect_command.disconnect(vcener_name, virtual_machine_id, network_name,
79-
default_network_name)
82+
83+
# prepare for execute command
84+
connection_details = self.connection_retriever.connection_details()
85+
86+
# execute command
87+
self.command_wrapper.execute_command_with_connection(
88+
connection_details,
89+
self.virtual_switch_disconnect_command.disconnect,
90+
vm_uuid,
91+
network_name)
8092

8193
def destroy(self):
8294
# get command parameters from the environment

vCenterShell/commands/destroy_vm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def destroy(self, si, vm_uuid, resource_full_name):
2323
# todo: change it with the function form SergaiiT Branch
2424
# todo: alexa: check if I can refactor the disconnector so it will not request the vCenter resource name
2525
# disconnect all vnics before destroy
26-
self.disconnector.disconnect_all("", vm_uuid, vm)
26+
self.disconnector.disconnect_all(si, vm_uuid, vm)
2727

2828
# destroy vm
2929
result = self.pv_service.destroy_vm(vm)

0 commit comments

Comments
 (0)