/*
* 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.ViPRExecutionTask;
import com.emc.storageos.model.block.export.ExportCreateParam;
import com.emc.storageos.model.block.export.ExportGroupRestRep;
import com.emc.storageos.model.block.export.VolumeParam;
import com.emc.vipr.client.Task;
public class CreateExportNoWait extends ViPRExecutionTask<Task<ExportGroupRestRep>> {
private String name;
private URI varrayId;
private URI projectId;
private List<URI> volumeIds;
private Integer hlu;
private URI hostId;
private URI clusterId;
public CreateExportNoWait(String name, URI varrayId, URI projectId, List<URI> volumeIds, Integer hlu, String hostName, URI hostId,
URI clusterId) {
this.name = name;
this.varrayId = varrayId;
this.projectId = projectId;
this.volumeIds = volumeIds;
this.hlu = hlu;
this.hostId = hostId;
this.clusterId = clusterId;
if (clusterId != null) {
provideDetailArgs(name, getMessage("CreateExport.cluster"), hostName, volumeIds, hlu);
}
else {
provideDetailArgs(name, getMessage("CreateExport.hostname"), hostName, volumeIds, hlu);
}
}
@Override
public Task<ExportGroupRestRep> executeTask() throws Exception {
ExportCreateParam export = new ExportCreateParam();
export.setName(name);
export.setVarray(varrayId);
export.setProject(projectId);
Integer currentHlu = hlu;
for (URI volumeId : volumeIds) {
VolumeParam volume = new VolumeParam(volumeId);
if (currentHlu != null) {
volume.setLun(currentHlu);
}
if ((currentHlu != null) && (currentHlu > -1)) {
currentHlu++;
}
export.getVolumes().add(volume);
}
if (clusterId != null) {
export.addCluster(clusterId);
export.setType("Cluster");
}
else {
export.addHost(hostId);
export.setType("Host");
}
Task<ExportGroupRestRep> task = getClient().blockExports().create(export);
addOrderIdTag(task.getTaskResource().getId());
return task;
}
}