/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.emc.sa.service.vipr.file;
import static com.emc.sa.service.ServiceParams.ADVISORY_LIMIT;
import static com.emc.sa.service.ServiceParams.GRACE_PERIOD;
import static com.emc.sa.service.ServiceParams.PROJECT;
import static com.emc.sa.service.ServiceParams.SHARE_COMMENT;
import static com.emc.sa.service.ServiceParams.SIZE_IN_GB;
import static com.emc.sa.service.ServiceParams.SOFT_LIMIT;
import static com.emc.sa.service.ServiceParams.VIRTUAL_ARRAY;
import static com.emc.sa.service.ServiceParams.VIRTUAL_POOL;
import static com.emc.sa.service.ServiceParams.VOLUME_NAME;
import java.net.URI;
import java.util.List;
import com.emc.sa.engine.ExecutionUtils;
import com.emc.sa.engine.bind.Bindable;
import com.emc.sa.engine.bind.Param;
import com.emc.storageos.model.file.FileShareRestRep;
public class CreateCifsShareHelper {
@Param(VIRTUAL_POOL)
protected URI virtualPool;
@Param(VIRTUAL_ARRAY)
protected URI virtualArray;
@Param(PROJECT)
protected URI project;
@Param(SIZE_IN_GB)
protected Double sizeInGb;
@Param(VOLUME_NAME)
protected String shareName;
@Param(SHARE_COMMENT)
protected String shareComment;
@Param(value = SOFT_LIMIT, required = false)
protected Double softLimit;
@Param(value = ADVISORY_LIMIT, required = false)
protected Double advisoryLimit;
@Param(value = GRACE_PERIOD, required = false)
protected Double gracePeriod;
@Bindable(itemType = FileStorageUtils.FileSystemACLs.class)
protected FileStorageUtils.FileSystemACLs[] fileSystemShareACLs;
protected URI fileSystemId;
public void precheckFileACLs() {
if (fileSystemShareACLs != null && fileSystemShareACLs.length > 0) {
List<String> invalidNames = FileStorageUtils.getInvalidFileACLs(fileSystemShareACLs);
if (!invalidNames.isEmpty()) {
ExecutionUtils.fail("failTask.CreateCifsShareHelper.invalidName", invalidNames, invalidNames);
}
fileSystemShareACLs = FileStorageUtils.clearEmptyFileACLs(fileSystemShareACLs);
}
}
public FileShareRestRep createCifsShare() {
int tempSoftLimit = (softLimit != null) ? softLimit.intValue() : 0;
int tempAdvisoryLimit = (advisoryLimit != null) ? advisoryLimit.intValue() : 0;
int tempGracePeriod = (gracePeriod != null) ? gracePeriod.intValue() : 0;
this.fileSystemId = FileStorageUtils.createFileSystem(project, virtualArray, virtualPool, shareName, sizeInGb, tempAdvisoryLimit,
tempSoftLimit, tempGracePeriod);
FileStorageUtils.createCifsShare(this.fileSystemId, shareName, shareComment, null);
return FileStorageUtils.getFileSystem(this.fileSystemId);
}
public void setFileSystemShareACL() {
if (fileSystemShareACLs != null && fileSystemShareACLs.length > 0) {
FileStorageUtils.setFileSystemShareACL(this.fileSystemId, shareName, fileSystemShareACLs);
}
}
}