Search in sources :

Example 21 with EchoCommand

use of com.emc.storageos.hds.model.EchoCommand 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

EchoCommand (com.emc.storageos.hds.model.EchoCommand)21 Error (com.emc.storageos.hds.model.Error)21 JavaResult (org.milyn.payload.JavaResult)14 ClientResponse (com.sun.jersey.api.client.ClientResponse)13 InputStream (java.io.InputStream)13 IOException (java.io.IOException)12 URI (java.net.URI)12 HashMap (java.util.HashMap)11 LogicalUnit (com.emc.storageos.hds.model.LogicalUnit)9 StorageArray (com.emc.storageos.hds.model.StorageArray)9 Add (com.emc.storageos.hds.model.Add)5 Delete (com.emc.storageos.hds.model.Delete)3 Modify (com.emc.storageos.hds.model.Modify)3 HDSHost (com.emc.storageos.hds.model.HDSHost)2 Pool (com.emc.storageos.hds.model.Pool)2 ReplicationInfo (com.emc.storageos.hds.model.ReplicationInfo)2 ArrayList (java.util.ArrayList)2 StorageSystem (com.emc.storageos.db.client.model.StorageSystem)1 HDSException (com.emc.storageos.hds.HDSException)1 HDSApiClient (com.emc.storageos.hds.api.HDSApiClient)1