Search in sources :

Example 6 with VirtualPoolRemoteProtectionVirtualArraySettingsParam

use of com.emc.storageos.model.vpool.VirtualPoolRemoteProtectionVirtualArraySettingsParam in project coprhd-controller by CoprHD.

the class BlockVirtualPoolForm method doLoad.

protected void doLoad(BlockVirtualPoolRestRep virtualPool) {
    loadCommon(virtualPool);
    minPaths = virtualPool.getMinPaths();
    maxPaths = virtualPool.getMaxPaths();
    initiatorPaths = virtualPool.getPathsPerInitiator();
    driveType = virtualPool.getDriveType();
    autoTierPolicy = virtualPool.getAutoTieringPolicyName();
    enableCompression = virtualPool.getCompressionEnabled();
    expandable = virtualPool.getExpandable();
    fastExpansion = virtualPool.getFastExpansion();
    multiVolumeConsistency = virtualPool.getMultiVolumeConsistent();
    thinPreAllocationPercent = virtualPool.getThinVolumePreAllocationPercentage();
    uniqueAutoTierPolicyNames = virtualPool.getUniquePolicyNames();
    raidLevels = defaultSet(virtualPool.getRaidLevels());
    hostIOLimitBandwidth = virtualPool.getHostIOLimitBandwidth();
    hostIOLimitIOPs = virtualPool.getHostIOLimitIOPs();
    enableDeDup = virtualPool.getDedupCapable();
    placementPolicy = virtualPool.getPlacementPolicy();
    VirtualPoolHighAvailabilityParam highAvailabilityType = virtualPool.getHighAvailability();
    if (highAvailabilityType != null && HighAvailability.isHighAvailability(highAvailabilityType.getType())) {
        highAvailability = highAvailabilityType.getType();
        if (highAvailability.equals(HighAvailability.VPLEX_LOCAL)) {
            protectSourceSite = true;
        }
        enableAutoCrossConnExport = highAvailabilityType.getAutoCrossConnectExport();
        if (highAvailabilityType.getHaVirtualArrayVirtualPool() != null) {
            haVirtualArray = asString(highAvailabilityType.getHaVirtualArrayVirtualPool().getVirtualArray());
            haVirtualPool = asString(highAvailabilityType.getHaVirtualArrayVirtualPool().getVirtualPool());
            Boolean activeProtectionAtHASite = Boolean.TRUE.equals(highAvailabilityType.getHaVirtualArrayVirtualPool().getActiveProtectionAtHASite());
            Boolean metroPoint = Boolean.TRUE.equals(highAvailabilityType.getMetroPoint());
            if (metroPoint) {
                protectSourceSite = true;
                protectHASite = true;
                if (activeProtectionAtHASite) {
                    activeSite = HighAvailability.VPLEX_HA.toString();
                } else {
                    activeSite = HighAvailability.VPLEX_SOURCE.toString();
                    protectSourceSite = true;
                }
            } else {
                protectHASite = activeProtectionAtHASite;
                protectSourceSite = !protectHASite;
            }
        } else {
            protectSourceSite = true;
        }
    } else {
        protectSourceSite = true;
    }
    BlockVirtualPoolProtectionParam protection = virtualPool.getProtection();
    if (protection != null) {
        if (protection.getSnapshots() != null) {
            maxSnapshots = protection.getSnapshots().getMaxSnapshots();
        }
        if (protection.getContinuousCopies() != null) {
            maxContinuousCopies = protection.getContinuousCopies().getMaxMirrors();
            continuousCopyVirtualPool = asString(protection.getContinuousCopies().getVpool());
        }
        VirtualPoolProtectionRPParam recoverPoint = protection.getRecoverPoint();
        if (recoverPoint != null) {
            remoteProtection = ProtectionSystemTypes.RECOVERPOINT;
            ProtectionSourcePolicy sourcePolicy = recoverPoint.getSourcePolicy();
            if (sourcePolicy != null) {
                String journalSize = sourcePolicy.getJournalSize();
                rpJournalSizeUnit = RPCopyForm.parseJournalSizeUnit(journalSize);
                rpJournalSize = StringUtils.defaultIfBlank(RPCopyForm.parseJournalSize(journalSize, rpJournalSizeUnit), RPCopyForm.JOURNAL_SIZE_MIN);
                rpRemoteCopyMode = sourcePolicy.getRemoteCopyMode();
                rpRpoValue = sourcePolicy.getRpoValue();
                rpRpoType = sourcePolicy.getRpoType();
                if (protectHASite != null && protectSourceSite != null && protectHASite && protectSourceSite) {
                    // Backend will take care of swapping
                    // if(activeSite.equalsIgnoreCase(HighAvailability.VPLEX_SOURCE)){
                    sourceJournalVArray = asString(sourcePolicy.getJournalVarray());
                    sourceJournalVPool = asString(sourcePolicy.getJournalVpool());
                    haJournalVArray = asString(sourcePolicy.getStandbyJournalVarray());
                    haJournalVPool = asString(sourcePolicy.getStandbyJournalVpool());
                } else {
                    if (protectHASite != null && protectHASite) {
                        haJournalVArray = asString(sourcePolicy.getJournalVarray());
                        haJournalVPool = asString(sourcePolicy.getJournalVpool());
                    } else if (protectSourceSite != null && protectSourceSite) {
                        sourceJournalVArray = asString(sourcePolicy.getJournalVarray());
                        sourceJournalVPool = asString(sourcePolicy.getJournalVpool());
                    }
                }
            }
            List<RPCopyForm> rpCopyForms = Lists.newArrayList();
            for (VirtualPoolProtectionVirtualArraySettingsParam copy : recoverPoint.getCopies()) {
                RPCopyForm rpCopy = new RPCopyForm();
                rpCopy.load(copy);
                rpCopyForms.add(rpCopy);
            }
            rpCopies = rpCopyForms.toArray(new RPCopyForm[0]);
            rpCopiesJson = new Gson().toJson(rpCopies);
        }
        VirtualPoolRemoteMirrorProtectionParam srdf = protection.getRemoteCopies();
        if (srdf != null) {
            remoteProtection = ProtectionSystemTypes.SRDF;
            List<SrdfCopyForm> copyForms = Lists.newArrayList();
            for (VirtualPoolRemoteProtectionVirtualArraySettingsParam copy : srdf.getRemoteCopySettings()) {
                srdfCopyMode = copy.getRemoteCopyMode();
                SrdfCopyForm srdfCopyForm = new SrdfCopyForm();
                srdfCopyForm.load(copy);
                copyForms.add(srdfCopyForm);
            }
            srdfCopies = copyForms.toArray(new SrdfCopyForm[0]);
            Gson gson = new Gson();
            srdfCopiesJson = gson.toJson(srdfCopies);
        } else {
            srdfCopiesJson = "[]";
        }
    }
}
Also used : VirtualPoolRemoteProtectionVirtualArraySettingsParam(com.emc.storageos.model.vpool.VirtualPoolRemoteProtectionVirtualArraySettingsParam) BlockVirtualPoolProtectionParam(com.emc.storageos.model.vpool.BlockVirtualPoolProtectionParam) VirtualPoolProtectionRPParam(com.emc.storageos.model.vpool.VirtualPoolProtectionRPParam) Gson(com.google.gson.Gson) ResourceUtils.asString(com.emc.vipr.client.core.util.ResourceUtils.asString) VirtualPoolRemoteMirrorProtectionParam(com.emc.storageos.model.vpool.VirtualPoolRemoteMirrorProtectionParam) VirtualPoolProtectionVirtualArraySettingsParam(com.emc.storageos.model.vpool.VirtualPoolProtectionVirtualArraySettingsParam) ProtectionSourcePolicy(com.emc.storageos.model.vpool.ProtectionSourcePolicy) VirtualPoolHighAvailabilityParam(com.emc.storageos.model.vpool.VirtualPoolHighAvailabilityParam)

