mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Added listVsphereStoragePoliciesCmd
This commit is contained in:
parent
233e665b34
commit
586fa7eeaf
@ -28,7 +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.VsphereStoragePoliciesResponse;
|
||||||
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;
|
||||||
@ -152,7 +152,7 @@ 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")
|
@Parameter(name = ApiConstants.STORAGE_POLICY, type = CommandType.UUID, entityType = VsphereStoragePoliciesResponse.class,required = false, description = "Name of the storage policy defined at vCenter, this is applicable only for VMware")
|
||||||
private Long storagePolicy;
|
private Long storagePolicy;
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
|
|||||||
@ -25,7 +25,7 @@ import org.apache.cloudstack.api.EntityReference;
|
|||||||
|
|
||||||
|
|
||||||
@EntityReference(value = VsphereStoragePolicy.class)
|
@EntityReference(value = VsphereStoragePolicy.class)
|
||||||
public class ImportVsphereStoragePoliciesResponse extends BaseResponse {
|
public class VsphereStoragePoliciesResponse extends BaseResponse {
|
||||||
|
|
||||||
@SerializedName(ApiConstants.ID)
|
@SerializedName(ApiConstants.ID)
|
||||||
@Param(description = "the ID of the Storage Policy")
|
@Param(description = "the ID of the Storage Policy")
|
||||||
@ -19,8 +19,12 @@ package com.cloud.dc.dao;
|
|||||||
import com.cloud.dc.VsphereStoragePolicyVO;
|
import com.cloud.dc.VsphereStoragePolicyVO;
|
||||||
import com.cloud.utils.db.GenericDao;
|
import com.cloud.utils.db.GenericDao;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface VsphereStoragePolicyDao extends GenericDao<VsphereStoragePolicyVO, Long> {
|
public interface VsphereStoragePolicyDao extends GenericDao<VsphereStoragePolicyVO, Long> {
|
||||||
|
|
||||||
public VsphereStoragePolicyVO findByPolicyId(Long zoneId, String policyId);
|
public VsphereStoragePolicyVO findByPolicyId(Long zoneId, String policyId);
|
||||||
|
|
||||||
|
public List<VsphereStoragePolicyVO> findByZoneId(Long zoneId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,6 +23,8 @@ import com.cloud.utils.db.SearchCriteria;
|
|||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class VsphereStoragePolicyDaoImpl extends GenericDaoBase<VsphereStoragePolicyVO, Long> implements VsphereStoragePolicyDao {
|
public class VsphereStoragePolicyDaoImpl extends GenericDaoBase<VsphereStoragePolicyVO, Long> implements VsphereStoragePolicyDao {
|
||||||
|
|
||||||
@ -51,4 +53,12 @@ public class VsphereStoragePolicyDaoImpl extends GenericDaoBase<VsphereStoragePo
|
|||||||
sc.setParameters("policyId", policyId);
|
sc.setParameters("policyId", policyId);
|
||||||
return findOneBy(sc);
|
return findOneBy(sc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<VsphereStoragePolicyVO> findByZoneId(Long zoneId) {
|
||||||
|
SearchCriteria<VsphereStoragePolicyVO> sc = zoneSearch.create();
|
||||||
|
sc.setParameters("zoneId", zoneId);
|
||||||
|
|
||||||
|
return listBy(sc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,19 +17,19 @@
|
|||||||
|
|
||||||
package com.cloud.hypervisor.vmware;
|
package com.cloud.hypervisor.vmware;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.cloud.dc.VsphereStoragePolicy;
|
import com.cloud.dc.VsphereStoragePolicy;
|
||||||
import org.apache.cloudstack.api.command.admin.zone.AddVmwareDcCmd;
|
|
||||||
import org.apache.cloudstack.api.command.admin.zone.ImportVsphereStoragePoliciesCmd;
|
|
||||||
import org.apache.cloudstack.api.command.admin.zone.ListVmwareDcsCmd;
|
|
||||||
import org.apache.cloudstack.api.command.admin.zone.RemoveVmwareDcCmd;
|
|
||||||
import org.apache.cloudstack.api.command.admin.zone.UpdateVmwareDcCmd;
|
|
||||||
|
|
||||||
import com.cloud.exception.DiscoveryException;
|
import com.cloud.exception.DiscoveryException;
|
||||||
import com.cloud.exception.ResourceInUseException;
|
import com.cloud.exception.ResourceInUseException;
|
||||||
import com.cloud.utils.component.PluggableService;
|
import com.cloud.utils.component.PluggableService;
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
|
import org.apache.cloudstack.api.command.admin.zone.AddVmwareDcCmd;
|
||||||
|
import org.apache.cloudstack.api.command.admin.zone.ImportVsphereStoragePoliciesCmd;
|
||||||
|
import org.apache.cloudstack.api.command.admin.zone.ListVmwareDcsCmd;
|
||||||
|
import org.apache.cloudstack.api.command.admin.zone.ListVsphereStoragePoliciesCmd;
|
||||||
|
import org.apache.cloudstack.api.command.admin.zone.RemoveVmwareDcCmd;
|
||||||
|
import org.apache.cloudstack.api.command.admin.zone.UpdateVmwareDcCmd;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface VmwareDatacenterService extends PluggableService {
|
public interface VmwareDatacenterService extends PluggableService {
|
||||||
|
|
||||||
@ -42,4 +42,7 @@ public interface VmwareDatacenterService extends PluggableService {
|
|||||||
List<? extends VmwareDatacenter> listVmwareDatacenters(ListVmwareDcsCmd cmd) throws IllegalArgumentException, CloudRuntimeException;
|
List<? extends VmwareDatacenter> listVmwareDatacenters(ListVmwareDcsCmd cmd) throws IllegalArgumentException, CloudRuntimeException;
|
||||||
|
|
||||||
List<? extends VsphereStoragePolicy> importVsphereStoragePolicies(ImportVsphereStoragePoliciesCmd cmd);
|
List<? extends VsphereStoragePolicy> importVsphereStoragePolicies(ImportVsphereStoragePoliciesCmd cmd);
|
||||||
|
|
||||||
|
List<? extends VsphereStoragePolicy> listVsphereStoragePolicies(ListVsphereStoragePoliciesCmd cmd);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,50 +16,6 @@
|
|||||||
// under the License.
|
// under the License.
|
||||||
package com.cloud.hypervisor.vmware.manager;
|
package com.cloud.hypervisor.vmware.manager;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.URI;
|
|
||||||
import java.net.URISyntaxException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.rmi.RemoteException;
|
|
||||||
import java.time.Duration;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Random;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.util.concurrent.RejectedExecutionException;
|
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import javax.naming.ConfigurationException;
|
|
||||||
|
|
||||||
import com.cloud.dc.VsphereStoragePolicy;
|
|
||||||
import com.cloud.dc.VsphereStoragePolicyVO;
|
|
||||||
import com.cloud.dc.dao.VsphereStoragePolicyDao;
|
|
||||||
import com.cloud.hypervisor.vmware.mo.PbmProfileManagerMO;
|
|
||||||
import com.vmware.pbm.PbmProfile;
|
|
||||||
import org.apache.cloudstack.api.command.admin.zone.AddVmwareDcCmd;
|
|
||||||
import org.apache.cloudstack.api.command.admin.zone.ImportVsphereStoragePoliciesCmd;
|
|
||||||
import org.apache.cloudstack.api.command.admin.zone.ListVmwareDcsCmd;
|
|
||||||
import org.apache.cloudstack.api.command.admin.zone.RemoveVmwareDcCmd;
|
|
||||||
import org.apache.cloudstack.api.command.admin.zone.UpdateVmwareDcCmd;
|
|
||||||
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
|
|
||||||
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
|
|
||||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
|
||||||
import org.apache.cloudstack.framework.config.Configurable;
|
|
||||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
|
||||||
import org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl;
|
|
||||||
import org.apache.cloudstack.management.ManagementServerHost;
|
|
||||||
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
|
|
||||||
import org.apache.cloudstack.utils.identity.ManagementServerNode;
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import com.amazonaws.util.CollectionUtils;
|
import com.amazonaws.util.CollectionUtils;
|
||||||
import com.cloud.agent.AgentManager;
|
import com.cloud.agent.AgentManager;
|
||||||
import com.cloud.agent.Listener;
|
import com.cloud.agent.Listener;
|
||||||
@ -77,9 +33,12 @@ import com.cloud.dc.ClusterDetailsDao;
|
|||||||
import com.cloud.dc.ClusterVO;
|
import com.cloud.dc.ClusterVO;
|
||||||
import com.cloud.dc.ClusterVSMMapVO;
|
import com.cloud.dc.ClusterVSMMapVO;
|
||||||
import com.cloud.dc.DataCenterVO;
|
import com.cloud.dc.DataCenterVO;
|
||||||
|
import com.cloud.dc.VsphereStoragePolicy;
|
||||||
|
import com.cloud.dc.VsphereStoragePolicyVO;
|
||||||
import com.cloud.dc.dao.ClusterDao;
|
import com.cloud.dc.dao.ClusterDao;
|
||||||
import com.cloud.dc.dao.ClusterVSMMapDao;
|
import com.cloud.dc.dao.ClusterVSMMapDao;
|
||||||
import com.cloud.dc.dao.DataCenterDao;
|
import com.cloud.dc.dao.DataCenterDao;
|
||||||
|
import com.cloud.dc.dao.VsphereStoragePolicyDao;
|
||||||
import com.cloud.event.ActionEvent;
|
import com.cloud.event.ActionEvent;
|
||||||
import com.cloud.event.EventTypes;
|
import com.cloud.event.EventTypes;
|
||||||
import com.cloud.exception.DiscoveredWithErrorException;
|
import com.cloud.exception.DiscoveredWithErrorException;
|
||||||
@ -109,6 +68,7 @@ import com.cloud.hypervisor.vmware.mo.DiskControllerType;
|
|||||||
import com.cloud.hypervisor.vmware.mo.HostFirewallSystemMO;
|
import com.cloud.hypervisor.vmware.mo.HostFirewallSystemMO;
|
||||||
import com.cloud.hypervisor.vmware.mo.HostMO;
|
import com.cloud.hypervisor.vmware.mo.HostMO;
|
||||||
import com.cloud.hypervisor.vmware.mo.HypervisorHostHelper;
|
import com.cloud.hypervisor.vmware.mo.HypervisorHostHelper;
|
||||||
|
import com.cloud.hypervisor.vmware.mo.PbmProfileManagerMO;
|
||||||
import com.cloud.hypervisor.vmware.mo.VirtualEthernetCardType;
|
import com.cloud.hypervisor.vmware.mo.VirtualEthernetCardType;
|
||||||
import com.cloud.hypervisor.vmware.mo.VirtualSwitchType;
|
import com.cloud.hypervisor.vmware.mo.VirtualSwitchType;
|
||||||
import com.cloud.hypervisor.vmware.mo.VmwareHostType;
|
import com.cloud.hypervisor.vmware.mo.VmwareHostType;
|
||||||
@ -149,8 +109,48 @@ import com.cloud.vm.DomainRouterVO;
|
|||||||
import com.cloud.vm.dao.UserVmCloneSettingDao;
|
import com.cloud.vm.dao.UserVmCloneSettingDao;
|
||||||
import com.cloud.vm.dao.VMInstanceDao;
|
import com.cloud.vm.dao.VMInstanceDao;
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
|
import com.vmware.pbm.PbmProfile;
|
||||||
import com.vmware.vim25.AboutInfo;
|
import com.vmware.vim25.AboutInfo;
|
||||||
import com.vmware.vim25.ManagedObjectReference;
|
import com.vmware.vim25.ManagedObjectReference;
|
||||||
|
import org.apache.cloudstack.api.command.admin.zone.AddVmwareDcCmd;
|
||||||
|
import org.apache.cloudstack.api.command.admin.zone.ImportVsphereStoragePoliciesCmd;
|
||||||
|
import org.apache.cloudstack.api.command.admin.zone.ListVmwareDcsCmd;
|
||||||
|
import org.apache.cloudstack.api.command.admin.zone.ListVsphereStoragePoliciesCmd;
|
||||||
|
import org.apache.cloudstack.api.command.admin.zone.RemoveVmwareDcCmd;
|
||||||
|
import org.apache.cloudstack.api.command.admin.zone.UpdateVmwareDcCmd;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
|
||||||
|
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||||
|
import org.apache.cloudstack.framework.config.Configurable;
|
||||||
|
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||||
|
import org.apache.cloudstack.framework.jobs.impl.AsyncJobManagerImpl;
|
||||||
|
import org.apache.cloudstack.management.ManagementServerHost;
|
||||||
|
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
|
||||||
|
import org.apache.cloudstack.utils.identity.ManagementServerNode;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.naming.ConfigurationException;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.rmi.RemoteException;
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.RejectedExecutionException;
|
||||||
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class VmwareManagerImpl extends ManagerBase implements VmwareManager, VmwareStorageMount, Listener, VmwareDatacenterService, Configurable {
|
public class VmwareManagerImpl extends ManagerBase implements VmwareManager, VmwareStorageMount, Listener, VmwareDatacenterService, Configurable {
|
||||||
private static final Logger s_logger = Logger.getLogger(VmwareManagerImpl.class);
|
private static final Logger s_logger = Logger.getLogger(VmwareManagerImpl.class);
|
||||||
@ -1056,6 +1056,7 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw
|
|||||||
cmdList.add(RemoveVmwareDcCmd.class);
|
cmdList.add(RemoveVmwareDcCmd.class);
|
||||||
cmdList.add(ListVmwareDcsCmd.class);
|
cmdList.add(ListVmwareDcsCmd.class);
|
||||||
cmdList.add(ImportVsphereStoragePoliciesCmd.class);
|
cmdList.add(ImportVsphereStoragePoliciesCmd.class);
|
||||||
|
cmdList.add(ListVsphereStoragePoliciesCmd.class);
|
||||||
return cmdList;
|
return cmdList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1456,6 +1457,15 @@ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, Vmw
|
|||||||
return storagePolicies;
|
return storagePolicies;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<? extends VsphereStoragePolicy> listVsphereStoragePolicies(ListVsphereStoragePoliciesCmd cmd) {
|
||||||
|
List<? extends VsphereStoragePolicy> storagePolicies = vsphereStoragePolicyDao.findByZoneId(cmd.getZoneId());
|
||||||
|
if (storagePolicies != null) {
|
||||||
|
return new ArrayList<>(storagePolicies);
|
||||||
|
}
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasNexusVSM(Long clusterId) {
|
public boolean hasNexusVSM(Long clusterId) {
|
||||||
ClusterVSMMapVO vsmMapVo = null;
|
ClusterVSMMapVO vsmMapVo = null;
|
||||||
|
|||||||
@ -33,7 +33,7 @@ import org.apache.cloudstack.api.ApiErrorCode;
|
|||||||
import org.apache.cloudstack.api.BaseCmd;
|
import org.apache.cloudstack.api.BaseCmd;
|
||||||
import org.apache.cloudstack.api.Parameter;
|
import org.apache.cloudstack.api.Parameter;
|
||||||
import org.apache.cloudstack.api.ServerApiException;
|
import org.apache.cloudstack.api.ServerApiException;
|
||||||
import org.apache.cloudstack.api.response.ImportVsphereStoragePoliciesResponse;
|
import org.apache.cloudstack.api.response.VsphereStoragePoliciesResponse;
|
||||||
import org.apache.cloudstack.api.response.ListResponse;
|
import org.apache.cloudstack.api.response.ListResponse;
|
||||||
import org.apache.cloudstack.api.response.ZoneResponse;
|
import org.apache.cloudstack.api.response.ZoneResponse;
|
||||||
import org.apache.cloudstack.context.CallContext;
|
import org.apache.cloudstack.context.CallContext;
|
||||||
@ -44,7 +44,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@APICommand(name = ImportVsphereStoragePoliciesCmd.APINAME, description = "Import vSphere storage policies",
|
@APICommand(name = ImportVsphereStoragePoliciesCmd.APINAME, description = "Import vSphere storage policies",
|
||||||
responseObject = ImportVsphereStoragePoliciesResponse.class,
|
responseObject = VsphereStoragePoliciesResponse.class,
|
||||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
|
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
|
||||||
authorized = {RoleType.Admin})
|
authorized = {RoleType.Admin})
|
||||||
public class ImportVsphereStoragePoliciesCmd extends BaseCmd {
|
public class ImportVsphereStoragePoliciesCmd extends BaseCmd {
|
||||||
@ -56,10 +56,18 @@ public class ImportVsphereStoragePoliciesCmd extends BaseCmd {
|
|||||||
@Inject
|
@Inject
|
||||||
public VmwareDatacenterService _vmwareDatacenterService;
|
public VmwareDatacenterService _vmwareDatacenterService;
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
//////////////// API parameters /////////////////////
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
|
||||||
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class,
|
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class,
|
||||||
description = "ID of the zone")
|
description = "ID of the zone")
|
||||||
private Long zoneId;
|
private Long zoneId;
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
/////////////// API Implementation///////////////////
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException {
|
public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException {
|
||||||
final DataCenter dataCenter = _resourceService.getZone(getZoneId());
|
final DataCenter dataCenter = _resourceService.getZone(getZoneId());
|
||||||
@ -68,10 +76,10 @@ public class ImportVsphereStoragePoliciesCmd extends BaseCmd {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<? extends VsphereStoragePolicy> storagePolicies = _vmwareDatacenterService.importVsphereStoragePolicies(this);
|
List<? extends VsphereStoragePolicy> storagePolicies = _vmwareDatacenterService.importVsphereStoragePolicies(this);
|
||||||
final ListResponse<ImportVsphereStoragePoliciesResponse> responseList = new ListResponse<>();
|
final ListResponse<VsphereStoragePoliciesResponse> responseList = new ListResponse<>();
|
||||||
final List<ImportVsphereStoragePoliciesResponse> storagePoliciesResponseList = new ArrayList<>();
|
final List<VsphereStoragePoliciesResponse> storagePoliciesResponseList = new ArrayList<>();
|
||||||
for (VsphereStoragePolicy storagePolicy : storagePolicies) {
|
for (VsphereStoragePolicy storagePolicy : storagePolicies) {
|
||||||
final ImportVsphereStoragePoliciesResponse storagePoliciesResponse = new ImportVsphereStoragePoliciesResponse();
|
final VsphereStoragePoliciesResponse storagePoliciesResponse = new VsphereStoragePoliciesResponse();
|
||||||
storagePoliciesResponse.setZoneId(dataCenter.getUuid());
|
storagePoliciesResponse.setZoneId(dataCenter.getUuid());
|
||||||
storagePoliciesResponse.setId(storagePolicy.getUuid());
|
storagePoliciesResponse.setId(storagePolicy.getUuid());
|
||||||
storagePoliciesResponse.setName(storagePolicy.getName());
|
storagePoliciesResponse.setName(storagePolicy.getName());
|
||||||
|
|||||||
@ -0,0 +1,109 @@
|
|||||||
|
// Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
// or more contributor license agreements. See the NOTICE file
|
||||||
|
// distributed with this work for additional information
|
||||||
|
// regarding copyright ownership. The ASF licenses this file
|
||||||
|
// to you under the Apache License, Version 2.0 (the
|
||||||
|
// "License"); you may not use this file except in compliance
|
||||||
|
// with the License. You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing,
|
||||||
|
// software distributed under the License is distributed on an
|
||||||
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
// KIND, either express or implied. See the License for the
|
||||||
|
// specific language governing permissions and limitations
|
||||||
|
// under the License.
|
||||||
|
|
||||||
|
package org.apache.cloudstack.api.command.admin.zone;
|
||||||
|
|
||||||
|
import com.cloud.dc.DataCenter;
|
||||||
|
import com.cloud.dc.VsphereStoragePolicy;
|
||||||
|
import com.cloud.exception.ConcurrentOperationException;
|
||||||
|
import com.cloud.exception.InsufficientCapacityException;
|
||||||
|
import com.cloud.exception.NetworkRuleConflictException;
|
||||||
|
import com.cloud.exception.ResourceAllocationException;
|
||||||
|
import com.cloud.exception.ResourceUnavailableException;
|
||||||
|
import com.cloud.hypervisor.vmware.VmwareDatacenterService;
|
||||||
|
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.BaseCmd;
|
||||||
|
import org.apache.cloudstack.api.Parameter;
|
||||||
|
import org.apache.cloudstack.api.ServerApiException;
|
||||||
|
import org.apache.cloudstack.api.response.ListResponse;
|
||||||
|
import org.apache.cloudstack.api.response.VsphereStoragePoliciesResponse;
|
||||||
|
import org.apache.cloudstack.api.response.ZoneResponse;
|
||||||
|
import org.apache.cloudstack.context.CallContext;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@APICommand(name = ListVsphereStoragePoliciesCmd.APINAME, description = "List vSphere storage policies",
|
||||||
|
responseObject = VsphereStoragePoliciesResponse.class,
|
||||||
|
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
|
||||||
|
authorized = {RoleType.Admin})
|
||||||
|
public class ListVsphereStoragePoliciesCmd extends BaseCmd {
|
||||||
|
|
||||||
|
public static final Logger s_logger = Logger.getLogger(ListVsphereStoragePoliciesCmd.class.getName());
|
||||||
|
|
||||||
|
public static final String APINAME = "listVsphereStoragePolicies";
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public VmwareDatacenterService _vmwareDatacenterService;
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
//////////////// API parameters /////////////////////
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class,
|
||||||
|
description = "ID of the zone")
|
||||||
|
private Long zoneId;
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
/////////////// API Implementation///////////////////
|
||||||
|
/////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@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<? extends VsphereStoragePolicy> storagePolicies = _vmwareDatacenterService.listVsphereStoragePolicies(this);
|
||||||
|
final ListResponse<VsphereStoragePoliciesResponse> responseList = new ListResponse<>();
|
||||||
|
final List<VsphereStoragePoliciesResponse> storagePoliciesResponseList = new ArrayList<>();
|
||||||
|
for (VsphereStoragePolicy storagePolicy : storagePolicies) {
|
||||||
|
final VsphereStoragePoliciesResponse storagePoliciesResponse = new VsphereStoragePoliciesResponse();
|
||||||
|
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);
|
||||||
|
responseList.setResponseName(getCommandName());
|
||||||
|
setResponseObject(responseList);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCommandName() {
|
||||||
|
return APINAME.toLowerCase() + BaseCmd.RESPONSE_SUFFIX;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getEntityOwnerId() {
|
||||||
|
return CallContext.current().getCallingAccountId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getZoneId() {
|
||||||
|
return zoneId;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -197,8 +197,9 @@ known_categories = {
|
|||||||
'KubernetesCluster': 'Kubernetes Service',
|
'KubernetesCluster': 'Kubernetes Service',
|
||||||
'UnmanagedInstance': 'Virtual Machine',
|
'UnmanagedInstance': 'Virtual Machine',
|
||||||
'Rolling': 'Rolling Maintenance',
|
'Rolling': 'Rolling Maintenance',
|
||||||
'importVsphereStoragePolicies' : 'vSphere storage policies'
|
'importVsphereStoragePolicies' : 'vSphere storage policies',
|
||||||
}
|
'listVsphereStoragePolicies' : 'vSphere storage policies'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
categories = {}
|
categories = {}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user