/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.emc.sa.service.vipr.file.tasks; import java.net.URI; import com.emc.sa.service.vipr.tasks.WaitForTask; import com.emc.sa.util.DiskSizeConversionUtils; import com.emc.storageos.model.file.FileShareRestRep; import com.emc.storageos.model.file.FileSystemParam; import com.emc.vipr.client.Task; public class CreateFileSystem extends WaitForTask<FileShareRestRep> { private final String label; private final double sizeInGB; private final URI vpoolId; private final URI varrayId; private final URI projectId; private final int advisoryLimit; private final int softLimit; private final int gracePeriod; public CreateFileSystem(String label, double sizeInGB, int advisoryLimit, int softLimit, int gracePeriod, String vpoolId, String varrayId, String projectId) { this(label, sizeInGB, advisoryLimit, softLimit, gracePeriod,uri(vpoolId), uri(varrayId), uri(projectId)); } public CreateFileSystem(String label, double sizeInGB, String vpoolId, String varrayId, String projectId) { this(label, sizeInGB, uri(vpoolId), uri(varrayId), uri(projectId)); } public CreateFileSystem(String label, double sizeInGB, URI vpoolId, URI varrayId, URI projectId) { this(label, sizeInGB, 0, 0, 0,vpoolId, varrayId, projectId); } public CreateFileSystem(String label, double sizeInGB, int advisoryLimit, int softLimit, int gracePeriod, URI vpoolId, URI varrayId, URI projectId) { this.label = label; this.sizeInGB = sizeInGB; this.vpoolId = vpoolId; this.varrayId = varrayId; this.projectId = projectId; this.advisoryLimit= advisoryLimit; this.softLimit = softLimit; this.gracePeriod = gracePeriod; provideDetailArgs(label, sizeInGB, advisoryLimit, softLimit, gracePeriod ,vpoolId, varrayId, projectId); } @Override protected Task<FileShareRestRep> doExecute() throws Exception { FileSystemParam input = new FileSystemParam(); input.setLabel(label); input.setSize(String.valueOf(DiskSizeConversionUtils.gbToBytes(sizeInGB))); input.setVpool(vpoolId); input.setVarray(varrayId); input.setNotificationLimit(advisoryLimit); input.setSoftLimit(softLimit); input.setSoftGrace(gracePeriod); return getClient().fileSystems().create(projectId, input); } }