Example 7 with VirtualPoolRemoteProtectionVirtualArraySettingsParam

use of com.emc.storageos.model.vpool.VirtualPoolRemoteProtectionVirtualArraySettingsParam in project coprhd-controller by CoprHD.

the class ReplicationCopyForm method write.

public VirtualPoolRemoteProtectionVirtualArraySettingsParam write(String remoteCopyMode) {
    VirtualPoolRemoteProtectionVirtualArraySettingsParam param = new VirtualPoolRemoteProtectionVirtualArraySettingsParam();
    param.setVarray(uri(virtualArray));
    param.setVpool(uri(virtualPool));
    param.setRemoteCopyMode(remoteCopyMode);
    return param;
}
Also used : VirtualPoolRemoteProtectionVirtualArraySettingsParam(com.emc.storageos.model.vpool.VirtualPoolRemoteProtectionVirtualArraySettingsParam)

Example 8 with VirtualPoolRemoteProtectionVirtualArraySettingsParam

use of com.emc.storageos.model.vpool.VirtualPoolRemoteProtectionVirtualArraySettingsParam in project coprhd-controller by CoprHD.

the class SrdfCopyForm method write.

public VirtualPoolRemoteProtectionVirtualArraySettingsParam write(String remoteCopyMode) {
    VirtualPoolRemoteProtectionVirtualArraySettingsParam param = new VirtualPoolRemoteProtectionVirtualArraySettingsParam();
    param.setVarray(uri(virtualArray));
    param.setVpool(uri(virtualPool));
    param.setRemoteCopyMode(remoteCopyMode);
    return param;
}
Also used : VirtualPoolRemoteProtectionVirtualArraySettingsParam(com.emc.storageos.model.vpool.VirtualPoolRemoteProtectionVirtualArraySettingsParam)

