/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.emc.sa.service.vipr.block.tasks; import java.net.URI; import com.emc.sa.service.vipr.tasks.ViPRExecutionTask; import com.emc.storageos.model.block.VolumeCreate; import com.emc.storageos.model.block.VolumeRestRep; import com.emc.vipr.client.Task; import com.emc.vipr.client.Tasks; public class CreateBlockVolumeByName extends ViPRExecutionTask<Task<VolumeRestRep>> { private URI vpoolId; private URI varrayId; private URI projectId; private String size; private URI consistencyGroupId; private String volumeName; public CreateBlockVolumeByName(String projectId, String varrayId, String vpoolId, String size, String consistencyGroupId, String volumeName) { this(uri(projectId), uri(varrayId), uri(vpoolId), size, uri(consistencyGroupId), volumeName); } public CreateBlockVolumeByName(URI projectId, URI varrayId, URI vpoolId, String size, URI consistencyGroupId, String volumeName) { this.vpoolId = vpoolId; this.varrayId = varrayId; this.projectId = projectId; this.size = size; this.consistencyGroupId = consistencyGroupId; this.volumeName = volumeName; provideDetailArgs(projectId, varrayId, vpoolId, size, volumeName); } @Override public Task<VolumeRestRep> executeTask() throws Exception { VolumeCreate create = new VolumeCreate(); create.setVpool(vpoolId); create.setVarray(varrayId); create.setProject(projectId); create.setSize(size); create.setConsistencyGroup(consistencyGroupId); create.setCount(1); create.setName(volumeName); Tasks<VolumeRestRep> tasksForVolume = getClient().blockVolumes().create(create); if (tasksForVolume.getTasks().size() != 1) { throw new IllegalStateException("Invalid number of tasks returned from API: " + tasksForVolume.getTasks().size()); } addOrderIdTag(tasksForVolume.firstTask().getTaskResource().getId()); return tasksForVolume.firstTask(); } }