use of com.emc.storageos.vnx.xmlapi.XMLApiResult in project coprhd-controller by CoprHD.
the class VNXFileStorageDeviceXML method doCreateQuotaDirectory.
@Override
public BiosCommandResult doCreateQuotaDirectory(StorageSystem storage, FileDeviceInputOutput args, QuotaDirectory quotaDir) throws ControllerException {
BiosCommandResult result = new BiosCommandResult();
ApplicationContext context = null;
XMLApiResult apiResult = null;
try {
_log.info("VNXFileStorageDeviceXML doCreateQuotaDirectory - start");
String fsName = args.getFsName();
String quotaTreetreeName = args.getQuotaDirectoryName();
Boolean oplocks = quotaDir.getOpLock();
String securityStyle = quotaDir.getSecurityStyle();
Long size = quotaDir.getSize();
if (null == fsName) {
_log.error("VNXFileStorageDeviceXML::doCreateQuotaDirectory failed: Filesystem name is either missing or empty");
ServiceError serviceError = DeviceControllerErrors.vnx.unableToCreateQuotaDir();
serviceError.setMessage(FileSystemConstants.FS_ERR_FS_NAME_MISSING_OR_EMPTY);
result = BiosCommandResult.createErrorResult(serviceError);
return result;
}
if (null == quotaTreetreeName) {
_log.error("VNXFileStorageDeviceXML::doCreateQuotaDirectory failed: Quota Tree name is either missing or empty");
ServiceError serviceError = DeviceControllerErrors.vnx.unableToCreateQuotaDir();
serviceError.setMessage(FileSystemConstants.FS_ERR_QUOTADIR_NAME_MISSING_OR_EMPTY);
result = BiosCommandResult.createErrorResult(serviceError);
return result;
}
_log.info("FSName: {}", args.getFsName());
_log.info("Quota tree name: {}", args.getQuotaDirectoryName());
boolean isMountRequired = !(args.isFileShareMounted());
_log.info("Mount required or not, to create quota dir requested {}", isMountRequired);
// Load the context
context = loadContext();
VNXFileCommApi vnxComm = loadVNXFileCommunicationAPIs(context);
if (null == vnxComm) {
throw VNXException.exceptions.communicationFailed(VNXCOMM_ERR_MSG);
}
// quota directory create/update takes size in MB as similar to FS create.
Long sizeMBs = size / BYTESPERMB;
apiResult = vnxComm.createQuotaDirectory(storage, args.getFsName(), quotaTreetreeName, securityStyle, sizeMBs, oplocks, isMountRequired);
_log.info("createQuotaDirectory call result : {}", apiResult.isCommandSuccess());
if (apiResult.isCommandSuccess()) {
VNXQuotaTree quotaTree = (VNXQuotaTree) apiResult.getObject();
args.getQuotaDirectory().setNativeId(String.valueOf(quotaTree.getId()));
result = BiosCommandResult.createSuccessfulResult();
}
} catch (VNXException e) {
throw new DeviceControllerException(e);
} finally {
clearContext(context);
}
_log.info("Status of the result {}", (result != null) ? result.isCommandSuccess() : result);
BiosCommandResult cmdResult = null;
if (result.isCommandSuccess()) {
cmdResult = BiosCommandResult.createSuccessfulResult();
} else {
cmdResult = BiosCommandResult.createErrorResult(DeviceControllerErrors.vnx.unableToCreateQuotaDir());
}
return cmdResult;
}
use of com.emc.storageos.vnx.xmlapi.XMLApiResult in project coprhd-controller by CoprHD.
the class VNXFileStorageDeviceXML method doSnapshotFS.
@Override
public BiosCommandResult doSnapshotFS(StorageSystem storage, FileDeviceInputOutput args) throws ControllerException {
// generate checkpoint baseline name
args.setSnaphotCheckPointBaseline(args.getSnapshotName() + "_baseline");
args.setSnapshotMountPath("/" + args.getSnapshotName());
_log.info("FileShare, Snapshot {} {}", args.getFsUUID(), args.getSnapshotId());
_log.info("FSName: {}", args.getFsName());
_log.info("SnapShotName: {}", args.getSnapshotName());
XMLApiResult result = null;
ApplicationContext context = null;
try {
context = loadContext();
VNXFileCommApi vnxComm = loadVNXFileCommunicationAPIs(context);
if (null == vnxComm) {
throw VNXException.exceptions.communicationFailed(VNXCOMM_ERR_MSG);
}
FileShare fileShare = args.getFs();
result = vnxComm.createSnapshot(storage, args.getFsName(), args.getSnapshotName(), fileShare);
_log.info("createSnapshot call result : {}", result.isCommandSuccess());
if (result.isCommandSuccess()) {
VNXSnapshot vnxSnap = (VNXSnapshot) result.getObject();
args.setSnapNativeId(String.valueOf(vnxSnap.getId()));
String path = "/" + args.getSnapshotName();
// Set path & mountpath
args.setSnapshotMountPath(path);
args.setSnapshotPath(path);
}
} catch (VNXException e) {
throw new DeviceControllerException(e);
} finally {
clearContext(context);
}
_log.info("Status of the result {}", (result != null) ? result.isCommandSuccess() : result);
BiosCommandResult cmdResult = null;
if (result.isCommandSuccess()) {
cmdResult = BiosCommandResult.createSuccessfulResult();
} else {
cmdResult = BiosCommandResult.createErrorResult(DeviceControllerErrors.vnx.unableToCreateFileSnapshot(result.getMessage()));
}
return cmdResult;
}
use of com.emc.storageos.vnx.xmlapi.XMLApiResult in project coprhd-controller by CoprHD.
the class VNXFileStorageDeviceXML method doDeleteShare.
@Override
public BiosCommandResult doDeleteShare(StorageSystem storage, FileDeviceInputOutput args, SMBFileShare smbFileShare) throws ControllerException {
_log.info("Call FileShare doDeleteShare");
XMLApiResult result = null;
ApplicationContext context = null;
try {
context = loadContext();
VNXFileCommApi vnxComm = loadVNXFileCommunicationAPIs(context);
if (null == vnxComm) {
throw VNXException.exceptions.communicationFailed(VNXCOMM_ERR_MSG);
}
StorageHADomain dm = null;
String mountPoint = null;
if (args.getFileOperation()) {
mountPoint = args.getFs().getMountPath();
// Get DataMover
dm = this.getDataMover(args.getFs());
if (dm == null) {
Exception e = new Exception("VNX File Share creation Failed Data Mover not found");
throw VNXException.exceptions.createExportFailed("VNX File Delete Share Failed Data Mover not found", e);
}
} else {
// Get DataMover
URI snapshotId = args.getSnapshotId();
Snapshot snapshot = _dbClient.queryObject(Snapshot.class, snapshotId);
FileShare fileshare = _dbClient.queryObject(FileShare.class, snapshot.getParent().getURI());
mountPoint = fileshare.getMountPath();
dm = this.getDataMover(fileshare);
if (dm == null) {
Exception e = new Exception("VNX File Share creation Failed Data Mover not found");
throw VNXException.exceptions.createExportFailed("VNX File Delete Share Failed Data Mover not found", e);
}
}
result = vnxComm.doDeleteShare(storage, dm, smbFileShare.getName(), mountPoint, false, args);
args.getFileObjShares().remove(smbFileShare.getName());
} catch (VNXException e) {
throw new DeviceControllerException(e);
} finally {
clearContext(context);
}
BiosCommandResult cmdResult = null;
if (result.isCommandSuccess()) {
cmdResult = BiosCommandResult.createSuccessfulResult();
} else {
cmdResult = BiosCommandResult.createErrorResult(DeviceControllerErrors.vnx.unableToDeleteFileShare(result.getMessage()));
}
return cmdResult;
}
use of com.emc.storageos.vnx.xmlapi.XMLApiResult in project coprhd-controller by CoprHD.
the class VNXFileStorageDeviceXML method doCreateFS.
@Override
public BiosCommandResult doCreateFS(StorageSystem storage, FileDeviceInputOutput args) throws ControllerException {
Map<String, String> autoExtendAtts = getAutoExtendAttrs(args);
Long fsSize = args.getFsCapacity() / BYTESPERMB;
if (fsSize < 1) {
// Invalid size throw an error
String errMsg = "doCreateFS failed : FileSystem size in bytes is not valid " + args.getFsCapacity();
_log.error(errMsg);
return BiosCommandResult.createErrorResult(DeviceControllerErrors.vnx.unableToCreateFileSystem(errMsg));
}
_log.info("FileSystem size translation : {} : {} ", args.getFsCapacity(), fsSize);
XMLApiResult result = null;
ApplicationContext context = null;
try {
context = loadContext();
VNXFileCommApi vnxComm = loadVNXFileCommunicationAPIs(context);
if (null == vnxComm) {
throw VNXException.exceptions.communicationFailed(VNXCOMM_ERR_MSG);
}
result = vnxComm.createFileSystem(storage, args.getFsName(), // This will be used for CLI create FS
args.getPoolName(), "1", fsSize, args.getThinProvision(), args.getNativeDeviceFsId(), autoExtendAtts);
if (result.isCommandSuccess()) {
VNXFileSystem vnxFS = (VNXFileSystem) result.getObject();
args.setFsNativeId(String.valueOf(vnxFS.getFsId()));
String path = "/" + args.getFsName();
// Set path & mountpath
args.setFsMountPath(path);
args.setFsPath(path);
}
} catch (VNXException e) {
throw DeviceControllerException.exceptions.unableToCreateFileSystem(e.getMessage(Locale.getDefault()));
} finally {
clearContext(context);
}
BiosCommandResult cmdResult = null;
if (result.isCommandSuccess()) {
cmdResult = BiosCommandResult.createSuccessfulResult();
} else {
cmdResult = BiosCommandResult.createErrorResult(DeviceControllerErrors.vnx.unableToCreateFileSystem(result.getMessage()));
}
return cmdResult;
}
use of com.emc.storageos.vnx.xmlapi.XMLApiResult in project coprhd-controller by CoprHD.
the class VNXFileCommApi method createQuotaDirectory.
public XMLApiResult createQuotaDirectory(final StorageSystem system, final String fsName, final String quotaDirName, final String securityStyle, final Long size, final Boolean oplocks, Boolean isMountRequired) throws VNXException {
_log.info("Create VNX File System Quota dir: {} on file system {}", quotaDirName, fsName);
XMLApiResult result = new XMLApiResult();
Map<String, Object> reqAttributeMap = new ConcurrentHashMap<String, Object>();
try {
if (isMountRequired) {
// means there is no fs export in Vipr and mount is needed.
// just cross check with array fs have mount.
isMountRequired = !isMountPresentOnArray(fsName, system);
}
updateAttributes(reqAttributeMap, system);
reqAttributeMap.put(VNXFileConstants.FILESYSTEM_NAME, fsName);
reqAttributeMap.put(VNXFileConstants.QUOTA_DIR_NAME, quotaDirName);
reqAttributeMap.put(VNXFileConstants.HARD_QUOTA, size);
reqAttributeMap.put(VNXFileConstants.SECURITY_STYLE, securityStyle);
reqAttributeMap.put(VNXFileConstants.OPLOCKS, oplocks);
reqAttributeMap.put(VNXFileConstants.MOUNT_PATH, "/" + fsName);
_provExecutor.setKeyMap(reqAttributeMap);
if (isMountRequired) {
_provExecutor.execute((Namespace) _provNamespaces.getNsList().get(PROV_FILE_QUOTA_DIR_CREATE_MOUNT));
} else {
_provExecutor.execute((Namespace) _provNamespaces.getNsList().get(PROV_FILE_QUOTA_DIR_CREATE));
}
String cmdResult = (String) _provExecutor.getKeyMap().get(VNXFileConstants.CMD_RESULT);
if (cmdResult != null && cmdResult.equals(VNXFileConstants.CMD_SUCCESS)) {
String quotaDirId = (String) _provExecutor.getKeyMap().get(VNXFileConstants.QUOTA_DIR_ID);
String fsysId = (String) _provExecutor.getKeyMap().get(VNXFileConstants.FILESYSTEM_ID);
if (quotaDirId != null) {
int fsId = Integer.parseInt(fsysId);
int qdId = Integer.parseInt(quotaDirId);
VNXQuotaTree vnxQuotaTree = new VNXQuotaTree(quotaDirName, -1, fsId);
vnxQuotaTree.setId(qdId);
result.setObject(vnxQuotaTree);
result.setCommandSuccess();
} else {
result.setCommandFailed();
result.setMessage((String) _provExecutor.getKeyMap().get(VNXFileConstants.FAULT_DESC));
}
} else {
String errMsg = (String) _provExecutor.getKeyMap().get(VNXFileConstants.FAULT_DESC);
result.setCommandFailed();
result.setMessage(errMsg);
}
} catch (Exception e) {
throw new VNXException("Failure", e);
}
return result;
}
Aggregations