From a4ec86a652dac8ca5d91cd7aa8b364123acd9627 Mon Sep 17 00:00:00 2001 From: Harikrishna Patnala Date: Wed, 3 Jun 2020 12:56:19 +0530 Subject: [PATCH] Added Storage policy id to VO --- .../hypervisor/vmware/VsphereStoragePolicyVO.java | 10 ++++++++++ .../hypervisor/vmware/manager/VmwareManagerImpl.java | 2 +- .../admin/zone/ImportVsphereStoragePoliciesCmd.java | 10 ++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VsphereStoragePolicyVO.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VsphereStoragePolicyVO.java index bc07b886719..13c46784f19 100644 --- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VsphereStoragePolicyVO.java +++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/VsphereStoragePolicyVO.java @@ -16,6 +16,7 @@ // under the License. package com.cloud.hypervisor.vmware; +import com.cloud.utils.DateUtil; import com.cloud.utils.db.GenericDao; import javax.persistence.Column; @@ -66,6 +67,15 @@ public class VsphereStoragePolicyVO implements VsphereStoragePolicy { this.policyId = policyId; this.name = name; this.description = description; + this.updateTime = DateUtil.currentGMTTime(); + } + + public VsphereStoragePolicyVO() { + uuid = UUID.randomUUID().toString(); + } + public VsphereStoragePolicyVO(long id) { + this.id = id; + uuid = UUID.randomUUID().toString(); } @Override 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 d489364aaaa..c25189786b5 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,7 +1429,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw } for (PbmProfile storageProfile : storageProfiles) { - VsphereStoragePolicyVO StoragePolicyVO = new VsphereStoragePolicyVO(zoneId, storageProfile.getProfileId().toString(), storageProfile.getName(), storageProfile.getDescription()); + VsphereStoragePolicyVO StoragePolicyVO = new VsphereStoragePolicyVO(zoneId, storageProfile.getProfileId().getUniqueId(), storageProfile.getName(), storageProfile.getDescription()); vsphereStoragePolicyDao.persist(StoragePolicyVO); } diff --git a/plugins/hypervisors/vmware/src/main/java/org/apache/cloudstack/api/command/admin/zone/ImportVsphereStoragePoliciesCmd.java b/plugins/hypervisors/vmware/src/main/java/org/apache/cloudstack/api/command/admin/zone/ImportVsphereStoragePoliciesCmd.java index 6938588a994..b0e1d82a02e 100644 --- a/plugins/hypervisors/vmware/src/main/java/org/apache/cloudstack/api/command/admin/zone/ImportVsphereStoragePoliciesCmd.java +++ b/plugins/hypervisors/vmware/src/main/java/org/apache/cloudstack/api/command/admin/zone/ImportVsphereStoragePoliciesCmd.java @@ -17,6 +17,7 @@ package org.apache.cloudstack.api.command.admin.zone; +import com.cloud.dc.DataCenter; import com.cloud.event.EventTypes; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.InsufficientCapacityException; @@ -29,6 +30,7 @@ import com.cloud.hypervisor.vmware.VsphereStoragePolicy; import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; +import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseAsyncCmd; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.Parameter; @@ -72,15 +74,23 @@ public class ImportVsphereStoragePoliciesCmd extends BaseAsyncCmd { @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { + final DataCenter dataCenter = _resourceService.getZone(getZoneId()); + if (dataCenter == null) { + throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Unable to find zone by ID: " + getZoneId()); + } + List storagePolicies = _vmwareDatacenterService.importVsphereStoragePolicies(this); final ListResponse responseList = new ListResponse<>(); final List storagePoliciesResponseList = new ArrayList<>(); for (VsphereStoragePolicy storagePolicy : storagePolicies) { final ImportVsphereStoragePoliciesResponse storagePoliciesResponse = new ImportVsphereStoragePoliciesResponse(); + storagePoliciesResponse.setZoneId(dataCenter.getUuid()); storagePoliciesResponse.setId(storagePolicy.getUuid()); storagePoliciesResponse.setName(storagePolicy.getName()); storagePoliciesResponse.setPolicyId(storagePolicy.getPolicyId()); storagePoliciesResponse.setDescription(storagePolicy.getDescription()); + storagePoliciesResponse.setObjectName("StoragePolicy"); + storagePoliciesResponseList.add(storagePoliciesResponse); } responseList.setResponses(storagePoliciesResponseList);