Search in sources :

Example 1 with ReplicationGroup

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

the class HDSApiProtectionManager method createShadowImagePair.

/**
 * Creates ShadowImage Pair
 *
 * @param replicationGroupObjId
 * @param pairName
 * @param arrayType
 * @param arraySerialNumber
 * @param pvolDevNum
 * @param svolDevNum
 * @param model
 * @return {@link ReplicationInfo}
 */
public ReplicationInfo createShadowImagePair(String replicationGroupObjId, String pairName, String arrayType, String arraySerialNumber, String pvolDevNum, String svolDevNum, String model) throws Exception {
    log.info("Shadow Image pair creation started");
    InputStream responseStream = null;
    ReplicationInfo replicationInfoResponse = null;
    String syncTaskMessageId = null;
    try {
        log.info("replicationGroupObjId {} ", replicationGroupObjId);
        log.info("arrayType {} arraySerialNumber {}", arrayType, arraySerialNumber);
        log.info(" pvolDevNum {} svolDevNum {}", pvolDevNum, svolDevNum);
        Map<String, Object> attributeMap = new HashMap<String, Object>();
        Add addOp = new Add(HDSConstants.REPLICATION);
        ReplicationGroup replicationGroup = new ReplicationGroup();
        replicationGroup.setObjectID(replicationGroupObjId);
        replicationGroup.setReplicationFunction(HDSConstants.SHADOW_IMAGE);
        ReplicationInfo replicationInfo = new ReplicationInfo();
        replicationInfo.setPairName(pairName);
        replicationInfo.setPvolArrayType(arrayType);
        replicationInfo.setPvolSerialNumber(arraySerialNumber);
        replicationInfo.setPvolDevNum(pvolDevNum);
        replicationInfo.setSvolArrayType(arrayType);
        replicationInfo.setSvolSerialNumber(arraySerialNumber);
        replicationInfo.setSvolDevNum(svolDevNum);
        replicationInfo.setReplicationFunction(HDSConstants.SHADOW_IMAGE);
        attributeMap.put(HDSConstants.ADD, addOp);
        attributeMap.put(HDSConstants.MODEL, model);
        attributeMap.put(HDSConstants.REPLICATION_GROUP, replicationGroup);
        attributeMap.put(HDSConstants.REPLICATION_INFO, replicationInfo);
        String createShadowImagePairInputXML = InputXMLGenerationClient.getInputXMLString(HDSConstants.CREATE_SHADOW_IMAGE_PAIR_OP, attributeMap, HDSConstants.HITACHI_INPUT_XML_CONTEXT_FILE, HDSConstants.HITACHI_SMOOKS_CONFIG_FILE);
        log.info("Query to create shadow image pair volume: {}", createShadowImagePairInputXML);
        URI endpointURI = hdsApiClient.getBaseURI();
        ClientResponse response = hdsApiClient.post(endpointURI, createShadowImagePairInputXML);
        if (HttpStatus.SC_OK == response.getStatus()) {
            responseStream = response.getEntityInputStream();
            JavaResult result = SmooksUtil.getParsedXMLJavaResult(responseStream, HDSConstants.HITACHI_SMOOKS_REPLICATION_CONFIG_FILE);
            EchoCommand command = result.getBean(EchoCommand.class);
            if (HDSConstants.COMPLETED_STR.equalsIgnoreCase(command.getStatus())) {
                log.info("ShadowImage Pair has been created successfully");
                replicationInfoResponse = result.getBean(ReplicationInfo.class);
                if (null == replicationInfoResponse) {
                    throw HDSException.exceptions.notAbleToCreateShadowImagePair();
                }
            } else if (HDSConstants.PROCESSING_STR.equalsIgnoreCase(command.getStatus())) {
                syncTaskMessageId = command.getMessageID();
            } else if (HDSConstants.FAILED_STR.equalsIgnoreCase(command.getStatus())) {
                Error error = result.getBean(Error.class);
                log.error("Shadow Image pair creation failed status messageID: {}", command.getMessageID());
                log.error("Shadow Image pair creation failed with error code: {} with message: {}", error.getCode(), error.getDescription());
                throw HDSException.exceptions.notAbleToCreateVolume(error.getCode(), error.getDescription());
            }
        } else {
            log.error("Shadow Image pair creation failed with invalid response code {}", response.getStatus());
            throw HDSException.exceptions.invalidResponseFromHDS(String.format("Shadow Image pair creation failed due to invalid response %1$s from server for system %2$s", response.getStatus(), arraySerialNumber));
        }
    } finally {
        if (null != responseStream) {
            try {
                responseStream.close();
            } catch (IOException e) {
                log.warn("Exception occurred while close Shadow Image Pair creation response stream");
            }
        }
    }
    log.info("Shadow Image pair creation completed");
    return replicationInfoResponse;
}
Also used : Add(com.emc.storageos.hds.model.Add) ClientResponse(com.sun.jersey.api.client.ClientResponse) HashMap(java.util.HashMap) InputStream(java.io.InputStream) Error(com.emc.storageos.hds.model.Error) IOException(java.io.IOException) ReplicationGroup(com.emc.storageos.hds.model.ReplicationGroup) URI(java.net.URI) ReplicationInfo(com.emc.storageos.hds.model.ReplicationInfo) JavaResult(org.milyn.payload.JavaResult) EchoCommand(com.emc.storageos.hds.model.EchoCommand)

