use of com.vmware.vim.vasa._1_0.StorageFault in project coprhd-controller by CoprHD.
the class SOSManager method queryDRSMigrationCapabilityForPerformance.
public synchronized boolean queryDRSMigrationCapabilityForPerformance(String srcUniqueId, String dstUniqueId, String entityType) throws InvalidArgument, NotFound, InvalidSession, StorageFault {
final String methodName = "queryDRSMigrationCapabilityForPerformance(): ";
log.debug(methodName + "Entry with input(s) srcUniqueId[" + srcUniqueId + "] dstUniqueId[" + dstUniqueId + "] entityType[" + entityType + "]");
try {
if (Util.isEmpty(entityType)) {
throw FaultUtil.InvalidArgument("Given entity type is invalid: [" + entityType + "]");
}
List<String> validEntityTypeList = new ArrayList<String>();
validEntityTypeList.add(EntityTypeEnum.StorageFileSystem.getValue());
validEntityTypeList.add(EntityTypeEnum.StorageLun.getValue());
if (validEntityTypeList.contains(entityType) == false) {
throw FaultUtil.InvalidArgument("Given entity type is invalid: [" + entityType + "]");
}
if (Util.isEmpty(srcUniqueId) || Util.isEmpty(dstUniqueId)) {
throw FaultUtil.InvalidArgument("Given identifiers are invalid");
}
Boolean supportsFile = new Boolean(_config.getConfigValue("config/service/storageTopology/storageArray/support-file-profile"));
if (EntityTypeEnum.StorageFileSystem.getValue().equals(entityType)) {
if (!supportsFile) {
throw FaultUtil.InvalidArgument("Given entity type is invalid: [" + entityType + "]. It does not match with the supported array profile");
}
if (!srcUniqueId.startsWith(FILESYSTEM_IDENTIFIER_PREFIX) || !dstUniqueId.startsWith(FILESYSTEM_IDENTIFIER_PREFIX)) {
throw FaultUtil.InvalidArgument("Given identifiers are invalid");
}
}
Boolean supportsBlock = new Boolean(_config.getConfigValue("config/service/storageTopology/storageArray/support-block-profile"));
if (EntityTypeEnum.StorageLun.getValue().equals(entityType)) {
if (!supportsBlock) {
throw FaultUtil.InvalidArgument("Given entity type is invalid: [" + entityType + "]. It does not match with the supported array profile");
}
if (!srcUniqueId.startsWith(VOLUME_IDENTIFIER_PREFIX) || !dstUniqueId.startsWith(VOLUME_IDENTIFIER_PREFIX)) {
throw FaultUtil.InvalidArgument("Given identifiers are invalid");
}
}
List<String> inputIdList = new ArrayList<String>();
inputIdList.add(srcUniqueId);
inputIdList.add(dstUniqueId);
if (EntityTypeEnum.StorageFileSystem.getValue().equals(entityType)) {
this.setFileSystemIds();
if (srcUniqueId.startsWith(FILESYSTEM_IDENTIFIER_PREFIX) && dstUniqueId.startsWith(VOLUME_IDENTIFIER_PREFIX)) {
return false;
} else {
if (!_reportedFileSystemIdList.contains(srcUniqueId)) {
log.error(methodName + "Source Id does not exist for the entity type[" + entityType + "]");
throw FaultUtil.NotFound("Source Id does not exist for the entity type[" + entityType + "]");
}
if (!_reportedFileSystemIdList.contains(dstUniqueId)) {
log.error(methodName + "Destination Id does not exist for the entity type[" + entityType + "]");
throw FaultUtil.NotFound("Destination Id does not exist for the entity type[" + entityType + "]");
}
}
List<FileShare> fileShareList = _syncManager.getFileSystemDetailList(inputIdList);
FileShare fileShare1 = fileShareList.get(0);
FileShare fileShare2 = fileShareList.get(1);
if (fileShare1.getPool() != null && fileShare2.getPool() != null && fileShare1.getPool().getId() != null && fileShare2.getPool().getId() != null) {
if (fileShare1.getPool().getId().equals(fileShare2.getPool().getId())) {
return false;
} else {
return true;
}
}
}
if (EntityTypeEnum.StorageLun.getValue().equals(entityType)) {
this.setVolumeIds();
if (srcUniqueId.startsWith(FILESYSTEM_IDENTIFIER_PREFIX) && dstUniqueId.startsWith(VOLUME_IDENTIFIER_PREFIX)) {
return false;
} else {
if (!_reportedVolumeIdList.contains(srcUniqueId)) {
log.error(methodName + "Source Id does not exist for the entity type[" + entityType + "]");
throw FaultUtil.NotFound("Source Id does not exist for the entity type[" + entityType + "]");
}
if (!_reportedVolumeIdList.contains(dstUniqueId)) {
log.error(methodName + "Destination Id does not exist for the entity type[" + entityType + "]");
throw FaultUtil.NotFound("Destination Id does not exist for the entity type[" + entityType + "]");
}
}
// Check if src and dest are VPLEX volumes
List<Volume> volumeDetailList = _syncManager.getVolumeDetailList(inputIdList);
for (Volume volume : volumeDetailList) {
if (volume != null) {
HighAvailabilityVolumes haVolumes = volume.getHaVolumeList();
if (haVolumes != null && haVolumes.getHaVolumeList() != null) {
return false;
}
}
}
// Regular volumes
AssociatedPool associatedPoolForVolume1 = _syncManager.fetchAssociatedPoolOfVolume(srcUniqueId);
AssociatedPool associatedPoolForVolume2 = _syncManager.fetchAssociatedPoolOfVolume(dstUniqueId);
if (associatedPoolForVolume1 != null && associatedPoolForVolume2 != null) {
if (associatedPoolForVolume1.getStoragepool().getId().equals(associatedPoolForVolume2.getStoragepool().getId())) {
return false;
} else {
return true;
}
}
}
} catch (SOSFailure e) {
log.error("StorageOSFailure occured", e);
throw FaultUtil.StorageFault("StorageOSFailure occured", e);
} catch (InvalidArgument e) {
log.error(methodName + "InvalidArgument occured ", e);
throw e;
} catch (NotFound e) {
log.error(methodName + "NotFound occured ", e);
throw e;
}
return false;
}
use of com.vmware.vim.vasa._1_0.StorageFault in project coprhd-controller by CoprHD.
the class SOSManager method queryAssociatedCapabilityForLun.
/**
* Makes a call to Bourne to get the details of associated capability for
* the given lun Ids
*
* @param lunId
* @return array of <code>VasaAssociationObject</code> objects
* @throws InvalidArgument
* @throws InvalidSession
* @throws StorageFault
* @throws NotImplemented
*/
public synchronized VasaAssociationObject[] queryAssociatedCapabilityForLun(String[] lunIds) throws InvalidArgument, InvalidSession, StorageFault, NotImplemented {
final String methodName = "queryAssociatedCapabilityForLun(): ";
log.debug(methodName + "Entry");
List<Volume> volumeList = null;
List<VasaAssociationObject> returnList = null;
try {
Boolean supportsBlock = new Boolean(_config.getConfigValue("config/service/storageTopology/storageArray/support-block-profile"));
Boolean supportsCapability = new Boolean(_config.getConfigValue("config/service/storageTopology/storageArray/support-capability-profile"));
if (supportsBlock == false || supportsCapability == false) {
log.error(methodName + " This function is not implemented");
throw FaultUtil.NotImplemented("This function is not implemented");
}
this.setVolumeIds();
if (Util.isEmpty(lunIds)) {
volumeList = _syncManager.getVolumeDetailList(this._reportedVolumeIdList);
} else {
List<String> inputLunIds = new ArrayList<String>();
this.setVolumeIds();
for (String inputLunId : lunIds) {
if (!Util.isEmpty(inputLunId)) {
if (!inputLunId.startsWith(VOLUME_IDENTIFIER_PREFIX)) {
throw FaultUtil.InvalidArgument("Given StorageLun Id is invalid: " + inputLunId);
}
if (_reportedVolumeIdList.contains(inputLunId)) {
inputLunIds.add(inputLunId);
}
} else {
throw FaultUtil.InvalidArgument("Given StorageLun Id is invalid: " + inputLunId);
}
}
// log.debug(methodName + "input LUN ids: " + inputLunIds);
volumeList = _syncManager.getVolumeDetailList(inputLunIds);
}
returnList = new ArrayList<VasaAssociationObject>();
for (Volume volume : volumeList) {
VasaAssociationObject associationObject = new VasaAssociationObject();
BaseStorageEntity assoc = new BaseStorageEntity();
assoc.setUniqueIdentifier(volume.getCos().getId());
associationObject.addAssociatedId(assoc);
BaseStorageEntity entity = new BaseStorageEntity();
entity.setUniqueIdentifier(volume.getId());
associationObject.addEntityId(entity);
log.debug(methodName + "LUN id[" + entity.getUniqueIdentifier() + "] is associated to capability[" + assoc.getUniqueIdentifier() + "]");
returnList.add(associationObject);
}
} catch (SOSFailure e) {
log.error(methodName + "StorageOSFailure occured ", e);
throw FaultUtil.StorageFault(e);
} catch (InvalidArgument e) {
log.error(methodName + "InvalidArgument occured ", e);
throw e;
} catch (NotImplemented e) {
log.error(methodName + "NotImplemented occured ", e);
throw e;
}
log.debug(methodName + "Exit returning vasa association objects of size[" + returnList.size() + "]");
return returnList.toArray(new VasaAssociationObject[0]);
}
use of com.vmware.vim.vasa._1_0.StorageFault in project coprhd-controller by CoprHD.
the class SOSManager method queryStorageProcessors.
/**
* Makes a call to Bourne to get the details of given storage processor Ids
*
* @param processorId
* @return array of <code>StorageProcessor</code> objects
* @throws InvalidArgument
* @throws InvalidSession
* @throws StorageFault
* @throws NotImplemented
*/
public synchronized StorageProcessor[] queryStorageProcessors(String[] processorId) throws InvalidArgument, InvalidSession, StorageFault, NotImplemented {
final String methodName = "queryStorageProcessors(): ";
log.debug(methodName + "Entry");
List<StorageProcessor> processorList = null;
try {
Boolean supportsBlock = new Boolean(_config.getConfigValue("config/service/storageTopology/storageArray/support-block-profile"));
if (!supportsBlock) {
log.error(methodName + " This function is not implemented");
throw FaultUtil.NotImplemented("This function is not implemented");
}
if (processorId != null) {
log.debug(methodName + "input processor Ids " + Arrays.asList(processorId));
} else {
log.debug(methodName + "input processor Ids " + processorId);
}
String storageProcessorId = this.getProcessorId();
if (!Util.isEmpty(processorId)) {
for (String inputProcessorId : processorId) {
if (Util.isEmpty(inputProcessorId) == true || inputProcessorId.startsWith(STORAGEPROCESSOR_IDENTIFIER_PREFIX) == false) {
throw FaultUtil.InvalidArgument("Given processor Id(s) are invalid");
}
}
}
processorList = new ArrayList<StorageProcessor>();
if (Util.isEmpty(processorId)) {
StorageProcessor processor = new StorageProcessor();
log.debug(methodName + " adding storage processor id[" + storageProcessorId + "]");
processor.setUniqueIdentifier(storageProcessorId);
processor.addSpIdentifier(storageProcessorId);
processorList.add(processor);
} else {
for (String inputProcessorId : processorId) {
if (inputProcessorId != null && storageProcessorId.equals(inputProcessorId)) {
StorageProcessor processor = new StorageProcessor();
log.debug(methodName + " adding storage processor id[" + storageProcessorId + "]");
processor.addSpIdentifier(storageProcessorId);
processor.setUniqueIdentifier(storageProcessorId);
processorList.add(processor);
}
}
}
} catch (InvalidArgument e) {
log.error(methodName + "InvalidArgument occured", e);
throw (e);
} catch (NotImplemented e) {
log.error(methodName + "NotImplemented occured", e);
throw FaultUtil.StorageFault(e);
} catch (Exception e) {
log.error(methodName + "Unexpected exception occured", e);
throw FaultUtil.StorageFault(e);
}
log.debug(methodName + "Exit returning processors of size[" + processorList.size() + "]");
return processorList.toArray(new StorageProcessor[0]);
}
use of com.vmware.vim.vasa._1_0.StorageFault in project coprhd-controller by CoprHD.
the class SOSManager method queryStorageLuns.
/**
* Makes a call to Bourne to get the details of given storage lun Ids
*
* @param lunUniqueIds
* @return array of <code>StorageLun</code> objects
* @throws InvalidArgument
* @throws InvalidSession
* @throws StorageFault
* @throws NotImplemented
*/
public synchronized StorageLun[] queryStorageLuns(String[] lunUniqueIds) throws InvalidArgument, StorageFault, NotImplemented, InvalidSession {
final String methodName = "queryStorageLuns(): ";
log.debug(methodName + "Entry");
List<StorageLun> storageLunList = null;
try {
Boolean supportsBlock = new Boolean(_config.getConfigValue("config/service/storageTopology/storageArray/support-block-profile"));
if (!supportsBlock) {
log.error(methodName + " This function is not implemented");
throw FaultUtil.NotImplemented("This function is not implemented");
}
if (Util.isEmpty(lunUniqueIds)) {
throw FaultUtil.InvalidArgument("Given LUN Ids are invalid");
}
for (String inputLunId : lunUniqueIds) {
if (!Util.isEmpty(inputLunId)) {
if (!inputLunId.startsWith(VOLUME_IDENTIFIER_PREFIX)) {
throw FaultUtil.InvalidArgument("Given LUN Id is invalid: " + inputLunId);
}
} else {
throw FaultUtil.InvalidArgument("Given LUN Id is invalid: " + inputLunId);
}
}
// List<String> inputLunIdList = Arrays.asList(lunUniqueIds);
List<String> existingVolIds = new ArrayList<String>();
this.setVolumeIds();
for (String inputLunId : lunUniqueIds) {
if (_reportedVolumeIdList.contains(inputLunId)) {
existingVolIds.add(inputLunId);
}
}
storageLunList = new ArrayList<StorageLun>();
List<Volume> volumeList = null;
volumeList = _syncManager.getVolumeDetailList(existingVolIds);
for (Volume volume : volumeList) {
StorageLun lun = new StorageLun();
lun.setUniqueIdentifier(volume.getId());
Long volumeCapacityInMB = (long) (volume.getRequestedCapacityInGB() * 1024);
Long volumeUsedCapacityInMB = (long) (volume.getAllocatedCapacityInGB() * 1024);
lun.setCapacityInMB(volumeCapacityInMB);
lun.setDisplayName(volume.getName());
lun.setDrsManagementPermitted(true);
String esxLunId = "naa.";
if (volume.getWWN() != null) {
esxLunId += volume.getWWN().toLowerCase();
}
lun.setEsxLunIdentifier(esxLunId);
lun.setThinProvisioned(volume.isThinlyProvisioned());
String alarmStatus = _alarmManager.getThinlyProvisionedStatus(_syncManager, volume);
lun.setThinProvisioningStatus(alarmStatus);
lun.setUsedSpaceInMB(volumeUsedCapacityInMB);
if (log.isDebugEnabled()) {
log.debug(methodName + " Lun detail: id[" + lun.getUniqueIdentifier() + "] ESXLunIdentifier[" + lun.getEsxLunIdentifier() + "] capacityInMB[" + lun.getCapacityInMB() + "] name[" + lun.getDisplayName() + "] DRSManagementPermitted[" + lun.getDrsManagementPermitted() + "] thinProvisioned[" + lun.getThinProvisioned() + "] thinProvisioningStatus[" + lun.getThinProvisioningStatus() + "] usedSpaceInMB[" + lun.getUsedSpaceInMB() + "]");
}
storageLunList.add(lun);
}
} catch (SOSFailure e) {
log.error(methodName + "StorageOSFailure occured ", e);
throw FaultUtil.StorageFault(e);
} catch (InvalidArgument e) {
log.error(methodName + "InvalidArgument occured ", e);
throw e;
} catch (NotImplemented e) {
log.error(methodName + "NotImplemented occured ", e);
throw e;
}
log.debug(methodName + "Exit returning LUN list of size[" + storageLunList.size() + "]");
return storageLunList.toArray(new StorageLun[0]);
}
use of com.vmware.vim.vasa._1_0.StorageFault in project coprhd-controller by CoprHD.
the class SOSManager method queryStoragePorts.
/**
* Makes a call to Bourne to get the details of given storage ports
*
* @param portIds
* @return array of <code>StoragePort</code> objects
* @throws InvalidArgument
* @throws InvalidSession
* @throws StorageFault
* @throws NotImplemented
*/
public synchronized StoragePort[] queryStoragePorts(String[] portIds) throws InvalidArgument, InvalidSession, StorageFault, NotImplemented {
final String methodName = "queryStoragePorts(): ";
log.debug(methodName + "Entry");
List<StoragePort> retStoragePorts = null;
try {
Boolean supportsBlock = new Boolean(_config.getConfigValue("config/service/storageTopology/storageArray/support-block-profile"));
if (!supportsBlock) {
log.error(methodName + " This function is not implemented");
throw FaultUtil.NotImplemented("This function is not implemented");
}
List<com.emc.storageos.vasa.data.internal.StoragePort> portList = null;
// try {
if (Util.isEmpty(portIds)) {
portList = this.getStoragePorts();
} else {
for (String inputPortId : portIds) {
if (!inputPortId.startsWith(STORAGEPORT_IDENTIFIER_PREFIX)) {
throw FaultUtil.InvalidArgument("Given portId is invalid: " + inputPortId);
}
}
List<String> portIdList = Arrays.asList(portIds);
portList = this.getStoragePorts(portIdList);
}
retStoragePorts = new ArrayList<StoragePort>();
for (com.emc.storageos.vasa.data.internal.StoragePort storagePortDetail : portList) {
String portType = storagePortDetail.getTransportType();
String portNetworkId = storagePortDetail.getPortNetworkId();
log.trace(methodName + "port type is [" + portType + "]");
log.trace(methodName + "port nework Id is [" + portNetworkId + "]");
StoragePort returnStoragePort = new StoragePort();
returnStoragePort.setUniqueIdentifier(storagePortDetail.getId());
returnStoragePort.addAlternateName(storagePortDetail.getPortName());
if ("FC".equalsIgnoreCase(portType)) {
log.trace(methodName + "setting port WWN as port network ID ");
returnStoragePort.setPortWwn(portNetworkId);
returnStoragePort.setPortType(BlockEnum.FC.getValue());
} else if ("ISCSI".equalsIgnoreCase(portType)) {
log.trace(methodName + "setting iSCSI identifier as port network ID ");
returnStoragePort.setIscsiIdentifier(portNetworkId);
returnStoragePort.setPortType(BlockEnum.ISCSI.getValue());
} else if ("IP".equalsIgnoreCase(portType)) {
log.trace(methodName + "setting node WWN as port network ID ");
returnStoragePort.setNodeWwn(portNetworkId);
returnStoragePort.setPortType(BlockEnum.Other.getValue());
}
retStoragePorts.add(returnStoragePort);
}
} catch (InvalidArgument e) {
log.error(methodName + "InvalidArgument occured", e);
throw e;
} catch (NotImplemented e) {
log.error(methodName + "NotImplemented occured", e);
throw e;
}
log.debug(methodName + "Exit returning storage ports of size[" + retStoragePorts.size() + "]");
return retStoragePorts.toArray(new StoragePort[0]);
}
Aggregations