/*
* 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.QuotaDirectoryCreateParam;
import com.emc.storageos.model.file.QuotaDirectoryRestRep;
import com.emc.vipr.client.Task;
public class CreateFileSystemQuotaDirectory extends WaitForTask<QuotaDirectoryRestRep> {
private URI fileSystemId;
private String name;
private Boolean oplock;
private String securityStyle;
private String size;
private int advisoryLimit;
private int softLimit;
private int gracePeriod;
public CreateFileSystemQuotaDirectory(String fileSystemId, String name, Boolean oplock, String securityStyle, String size) {
this(uri(fileSystemId), name, oplock, securityStyle, size);
}
public CreateFileSystemQuotaDirectory(URI fileSystemId, String name, Boolean oplock, String securityStyle, String size) {
this(fileSystemId, name, oplock, securityStyle, size,0,0,0);
}
public CreateFileSystemQuotaDirectory(URI fileSystemId, String name, Boolean oplock, String securityStyle, String size, int softLimit, int advisoryLimit, int gracePeriod) {
this.fileSystemId = fileSystemId;
this.name = name;
this.oplock = oplock;
this.securityStyle = securityStyle;
this.size = size;
this.advisoryLimit=advisoryLimit;
this.softLimit=softLimit;
this.gracePeriod=gracePeriod;
provideDetailArgs(fileSystemId, name, oplock, securityStyle, size,advisoryLimit,softLimit,gracePeriod);
}
@Override
protected Task<QuotaDirectoryRestRep> doExecute() throws Exception {
QuotaDirectoryCreateParam quotaDir = new QuotaDirectoryCreateParam();
quotaDir.setQuotaDirName(name);
quotaDir.setOpLock(oplock);
quotaDir.setSecurityStyle(securityStyle);
if (size == null || size.isEmpty()) {
size = "0";
}
quotaDir.setSize(String.valueOf(DiskSizeConversionUtils.gbToBytes(new Long(size))));
quotaDir.setSoftGrace(gracePeriod);
quotaDir.setSoftLimit(softLimit);
quotaDir.setNotificationLimit(advisoryLimit);
return getClient().quotaDirectories().createQuotaDirectory(fileSystemId, quotaDir);
}
}