Class AdvancedFSOps

java.lang.Object
org.apache.storm.daemon.supervisor.AdvancedFSOps
All Implemented Interfaces:
IAdvancedFSOps

public class AdvancedFSOps extends Object implements IAdvancedFSOps
  • Field Details

    • symlinksDisabled

      protected final boolean symlinksDisabled
  • Constructor Details

  • Method Details

    • 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:
      restrictDirectoryPermissions in interface IAdvancedFSOps
      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:
      moveDirectoryPreferAtomic in interface IAdvancedFSOps
      Parameters:
      fromDir - what to move
      toDir - 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:
      moveFile in interface IAdvancedFSOps
      Parameters:
      fromFile - file to move
      toFile - where to move it
      Throws:
      IOException - on any error
    • supportsAtomicDirectoryMove

      public boolean supportsAtomicDirectoryMove()
      Check whether supports atomic directory move.
      Specified by:
      supportsAtomicDirectoryMove in interface IAdvancedFSOps
      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:
      copyDirectory in interface IAdvancedFSOps
      Parameters:
      fromDir - from where
      toDir - 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:
      setupBlobPermissions in interface IAdvancedFSOps
      Parameters:
      path - the path to set the permissions on
      user - 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:
      deleteIfExists in interface IAdvancedFSOps
      Parameters:
      path - what to delete
      user - who to delete it as if doing it as someone else is supported
      logPrefix - 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:
      deleteIfExists in interface IAdvancedFSOps
      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:
      setupStormCodeDir in interface IAdvancedFSOps
      Parameters:
      user - the user that owns the topology
      path - 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:
      setupWorkerArtifactsDir in interface IAdvancedFSOps
      Parameters:
      user - the user that owns the topology
      path - 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:
      doRequiredTopoFilesExist in interface IAdvancedFSOps
      Parameters:
      conf - the config of the supervisor
      topologyId - 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:
      forceMkdir in interface IAdvancedFSOps
      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:
      forceMkdir in interface IAdvancedFSOps
      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: IAdvancedFSOps
      List the contents of a directory.
      Specified by:
      newDirectoryStream in interface IAdvancedFSOps
      Parameters:
      dir - the driectory to list the contents of
      filter - 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: IAdvancedFSOps
      List the contents of a directory.
      Specified by:
      newDirectoryStream in interface IAdvancedFSOps
      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:
      fileExists in interface IAdvancedFSOps
      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:
      fileExists in interface IAdvancedFSOps
      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:
      getWriter in interface IAdvancedFSOps
      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:
      getOutputStream in interface IAdvancedFSOps
      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:
      dump in interface IAdvancedFSOps
      Parameters:
      location - where to write to
      data - 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:
      slurpString in interface IAdvancedFSOps
      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:
      slurp in interface IAdvancedFSOps
      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:
      createSymlink in interface IAdvancedFSOps
      Parameters:
      link - the link to create
      target - where it should point to
      Throws:
      IOException - on any error.