Search in sources :

Example 16 with FileExportRule

use of com.emc.storageos.db.client.model.FileExportRule in project coprhd-controller by CoprHD.

the class VNXeExportFileSystemJob method getFileExportRule.

private FileExportRule getFileExportRule(URI uri, FileExport fileExport) {
    FileExportRule rule = new FileExportRule();
    rule.setAnon(fileExport.getRootUserMapping());
    rule.setExportPath(fileExport.getPath());
    if (!isFile) {
        rule.setSnapshotId(uri);
    } else {
        rule.setFileSystemId(uri);
    }
    rule.setSecFlavor(fileExport.getSecurityType());
    if (fileExport.getPermissions().equals(FileShareExport.Permissions.ro.name()) && fileExport.getClients() != null && !fileExport.getClients().isEmpty()) {
        rule.setReadOnlyHosts(new StringSet(fileExport.getClients()));
    }
    if (fileExport.getPermissions().equals(FileShareExport.Permissions.rw.name()) && fileExport.getClients() != null && !fileExport.getClients().isEmpty()) {
        rule.setReadWriteHosts(new StringSet(fileExport.getClients()));
    }
    if (fileExport.getPermissions().equals(FileShareExport.Permissions.root.name()) && fileExport.getClients() != null && !fileExport.getClients().isEmpty()) {
        rule.setRootHosts(new StringSet(fileExport.getClients()));
    }
    rule.setMountPoint(fileExport.getMountPoint());
    _logger.info("Generating FileExportRule  IsilonId ? {}", fileExport.getIsilonId());
    if (fileExport.getIsilonId() != null) {
        rule.setDeviceExportId(fileExport.getIsilonId());
    }
    return rule;
}
Also used : FileExportRule(com.emc.storageos.db.client.model.FileExportRule) StringSet(com.emc.storageos.db.client.model.StringSet)

Example 17 with FileExportRule

use of com.emc.storageos.db.client.model.FileExportRule in project coprhd-controller by CoprHD.

the class VNXeModifyExportJob method getAvailableExportRule.

private FileExportRule getAvailableExportRule(FileExportRule exportRule, DbClient dbClient) throws URISyntaxException {
    String exportIndex = exportRule.getFsExportIndex();
    if (!isFile) {
        exportIndex = exportRule.getSnapshotExportIndex();
    }
    _logger.info("Retriving DB Model using its index {}", exportIndex);
    FileExportRule rule = null;
    URIQueryResultList result = new URIQueryResultList();
    if (!isFile) {
        dbClient.queryByConstraint(AlternateIdConstraint.Factory.getSnapshotExportRuleConstraint(exportIndex), result);
    } else {
        dbClient.queryByConstraint(AlternateIdConstraint.Factory.getFileExportRuleConstraint(exportIndex), result);
    }
    Iterator<URI> it = result.iterator();
    while (it.hasNext()) {
        if (result.iterator().hasNext()) {
            rule = dbClient.queryObject(FileExportRule.class, it.next());
            if (rule != null && !rule.getInactive()) {
                _logger.info("Existing DB Model found {}", rule);
                break;
            }
        }
    }
    return rule;
}
Also used : FileExportRule(com.emc.storageos.db.client.model.FileExportRule) URI(java.net.URI) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList)

Example 18 with FileExportRule

use of com.emc.storageos.db.client.model.FileExportRule in project coprhd-controller by CoprHD.

the class VNXeUnexportFileSystemJob method getFileExportRule.

private FileExportRule getFileExportRule(URI uri) {
    FileExportRule rule = new FileExportRule();
    rule.setExportPath(exportPath);
    rule.setSecFlavor(SECURITY_FLAVOR);
    if (!isFile) {
        rule.setSnapshotId(uri);
    } else {
        rule.setFileSystemId(uri);
    }
    return rule;
}
Also used : FileExportRule(com.emc.storageos.db.client.model.FileExportRule)

Example 19 with FileExportRule

use of com.emc.storageos.db.client.model.FileExportRule in project coprhd-controller by CoprHD.

the class VNXeUnexportFileSystemJob method updateStatus.

/**
 * Called to update the job status when the unexport file system job completes.
 *
 * @param jobContext The job context.
 */
@Override
public void updateStatus(JobContext jobContext) throws Exception {
    DbClient dbClient = jobContext.getDbClient();
    try {
        if (_status == JobStatus.IN_PROGRESS) {
            return;
        }
        VNXeApiClient vnxeApiClient = getVNXeClient(jobContext);
        String opId = getTaskCompleter().getOpId();
        StringBuilder logMsgBuilder = new StringBuilder(String.format("Updating status of job %s to %s", opId, _status.name()));
        FileShare fsObj = null;
        Snapshot snapObj = null;
        StorageSystem storageObj = dbClient.queryObject(StorageSystem.class, getStorageSystemUri());
        if (_status == JobStatus.SUCCESS) {
            _isSuccess = true;
            if (isFile) {
                URI fsId = getTaskCompleter().getId();
                fsObj = dbClient.queryObject(FileShare.class, fsId);
                FileExportRule rule = getFileExportRule(fsId);
                updateExportRule(dbClient, rule);
                updateFSExport(fsObj, dbClient, vnxeApiClient);
            } else {
                URI snapshotId = getTaskCompleter().getId();
                FileExportRule rule = getFileExportRule(snapshotId);
                updateExportRule(dbClient, rule);
                snapObj = updateSnapExport(dbClient, vnxeApiClient);
                fsObj = dbClient.queryObject(FileShare.class, snapObj.getParent());
            }
        } else {
            // cleanupFSExport(fsObj, dbClient);
            logMsgBuilder.append("\n");
            logMsgBuilder.append(String.format("Task %s failed to export file system", opId));
        }
        _logger.info(logMsgBuilder.toString());
        if (isFile) {
            FileDeviceController.recordFileDeviceOperation(dbClient, OperationTypeEnum.UNEXPORT_FILE_SYSTEM, _isSuccess, logMsgBuilder.toString(), "", fsObj, storageObj);
        } else {
            FileDeviceController.recordFileDeviceOperation(dbClient, OperationTypeEnum.UNEXPORT_FILE_SNAPSHOT, _isSuccess, logMsgBuilder.toString(), "", snapObj, fsObj, storageObj);
        }
    } catch (Exception e) {
        _logger.error("Caught an exception while trying to updateStatus for VNXeUnexportFIleSystemJob", e);
        setErrorStatus("Encountered an internal error during file system unexport job status processing : " + e.getMessage());
    } finally {
        super.updateStatus(jobContext);
    }
}
Also used : Snapshot(com.emc.storageos.db.client.model.Snapshot) DbClient(com.emc.storageos.db.client.DbClient) FileExportRule(com.emc.storageos.db.client.model.FileExportRule) VNXeApiClient(com.emc.storageos.vnxe.VNXeApiClient) FileShare(com.emc.storageos.db.client.model.FileShare) URI(java.net.URI) StorageSystem(com.emc.storageos.db.client.model.StorageSystem)