Example 9 with VirtualPoolRemoteProtectionVirtualArraySettingsParam

use of com.emc.storageos.model.vpool.VirtualPoolRemoteProtectionVirtualArraySettingsParam in project coprhd-controller by CoprHD.

the class BlockVirtualPoolForm method apply.

private BlockVirtualPoolBuilder apply(BlockVirtualPoolBuilder builder) {
    applyCommon(builder);
    builder.setMinPaths(defaultInt(minPaths, 1));
    builder.setMaxPaths(defaultInt(maxPaths, 1));
    builder.setPathsPerInitiator(defaultInt(initiatorPaths, 1));
    builder.setDriveType(driveType);
    builder.setAutoTieringPolicyName(autoTierPolicy);
    builder.setCompressionEnabled(defaultBoolean(enableCompression));
    builder.setExpandable(defaultBoolean(expandable));
    builder.setFastExpansion(defaultBoolean(fastExpansion));
    builder.setMultiVolumeConsistency(defaultBoolean(multiVolumeConsistency));
    builder.setSnapshots(maxSnapshots);
    builder.setContinuousCopies(maxContinuousCopies, uri(continuousCopyVirtualPool));
    builder.setThinVolumePreAllocationPercentage(thinPreAllocationPercent);
    builder.setUniquePolicyNames(defaultBoolean(uniqueAutoTierPolicyNames));
    builder.setRaidLevels(raidLevels);
    builder.setHostIOLimitBandwidth(defaultInt(hostIOLimitBandwidth, 0));
    builder.setHostIOLimitIOPs(defaultInt(hostIOLimitIOPs, 0));
    builder.setDedupCapable(defaultBoolean(enableDeDup));
    builder.setPlacementPolicy(placementPolicy);
    if (ProtectionSystemTypes.isRecoverPoint(remoteProtection)) {
        builder.enableRecoverPoint(RPCopyForm.formatJournalSize(rpJournalSize, rpJournalSizeUnit));
        builder.setRecoverPointRemoteCopyMode(rpRemoteCopyMode);
        builder.setRecoverPointRpo(rpRpoValue, rpRpoType);
        Set<VirtualPoolProtectionVirtualArraySettingsParam> copies = Sets.newLinkedHashSet();
        for (RPCopyForm rpCopy : rpCopies) {
            if (rpCopy != null && rpCopy.isEnabled()) {
                copies.add(rpCopy.write());
            }
        }
        builder.setRecoverPointCopies(copies);
        // Set journal varray and vpool default for source
        builder.setJournalVarrayAndVpool(uri(sourceJournalVArray), uri(sourceJournalVPool));
    }
    if (ProtectionSystemTypes.isSRDF(remoteProtection)) {
        if (srdfCopies != null) {
            List<VirtualPoolRemoteProtectionVirtualArraySettingsParam> copies = Lists.newArrayList();
            for (SrdfCopyForm srdfCopyForm : srdfCopies) {
                if (srdfCopyForm != null && srdfCopyForm.isEnabled()) {
                    copies.add(srdfCopyForm.write(srdfCopyMode));
                }
            }
            builder.setRemoteCopies(copies);
        }
    }
    if (HighAvailability.isHighAvailability(highAvailability)) {
        URI virtualArrayId = uri(haVirtualArray);
        URI virtualPoolId = uri(haVirtualPool);
        boolean activeProtectionAtHASite = BooleanUtils.isTrue(protectHASite);
        boolean metroPoint = false;
        if (BooleanUtils.isTrue(protectSourceSite) && BooleanUtils.isTrue(protectHASite)) {
            metroPoint = true;
            activeProtectionAtHASite = StringUtils.equalsIgnoreCase(activeSite, HighAvailability.VPLEX_HA);
            builder.setJournalVarrayAndVpool(uri(sourceJournalVArray), uri(sourceJournalVPool));
            builder.setStandByJournalVArrayVpool(uri(haJournalVArray), uri(haJournalVPool));
        } else {
            if (activeProtectionAtHASite) {
                builder.setJournalVarrayAndVpool(uri(haJournalVArray), uri(haJournalVPool));
            } else {
                builder.setJournalVarrayAndVpool(uri(sourceJournalVArray), uri(sourceJournalVPool));
            }
            // Reset the standby varray/vpool values
            builder.setStandByJournalVArrayVpool(null, null);
        }
        builder.setHighAvailability(highAvailability, enableAutoCrossConnExport, virtualArrayId, virtualPoolId, activeProtectionAtHASite, metroPoint);
    }
    return builder;
}
Also used : VirtualPoolRemoteProtectionVirtualArraySettingsParam(com.emc.storageos.model.vpool.VirtualPoolRemoteProtectionVirtualArraySettingsParam) VirtualPoolProtectionVirtualArraySettingsParam(com.emc.storageos.model.vpool.VirtualPoolProtectionVirtualArraySettingsParam) URI(java.net.URI)