Example 2 with ReplicationGroup

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

the class HDSApiProtectionManager method getReplicationRelatedObjectIds.

/**
 * Return's replicationGroup's objectID and replicationInfo's objectID for the given P-VOl and S-VOL
 *
 * @param primaryVolumeNativeId
 * @param secondaryVolumeNativeId
 * @return {@link Map} replicationGroup's objectID and replicationInfo's objectID
 * @throws Exception
 */
public Map<String, String> getReplicationRelatedObjectIds(String primaryVolumeNativeId, String secondaryVolumeNativeId) throws Exception {
    Map<String, String> objectIds = new HashMap<>();
    log.info("primaryVolumeNativeId :{}", primaryVolumeNativeId);
    log.info("secondaryVolumeNativeId :{}", secondaryVolumeNativeId);
    List<HDSHost> hostList = getHDSHostList();
    if (hostList != null) {
        for (HDSHost hdsHost : hostList) {
            log.info("HDSHost :{}", hdsHost.toXMLString());
            if (hdsHost != null && hdsHost.getConfigFileList() != null && !hdsHost.getConfigFileList().isEmpty()) {
                for (ConfigFile configFile : hdsHost.getConfigFileList()) {
                    if (configFile != null) {
                        ReplicationGroup replicationGroup = configFile.getReplicationGroup();
                        if (replicationGroup != null && replicationGroup.getReplicationInfoList() != null) {
                            log.debug("replicationGroup :{}", replicationGroup.toXMLString());
                            List<ReplicationInfo> replicationInfoList = replicationGroup.getReplicationInfoList();
                            if (replicationInfoList != null) {
                                for (ReplicationInfo replicationInfo : replicationInfoList) {
                                    log.debug("replicationInfo :{}", replicationInfo.toXMLString());
                                    if (primaryVolumeNativeId.equalsIgnoreCase(replicationInfo.getPvolDevNum()) && secondaryVolumeNativeId.equalsIgnoreCase(replicationInfo.getSvolDevNum())) {
                                        objectIds.put(HDSConstants.REPLICATION_INFO_OBJ_ID, replicationInfo.getObjectID());
                                        objectIds.put(HDSConstants.REPLICATION_GROUP_OBJ_ID, replicationGroup.getObjectID());
                                        log.info("objectIds :{}", objectIds);
                                        return objectIds;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    log.error("Unable to get replication information from pair management server");
    return objectIds;
}
Also used : HDSHost(com.emc.storageos.hds.model.HDSHost) HashMap(java.util.HashMap) ConfigFile(com.emc.storageos.hds.model.ConfigFile) ReplicationInfo(com.emc.storageos.hds.model.ReplicationInfo) ReplicationGroup(com.emc.storageos.hds.model.ReplicationGroup)

Example 3 with ReplicationGroup

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

the class HDSApiProtectionManager method getReplicationInfoFromSystem.

public Pair<ReplicationInfo, String> getReplicationInfoFromSystem(String sourceNativeId, String targetNativeId) throws Exception {
    log.info("sourceNativeId :{}", sourceNativeId);
    log.info("targetNativeId :{}", targetNativeId);
    List<HDSHost> hostList = getHDSHostList();
    if (hostList != null) {
        for (HDSHost hdsHost : hostList) {
            log.info("HDSHost :{}", hdsHost.toXMLString());
            if (hdsHost != null && hdsHost.getConfigFileList() != null && !hdsHost.getConfigFileList().isEmpty()) {
                for (ConfigFile configFile : hdsHost.getConfigFileList()) {
                    if (configFile != null) {
                        ReplicationGroup replicationGroup = configFile.getReplicationGroup();
                        if (replicationGroup != null && replicationGroup.getReplicationInfoList() != null) {
                            log.info("replicationGroup :{}", replicationGroup.toXMLString());
                            List<ReplicationInfo> replicationInfoList = replicationGroup.getReplicationInfoList();
                            if (replicationInfoList != null) {
                                for (ReplicationInfo replicationInfo : replicationInfoList) {
                                    log.debug("replicationInfo :{}", replicationInfo.toXMLString());
                                    if (sourceNativeId.equals(replicationInfo.getPvolDevNum()) && targetNativeId.equals(replicationInfo.getSvolDevNum())) {
                                        log.info("Found replicationInfo object from system:{}", replicationInfo.toXMLString());
                                        log.info("Host Object Id :{}", hdsHost.getObjectID());
                                        return (new Pair<ReplicationInfo, String>(replicationInfo, hdsHost.getObjectID()));
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    // If we are here there is no matching replication info available on pair management server.
    log.error("Unable to find replication info details from device manager for the pvol {} svol {}", sourceNativeId, targetNativeId);
    return null;
}
Also used : HDSHost(com.emc.storageos.hds.model.HDSHost) ConfigFile(com.emc.storageos.hds.model.ConfigFile) ReplicationInfo(com.emc.storageos.hds.model.ReplicationInfo) ReplicationGroup(com.emc.storageos.hds.model.ReplicationGroup)

Example 4 with ReplicationGroup

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

the class HDSApiProtectionManager method modifyShadowImagePair.

/**
 * Modify ShadowImage pair operation .
 *
 * @param replicationGroupId
 * @param replicationInfoId
 * @param operationType
 * @return {@link ReplicationInfo}
 * @throws Exception
 */
public ReplicationInfo modifyShadowImagePair(String replicationGroupId, String replicationInfoId, ShadowImageOperationType operationType, String model) throws Exception {
    InputStream responseStream = null;
    ReplicationInfo replicationInfo = null;
    try {
        if (replicationGroupId != null && replicationInfoId != null) {
            Map<String, Object> attributeMap = new HashMap<String, Object>();
            Modify modifyOp = new Modify();
            modifyOp.setTarget(HDSConstants.REPLICATION);
            modifyOp.setOption(operationType.name());
            ReplicationGroup replicationGroup = new ReplicationGroup();
            replicationGroup.setObjectID(replicationGroupId);
            replicationInfo = new ReplicationInfo();
            replicationInfo.setObjectID(replicationInfoId);
            attributeMap.put(HDSConstants.MODIFY, modifyOp);
            attributeMap.put(HDSConstants.MODEL, model);
            attributeMap.put(HDSConstants.REPLICATION_GROUP, replicationGroup);
            attributeMap.put(HDSConstants.REPLICATION_INFO, replicationInfo);
            String modifyPairQuery = InputXMLGenerationClient.getInputXMLString(HDSConstants.MODIFY_SHADOW_IMAGE_PAIR_OP, attributeMap, HDSConstants.HITACHI_INPUT_XML_CONTEXT_FILE, HDSConstants.HITACHI_SMOOKS_CONFIG_FILE);
            log.info("Query to {} shadow image pair  Query: {}", operationType.name(), modifyPairQuery);
            URI endpointURI = hdsApiClient.getBaseURI();
            ClientResponse response = hdsApiClient.post(endpointURI, modifyPairQuery);
            if (HttpStatus.SC_OK == response.getStatus()) {
                responseStream = response.getEntityInputStream();
                JavaResult javaResult = SmooksUtil.getParsedXMLJavaResult(responseStream, HDSConstants.HITACHI_SMOOKS_REPLICATION_CONFIG_FILE);
                verifyErrorPayload(javaResult);
                log.info("Successfully {}ed pair", operationType.name());
                replicationInfo = javaResult.getBean(ReplicationInfo.class);
                log.info("replicationInfo :{}", replicationInfo);
            /*
                     * if (null == replicationInfo) {
                     * throw HDSException.exceptions.notAbleToCreateShadowImagePair();
                     * }
                     */
            } else {
                throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to modify replication info 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 replicationInfo;
}
Also used : ClientResponse(com.sun.jersey.api.client.ClientResponse) HashMap(java.util.HashMap) InputStream(java.io.InputStream) ReplicationInfo(com.emc.storageos.hds.model.ReplicationInfo) Modify(com.emc.storageos.hds.model.Modify) IOException(java.io.IOException) ReplicationGroup(com.emc.storageos.hds.model.ReplicationGroup) URI(java.net.URI) JavaResult(org.milyn.payload.JavaResult)

Example 5 with ReplicationGroup

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

the class HDSApiProtectionManager method deleteShadowImagePair.

/**
 * Deletes SI replicationInfo instance from replication group
 *
 * @param replicationGroupObjId
 * @param replicationInfoObjId
 * @return {@link ReplicationInfo}
 * @throws Exception
 */
public ReplicationInfo deleteShadowImagePair(String replicationGroupObjId, String replicationInfoObjId, String model) throws Exception {
    InputStream responseStream = null;
    ReplicationInfo replicationInfo = null;
    try {
        if (replicationGroupObjId != null && replicationInfoObjId != null) {
            Map<String, Object> attributeMap = new HashMap<String, Object>();
            Delete deleteOp = new Delete(HDSConstants.REPLICATION);
            ReplicationGroup replicationGroup = new ReplicationGroup();
            replicationGroup.setObjectID(replicationGroupObjId);
            replicationInfo = new ReplicationInfo();
            replicationInfo.setObjectID(replicationInfoObjId);
            attributeMap.put(HDSConstants.DELETE, deleteOp);
            attributeMap.put(HDSConstants.MODEL, model);
            attributeMap.put(HDSConstants.REPLICATION_GROUP, replicationGroup);
            attributeMap.put(HDSConstants.REPLICATION_INFO, replicationInfo);
            String deletePairQuery = InputXMLGenerationClient.getInputXMLString(HDSConstants.DELETE_PAIR_OP, attributeMap, HDSConstants.HITACHI_INPUT_XML_CONTEXT_FILE, HDSConstants.HITACHI_SMOOKS_CONFIG_FILE);
            log.info("Query to delete shadow image pair  Query: {}", deletePairQuery);
            URI endpointURI = hdsApiClient.getBaseURI();
            ClientResponse response = hdsApiClient.post(endpointURI, deletePairQuery);
            if (HttpStatus.SC_OK == response.getStatus()) {
                responseStream = response.getEntityInputStream();
                JavaResult javaResult = SmooksUtil.getParsedXMLJavaResult(responseStream, HDSConstants.HITACHI_SMOOKS_REPLICATION_CONFIG_FILE);
                verifyErrorPayload(javaResult);
                log.info("Successfully Deleted pair");
                replicationInfo = javaResult.getBean(ReplicationInfo.class);
                log.info("replicationInfo :{}", replicationInfo);
            /*
                     * if (null == replicationInfo) {
                     * throw HDSException.exceptions.notAbleToCreateShadowImagePair();
                     * }
                     */
            } else {
                throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to delete shadow image pair due to invalid response %1$s from server", response.getStatus()));
            }
        } else {
            log.info("Replication info is not available on pair management server");
        }
    } finally {
        if (null != responseStream) {
            try {
                responseStream.close();
            } catch (IOException e) {
                log.warn("IOException occurred while closing the response stream");
            }
        }
    }
    return replicationInfo;
}
Also used : Delete(com.emc.storageos.hds.model.Delete) ClientResponse(com.sun.jersey.api.client.ClientResponse) HashMap(java.util.HashMap) InputStream(java.io.InputStream) ReplicationInfo(com.emc.storageos.hds.model.ReplicationInfo) IOException(java.io.IOException) ReplicationGroup(com.emc.storageos.hds.model.ReplicationGroup) URI(java.net.URI) JavaResult(org.milyn.payload.JavaResult)

Aggregations

ReplicationGroup (com.emc.storageos.hds.model.ReplicationGroup)6 ReplicationInfo (com.emc.storageos.hds.model.ReplicationInfo)5 HashMap (java.util.HashMap)4 ConfigFile (com.emc.storageos.hds.model.ConfigFile)3 HDSHost (com.emc.storageos.hds.model.HDSHost)3 ClientResponse (com.sun.jersey.api.client.ClientResponse)3 IOException (java.io.IOException)3 InputStream (java.io.InputStream)3 URI (java.net.URI)3 JavaResult (org.milyn.payload.JavaResult)3 Add (com.emc.storageos.hds.model.Add)1 Delete (com.emc.storageos.hds.model.Delete)1 EchoCommand (com.emc.storageos.hds.model.EchoCommand)1 Error (com.emc.storageos.hds.model.Error)1 Modify (com.emc.storageos.hds.model.Modify)1