From f858387b3c518af5a939416bfbdd833fbf76158f Mon Sep 17 00:00:00 2001 From: Harikrishna Patnala Date: Wed, 15 Jul 2020 22:44:51 +0530 Subject: [PATCH] Import storagepolicies when vmware datacenter is added or updated --- .../vmware/manager/VmwareManagerImpl.java | 27 ++++++++++--------- .../vmware/manager/VmwareManagerImplTest.java | 1 + 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java index e10e88c19dd..a751abf1b8e 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java @@ -1184,6 +1184,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw } context = null; } + importVsphereStoragePoliciesInternal(zoneId, vmwareDc.getId()); return vmwareDc; } @@ -1244,6 +1245,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw hostDetailsDao.persist(host.getId(), hostDetails); } } + importVsphereStoragePoliciesInternal(zoneId, vmwareDc.getId()); return vmwareDc; } return null; @@ -1400,13 +1402,6 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw // Validate Id of zone doesZoneExist(zoneId); - // Get DC associated with this zone - VmwareDatacenterVO vmwareDatacenter; - String vmwareDcName; - String vCenterHost; - String userName; - String password; - DatacenterMO dcMo = null; final VmwareDatacenterZoneMapVO vmwareDcZoneMap = vmwareDatacenterZoneMapDao.findByZoneId(zoneId); // Check if zone is associated with VMware DC if (vmwareDcZoneMap == null) { @@ -1414,16 +1409,24 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw } final long vmwareDcId = vmwareDcZoneMap.getVmwareDcId(); - vmwareDatacenter = vmwareDcDao.findById(vmwareDcId); - vmwareDcName = vmwareDatacenter.getVmwareDatacenterName(); - vCenterHost = vmwareDatacenter.getVcenterHost(); - userName = vmwareDatacenter.getUser(); - password = vmwareDatacenter.getPassword(); + return importVsphereStoragePoliciesInternal(zoneId, vmwareDcId); + } + + public List importVsphereStoragePoliciesInternal(Long zoneId, Long vmwareDcId) { + + // Get DC associated with this zone + VmwareDatacenterVO vmwareDatacenter = vmwareDcDao.findById(vmwareDcId); + String vmwareDcName = vmwareDatacenter.getVmwareDatacenterName(); + String vCenterHost = vmwareDatacenter.getVcenterHost(); + String userName = vmwareDatacenter.getUser(); + String password = vmwareDatacenter.getPassword(); List storageProfiles = null; try { + s_logger.debug(String.format("Importing vSphere Storage Policies for the vmware DC %d in zone %d", vmwareDcId, zoneId)); VmwareContext context = VmwareContextFactory.getContext(vCenterHost, userName, password); PbmProfileManagerMO profileManagerMO = new PbmProfileManagerMO(context); storageProfiles = profileManagerMO.getStorageProfiles(); + s_logger.debug(String.format("Import vSphere Storage Policies for the vmware DC %d in zone %d is successful", vmwareDcId, zoneId)); } catch (Exception e) { String msg = String.format("Unable to list storage profiles from DC %s due to : %s", vmwareDcName, VmwareHelper.getExceptionMessage(e)); s_logger.error(msg); diff --git a/plugins/hypervisors/vmware/src/test/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImplTest.java b/plugins/hypervisors/vmware/src/test/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImplTest.java index 8aa92f7d9c4..80677e9d3ba 100644 --- a/plugins/hypervisors/vmware/src/test/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImplTest.java +++ b/plugins/hypervisors/vmware/src/test/java/com/cloud/hypervisor/vmware/manager/VmwareManagerImplTest.java @@ -105,6 +105,7 @@ public class VmwareManagerImplTest { Mockito.lenient().doReturn(hostDetails).when(hostDetailsDao).findDetails(Mockito.anyLong()); Mockito.doReturn("some-old-guid").when(hostDetails).get("guid"); Mockito.doReturn(hostDetails).when(hostDetailsDao).findDetails(Mockito.anyLong()); + Mockito.doReturn(null).when(vmwareManager).importVsphereStoragePoliciesInternal(Mockito.anyLong(), Mockito.anyLong()); final VmwareDatacenter vmwareDatacenter = vmwareManager.updateVmwareDatacenter(updateVmwareDcCmd);