Search in sources :

Example 1 with HDSException

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

the class HDSBatchApiExportManager method deleteBatchHostStorageDomains.

/**
 * This method makes a HTTP POST call to delete all HostStorageDomain's
 * using a batch query.
 *
 * @param systemId
 *            - Represents storage system ObjectID.
 * @param hsdList
 *            - List of HostStorageDomain objects to delete.
 * @param model - Model of the system
 *
 * @throws Exception
 */
public void deleteBatchHostStorageDomains(String systemId, List<HostStorageDomain> hsdList, String model) throws Exception {
    InputStream responseStream = null;
    try {
        List<HostStorageDomain> unDeletedHSDs = new ArrayList<>();
        unDeletedHSDs.addAll(hsdList);
        boolean operationSucceeds = false;
        int retryCount = 0;
        StringBuilder errorDescriptionBuilder = new StringBuilder();
        while (!operationSucceeds && retryCount < MAX_RETRIES) {
            retryCount++;
            String deleteHSDsQuery = constructDeleteHSDsQuery(systemId, unDeletedHSDs, model);
            log.info("Batch Query to delete HSD's: {}", deleteHSDsQuery);
            URI endpointURI = hdsApiClient.getBaseURI();
            ClientResponse response = hdsApiClient.post(endpointURI, deleteHSDsQuery);
            if (HttpStatus.SC_OK == response.getStatus()) {
                responseStream = response.getEntityInputStream();
                JavaResult javaResult = SmooksUtil.getParsedXMLJavaResult(responseStream, HDSConstants.SMOOKS_CONFIG_FILE);
                try {
                    verifyErrorPayload(javaResult);
                    // If no exception then operation succeeds
                    operationSucceeds = true;
                } catch (HDSException hdsException) {
                    Error error = javaResult.getBean(Error.class);
                    if (error != null && (error.getDescription().contains("2010") || error.getDescription().contains("5132") || error.getDescription().contains("7473"))) {
                        log.error("Error response recieved from HiCommandManger: {}", error.getDescription());
                        log.info("Exception from HICommand Manager recieved during delete operation, retrying operation {} time", retryCount);
                        errorDescriptionBuilder.append("error ").append(retryCount).append(" : ").append(error.getDescription()).append("-#####-");
                        // Wait for a minute before retry
                        Thread.sleep(60000);
                        unDeletedHSDs.clear();
                        unDeletedHSDs.addAll(hsdList.stream().filter(hsd -> getHostStorageDomain(systemId, hsd.getObjectID()) != null).collect(Collectors.toList()));
                        if (unDeletedHSDs.isEmpty()) {
                            // Operation succeeded
                            operationSucceeds = true;
                            log.info("Deleted {} LUN paths from system:{}", hsdList.size(), systemId);
                        } else {
                            // Retry the operation again if retry count not exceeded
                            continue;
                        }
                    } else {
                        throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to delete HostStorageDomains due to invalid response from server. Error Code - %s Error Message - %s", error.getCode(), error.getDescription()));
                    }
                }
            } else {
                throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to delete HostStorageDomains due to invalid response %1$s from server", response.getStatus()));
            }
        }
        if (!operationSucceeds) {
            // Delete operation failed ever after repeated retries
            throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to delete HostStorageDomains due to repeated errors from HiCommand server, errors description are as %s", errorDescriptionBuilder.toString()));
        }
    } finally {
        if (null != responseStream) {
            try {
                responseStream.close();
            } catch (IOException e) {
                log.warn("IOException occurred while closing the response stream");
            }
        }
    }
    log.info("Batch Query to delete HSD's completed.");
}
Also used : ClientResponse(com.sun.jersey.api.client.ClientResponse) Logger(org.slf4j.Logger) ClientResponse(com.sun.jersey.api.client.ClientResponse) LoggerFactory(org.slf4j.LoggerFactory) HttpStatus(org.apache.http.HttpStatus) IOException(java.io.IOException) HashMap(java.util.HashMap) EchoCommand(com.emc.storageos.hds.model.EchoCommand) StorageArray(com.emc.storageos.hds.model.StorageArray) Collectors(java.util.stream.Collectors) HDSConstants(com.emc.storageos.hds.HDSConstants) JavaResult(org.milyn.payload.JavaResult) Path(com.emc.storageos.hds.model.Path) ArrayList(java.util.ArrayList) HDSException(com.emc.storageos.hds.HDSException) List(java.util.List) Error(com.emc.storageos.hds.model.Error) Map(java.util.Map) InputXMLGenerationClient(com.emc.storageos.hds.xmlgen.InputXMLGenerationClient) URI(java.net.URI) Delete(com.emc.storageos.hds.model.Delete) HostStorageDomain(com.emc.storageos.hds.model.HostStorageDomain) InputStream(java.io.InputStream) Add(com.emc.storageos.hds.model.Add) SmooksUtil(com.emc.storageos.hds.util.SmooksUtil) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) Error(com.emc.storageos.hds.model.Error) IOException(java.io.IOException) URI(java.net.URI) HostStorageDomain(com.emc.storageos.hds.model.HostStorageDomain) JavaResult(org.milyn.payload.JavaResult) HDSException(com.emc.storageos.hds.HDSException)

