/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.storageos.fileorchestrationcontroller; import java.net.URI; import java.util.List; import java.util.Map; import java.util.Set; import com.emc.storageos.db.client.DbClient; import com.emc.storageos.db.client.model.FilePolicy; import com.emc.storageos.db.client.model.StoragePort; import com.emc.storageos.db.client.util.NullColumnValueGetter; import com.emc.storageos.model.file.CifsShareACLUpdateParams; import com.emc.storageos.model.file.FileExportUpdateParams; import com.emc.storageos.model.file.policy.FilePolicyUpdateParam; import com.emc.storageos.svcs.errorhandling.resources.InternalException; import com.emc.storageos.volumecontroller.ControllerException; import com.emc.storageos.volumecontroller.FileSMBShare; import com.emc.storageos.volumecontroller.FileShareExport; import com.emc.storageos.volumecontroller.impl.Dispatcher; public class FileOrchestrationControllerImpl implements FileOrchestrationController { private Dispatcher _dispatcher; private FileOrchestrationController _controller; private DbClient _dbClient; @Override public void createFileSystems(List<FileDescriptor> fileDescriptors, String taskId) throws ControllerException { execOrchestration("createFileSystems", fileDescriptors, taskId); } @Override public void deleteFileSystems(List<FileDescriptor> fileDescriptors, String taskId) throws ControllerException { execOrchestration("deleteFileSystems", fileDescriptors, taskId); } @Override public void expandFileSystem(List<FileDescriptor> fileDescriptors, String taskId) throws ControllerException { execOrchestration("expandFileSystem", fileDescriptors, taskId); } @Override public void createTargetsForExistingSource(String sourceFs, List<FileDescriptor> fileDescriptors, String taskId) throws ControllerException { execOrchestration("createTargetsForExistingSource", sourceFs, fileDescriptors, taskId); } @Override public void createCIFSShare(URI storageSystem, URI fileSystem, FileSMBShare smbShare, String taskId) throws ControllerException { execOrchestration("createCIFSShare", storageSystem, fileSystem, smbShare, taskId); } @Override public void createNFSExport(URI storage, URI fsURI, List<FileShareExport> exports, String opId) throws ControllerException { execOrchestration("createNFSExport", storage, fsURI, exports, opId); } @Override public void updateExportRules(URI storage, URI fsURI, FileExportUpdateParams param, boolean unmountExport, String opId) throws ControllerException { execOrchestration("updateExportRules", storage, fsURI, param, unmountExport, opId); } @Override public void updateShareACLs(URI storage, URI fsURI, String shareName, CifsShareACLUpdateParams param, String opId) throws ControllerException { execOrchestration("updateShareACLs", storage, fsURI, shareName, param, opId); } @Override public void snapshotFS(URI storage, URI snapshot, URI fsURI, String opId) throws ControllerException { execOrchestration("snapshotFS", storage, snapshot, fsURI, opId); } @Override public void deleteShare(URI storage, URI uri, FileSMBShare fileSMBShare, String task) throws ControllerException { execOrchestration("deleteShare", storage, uri, fileSMBShare, task); } @Override public void deleteExportRules(URI storage, URI uri, boolean allDirs, String subDirs, boolean unmountExport, String taskId) throws ControllerException { execOrchestration("deleteExportRules", storage, uri, allDirs, subDirs, unmountExport, taskId); } @Override public void failoverFileSystem(URI fsURI, StoragePort nfsPort, StoragePort cifsPort, boolean replicateConfiguration, String taskId) throws ControllerException { execOrchestration("failoverFileSystem", fsURI, nfsPort, cifsPort, replicateConfiguration, taskId); } @Override public void failbackFileSystem(URI fsURI, StoragePort nfsPort, StoragePort cifsPort, boolean replicateConfiguration, String taskId) throws ControllerException { execOrchestration("failbackFileSystem", fsURI, nfsPort, cifsPort, replicateConfiguration, taskId); } @Override public void restoreFS(URI storage, URI fs, URI snapshot, String opId) throws ControllerException { execOrchestration("restoreFS", storage, fs, snapshot, opId); } @Override public void deleteSnapshot(URI storage, URI pool, URI uri, boolean forceDelete, String deleteType, String opId) throws ControllerException { execOrchestration("deleteSnapshot", storage, pool, uri, forceDelete, deleteType, opId); } @Override public void deleteShareACLs(URI storage, URI uri, String shareName, String taskId) throws ControllerException { execOrchestration("deleteShareACLs", storage, uri, shareName, taskId); } @Override public void unassignFilePolicy(URI policy, Set<URI> unassignFrom, String taskId) throws InternalException { execOrchestration("unassignFilePolicy", policy, unassignFrom, taskId); } @Override public void assignFileSnapshotPolicyToVirtualPools(Map<URI, List<URI>> vpoolToStorageSystemMap, URI filePolicyToAssign, String taskId) throws InternalException { execOrchestration("assignFileSnapshotPolicyToVirtualPools", vpoolToStorageSystemMap, filePolicyToAssign, taskId); } @Override public void assignFileSnapshotPolicyToProjects(Map<URI, List<URI>> vpoolToStorageSystemMap, List<URI> projectURIs, URI filePolicyToAssign, String taskId) { execOrchestration("assignFileSnapshotPolicyToProjects", vpoolToStorageSystemMap, projectURIs, filePolicyToAssign, taskId); } @Override public void updateFileProtectionPolicy(URI policy, FilePolicyUpdateParam param, String taskId) { execOrchestration("updateFileProtectionPolicy", policy, param, taskId); } @Override public void assignFileReplicationPolicyToVirtualPools(List<FileStorageSystemAssociation> associations, List<URI> vpoolURIs, URI filePolicyToAssign, String taskId) { execOrchestration("assignFileReplicationPolicyToVirtualPools", associations, vpoolURIs, filePolicyToAssign, taskId); } @Override public void assignFileReplicationPolicyToProjects(List<FileStorageSystemAssociation> associations, URI vpoolURI, List<URI> projectURIs, URI filePolicyToAssign, String taskId) { execOrchestration("assignFileReplicationPolicyToProjects", associations, vpoolURI, projectURIs, filePolicyToAssign, taskId); } @Override public void assignFilePolicyToFileSystem(FilePolicy filePolicy, List<FileDescriptor> fileDescriptors, String taskId) throws ControllerException { execOrchestration("assignFilePolicyToFileSystem", filePolicy, fileDescriptors, taskId); } // getter and setter methods public FileOrchestrationController getController() { return _controller; } public void setController(FileOrchestrationController controller) { this._controller = controller; } public Dispatcher getDispatcher() { return _dispatcher; } public void setDispatcher(Dispatcher dispatcher) { this._dispatcher = dispatcher; } public DbClient getDbClient() { return _dbClient; } public void setDbClient(DbClient dbClient) { this._dbClient = dbClient; } private void execOrchestration(String methodName, Object... args) throws ControllerException { _dispatcher.queue(NullColumnValueGetter.getNullURI(), FILE_ORCHESTRATION_DEVICE, getController(), methodName, args); } }