Example 10 with VirtualPoolRemoteProtectionVirtualArraySettingsParam

use of com.emc.storageos.model.vpool.VirtualPoolRemoteProtectionVirtualArraySettingsParam in project coprhd-controller by CoprHD.

the class RemoteMirrorProtectionValidator method checkForVPlexProtectionEnabled.

/**
 * check RP or VPlex enabled in VPool
 *
 * @param createParam
 */
private void checkForVPlexProtectionEnabled(final BlockVirtualPoolParam createParam, DbClient dbClient) {
    // RP not allowed if SRDF Protection is specified in VPOOL
    if (null != createParam.getProtection() && null != createParam.getProtection().getRecoverPoint() && null != createParam.getProtection().getRecoverPoint().getCopies() && !createParam.getProtection().getRecoverPoint().getCopies().isEmpty()) {
        throw APIException.badRequests.parameterRPNotSupportedWithSRDF();
    }
    // VPLEX checks with SRDF
    if (createParam.specifiesHighAvailability()) {
        // SRDF Copy Mode Active not supported with Vplex
        if (createParam.hasRemoteCopyProtection()) {
            for (VirtualPoolRemoteProtectionVirtualArraySettingsParam remoteSettings : createParam.getProtection().getRemoteCopies().getRemoteCopySettings()) {
                if (Mode.ACTIVE.name().equals(remoteSettings.getRemoteCopyMode())) {
                    throw APIException.badRequests.vplexNotSupportedWithSRDFActive();
                }
                if (null != remoteSettings.getVpool()) {
                    URI uri = remoteSettings.getVpool();
                    VirtualPool vpool = dbClient.queryObject(VirtualPool.class, uri);
                    if (vpool != null && VirtualPool.vPoolSpecifiesHighAvailabilityDistributed(vpool)) {
                        throw APIException.badRequests.vplexDistributedNotSupportedOnSRDFTarget();
                    }
                }
            }
        }
    }
}
Also used : VirtualPoolRemoteProtectionVirtualArraySettingsParam(com.emc.storageos.model.vpool.VirtualPoolRemoteProtectionVirtualArraySettingsParam) VirtualPool(com.emc.storageos.db.client.model.VirtualPool) URI(java.net.URI)

Aggregations

VirtualPoolRemoteProtectionVirtualArraySettingsParam (com.emc.storageos.model.vpool.VirtualPoolRemoteProtectionVirtualArraySettingsParam)12 VirtualPool (com.emc.storageos.db.client.model.VirtualPool)5 URI (java.net.URI)5 VirtualPoolProtectionVirtualArraySettingsParam (com.emc.storageos.model.vpool.VirtualPoolProtectionVirtualArraySettingsParam)4 StringMap (com.emc.storageos.db.client.model.StringMap)3 VpoolRemoteCopyProtectionSettings (com.emc.storageos.db.client.model.VpoolRemoteCopyProtectionSettings)3 ProtectionSourcePolicy (com.emc.storageos.model.vpool.ProtectionSourcePolicy)3 StringSet (com.emc.storageos.db.client.model.StringSet)2 StringSetMap (com.emc.storageos.db.client.model.StringSetMap)2 VirtualArray (com.emc.storageos.db.client.model.VirtualArray)2 VpoolProtectionVarraySettings (com.emc.storageos.db.client.model.VpoolProtectionVarraySettings)2 BlockVirtualPoolProtectionParam (com.emc.storageos.model.vpool.BlockVirtualPoolProtectionParam)2 VirtualPoolHighAvailabilityParam (com.emc.storageos.model.vpool.VirtualPoolHighAvailabilityParam)2 VirtualPoolProtectionRPParam (com.emc.storageos.model.vpool.VirtualPoolProtectionRPParam)2 VirtualPoolRemoteMirrorProtectionParam (com.emc.storageos.model.vpool.VirtualPoolRemoteMirrorProtectionParam)2 ArrayList (java.util.ArrayList)2 VirtualPoolMapper.toBlockVirtualPool (com.emc.storageos.api.mapper.VirtualPoolMapper.toBlockVirtualPool)1 NamedURI (com.emc.storageos.db.client.model.NamedURI)1 BlockVirtualPoolRestRep (com.emc.storageos.model.vpool.BlockVirtualPoolRestRep)1 ProtectionCopyPolicy (com.emc.storageos.model.vpool.ProtectionCopyPolicy)1