Added Storagepolicy while creating diskoffering. CreateDiskOffering API now takes storagepolicy as a parameter with UUID value

This commit is contained in:
Harikrishna Patnala 2020-06-05 14:58:27 +05:30
parent fb0a96e7fb
commit 487bb03c4d
3 changed files with 24 additions and 3 deletions

View File

@ -28,6 +28,7 @@ import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.response.DiskOfferingResponse; import org.apache.cloudstack.api.response.DiskOfferingResponse;
import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.DomainResponse;
import org.apache.cloudstack.api.response.ImportVsphereStoragePoliciesResponse;
import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -151,6 +152,9 @@ public class CreateDiskOfferingCmd extends BaseCmd {
since = "4.14") since = "4.14")
private String cacheMode; private String cacheMode;
@Parameter(name = ApiConstants.STORAGE_POLICY, type = CommandType.UUID, entityType = ImportVsphereStoragePoliciesResponse.class,required = false, description = "Name of the storage policy defined at vCenter, this is applicable only for VMware")
private Long storagePolicy;
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
/////////////////// Accessors /////////////////////// /////////////////// Accessors ///////////////////////
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
@ -273,6 +277,9 @@ public class CreateDiskOfferingCmd extends BaseCmd {
return cacheMode; return cacheMode;
} }
public Long getStoragePolicy() {
return storagePolicy;
}
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
/////////////// API Implementation/////////////////// /////////////// API Implementation///////////////////
///////////////////////////////////////////////////// /////////////////////////////////////////////////////

View File

@ -39,7 +39,7 @@ import java.util.UUID;
import javax.inject.Inject; import javax.inject.Inject;
import javax.naming.ConfigurationException; import javax.naming.ConfigurationException;
import com.cloud.utils.StringUtils; import com.cloud.dc.dao.VsphereStoragePolicyDao;
import org.apache.cloudstack.acl.SecurityChecker; import org.apache.cloudstack.acl.SecurityChecker;
import org.apache.cloudstack.affinity.AffinityGroup; import org.apache.cloudstack.affinity.AffinityGroup;
import org.apache.cloudstack.affinity.AffinityGroupService; import org.apache.cloudstack.affinity.AffinityGroupService;
@ -223,6 +223,7 @@ import com.cloud.user.dao.AccountDao;
import com.cloud.user.dao.UserDao; import com.cloud.user.dao.UserDao;
import com.cloud.utils.NumbersUtil; import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair; import com.cloud.utils.Pair;
import com.cloud.utils.StringUtils;
import com.cloud.utils.UriUtils; import com.cloud.utils.UriUtils;
import com.cloud.utils.component.ManagerBase; import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.db.DB; import com.cloud.utils.db.DB;
@ -387,6 +388,9 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
IndirectAgentLB _indirectAgentLB; IndirectAgentLB _indirectAgentLB;
@Inject @Inject
private VMTemplateZoneDao templateZoneDao; private VMTemplateZoneDao templateZoneDao;
@Inject
VsphereStoragePolicyDao vsphereStoragePolicyDao;
// FIXME - why don't we have interface for DataCenterLinkLocalIpAddressDao? // FIXME - why don't we have interface for DataCenterLinkLocalIpAddressDao?
@Inject @Inject
@ -2827,7 +2831,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
Long bytesWriteRate, Long bytesWriteRateMax, Long bytesWriteRateMaxLength, Long bytesWriteRate, Long bytesWriteRateMax, Long bytesWriteRateMaxLength,
Long iopsReadRate, Long iopsReadRateMax, Long iopsReadRateMaxLength, Long iopsReadRate, Long iopsReadRateMax, Long iopsReadRateMaxLength,
Long iopsWriteRate, Long iopsWriteRateMax, Long iopsWriteRateMaxLength, Long iopsWriteRate, Long iopsWriteRateMax, Long iopsWriteRateMaxLength,
final Integer hypervisorSnapshotReserve, String cacheMode) { final Integer hypervisorSnapshotReserve, String cacheMode, final Long storagePolicyID) {
long diskSize = 0;// special case for custom disk offerings long diskSize = 0;// special case for custom disk offerings
if (numGibibytes != null && numGibibytes <= 0) { if (numGibibytes != null && numGibibytes <= 0) {
throw new InvalidParameterValueException("Please specify a disk size of at least 1 Gb."); throw new InvalidParameterValueException("Please specify a disk size of at least 1 Gb.");
@ -2955,6 +2959,9 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
detailsVO.add(new DiskOfferingDetailVO(offering.getId(), ApiConstants.ZONE_ID, String.valueOf(zoneId), false)); detailsVO.add(new DiskOfferingDetailVO(offering.getId(), ApiConstants.ZONE_ID, String.valueOf(zoneId), false));
} }
} }
if (storagePolicyID != null) {
detailsVO.add(new DiskOfferingDetailVO(offering.getId(), ApiConstants.STORAGE_POLICY, String.valueOf(storagePolicyID), false));
}
if (!detailsVO.isEmpty()) { if (!detailsVO.isEmpty()) {
diskOfferingDetailsDao.saveDetails(detailsVO); diskOfferingDetailsDao.saveDetails(detailsVO);
} }
@ -2976,6 +2983,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
final String tags = cmd.getTags(); final String tags = cmd.getTags();
final List<Long> domainIds = cmd.getDomainIds(); final List<Long> domainIds = cmd.getDomainIds();
final List<Long> zoneIds = cmd.getZoneIds(); final List<Long> zoneIds = cmd.getZoneIds();
final Long storagePolicyId = cmd.getStoragePolicy();
// check if valid domain // check if valid domain
if (CollectionUtils.isNotEmpty(domainIds)) { if (CollectionUtils.isNotEmpty(domainIds)) {
@ -3015,6 +3023,12 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
} }
} }
if (storagePolicyId != null) {
if (vsphereStoragePolicyDao.findById(storagePolicyId) == null) {
throw new InvalidParameterValueException("Please specify a valid vSphere storage policy id");
}
}
final Boolean isCustomizedIops = cmd.isCustomizedIops(); final Boolean isCustomizedIops = cmd.isCustomizedIops();
final Long minIops = cmd.getMinIops(); final Long minIops = cmd.getMinIops();
final Long maxIops = cmd.getMaxIops(); final Long maxIops = cmd.getMaxIops();
@ -3045,7 +3059,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
localStorageRequired, isDisplayOfferingEnabled, isCustomizedIops, minIops, localStorageRequired, isDisplayOfferingEnabled, isCustomizedIops, minIops,
maxIops, bytesReadRate, bytesReadRateMax, bytesReadRateMaxLength, bytesWriteRate, bytesWriteRateMax, bytesWriteRateMaxLength, maxIops, bytesReadRate, bytesReadRateMax, bytesReadRateMaxLength, bytesWriteRate, bytesWriteRateMax, bytesWriteRateMaxLength,
iopsReadRate, iopsReadRateMax, iopsReadRateMaxLength, iopsWriteRate, iopsWriteRateMax, iopsWriteRateMaxLength, iopsReadRate, iopsReadRateMax, iopsReadRateMaxLength, iopsWriteRate, iopsWriteRateMax, iopsWriteRateMaxLength,
hypervisorSnapshotReserve, cacheMode); hypervisorSnapshotReserve, cacheMode, storagePolicyId);
} }
/** /**