Class AdvancedFSOps
- java.lang.Object
-
- org.apache.storm.daemon.supervisor.AdvancedFSOps
-
- All Implemented Interfaces:
IAdvancedFSOps
public class AdvancedFSOps extends Object implements IAdvancedFSOps
-
-
Field Summary
Fields Modifier and Type Field Description protected booleansymlinksDisabled
-
Constructor Summary
Constructors Modifier Constructor Description protectedAdvancedFSOps(Map<String,Object> conf)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcopyDirectory(File fromDir, File toDir)Copy a directory.voidcreateSymlink(File link, File target)Create a symbolic link pointing at target.voiddeleteIfExists(File path)Delete a file or a directory and all of the children.voiddeleteIfExists(File path, String user, String logPrefix)Delete a file or a directory and all of the children.booleandoRequiredTopoFilesExist(Map<String,Object> conf, String topologyId)Sanity check if everything the topology needs is there for it to run.voiddump(File location, String data)Dump a string to a file.booleanfileExists(File path)Check if a file exists or not.booleanfileExists(Path path)Check if a file exists or not.voidforceMkdir(File path)Makes a directory, including any necessary but nonexistent parent directories.voidforceMkdir(Path path)Makes a directory, including any necessary but nonexistent parent directories.OutputStreamgetOutputStream(File file)Get an output stream to write to a given file.WritergetWriter(File file)Get a writer for the given location.static AdvancedFSOpsmake(Map<String,Object> conf)Factory to create a new AdvancedFSOps.voidmoveDirectoryPreferAtomic(File fromDir, File toDir)Move fromDir to toDir, and try to make it an atomic move if possible.voidmoveFile(File fromFile, File toFile)Moves a file to a given destination.DirectoryStream<Path>newDirectoryStream(Path dir)List the contents of a directory.DirectoryStream<Path>newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter)List the contents of a directory.voidrestrictDirectoryPermissions(File dir)Set directory permissions to (OWNER)RWX (GROUP)R-X (OTHER)--- On some systems that do not support this, it may become a noop.voidsetupBlobPermissions(File path, String user)Setup permissions properly for an internal blob store path.voidsetupStormCodeDir(String user, File path)Setup the permissions for the storm code dir.voidsetupWorkerArtifactsDir(String user, File path)Setup the permissions for the worker artifacts dirs.byte[]slurp(File location)Read the contents of a file into a byte array.StringslurpString(File location)Read the contents of a file into a String.booleansupportsAtomicDirectoryMove()Check whether supports atomic directory move.
-
-
-
Method Detail
-
make
public static AdvancedFSOps make(Map<String,Object> conf)
Factory to create a new AdvancedFSOps.- Parameters:
conf- the configuration of the process- Returns:
- the appropriate instance of the class for this config and environment.
-
restrictDirectoryPermissions
public void restrictDirectoryPermissions(File dir) throws IOException
Set directory permissions to (OWNER)RWX (GROUP)R-X (OTHER)--- On some systems that do not support this, it may become a noop.- Specified by:
restrictDirectoryPermissionsin interfaceIAdvancedFSOps- Parameters:
dir- the directory to change permissions on- Throws:
IOException- on any error
-
moveDirectoryPreferAtomic
public void moveDirectoryPreferAtomic(File fromDir, File toDir) throws IOException
Move fromDir to toDir, and try to make it an atomic move if possible.- Specified by:
moveDirectoryPreferAtomicin interfaceIAdvancedFSOps- Parameters:
fromDir- what to movetoDir- where to move it from- Throws:
IOException- on any error
-
moveFile
public void moveFile(File fromFile, File toFile) throws IOException
Moves a file to a given destination.- Specified by:
moveFilein interfaceIAdvancedFSOps- Parameters:
fromFile- file to movetoFile- where to move it- Throws:
IOException- on any error
-
supportsAtomicDirectoryMove
public boolean supportsAtomicDirectoryMove()
Check whether supports atomic directory move.- Specified by:
supportsAtomicDirectoryMovein interfaceIAdvancedFSOps- Returns:
- true if an atomic directory move works, else false
-
copyDirectory
public void copyDirectory(File fromDir, File toDir) throws IOException
Copy a directory.- Specified by:
copyDirectoryin interfaceIAdvancedFSOps- Parameters:
fromDir- from wheretoDir- to where- Throws:
IOException- on any error
-
setupBlobPermissions
public void setupBlobPermissions(File path, String user) throws IOException
Setup permissions properly for an internal blob store path.- Specified by:
setupBlobPermissionsin interfaceIAdvancedFSOps- Parameters:
path- the path to set the permissions onuser- the user to change the permissions for- Throws:
IOException- on any error
-
deleteIfExists
public void deleteIfExists(File path, String user, String logPrefix) throws IOException
Delete a file or a directory and all of the children. If it exists.- Specified by:
deleteIfExistsin interfaceIAdvancedFSOps- Parameters:
path- what to deleteuser- who to delete it as if doing it as someone else is supportedlogPrefix- if an external process needs to be launched to delete the object what prefix to include in the logs- Throws:
IOException- on any error.
-
deleteIfExists
public void deleteIfExists(File path) throws IOException
Delete a file or a directory and all of the children. If it exists.- Specified by:
deleteIfExistsin interfaceIAdvancedFSOps- Parameters:
path- what to delete- Throws:
IOException- on any error.
-
setupStormCodeDir
public void setupStormCodeDir(String user, File path) throws IOException
Setup the permissions for the storm code dir.- Specified by:
setupStormCodeDirin interfaceIAdvancedFSOps- Parameters:
user- the user that owns the topologypath- the directory to set the permissions on- Throws:
IOException- on any error
-
setupWorkerArtifactsDir
public void setupWorkerArtifactsDir(String user, File path) throws IOException
Setup the permissions for the worker artifacts dirs.- Specified by:
setupWorkerArtifactsDirin interfaceIAdvancedFSOps- Parameters:
user- the user that owns the topologypath- the directory to set the permissions on- Throws:
IOException- on any error
-
doRequiredTopoFilesExist
public boolean doRequiredTopoFilesExist(Map<String,Object> conf, String topologyId) throws IOException
Sanity check if everything the topology needs is there for it to run.- Specified by:
doRequiredTopoFilesExistin interfaceIAdvancedFSOps- Parameters:
conf- the config of the supervisortopologyId- the ID of the topology- Returns:
- true if everything is there, else false
- Throws:
IOException- on any error
-
forceMkdir
public void forceMkdir(File path) throws IOException
Makes a directory, including any necessary but nonexistent parent directories.- Specified by:
forceMkdirin interfaceIAdvancedFSOps- Parameters:
path- the directory to create- Throws:
IOException- on any error
-
forceMkdir
public void forceMkdir(Path path) throws IOException
Makes a directory, including any necessary but nonexistent parent directories.- Specified by:
forceMkdirin interfaceIAdvancedFSOps- Parameters:
path- the directory to create- Throws:
IOException- on any error
-
newDirectoryStream
public DirectoryStream<Path> newDirectoryStream(Path dir, DirectoryStream.Filter<? super Path> filter) throws IOException
Description copied from interface:IAdvancedFSOpsList the contents of a directory.- Specified by:
newDirectoryStreamin interfaceIAdvancedFSOps- Parameters:
dir- the driectory to list the contents offilter- a filter to decide if it should be included or not- Returns:
- A stream of directory entries
- Throws:
IOException- on any error
-
newDirectoryStream
public DirectoryStream<Path> newDirectoryStream(Path dir) throws IOException
Description copied from interface:IAdvancedFSOpsList the contents of a directory.- Specified by:
newDirectoryStreamin interfaceIAdvancedFSOps- Parameters:
dir- the driectory to list the contents of- Returns:
- A stream of directory entries
- Throws:
IOException- on any error
-
fileExists
public boolean fileExists(File path) throws IOException
Check if a file exists or not.- Specified by:
fileExistsin interfaceIAdvancedFSOps- Parameters:
path- the path to check- Returns:
- true if it exists else false
- Throws:
IOException- on any error.
-
fileExists
public boolean fileExists(Path path) throws IOException
Check if a file exists or not.- Specified by:
fileExistsin interfaceIAdvancedFSOps- Parameters:
path- the path to check- Returns:
- true if it exists else false
- Throws:
IOException- on any error.
-
getWriter
public Writer getWriter(File file) throws IOException
Get a writer for the given location.- Specified by:
getWriterin interfaceIAdvancedFSOps- Parameters:
file- the file to write to- Returns:
- the Writer to use.
- Throws:
IOException- on any error
-
getOutputStream
public OutputStream getOutputStream(File file) throws IOException
Get an output stream to write to a given file.- Specified by:
getOutputStreamin interfaceIAdvancedFSOps- Parameters:
file- the file to write to- Returns:
- an OutputStream for that file
- Throws:
IOException- on any error
-
dump
public void dump(File location, String data) throws IOException
Dump a string to a file.- Specified by:
dumpin interfaceIAdvancedFSOps- Parameters:
location- where to write todata- the data to write- Throws:
IOException- on any error
-
slurpString
public String slurpString(File location) throws IOException
Read the contents of a file into a String.- Specified by:
slurpStringin interfaceIAdvancedFSOps- Parameters:
location- the file to read- Returns:
- the contents of the file
- Throws:
IOException- on any error
-
slurp
public byte[] slurp(File location) throws IOException
Read the contents of a file into a byte array.- Specified by:
slurpin interfaceIAdvancedFSOps- Parameters:
location- the file to read- Returns:
- the contents of the file
- Throws:
IOException- on any error
-
createSymlink
public void createSymlink(File link, File target) throws IOException
Create a symbolic link pointing at target.- Specified by:
createSymlinkin interfaceIAdvancedFSOps- Parameters:
link- the link to createtarget- where it should point to- Throws:
IOException- on any error.
-
-