use of com.emc.fapiclient.ws.LinkAdvancedPolicy in project coprhd-controller by CoprHD.
the class RecoverPointClient method createLinkPolicy.
/**
* Convenience method for creating a link policy object
*
* @param remote whether to set the "protect over wan" to true
*/
private ConsistencyGroupLinkPolicy createLinkPolicy(RecoverPointCGCopyType copyType, String copyMode, String rpoType, Long rpoValue) {
ConsistencyGroupLinkPolicy linkPolicy = new ConsistencyGroupLinkPolicy();
linkPolicy.setAdvancedPolicy(new LinkAdvancedPolicy());
linkPolicy.getAdvancedPolicy().setPerformLongInitialization(true);
linkPolicy.getAdvancedPolicy().setSnapshotGranularity(SnapshotGranularity.FIXED_PER_SECOND);
linkPolicy.setProtectionPolicy(new LinkProtectionPolicy());
linkPolicy.getProtectionPolicy().setBandwidthLimit(0.0);
linkPolicy.getProtectionPolicy().setCompression(WanCompression.NONE);
linkPolicy.getProtectionPolicy().setDeduplication(false);
linkPolicy.getProtectionPolicy().setMeasureLagToTargetRPA(true);
linkPolicy.getProtectionPolicy().setProtectionType(ProtectionMode.ASYNCHRONOUS);
linkPolicy.getProtectionPolicy().setReplicatingOverWAN(copyType.isRemote());
linkPolicy.getProtectionPolicy().setRpoPolicy(new RpoPolicy());
linkPolicy.getProtectionPolicy().getRpoPolicy().setAllowRegulation(false);
linkPolicy.getProtectionPolicy().getRpoPolicy().setMaximumAllowedLag(getQuantity(QuantityType.MICROSECONDS, 25000000));
linkPolicy.getProtectionPolicy().getRpoPolicy().setMinimizationType(RpoMinimizationType.IRRELEVANT);
linkPolicy.getProtectionPolicy().setSyncReplicationLatencyThresholds(new SyncReplicationThreshold());
linkPolicy.getProtectionPolicy().getSyncReplicationLatencyThresholds().setResumeSyncReplicationBelow(getQuantity(QuantityType.MICROSECONDS, 3000));
linkPolicy.getProtectionPolicy().getSyncReplicationLatencyThresholds().setStartAsyncReplicationAbove(getQuantity(QuantityType.MICROSECONDS, 5000));
linkPolicy.getProtectionPolicy().getSyncReplicationLatencyThresholds().setThresholdEnabled(false);
linkPolicy.getProtectionPolicy().setSyncReplicationThroughputThresholds(new SyncReplicationThreshold());
linkPolicy.getProtectionPolicy().getSyncReplicationThroughputThresholds().setResumeSyncReplicationBelow(getQuantity(QuantityType.KB, 35000));
linkPolicy.getProtectionPolicy().getSyncReplicationThroughputThresholds().setStartAsyncReplicationAbove(getQuantity(QuantityType.KB, 45000));
linkPolicy.getProtectionPolicy().getSyncReplicationThroughputThresholds().setThresholdEnabled(false);
linkPolicy.getProtectionPolicy().setWeight(1);
LinkProtectionPolicy linkProtectionPolicy = linkPolicy.getProtectionPolicy();
if (copyMode != null) {
logger.info("Setting CG policy of: " + copyMode);
ProtectionMode protectionMode = ProtectionMode.valueOf(copyMode);
if (protectionMode == null) {
// Default to ASYNCHRONOUS
protectionMode = ProtectionMode.ASYNCHRONOUS;
}
linkProtectionPolicy.setProtectionType(protectionMode);
}
RpoPolicy rpoPolicy = linkProtectionPolicy.getRpoPolicy();
if (rpoValue != null && rpoType != null) {
logger.info("Setting CG RPO policy of: " + rpoValue.toString() + " " + rpoType);
Quantity rpoQuantity = new Quantity();
QuantityType quantityType = QuantityType.valueOf(rpoType);
rpoQuantity.setType(quantityType);
rpoQuantity.setValue(rpoValue);
rpoPolicy.setMaximumAllowedLag(rpoQuantity);
} else if ((rpoValue == null && rpoType != null) || (rpoValue != null && rpoType == null)) {
logger.warn("RPO Policy specified only one of value and type, both need to be specified for RPO policy to be applied. Ignoring RPO policy.");
}
linkProtectionPolicy.setRpoPolicy(rpoPolicy);
linkPolicy.setProtectionPolicy(linkProtectionPolicy);
return linkPolicy;
}
use of com.emc.fapiclient.ws.LinkAdvancedPolicy in project coprhd-controller by CoprHD.
the class RecoverPointClient method setLinkPolicy.
/**
* Convenience method to set the link policy.
*
* @param remote whether to set the "protect over wan" to true
* @param prodCopyUID production copy id
* @param targetCopyUID target copy id
* @param cgUID cg id
* @throws FunctionalAPIActionFailedException_Exception
* @throws FunctionalAPIInternalError_Exception
*/
private void setLinkPolicy(boolean remote, ConsistencyGroupCopyUID prodCopyUID, ConsistencyGroupCopyUID targetCopyUID, ConsistencyGroupUID cgUID) throws FunctionalAPIActionFailedException_Exception, FunctionalAPIInternalError_Exception {
ConsistencyGroupLinkUID groupLink = new ConsistencyGroupLinkUID();
ConsistencyGroupLinkPolicy linkPolicy = new ConsistencyGroupLinkPolicy();
linkPolicy.setAdvancedPolicy(new LinkAdvancedPolicy());
linkPolicy.getAdvancedPolicy().setPerformLongInitialization(true);
linkPolicy.getAdvancedPolicy().setSnapshotGranularity(SnapshotGranularity.FIXED_PER_SECOND);
linkPolicy.setProtectionPolicy(new LinkProtectionPolicy());
linkPolicy.getProtectionPolicy().setBandwidthLimit(0.0);
linkPolicy.getProtectionPolicy().setCompression(WanCompression.NONE);
linkPolicy.getProtectionPolicy().setDeduplication(false);
linkPolicy.getProtectionPolicy().setMeasureLagToTargetRPA(true);
linkPolicy.getProtectionPolicy().setProtectionType(ProtectionMode.ASYNCHRONOUS);
linkPolicy.getProtectionPolicy().setReplicatingOverWAN(remote);
linkPolicy.getProtectionPolicy().setRpoPolicy(new RpoPolicy());
linkPolicy.getProtectionPolicy().getRpoPolicy().setAllowRegulation(false);
linkPolicy.getProtectionPolicy().getRpoPolicy().setMaximumAllowedLag(getQuantity(QuantityType.MICROSECONDS, 25000000));
linkPolicy.getProtectionPolicy().getRpoPolicy().setMinimizationType(RpoMinimizationType.IRRELEVANT);
linkPolicy.getProtectionPolicy().setSyncReplicationLatencyThresholds(new SyncReplicationThreshold());
linkPolicy.getProtectionPolicy().getSyncReplicationLatencyThresholds().setResumeSyncReplicationBelow(getQuantity(QuantityType.MICROSECONDS, 3000));
linkPolicy.getProtectionPolicy().getSyncReplicationLatencyThresholds().setStartAsyncReplicationAbove(getQuantity(QuantityType.MICROSECONDS, 5000));
linkPolicy.getProtectionPolicy().getSyncReplicationLatencyThresholds().setThresholdEnabled(false);
linkPolicy.getProtectionPolicy().setSyncReplicationThroughputThresholds(new SyncReplicationThreshold());
linkPolicy.getProtectionPolicy().getSyncReplicationThroughputThresholds().setResumeSyncReplicationBelow(getQuantity(QuantityType.KB, 35000));
linkPolicy.getProtectionPolicy().getSyncReplicationThroughputThresholds().setStartAsyncReplicationAbove(getQuantity(QuantityType.KB, 45000));
linkPolicy.getProtectionPolicy().getSyncReplicationThroughputThresholds().setThresholdEnabled(false);
linkPolicy.getProtectionPolicy().setWeight(1);
groupLink.setFirstCopy(prodCopyUID.getGlobalCopyUID());
groupLink.setSecondCopy(targetCopyUID.getGlobalCopyUID());
groupLink.setGroupUID(cgUID);
functionalAPI.addConsistencyGroupLink(groupLink, linkPolicy);
waitForRpOperation();
}
Aggregations