Example 20 with FileExportRule

use of com.emc.storageos.db.client.model.FileExportRule in project coprhd-controller by CoprHD.

the class FileSystemExportToFileSystemExportRuleMigration method process.

@Override
public void process() throws MigrationCallbackException {
    log.info("FileSystemExport to FileSystem export rule migration: start");
    DbClient dbClient = getDbClient();
    try {
        List<URI> fileExpRuleURIList = dbClient.queryByType(FileExportRule.class, true);
        int exisitingExportRuleCount = 0;
        for (Iterator<URI> iterator = fileExpRuleURIList.iterator(); iterator.hasNext(); ) {
            URI uri = (URI) iterator.next();
            log.debug("Existing export rule URI: {}", uri);
            exisitingExportRuleCount++;
        }
        if (exisitingExportRuleCount > 0) {
            log.info("There are exisiting export rule(s). Skipping migration.");
            return;
        }
        // FileSystems
        List<URI> fileSystemURIList = dbClient.queryByType(FileShare.class, true);
        Iterator<FileShare> fileShareListIterator = dbClient.queryIterativeObjects(FileShare.class, fileSystemURIList);
        while (fileShareListIterator.hasNext()) {
            FileShare fileShare = fileShareListIterator.next();
            // Create FS Export Rule for export Map
            List<FileExportRule> fsExpRules = createFSExportRules(fileShare);
            if (null != fsExpRules && !fsExpRules.isEmpty()) {
                log.debug("Persisting new File Export rule(s): {}", fsExpRules);
                dbClient.createObject(fsExpRules);
            }
        }
        // Snapshots
        List<URI> snapshotURIList = dbClient.queryByType(Snapshot.class, true);
        Iterator<Snapshot> snapshotListIterator = dbClient.queryIterativeObjects(Snapshot.class, snapshotURIList);
        while (snapshotListIterator.hasNext()) {
            Snapshot snapshot = snapshotListIterator.next();
            // Create FS Export Rule for export Map
            List<FileExportRule> snapshotExpRules = createSnapshotExportRules(snapshot);
            if (null != snapshotExpRules && !snapshotExpRules.isEmpty()) {
                log.debug("Persisting new Snapshot Export rule(s): {}", snapshotExpRules);
                dbClient.createObject(snapshotExpRules);
            }
        }
        log.info("FileSystemExport to FileSystem export rule migration: end");
    } catch (Exception e) {
        log.error("Exception occured while migrating FileShare/Snapshot Export Map CF to FileExportRule CF");
        log.error(e.getMessage(), e);
    }
}
Also used : Snapshot(com.emc.storageos.db.client.model.Snapshot) DbClient(com.emc.storageos.db.client.DbClient) FileExportRule(com.emc.storageos.db.client.model.FileExportRule) URI(java.net.URI) FileShare(com.emc.storageos.db.client.model.FileShare) MigrationCallbackException(com.emc.storageos.svcs.errorhandling.resources.MigrationCallbackException)

Aggregations

FileExportRule (com.emc.storageos.db.client.model.FileExportRule)37 URI (java.net.URI)13 APIException (com.emc.storageos.svcs.errorhandling.resources.APIException)11 URISyntaxException (java.net.URISyntaxException)11 ContainmentConstraint (com.emc.storageos.db.client.constraint.ContainmentConstraint)10 FileShare (com.emc.storageos.db.client.model.FileShare)10 DatabaseException (com.emc.storageos.db.exceptions.DatabaseException)10 ExportRule (com.emc.storageos.model.file.ExportRule)10 InternalException (com.emc.storageos.svcs.errorhandling.resources.InternalException)10 ArrayList (java.util.ArrayList)8 ControllerException (com.emc.storageos.volumecontroller.ControllerException)7 URIQueryResultList (com.emc.storageos.db.client.constraint.URIQueryResultList)6 SMBFileShare (com.emc.storageos.db.client.model.SMBFileShare)6 Snapshot (com.emc.storageos.db.client.model.Snapshot)6 StorageSystem (com.emc.storageos.db.client.model.StorageSystem)6 FSExportMap (com.emc.storageos.db.client.model.FSExportMap)5 FileExport (com.emc.storageos.db.client.model.FileExport)5 DeviceControllerException (com.emc.storageos.exceptions.DeviceControllerException)5 WorkflowException (com.emc.storageos.workflow.WorkflowException)5 StringSet (com.emc.storageos.db.client.model.StringSet)4