/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.emc.sa.service.vipr.block.tasks;
import java.net.URI;
import java.util.List;
import com.emc.sa.service.vipr.tasks.WaitForTasks;
import com.emc.storageos.db.client.util.NullColumnValueGetter;
import com.emc.storageos.model.block.VolumeRestRep;
import com.emc.storageos.model.block.VolumeVirtualPoolChangeParam;
import com.emc.vipr.client.Tasks;
import com.google.common.collect.Lists;
public class ChangeBlockVolumeVirtualPool extends WaitForTasks<VolumeRestRep> {
private List<URI> volumeIds;
private URI targetVirtualPoolId;
private URI consistencyGroup;
private Boolean suspendOnMigration;
private boolean forceFlag = false;
public ChangeBlockVolumeVirtualPool(URI volumeId, URI targetVirtualPoolId, URI consistencyGroup, Boolean suspendOnMigration) {
this.volumeIds = Lists.newArrayList(volumeId);
this.targetVirtualPoolId = targetVirtualPoolId;
this.consistencyGroup = consistencyGroup;
this.suspendOnMigration = suspendOnMigration;
provideDetailArgs(volumeId, targetVirtualPoolId, consistencyGroup);
}
public ChangeBlockVolumeVirtualPool(List<URI> volumeIds, URI targetVirtualPoolId, URI consistencyGroup, Boolean suspendOnMigration) {
this.volumeIds = volumeIds;
this.targetVirtualPoolId = targetVirtualPoolId;
this.consistencyGroup = consistencyGroup;
this.suspendOnMigration = suspendOnMigration;
provideDetailArgs(volumeIds, targetVirtualPoolId, consistencyGroup);
}
public ChangeBlockVolumeVirtualPool(List<URI> volumeIds, URI targetVirtualPoolId, URI consistencyGroup, Boolean suspendOnMigration, boolean forceFlag) {
this.volumeIds = volumeIds;
this.targetVirtualPoolId = targetVirtualPoolId;
this.consistencyGroup = consistencyGroup;
this.suspendOnMigration = suspendOnMigration;
this.forceFlag = forceFlag;
provideDetailArgs(volumeIds, targetVirtualPoolId, consistencyGroup);
}
@Override
protected Tasks<VolumeRestRep> doExecute() throws Exception {
VolumeVirtualPoolChangeParam input = new VolumeVirtualPoolChangeParam();
input.setVolumes(volumeIds);
input.setVirtualPool(targetVirtualPoolId);
input.setForceFlag(forceFlag);
if (!NullColumnValueGetter.isNullURI(consistencyGroup)) {
input.setConsistencyGroup(consistencyGroup);
}
input.setMigrationSuspendBeforeCommit(suspendOnMigration);
input.setMigrationSuspendBeforeDeleteSource(suspendOnMigration);
return getClient().blockVolumes().changeVirtualPool(input);
}
}