Example 2 with HDSException

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

the class HDSBatchApiExportManager method deleteLUNPathsFromStorageSystem.

/**
 * This method makes HTTP POST call to delete LUN Paths's using a batch
 * query from the storage system.
 *
 * @param systemId
 *            - represents the storage system objectID.
 * @param pathList
 *            - List of Path objects to delete.
 * @param model - Model of the system
 * @throws Exception
 *             - Incase of processing error.
 */
public void deleteLUNPathsFromStorageSystem(String systemId, List<Path> pathList, String model) throws Exception {
    InputStream responseStream = null;
    try {
        boolean operationSucceeds = false;
        int retryCount = 0;
        StringBuilder errorDescriptionBuilder = new StringBuilder();
        while (!operationSucceeds && retryCount < MAX_RETRIES) {
            retryCount++;
            String deleteLUNsQuery = constructRemoveLUNsQuery(systemId, pathList, model);
            log.info("Batch query to deleteLUNs Query: {}", deleteLUNsQuery);
            URI endpointURI = hdsApiClient.getBaseURI();
            ClientResponse response = hdsApiClient.post(endpointURI, deleteLUNsQuery);
            if (HttpStatus.SC_OK == response.getStatus()) {
                responseStream = response.getEntityInputStream();
                JavaResult javaResult = SmooksUtil.getParsedXMLJavaResult(responseStream, HDSConstants.SMOOKS_CONFIG_FILE);
                try {
                    verifyErrorPayload(javaResult);
                    // If no exception then operation succeeds
                    operationSucceeds = true;
                } catch (HDSException hdsException) {
                    Error error = javaResult.getBean(Error.class);
                    if (error != null && (error.getDescription().contains("2010") || error.getDescription().contains("5132") || error.getDescription().contains("7473"))) {
                        log.error("Error response recieved from HiCommandManger: {}", error.getDescription());
                        log.info("Exception from HICommand Manager recieved during delete operation, retrying operation {} time", retryCount);
                        errorDescriptionBuilder.append("error ").append(retryCount).append(" : ").append(error.getDescription()).append("-#####-");
                        // Wait for a minute before retry
                        Thread.sleep(60000);
                        // Retry the operation again if retry count not exceeded
                        continue;
                    } else {
                        throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to delete LunPaths due to invalid response from server: Code - %s Description - %s", error.getCode(), error.getDescription()));
                    }
                }
                log.info("Deleted {} LUN paths from system:{}", pathList.size(), systemId);
            } else {
                throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to delete Volume from HostGroups due to invalid response %1$s from server", response.getStatus()));
            }
        }
        if (!operationSucceeds) {
            // Delete operation failed ever after repeated retries
            throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to delete LunPaths due to repeated errors from HiCommand server, errors description are as %s", errorDescriptionBuilder.toString()));
        }
    } finally {
        if (null != responseStream) {
            try {
                responseStream.close();
            } catch (IOException e) {
                log.warn("IOException occurred while closing the response stream");
            }
        }
    }
}
Also used : ClientResponse(com.sun.jersey.api.client.ClientResponse) InputStream(java.io.InputStream) Error(com.emc.storageos.hds.model.Error) IOException(java.io.IOException) URI(java.net.URI) JavaResult(org.milyn.payload.JavaResult) HDSException(com.emc.storageos.hds.HDSException)

