diff --git a/engine/schema/src/main/java/com/cloud/dc/VsphereStoragePolicyVO.java b/engine/schema/src/main/java/com/cloud/dc/VsphereStoragePolicyVO.java index 591455ed8a6..1415d15ec77 100644 --- a/engine/schema/src/main/java/com/cloud/dc/VsphereStoragePolicyVO.java +++ b/engine/schema/src/main/java/com/cloud/dc/VsphereStoragePolicyVO.java @@ -103,11 +103,19 @@ public class VsphereStoragePolicyVO implements VsphereStoragePolicy { return name; } + public void setName(String name) { + this.name = name; + } + @Override public String getDescription() { return description; } + public void setDescription(String description) { + this.description = description; + } + public Date getUpdateTime() { return updateTime; } diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/VsphereStoragePolicyDao.java b/engine/schema/src/main/java/com/cloud/dc/dao/VsphereStoragePolicyDao.java index 907ab201818..e06fd36b6d4 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/VsphereStoragePolicyDao.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/VsphereStoragePolicyDao.java @@ -20,4 +20,7 @@ import com.cloud.dc.VsphereStoragePolicyVO; import com.cloud.utils.db.GenericDao; public interface VsphereStoragePolicyDao extends GenericDao { + + public VsphereStoragePolicyVO findByPolicyId(Long zoneId, String policyId); + } diff --git a/engine/schema/src/main/java/com/cloud/dc/dao/VsphereStoragePolicyDaoImpl.java b/engine/schema/src/main/java/com/cloud/dc/dao/VsphereStoragePolicyDaoImpl.java index 4b2fd234132..fadea5cef25 100644 --- a/engine/schema/src/main/java/com/cloud/dc/dao/VsphereStoragePolicyDaoImpl.java +++ b/engine/schema/src/main/java/com/cloud/dc/dao/VsphereStoragePolicyDaoImpl.java @@ -39,7 +39,16 @@ public class VsphereStoragePolicyDaoImpl extends GenericDaoBase sc = policySearch.create(); + sc.setParameters("zoneId", zoneId); + sc.setParameters("policyId", policyId); + return findOneBy(sc); + } } 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 85b7beeec69..9b900ad939c 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 @@ -1429,8 +1429,15 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw } for (PbmProfile storageProfile : storageProfiles) { - VsphereStoragePolicyVO StoragePolicyVO = new VsphereStoragePolicyVO(zoneId, storageProfile.getProfileId().getUniqueId(), storageProfile.getName(), storageProfile.getDescription()); - vsphereStoragePolicyDao.persist(StoragePolicyVO); + VsphereStoragePolicyVO storagePolicyVO = vsphereStoragePolicyDao.findByPolicyId(zoneId, storageProfile.getProfileId().getUniqueId()); + if (storagePolicyVO == null) { + storagePolicyVO = new VsphereStoragePolicyVO(zoneId, storageProfile.getProfileId().getUniqueId(), storageProfile.getName(), storageProfile.getDescription()); + vsphereStoragePolicyDao.persist(storagePolicyVO); + } else { + storagePolicyVO.setDescription(storageProfile.getDescription()); + storagePolicyVO.setName(storageProfile.getName()); + vsphereStoragePolicyDao.update(storagePolicyVO.getId(), storagePolicyVO); + } } List storagePolicies = vsphereStoragePolicyDao.listAll();