Search in sources :

Example 1 with ArrayGroup

use of com.emc.storageos.hds.model.ArrayGroup in project coprhd-controller by CoprHD.

the class HDSApiVolumeManager method createSnapshotVolume.

public String createSnapshotVolume(String systemObjectId, Long luCapacityInBytes, String model) throws Exception {
    Long luCapacityInKB = luCapacityInBytes / 1024;
    InputStream responseStream = null;
    String asyncTaskMessageId = null;
    try {
        log.info("Creating snapshot with {}KB size on Storage System {}", luCapacityInKB, systemObjectId);
        Map<String, Object> attributeMap = new HashMap<String, Object>();
        Add addOp = new Add(HDSConstants.VIRTUALVOLUME);
        StorageArray storageArray = new StorageArray(systemObjectId);
        ArrayGroup arrayGroup = new ArrayGroup();
        arrayGroup.setType("2");
        LogicalUnit logicalUnit = new LogicalUnit();
        logicalUnit.setCapacityInKB(String.valueOf(luCapacityInKB));
        logicalUnit.setEmulation(HDSConstants.EMULATION_OPENV);
        attributeMap.put(HDSConstants.STORAGEARRAY, storageArray);
        attributeMap.put(HDSConstants.MODEL, model);
        attributeMap.put(HDSConstants.ARRAY_GROUP, arrayGroup);
        attributeMap.put(HDSConstants.ADD, addOp);
        attributeMap.put(HDSConstants.LOGICALUNIT, logicalUnit);
        String createSnapshotInputXML = InputXMLGenerationClient.getInputXMLString(HDSConstants.CREATE_SNAPSHOT_VOLUME_OP, attributeMap, HDSConstants.HITACHI_INPUT_XML_CONTEXT_FILE, HDSConstants.HITACHI_SMOOKS_CONFIG_FILE);
        log.info("Query to create 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("Thin snapshot creation failed status messageID: {}", command.getMessageID());
                log.error("Thin snapshot creation failed with error code: {} with message: {}", error.getCode(), error.getDescription());
                throw HDSException.exceptions.notAbleToCreateSnapshot(error.getCode(), error.getDescription());
            }
        } else {
            log.error("Thin snapshot creation failed with invalid response code {}", response.getStatus());
            throw HDSException.exceptions.invalidResponseFromHDS(String.format("Thin snapshot creation failed due to invalid response %1$s from server for system %2$s", response.getStatus(), systemObjectId));
        }
        log.info("Snapshot creation initiated on Storage System {}", systemObjectId);
    } finally {
        if (null != responseStream) {
            try {
                responseStream.close();
            } catch (IOException e) {
                log.warn("Exception occurred while closing snapshot creation response stream");
            }
        }
    }
    return asyncTaskMessageId;
}
Also used : Add(com.emc.storageos.hds.model.Add) ClientResponse(com.sun.jersey.api.client.ClientResponse) HashMap(java.util.HashMap) InputStream(java.io.InputStream) LogicalUnit(com.emc.storageos.hds.model.LogicalUnit) Error(com.emc.storageos.hds.model.Error) IOException(java.io.IOException) URI(java.net.URI) JavaResult(org.milyn.payload.JavaResult) EchoCommand(com.emc.storageos.hds.model.EchoCommand) StorageArray(com.emc.storageos.hds.model.StorageArray) ArrayGroup(com.emc.storageos.hds.model.ArrayGroup)

Aggregations

Add (com.emc.storageos.hds.model.Add)1 ArrayGroup (com.emc.storageos.hds.model.ArrayGroup)1 EchoCommand (com.emc.storageos.hds.model.EchoCommand)1 Error (com.emc.storageos.hds.model.Error)1 LogicalUnit (com.emc.storageos.hds.model.LogicalUnit)1 StorageArray (com.emc.storageos.hds.model.StorageArray)1 ClientResponse (com.sun.jersey.api.client.ClientResponse)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 URI (java.net.URI)1 HashMap (java.util.HashMap)1 JavaResult (org.milyn.payload.JavaResult)1