Example 3 with HDSException

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

the class HDSApiExportManager method deleteLunPathsFromSystem.

/**
 * Delete the LUN Path from HSD of a given storage array.
 *
 * @param systemObjectId
 * @param pathObjectIdList
 * @param model
 *
 * @throws Exception
 */
public void deleteLunPathsFromSystem(String systemObjectId, List<String> pathObjectIdList, String model) throws Exception {
    InputStream responseStream = null;
    try {
        boolean operationSucceeds = false;
        int retryCount = 0;
        StringBuilder errorDescriptionBuilder = new StringBuilder();
        while (!operationSucceeds && retryCount < MAX_RETRIES) {
            retryCount++;
            String deleteLUNsQuery = constructDeleteLunPathsQuery(systemObjectId, pathObjectIdList, model);
            log.info("Batch query to deleteLUNs Query: {}", deleteLUNsQuery);
            URI endpointURI = hdsApiClient.getBaseURI();
            ClientResponse response = hdsApiClient.post(endpointURI, deleteLUNsQuery);
            if (HttpStatus.SC_OK == response.getStatus()) {
                responseStream = response.getEntityInputStream();
                JavaResult javaResult = SmooksUtil.getParsedXMLJavaResult(responseStream, HDSConstants.SMOOKS_CONFIG_FILE);
                try {
                    verifyErrorPayload(javaResult);
                    // If no exception then operation succeeds
                    operationSucceeds = true;
                } catch (HDSException hdsException) {
                    Error error = javaResult.getBean(Error.class);
                    if (error != null && (error.getDescription().contains("2010") || error.getDescription().contains("5132") || error.getDescription().contains("7473"))) {
                        log.error("Error response recieved from HiCommandManger: {}", error.getDescription());
                        log.info("Exception from HICommand Manager recieved during delete operation, retrying operation {} time", retryCount);
                        errorDescriptionBuilder.append("error ").append(retryCount).append(" : ").append(error.getDescription()).append("-#####-");
                        // Wait for a minute before retry
                        Thread.sleep(60000);
                        // Retry the operation again if retry count not exceeded
                        continue;
                    } else {
                        throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to delete LunPaths due to invalid response from server: Code - %s Description - %s", error.getCode(), error.getDescription()));
                    }
                }
                log.info("Deleted {} LUN paths from system:{}", pathObjectIdList.size(), systemObjectId);
            } else {
                throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to delete Volume from HostGroups due to invalid response %1$s from server", response.getStatus()));
            }
        }
        if (!operationSucceeds) {
            // Delete operation failed ever after repeated retries
            throw HDSException.exceptions.invalidResponseFromHDS(String.format("Not able to delete LunPaths due to repeated errors from HiCommand server, errors description are as %s", errorDescriptionBuilder.toString()));
        }
    } finally {
        if (null != responseStream) {
            try {
                responseStream.close();
            } catch (IOException e) {
                log.warn("IOException occurred while closing the response stream");
            }
        }
    }
}
Also used : ClientResponse(com.sun.jersey.api.client.ClientResponse) InputStream(java.io.InputStream) Error(com.emc.storageos.hds.model.Error) IOException(java.io.IOException) URI(java.net.URI) JavaResult(org.milyn.payload.JavaResult) HDSException(com.emc.storageos.hds.HDSException)

Aggregations

HDSException (com.emc.storageos.hds.HDSException)3 Error (com.emc.storageos.hds.model.Error)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 HDSConstants (com.emc.storageos.hds.HDSConstants)1 Add (com.emc.storageos.hds.model.Add)1 Delete (com.emc.storageos.hds.model.Delete)1 EchoCommand (com.emc.storageos.hds.model.EchoCommand)1 HostStorageDomain (com.emc.storageos.hds.model.HostStorageDomain)1 Path (com.emc.storageos.hds.model.Path)1 StorageArray (com.emc.storageos.hds.model.StorageArray)1 SmooksUtil (com.emc.storageos.hds.util.SmooksUtil)1 InputXMLGenerationClient (com.emc.storageos.hds.xmlgen.InputXMLGenerationClient)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1