/* * Copyright (c) 2016 EMC * All Rights Reserved */ package com.emc.sa.service.vipr.migration; import java.net.URI; import java.util.List; import com.emc.sa.engine.bind.Param; import com.emc.sa.engine.service.Service; import com.emc.sa.service.ServiceParams; import com.emc.sa.service.vipr.ViPRService; import com.emc.sa.service.vipr.migration.tasks.RemoveClustersFromMobilityGroup; import com.emc.sa.service.vipr.migration.tasks.RemoveHostsFromMobilityGroup; import com.emc.sa.service.vipr.migration.tasks.RemoveVolumesFromMobilityGroup; import com.emc.storageos.db.client.model.VolumeGroup; import com.emc.storageos.model.DataObjectRestRep; import com.emc.storageos.model.application.VolumeGroupRestRep; import com.emc.vipr.client.Tasks; @Service("RemoveResourcesFromMobilityGroup") public class RemoveResourcesFromMobilityGroupService extends ViPRService { @Param(ServiceParams.MOBILITY_GROUP) private URI mobilityGroupId; @Param(ServiceParams.MOBILITY_GROUP_RESOURCES) private List<String> resourceIds; private VolumeGroupRestRep mobilityGroup; @Override public void precheck() throws Exception { mobilityGroup = getClient().application().get(mobilityGroupId); } @Override public void execute() throws Exception { Tasks<? extends DataObjectRestRep> tasks = null; if (mobilityGroup.getMigrationGroupBy().equals(VolumeGroup.MigrationGroupBy.VOLUMES.name())) { tasks = execute(new RemoveVolumesFromMobilityGroup(mobilityGroupId, uris(resourceIds))); } else if (mobilityGroup.getMigrationGroupBy().equals(VolumeGroup.MigrationGroupBy.HOSTS.name())) { tasks = execute(new RemoveHostsFromMobilityGroup(mobilityGroupId, uris(resourceIds))); } else if (mobilityGroup.getMigrationGroupBy().equals(VolumeGroup.MigrationGroupBy.CLUSTERS.name())) { tasks = execute(new RemoveClustersFromMobilityGroup(mobilityGroupId, uris(resourceIds))); } if (tasks != null) { addAffectedResources(tasks); } } }