/*
* 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 org.apache.commons.lang.StringUtils;
import com.emc.sa.service.vipr.tasks.WaitForTasks;
import com.emc.storageos.model.block.VolumeRestRep;
import com.emc.storageos.model.block.VolumeVirtualArrayChangeParam;
import com.emc.vipr.client.Tasks;
import com.google.common.collect.Lists;
public class ChangeBlockVolumeVirtualArray extends WaitForTasks<VolumeRestRep> {
private List<URI> volumeIds;
private URI targetVirtualArrayId;
public ChangeBlockVolumeVirtualArray(List<String> volumeIds, String targetVirtualArrayId) {
this(uris(volumeIds), uri(targetVirtualArrayId));
}
public ChangeBlockVolumeVirtualArray(List<URI> volumeIds, URI targetVirtualArrayId) {
this.volumeIds = volumeIds;
this.targetVirtualArrayId = targetVirtualArrayId;
provideDetailArgs(targetVirtualArrayId, getVolumesDisplayString());
}
@Override
protected Tasks<VolumeRestRep> doExecute() throws Exception {
VolumeVirtualArrayChangeParam param = new VolumeVirtualArrayChangeParam();
param.setVirtualArray(targetVirtualArrayId);
param.setVolumes(volumeIds);
return getClient().blockVolumes().changeVirtualArrayForVolumes(param);
}
private String getVolumesDisplayString() {
List<String> volumes = Lists.newArrayList();
for (URI volumeId : volumeIds) {
volumes.add(volumeId.toString());
}
return StringUtils.join(volumes, ",");
}
}