Search in sources :

Example 1 with IsilonSyncJobFailover

use of com.emc.storageos.volumecontroller.impl.isilon.job.IsilonSyncJobFailover in project coprhd-controller by CoprHD.

the class IsilonMirrorOperations method doFailover.

/**
 * Call to device to failover the policy
 *
 * @param system
 * @param policyName
 * @param taskCompleter
 * @return
 */
public BiosCommandResult doFailover(StorageSystem system, String policyName, TaskCompleter taskCompleter) {
    _log.info("IsilonMirrorOperations -  doFailover started ");
    try {
        IsilonApi isi = getIsilonDevice(system);
        IsilonSyncTargetPolicy syncTargetPolicy = isi.getTargetReplicationPolicy(policyName);
        if (syncTargetPolicy.getFoFbState().equals(FOFB_STATES.writes_enabled)) {
            _log.info("can't perform failover operation on policy: {} because failover is done already", syncTargetPolicy.getName());
            return BiosCommandResult.createSuccessfulResult();
        }
        IsilonSyncJob job = new IsilonSyncJob();
        job.setId(policyName);
        job.setAction(Action.allow_write);
        isi.modifyReplicationJob(job);
        IsilonSyncJobFailover isiSyncJobFailover = new IsilonSyncJobFailover(policyName, system.getId(), taskCompleter, policyName);
        try {
            ControllerServiceImpl.enqueueJob(new QueueJob(isiSyncJobFailover));
            return BiosCommandResult.createPendingResult();
        } catch (Exception ex) {
            _log.error("Failover to Secondary Cluster Failed", ex);
            ServiceError error = DeviceControllerErrors.isilon.jobFailed("Failover to Secondary Cluster Failed as :" + ex.getMessage());
            if (taskCompleter != null) {
                taskCompleter.error(_dbClient, error);
            }
            return BiosCommandResult.createErrorResult(error);
        }
    } catch (IsilonException e) {
        return BiosCommandResult.createErrorResult(e);
    }
}
Also used : ServiceError(com.emc.storageos.svcs.errorhandling.model.ServiceError) IsilonSyncTargetPolicy(com.emc.storageos.isilon.restapi.IsilonSyncTargetPolicy) IsilonSyncJob(com.emc.storageos.isilon.restapi.IsilonSyncJob) IsilonSyncJobFailover(com.emc.storageos.volumecontroller.impl.isilon.job.IsilonSyncJobFailover) IsilonApi(com.emc.storageos.isilon.restapi.IsilonApi) QueueJob(com.emc.storageos.volumecontroller.impl.job.QueueJob) URISyntaxException(java.net.URISyntaxException) IsilonException(com.emc.storageos.isilon.restapi.IsilonException) DeviceControllerException(com.emc.storageos.exceptions.DeviceControllerException) IsilonException(com.emc.storageos.isilon.restapi.IsilonException)

Aggregations

DeviceControllerException (com.emc.storageos.exceptions.DeviceControllerException)1 IsilonApi (com.emc.storageos.isilon.restapi.IsilonApi)1 IsilonException (com.emc.storageos.isilon.restapi.IsilonException)1 IsilonSyncJob (com.emc.storageos.isilon.restapi.IsilonSyncJob)1 IsilonSyncTargetPolicy (com.emc.storageos.isilon.restapi.IsilonSyncTargetPolicy)1 ServiceError (com.emc.storageos.svcs.errorhandling.model.ServiceError)1 IsilonSyncJobFailover (com.emc.storageos.volumecontroller.impl.isilon.job.IsilonSyncJobFailover)1 QueueJob (com.emc.storageos.volumecontroller.impl.job.QueueJob)1 URISyntaxException (java.net.URISyntaxException)1