/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package util; import static com.emc.vipr.client.core.util.ResourceUtils.uri; import java.net.URI; import java.util.List; import java.util.Set; import com.emc.storageos.db.client.model.VolumeGroup; import com.emc.storageos.model.NamedRelatedResourceRep; import com.emc.storageos.model.TaskList; import com.emc.storageos.model.application.VolumeGroupCreateParam; import com.emc.storageos.model.application.VolumeGroupRestRep; import com.emc.storageos.model.application.VolumeGroupUpdateParam; import com.emc.vipr.client.core.filters.ResourceFilter; import com.google.common.collect.Lists; public class MobilityGroupSupportUtil { public static List<NamedRelatedResourceRep> getMobilityGroups() { List<VolumeGroupRestRep> volumeGroups = BourneUtil.getViprClient().application() .getApplications(new ResourceFilter<VolumeGroupRestRep>() { @Override public boolean acceptId(URI id) { return true; } @Override public boolean accept(VolumeGroupRestRep item) { return !item.getRoles().isEmpty() && item.getRoles().contains(VolumeGroup.VolumeGroupRole.MOBILITY.name()); } }); List<NamedRelatedResourceRep> reps = Lists.newArrayList(); for (VolumeGroupRestRep vg : volumeGroups) { reps.add(com.emc.vipr.client.core.util.ResourceUtils.createNamedRef(vg)); } return reps; } public static VolumeGroupRestRep createMobilityGroup(String name, String description, Set<String> roles, String migrationGroupBy, String migrationType) { VolumeGroupCreateParam create = new VolumeGroupCreateParam(); create.setName(name); create.setDescription(description); create.setRoles(roles); create.setMigrationGroupBy(migrationGroupBy); create.setMigrationType(migrationType); return BourneUtil.getViprClient().application().createApplication(create); } public static void deleteMobilityGroup(URI id) { BourneUtil.getViprClient().application().deleteApplication(id); } public static TaskList updateMobilityGroup(String name, String description, String id) { VolumeGroupUpdateParam update = new VolumeGroupUpdateParam(); if (!name.isEmpty()) { update.setName(name); } if (!description.isEmpty()) { update.setDescription(description); } return BourneUtil.getViprClient().application().updateApplication(uri(id), update); } public static VolumeGroupRestRep getMobilityGroup(String id) { return BourneUtil.getViprClient().application().getApplication(uri(id)); } }