use of com.emc.storageos.hds.model.StorageArray in project coprhd-controller by CoprHD.
the class HDSApiExportManager method constructAddLUNQuery.
/**
* Constructs the addLun query using multiple path elements. Each path
* element defines the path from volume to initiators.
*
* @param systemId
* @param targetPortId
* @param domainId
* @param deviceLunList
* @param pathList
* @param model
* @return
* @throws Exception
*/
private String constructAddLUNQuery(String systemId, String targetPortId, String domainId, Map<String, String> deviceLunList, List<Path> pathList, String model) throws Exception {
Map<String, Object> attributeMap = new HashMap<String, Object>();
StorageArray array = new StorageArray(systemId);
Add addOp = new Add(HDSConstants.LUN_TARGET);
attributeMap.put(HDSConstants.STORAGEARRAY, array);
attributeMap.put(HDSConstants.ADD, addOp);
attributeMap.put(HDSConstants.MODEL, model);
if (null != deviceLunList && !deviceLunList.isEmpty()) {
for (String device : deviceLunList.keySet()) {
String lun = deviceLunList.get(device);
Path path = new Path(targetPortId, domainId, null, lun, device);
pathList.add(path);
log.info("Device :{} lun:{}", device, lun);
}
}
attributeMap.put(HDSConstants.PATH_LIST, pathList);
String addLunInputXML = InputXMLGenerationClient.getInputXMLString(HDSConstants.ADD_PATH_TO_HSD_OP, attributeMap, HDSConstants.HITACHI_INPUT_XML_CONTEXT_FILE, HDSConstants.HITACHI_SMOOKS_CONFIG_FILE);
return addLunInputXML;
}
use of com.emc.storageos.hds.model.StorageArray in project coprhd-controller by CoprHD.
the class HDSApiExportManager method getHostStorageDomain.
/**
* Return the existing HSD's configured on the storage array.
*
* @param systemId
* @param type
* @return
* @throws Exception
*/
public HostStorageDomain getHostStorageDomain(String systemId, String hsdId) throws Exception {
InputStream responseStream = null;
HostStorageDomain hsd = null;
try {
Map<String, Object> attributeMap = new HashMap<String, Object>();
StorageArray array = new StorageArray(systemId);
attributeMap.put(HDSConstants.STORAGEARRAY, array);
Get getOp = new Get(HDSConstants.STORAGEARRAY);
attributeMap.put(HDSConstants.GET, getOp);
HostStorageDomain inputHsd = new HostStorageDomain(hsdId);
attributeMap.put(HDSConstants.HOST_STORAGE_DOMAIN, inputHsd);
String getHSDQuery = InputXMLGenerationClient.getInputXMLString(HDSConstants.GET_HSD_INFO_OP, attributeMap, HDSConstants.HITACHI_INPUT_XML_CONTEXT_FILE, HDSConstants.HITACHI_SMOOKS_CONFIG_FILE);
log.info("Query to get HostStorageDomain: {}", getHSDQuery);
URI endpointURI = hdsApiClient.getBaseURI();
ClientResponse response = hdsApiClient.post(endpointURI, getHSDQuery);
if (HttpStatus.SC_OK == response.getStatus()) {
responseStream = response.getEntityInputStream();
JavaResult javaResult = SmooksUtil.getParsedXMLJavaResult(responseStream, HDSConstants.SMOOKS_CONFIG_FILE);
verifyErrorPayload(javaResult);
hsd = javaResult.getBean(HostStorageDomain.class);
} else {
throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to query HostStorageDomain due to invalid response %1$s from server", response.getStatus()));
}
} finally {
if (null != responseStream) {
try {
responseStream.close();
} catch (IOException e) {
log.warn("IOException occurred while closing the response stream");
}
}
}
return hsd;
}
use of com.emc.storageos.hds.model.StorageArray in project coprhd-controller by CoprHD.
the class HDSApiVolumeManager method getStoragePoolInfo.
/**
* Return the storagepool information.
*
* @param systemObjectId
* @param poolObjectId
* @return
* @throws Exception
*/
public Pool getStoragePoolInfo(String systemObjectId, String poolObjectId) throws Exception {
InputStream responseStream = null;
Pool storagePool = null;
String poolMethodType = null;
Map<String, Object> attributeMap = new HashMap<String, Object>();
StorageArray storageArray = new StorageArray(systemObjectId);
attributeMap.put(HDSConstants.STORAGEARRAY, storageArray);
Get getOp = new Get(HDSConstants.STORAGEARRAY);
attributeMap.put(HDSConstants.GET, getOp);
Pool pool = new Pool(poolObjectId);
if (poolObjectId.contains(HDSConstants.ARRAYGROUP)) {
attributeMap.put(HDSConstants.ARRAY_GROUP, pool);
poolMethodType = HDSConstants.GET_ARRAYGROUP_INFO_OP;
} else if (poolObjectId.contains(HDSConstants.JOURNALPOOL)) {
attributeMap.put(HDSConstants.JOURNAL_POOL, pool);
poolMethodType = HDSConstants.GET_JOURNAL_POOL_INFO_OP;
}
String getStoragePoolInputXML = InputXMLGenerationClient.getInputXMLString(poolMethodType, attributeMap, HDSConstants.HITACHI_INPUT_XML_CONTEXT_FILE, HDSConstants.HITACHI_SMOOKS_CONFIG_FILE);
URI endpointURI = hdsApiClient.getBaseURI();
log.info("Storagepool info query payload :{}", getStoragePoolInputXML);
ClientResponse response = hdsApiClient.post(endpointURI, getStoragePoolInputXML);
if (HttpStatus.SC_OK == response.getStatus()) {
responseStream = response.getEntityInputStream();
JavaResult result = SmooksUtil.getParsedXMLJavaResult(responseStream, HDSConstants.SMOOKS_CONFIG_FILE);
verifyErrorPayload(result);
storagePool = result.getBean(Pool.class);
} else {
log.error("Get StoragePool info failed with invalid response code {}", response.getStatus());
throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to query StoragePool info due to invalid response %1$s from server for system %2$s", response.getStatus(), systemObjectId));
}
return storagePool;
}
use of com.emc.storageos.hds.model.StorageArray in project coprhd-controller by CoprHD.
the class HDSApiVolumeManager method deleteSnapshotVolume.
public String deleteSnapshotVolume(String storageSystemObjId, String logicalUnitObjId, String model) throws Exception {
String asyncTaskMessageId = null;
InputStream responseStream = null;
try {
if (null != storageSystemObjId && null != logicalUnitObjId) {
log.info("Deleting snapshot with id {} from Storage System {}", logicalUnitObjId, storageSystemObjId);
Map<String, Object> attributeMap = new HashMap<String, Object>();
Delete deleteOp = new Delete(HDSConstants.VIRTUALVOLUME);
StorageArray storageArray = new StorageArray(storageSystemObjId);
LogicalUnit logicalUnit = new LogicalUnit();
logicalUnit.setObjectID(logicalUnitObjId);
attributeMap.put(HDSConstants.DELETE, deleteOp);
attributeMap.put(HDSConstants.MODEL, model);
attributeMap.put(HDSConstants.STORAGEARRAY, storageArray);
attributeMap.put(HDSConstants.LOGICALUNIT, logicalUnit);
String createSnapshotInputXML = InputXMLGenerationClient.getInputXMLString(HDSConstants.DELETE_SNAPSHOT_VOLUME_OP, attributeMap, HDSConstants.HITACHI_INPUT_XML_CONTEXT_FILE, HDSConstants.HITACHI_SMOOKS_CONFIG_FILE);
log.info("Query to delete snapshot Volume: {}", createSnapshotInputXML);
URI endpointURI = hdsApiClient.getBaseURI();
ClientResponse response = hdsApiClient.post(endpointURI, createSnapshotInputXML);
if (HttpStatus.SC_OK == response.getStatus()) {
responseStream = response.getEntityInputStream();
JavaResult result = SmooksUtil.getParsedXMLJavaResult(responseStream, HDSConstants.SMOOKS_CONFIG_FILE);
EchoCommand command = result.getBean(EchoCommand.class);
log.info("command Status :{} MessageId :{}", command.getStatus(), command.getMessageID());
if (HDSConstants.PROCESSING_STR.equalsIgnoreCase(command.getStatus()) || HDSConstants.COMPLETED_STR.equalsIgnoreCase(command.getStatus())) {
asyncTaskMessageId = command.getMessageID();
} else if (HDSConstants.FAILED_STR.equalsIgnoreCase(command.getStatus())) {
Error error = result.getBean(Error.class);
log.error("Snapshot volume deletion failed status messageID: {}", command.getMessageID());
log.error("Snapshot volume failed with error code: {} with message: {}", error.getCode(), error.getDescription());
throw HDSException.exceptions.notAbleToDeleteSnapshot(error.getCode(), error.getDescription());
}
} else {
log.error("Snapshot deletion failed with invalid response code {}", response.getStatus());
throw HDSException.exceptions.invalidResponseFromHDS(String.format("Snapshot deletion failed due to invalid response %1$s from server for system %2$s", response.getStatus(), storageSystemObjId));
}
log.info("Snapshot with id {} deleted from Storage System {}", logicalUnitObjId, storageSystemObjId);
}
} finally {
if (null != responseStream) {
try {
responseStream.close();
} catch (IOException e) {
log.warn("Exception occurred while closing snapshot deletion response stream");
}
}
}
return asyncTaskMessageId;
}
use of com.emc.storageos.hds.model.StorageArray in project coprhd-controller by CoprHD.
the class HDSApiVolumeManager method getLogicalUnitInfo.
/**
* Return the LogicalUnit info for the given logicalUnitObjectId.
*
* @param systemObjectId
* @param logicalUnitObjectId
* @return
* @throws Exception
*/
public LogicalUnit getLogicalUnitInfo(String systemObjectId, String logicalUnitObjectId) throws Exception {
InputStream responseStream = null;
LogicalUnit logicalUnit = null;
Map<String, Object> attributeMap = new HashMap<String, Object>();
StorageArray storageArray = new StorageArray(systemObjectId);
Get getOp = new Get(HDSConstants.STORAGEARRAY);
attributeMap.put(HDSConstants.STORAGEARRAY, storageArray);
attributeMap.put(HDSConstants.GET, getOp);
LogicalUnit lu = new LogicalUnit(logicalUnitObjectId, null);
attributeMap.put(HDSConstants.LOGICALUNIT, lu);
String getLogicalUnitsInputXML = InputXMLGenerationClient.getInputXMLString(HDSConstants.GET_LOGICALUNITS_OP, attributeMap, HDSConstants.HITACHI_INPUT_XML_CONTEXT_FILE, HDSConstants.HITACHI_SMOOKS_CONFIG_FILE);
URI endpointURI = hdsApiClient.getBaseURI();
log.info("Volume info query payload :{}", getLogicalUnitsInputXML);
ClientResponse response = hdsApiClient.post(endpointURI, getLogicalUnitsInputXML);
if (HttpStatus.SC_OK == response.getStatus()) {
responseStream = response.getEntityInputStream();
JavaResult result = SmooksUtil.getParsedXMLJavaResult(responseStream, HDSConstants.SMOOKS_CONFIG_FILE);
verifyErrorPayload(result);
logicalUnit = (LogicalUnit) result.getBean(HDSConstants.LOGICALUNIT_BEAN_NAME);
} else {
log.error("Get LogicalUnit info failed with invalid response code {}", response.getStatus());
throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to query LogicalUnit info due to invalid response %1$s from server for system %2$s", response.getStatus(), systemObjectId));
}
return logicalUnit;
}
Aggregations