Skip to content

Commit a5af7bc

Browse files
committed
fixed issue where datastore and cluster would not be correctly identified when cluster had same name as datastore during deploy
1 parent 2ba68b7 commit a5af7bc

2 files changed

Lines changed: 18 additions & 12 deletions

File tree

package/cloudshell/cp/vcenter/common/vcenter/vmomi_service.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from cloudshell.cp.vcenter.common.utilites.common_utils import str2bool
99
from cloudshell.cp.vcenter.common.vcenter.task_waiter import SynchronousTaskWaiter
1010
from cloudshell.cp.vcenter.exceptions.task_waiter import TaskFaultException
11+
from debug_utils import debugger
1112

1213

1314
class VCenterAuthError(Exception):
@@ -227,7 +228,7 @@ def find_obj_by_path(self, si, path, name, type_name):
227228
'#searches for the specific vm in the folder'
228229
return search_index.FindChild(look_in, name)
229230

230-
def find_dvs_by_path(self,si ,path):
231+
def find_dvs_by_path(self, si, path):
231232
"""
232233
Finds vm in the vCenter or returns "None"
233234
:param si: pyvmomi 'ServiceInstance'
@@ -336,12 +337,12 @@ def get_obj(self, content, vimtypes, name):
336337
obj = c
337338
break
338339

339-
return obj
340+
return obj
340341

341342
@staticmethod
342343
def _get_all_objects_by_type(content, vimtype):
343344
container = content.viewManager.CreateContainerView(
344-
content.rootFolder, vimtype, True)
345+
content.rootFolder, vimtype, True)
345346
return container
346347

347348
@staticmethod
@@ -419,6 +420,8 @@ def clone_vm(self, clone_params, logger, cancellation_context):
419420
:param clone_params: CloneVmParameters =
420421
:param logger:
421422
"""
423+
debugger.attach_debugger()
424+
422425
result = self.CloneVmResult()
423426

424427
if not isinstance(clone_params.si, self.vim.ServiceInstance):
@@ -523,11 +526,11 @@ def _get_datastore(self, clone_params):
523526
name = parts[len(parts) - 1]
524527
if name:
525528
datastore = self.get_obj(clone_params.si.content,
526-
[self.vim.Datastore],
529+
[[self.vim.Datastore]],
527530
name)
528531
if not datastore:
529532
datastore = self.get_obj(clone_params.si.content,
530-
[self.vim.StoragePod],
533+
[[self.vim.StoragePod]],
531534
name)
532535
if datastore:
533536
datastore = sorted(datastore.childEntity,
@@ -540,10 +543,12 @@ def _get_datastore(self, clone_params):
540543

541544
def _get_resource_pool(self, datacenter_name, clone_params):
542545

543-
resource_full_path = '{0}/{1}/{2}'.format(datacenter_name,
544-
clone_params.cluster_name,
545-
clone_params.resource_pool)
546-
obj = self.get_folder(clone_params.si, resource_full_path)
546+
obj_name = '{0}/{1}/{2}'.format(datacenter_name,
547+
clone_params.cluster_name,
548+
clone_params.resource_pool).rstrip('/').split('/')[-1]
549+
# obj = self.get_folder(clone_params.si, resource_full_path)
550+
accepted_types = [[vim.ResourcePool], [vim.ClusterComputeResource], [vim.HostSystem]]
551+
obj = self.get_obj(clone_params.si.content, accepted_types, obj_name)
547552

548553
resource_pool = None
549554
host = None
@@ -739,7 +744,8 @@ def get_vm_full_path(self, si, vm):
739744
folder_name = folder.name
740745
folder_parent = folder.parent
741746

742-
while folder_parent and folder_parent.name and folder_parent != si.content.rootFolder and not isinstance(folder_parent, vim.Datacenter):
747+
while folder_parent and folder_parent.name and folder_parent != si.content.rootFolder and not isinstance(
748+
folder_parent, vim.Datacenter):
743749
folder_name = folder_parent.name + '/' + folder_name
744750
try:
745751
folder_parent = folder_parent.parent
@@ -755,4 +761,4 @@ def get_vm_full_path(self, si, vm):
755761
def vm_has_no_vnics(vm):
756762
# Is there any network device on vm
757763
return next((False for device in vm.config.hardware.device
758-
if isinstance(device, vim.vm.device.VirtualEthernetCard) and hasattr(device, 'macAddress')), True)
764+
if isinstance(device, vim.vm.device.VirtualEthernetCard) and hasattr(device, 'macAddress')), True)

package/cloudshell/tests/utils/helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ def get_uuid(virtual_machine_name):
1616

1717

1818
def get_vm_uuid(py_vmomi_service, si, virtual_machine_name):
19-
vm = py_vmomi_service.get_obj(si.content, [vim.VirtualMachine], virtual_machine_name)
19+
vm = py_vmomi_service.get_obj(si.content, [[vim.VirtualMachine]], virtual_machine_name)
2020
vm_uuid = vm.config.uuid
2121
return vm_uuid

0 commit comments

Comments
 (0)