/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.sa.asset.providers; import static com.emc.sa.asset.providers.BlockProvider.getVolumeDetails; import static com.emc.sa.asset.providers.BlockProvider.isInConsistencyGroup; import static com.emc.sa.asset.providers.BlockProvider.listVolumes; import static com.emc.sa.asset.providers.BlockProviderUtils.getVolumePersonality; import static com.emc.sa.asset.providers.BlockProviderUtils.isLocalSnapshotSupported; import static com.emc.sa.asset.providers.BlockProviderUtils.isRPSourceVolume; import static com.emc.sa.asset.providers.BlockProviderUtils.isRPTargetVolume; import java.net.URI; import java.net.URISyntaxException; import java.util.List; import java.util.Map; import org.apache.log4j.Level; import org.apache.log4j.Logger; import com.emc.sa.asset.providers.BlockProvider.VolumeDetail; import com.emc.storageos.model.block.VolumeRestRep; import com.emc.storageos.model.project.ProjectRestRep; import com.emc.vipr.client.ViPRCoreClient; import com.emc.vipr.client.core.util.ResourceUtils; import com.emc.vipr.model.catalog.AssetOption; import com.google.common.collect.Lists; public final class TestBlockProviderFilter { static void filter(ViPRCoreClient client, URI project) { List<VolumeRestRep> volumes = listVolumes(client, project); List<VolumeDetail> volumeDetails = getVolumeDetails(client, volumes); Map<URI, VolumeRestRep> volumeNames = ResourceUtils.mapById(volumes); List<AssetOption> options = Lists.newArrayList(); for (VolumeDetail detail : volumeDetails) { boolean localSnapSupported = isLocalSnapshotSupported(detail.vpool); boolean isRPTargetVolume = isRPTargetVolume(detail.volume); boolean isRPSourceVolume = isRPSourceVolume(detail.volume); boolean isInConsistencyGroup = isInConsistencyGroup(detail.volume); if (isRPSourceVolume || (localSnapSupported && (!isInConsistencyGroup || isRPTargetVolume))) { options.add(BlockProvider.createVolumeOption(client, null, detail.volume, volumeNames)); System.out.println("\t* " + detail.volume.getName()); } else { System.out.println("\t" + detail.volume.getName()); } String extra = String.format( "[localSnapSupported: %s, isRPTargetVolume: %s, isRPSourceVolume: %s, isInConsistencyGroup: %s]", localSnapSupported, isRPTargetVolume, isRPSourceVolume, isInConsistencyGroup); System.out.println(String.format("\t\tpersonality:[ %s ], filter:[ %s ]", getVolumePersonality(detail.volume), extra)); } } public static void main(String[] args) throws URISyntaxException { Logger.getRootLogger().setLevel(Level.OFF); ViPRCoreClient client = new ViPRCoreClient("host", true).withLogin("root", "password"); try { for (ProjectRestRep project : client.projects().getByUserTenant()) { System.out.println("Project : " + project.getName()); filter(client, project.getId()); System.out.println(); } } finally { client.auth().logout(); } } }