/* * Copyright (c) 2012-2015 EMC Corporation * All Rights Reserved */ package com.emc.sa.service.vipr.block.tasks; import java.net.URI; import com.emc.sa.service.vipr.tasks.WaitForTasks; import com.emc.storageos.model.block.BlockConsistencyGroupRestRep; import com.emc.storageos.model.block.CopiesParam; import com.emc.storageos.model.block.Copy; import com.emc.vipr.client.Tasks; public class FailoverBlockConsistencyGroup extends WaitForTasks<BlockConsistencyGroupRestRep> { // The consistency group private final URI consistencyGroupId; // The target virtual array private final URI failoverTarget; private final String type; private String pointInTime; public FailoverBlockConsistencyGroup(URI consistencyGroupId, URI failoverTarget) { this(consistencyGroupId, failoverTarget, "rp"); } public FailoverBlockConsistencyGroup(URI consistencyGroupId, URI failoverTarget, String type, String pointInTime) { this.consistencyGroupId = consistencyGroupId; this.failoverTarget = failoverTarget; this.type = type; this.pointInTime = pointInTime; provideDetailArgs(consistencyGroupId, failoverTarget, type); } public FailoverBlockConsistencyGroup(URI consistencyGroupId, URI failoverTarget, String type) { this.consistencyGroupId = consistencyGroupId; this.failoverTarget = failoverTarget; this.type = type; provideDetailArgs(consistencyGroupId, failoverTarget, type); } @Override protected Tasks<BlockConsistencyGroupRestRep> doExecute() throws Exception { Copy copy = new Copy(); copy.setType(type); copy.setCopyID(failoverTarget); if (pointInTime != null) { copy.setPointInTime(pointInTime); } CopiesParam param = new CopiesParam(); param.getCopies().add(copy); return getClient().blockConsistencyGroups().failover(consistencyGroupId, param); } }