use of com.emc.storageos.volumecontroller.impl.vnxunity.job.VNXUnityCreateFileSystemQuotaDirectoryJob in project coprhd-controller by CoprHD.
the class VNXUnityFileStorageDevice method doCreateQuotaDirectory.
@Override
public BiosCommandResult doCreateQuotaDirectory(StorageSystem storage, FileDeviceInputOutput args, QuotaDirectory qd) throws ControllerException {
_logger.info("creating Quota Directory: ", args.getQuotaDirectoryName());
VNXUnityQuotaDirectoryTaskCompleter completer = null;
VNXeApiClient apiClient = getVnxUnityClient(storage);
VNXeCommandJob job = null;
try {
Long softLimit = 0L;
Long softGrace = 0L;
Long size = 0L;
if (qd.getSize() == 0) {
// If quota directory has no size specified, inherit it from the parent fs
size = args.getFsCapacity();
// for the calculation of limit sizes
} else {
size = qd.getSize();
}
// conversion from percentage to bytes
softLimit = Long.valueOf(qd.getSoftLimit() * size / 100);
// using hard limit
// conversion from days to seconds
softGrace = Long.valueOf(qd.getSoftGrace() * 24 * 60 * 60);
job = apiClient.createQuotaDirectory(args.getFsNativeId(), qd.getName(), qd.getSize(), softLimit, softGrace);
if (job != null) {
_logger.info("opid:" + args.getOpId());
completer = new VNXUnityQuotaDirectoryTaskCompleter(QuotaDirectory.class, args.getQuotaDirectory().getId(), args.getOpId());
if (args.getQuotaDirectory() == null) {
_logger.error("Could not find the quota object");
}
VNXUnityCreateFileSystemQuotaDirectoryJob createQuotaJob = new VNXUnityCreateFileSystemQuotaDirectoryJob(job.getId(), storage.getId(), completer);
ControllerServiceImpl.enqueueJob(new QueueJob(createQuotaJob));
} else {
_logger.error("No job returned from createQuotaDirectory");
ServiceError error = DeviceControllerErrors.vnxe.jobFailed("No Job returned from createQuotaDirectory");
return BiosCommandResult.createErrorResult(error);
}
} catch (VNXeException e) {
_logger.error("Create Quota Directory got an exception", e);
if (completer != null) {
completer.error(dbClient, e);
}
return BiosCommandResult.createErrorResult(e);
} catch (Exception ex) {
_logger.error("Create Quota Directory got an exception", ex);
ServiceError error = DeviceControllerErrors.vnxe.jobFailed("CreateQuotaDirectory", ex.getMessage());
if (completer != null) {
completer.error(dbClient, error);
}
return BiosCommandResult.createErrorResult(error);
}
StringBuilder logMsgBuilder = new StringBuilder(String.format("Create filesystem job submitted - Array:%s, fileSystem: %s", storage.getSerialNumber(), args.getFsName()));
_logger.info(logMsgBuilder.toString());
return BiosCommandResult.createPendingResult();
}
Aggregations