コード例 #1
0
    def dirlist(self, path, flags=0, timeout=0, callback=None):
        """List entries of a directory.

    :param  path: path to the directory to list
    :type   path: string
    :param flags: An `ORed` combination of :mod:`XRootD.client.flags.DirListFlags`
                  where the default is `DirListFlags.NONE`
    :returns:     tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                  object and :mod:`XRootD.client.responses.DirectoryList` object

    .. warning:: Currently, passing `DirListFlags.STAT` with an asynchronous
                 call to :mod:`XRootD.client.FileSystem.dirlist()` does not
                 work, due to an xrootd client limitation. So you'll get
                 ``None`` instead of the ``StatInfo`` instance. See
                 `the GitHub issue <https://github.com/xrootd/xrootd/issues/2>`_
                 for more details.
    """
        if callback:
            callback = CallbackWrapper(callback, DirectoryList)
            return XRootDStatus(
                self.__fs.dirlist(path, flags, timeout, callback))

        status, response = self.__fs.dirlist(path, flags, timeout)
        if response: response = DirectoryList(response)
        return XRootDStatus(status), response
コード例 #2
0
ファイル: file.py プロジェクト: gganis/xrootd
    def sync(self, timeout=0, callback=None):
        """Commit all pending disk writes.

    :returns: tuple containing :mod:`XRootD.client.responses.XRootDStatus`
              object and None
    """
        if callback:
            callback = CallbackWrapper(callback, None)
            return XRootDStatus(self.__file.sync(timeout, callback))

        status, response = self.__file.sync(timeout)
        return XRootDStatus(status), None
コード例 #3
0
    def ping(self, timeout=0, callback=None):
        """Check if the server is alive.

    :returns: tuple containing :mod:`XRootD.client.responses.XRootDStatus`
              object and None
    """
        if callback:
            callback = CallbackWrapper(callback, None)
            return XRootDStatus(self.__fs.ping(timeout, callback))

        status, response = self.__fs.ping(timeout)
        return XRootDStatus(status), None
コード例 #4
0
ファイル: file.py プロジェクト: gganis/xrootd
    def visa(self, timeout=0, callback=None):
        """Get access token to a file.

    :returns:      tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                   object and a string
    """
        if callback:
            callback = CallbackWrapper(callback, None)
            return XRootDStatus(self.__file.visa(timeout, callback))

        status, response = self.__file.visa(timeout)
        return XRootDStatus(status), response
コード例 #5
0
ファイル: file.py プロジェクト: vokac/xrootd
  def list_xattr(self, timeout=0, callback=None):
    """List all extended file attributes.

    :returns:     tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                  object and :mod:`list of touples (string, string, XRootD.client.responses.XRootDStatus)` object
    """
    if callback:
      callback = CallbackWrapper(callback, list)
      return XRootDStatus(self.__file.list_xattr(timeout, callback))

    status, response = self.__file.list_xattr(timeout)
    return XRootDStatus(status), response
コード例 #6
0
    def protocol(self, timeout=0, callback=None):
        """Obtain server protocol information.

    :returns: tuple containing :mod:`XRootD.client.responses.XRootDStatus`
              object and :mod:`XRootD.client.responses.ProtocolInfo` object
    """
        if callback:
            callback = CallbackWrapper(callback, ProtocolInfo)
            return XRootDStatus(self.__fs.protocol(timeout, callback))

        status, response = self.__fs.protocol(timeout)
        if response: response = ProtocolInfo(response)
        return XRootDStatus(status), response
コード例 #7
0
    def rmdir(self, path, timeout=0, callback=None):
        """Remove a directory.

    :param path: path to the directory to remove
    :type  path: string
    :returns:    tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                 object and None
    """
        if callback:
            callback = CallbackWrapper(callback, None)
            return XRootDStatus(self.__fs.rmdir(path, timeout, callback))

        status, response = self.__fs.rmdir(path, timeout)
        return XRootDStatus(status), None
コード例 #8
0
ファイル: file.py プロジェクト: vokac/xrootd
  def del_xattr(self, attrs, timeout=0, callback=None):
    """Delete extended file attributes.

    :param attrs: list of extended attribute names to be deleted
    :type  attrs: list of strings
    :returns:     tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                  object and :mod:`list of touples (string, XRootD.client.responses.XRootDStatus)` object
    """
    if callback:
      callback = CallbackWrapper(callback, list)
      return XRootDStatus(self.__file.del_xattr(attrs, timeout, callback))

    status, response = self.__file.del_xattr(attrs, timeout)
    return XRootDStatus(status), response
コード例 #9
0
ファイル: file.py プロジェクト: vokac/xrootd
  def set_xattr(self, attrs, timeout=0, callback=None):
    """Set extended file attributes.

    :param attrs: extended attributes to be set on the file
    :type  attrs: list of tuples of name/value pairs
    :returns:     tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                  object and :mod:`list of touples (string, XRootD.client.responses.XRootDStatus)` object
    """
    if callback:
      callback = CallbackWrapper(callback, list)
      return XRootDStatus(self.__file.set_xattr(attrs, timeout, callback))

    status, response = self.__file.set_xattr(attrs, timeout)
    return XRootDStatus(status), response
コード例 #10
0
    def sendinfo(self, info, timeout=0, callback=None):
        """Send info to the server (up to 1024 characters).

    :param info: the info string to be sent
    :type  info: string
    :returns:    tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                 object and None
     """
        if callback:
            callback = CallbackWrapper(callback, None)
            return XRootDStatus(self.__fs.sendinfo(info, timeout, callback))

        status, response = self.__fs.sendinfo(info, timeout)
        return XRootDStatus(status), response
コード例 #11
0
ファイル: file.py プロジェクト: gganis/xrootd
    def truncate(self, size, timeout=0, callback=None):
        """Truncate the file to a particular size.

    :param size: desired size of the file
    :type  size: integer
    :returns:    tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                 object and None
    """
        if callback:
            callback = CallbackWrapper(callback, None)
            return XRootDStatus(self.__file.truncate(size, timeout, callback))

        status, response = self.__file.truncate(size, timeout)
        return XRootDStatus(status), None
コード例 #12
0
ファイル: file.py プロジェクト: gganis/xrootd
    def fcntl(self, arg, timeout=0, callback=None):
        """Perform a custom operation on an open file.

    :param    arg: argument
    :type     arg: string
    :returns:      tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                   object and a string
    """
        if callback:
            callback = CallbackWrapper(callback, None)
            return XRootDStatus(self.__file.fcntl(arg, timeout, callback))

        status, response = self.__file.fcntl(arg, timeout)
        return XRootDStatus(status), response
コード例 #13
0
    def statvfs(self, path, timeout=0, callback=None):
        """Obtain status information for a Virtual File System.

    :param path: path to the file/directory to stat
    :type  path: string
    :returns:    tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                 object and :mod:`XRootD.client.responses.StatInfoVFS` object
    """
        if callback:
            callback = CallbackWrapper(callback, StatInfoVFS)
            return XRootDStatus(self.__fs.statvfs(path, timeout, callback))

        status, response = self.__fs.statvfs(path, timeout)
        if response: response = StatInfoVFS(response)
        return XRootDStatus(status), response
コード例 #14
0
ファイル: file.py プロジェクト: gganis/xrootd
    def stat(self, force=False, timeout=0, callback=None):
        """Obtain status information for this file.

    :param force: do not use the cached information, force re-stating
    :type  force: boolean
    :returns:     tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                  object and :mod:`XRootD.client.responses.StatInfo` object
    """
        if callback:
            callback = CallbackWrapper(callback, StatInfo)
            return XRootDStatus(self.__file.stat(force, timeout, callback))

        status, response = self.__file.stat(force, timeout)
        if response: response = StatInfo(response)
        return XRootDStatus(status), response
コード例 #15
0
    def chmod(self, path, mode, timeout=0, callback=None):
        """Change access mode on a directory or a file.

    :param path: path to the file/directory to change access mode
    :type  path: string
    :param mode: An `OR`ed` combination of :mod:`XRootD.client.flags.AccessMode`
    :returns:    tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                 object and None
    """
        if callback:
            callback = CallbackWrapper(callback, None)
            return XRootDStatus(self.__fs.chmod(path, mode, timeout, callback))

        status, response = self.__fs.chmod(path, mode, timeout)
        return XRootDStatus(status), None
コード例 #16
0
    def mv(self, source, dest, timeout=0, callback=None):
        """Move a directory or a file.

    :param source: the file or directory to be moved
    :type  source: string
    :param   dest: the new name
    :type    dest: string
    :returns:      tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                   object and None
    """
        if callback:
            callback = CallbackWrapper(callback, None)
            return XRootDStatus(self.__fs.mv(source, dest, timeout, callback))

        status, response = self.__fs.mv(source, dest, timeout)
        return XRootDStatus(status), None
コード例 #17
0
ファイル: filesystem.py プロジェクト: wyang007/xrootd
  def truncate(self, path, size, timeout=0, callback=None):
    """Truncate a file.

    :param path: path to the file to be truncated
    :type  path: string
    :param size: file size
    :type  size: integer
    :returns:    tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                 object and None
    """
    if callback:
      callback = CallbackWrapper(callback, None)
      return XRootDStatus(self.__fs.truncate(path, size, timeout, callback))

    status, response = self.__fs.truncate(path, size, timeout)
    return XRootDStatus(status), None
コード例 #18
0
ファイル: filesystem.py プロジェクト: wyang007/xrootd
  def deeplocate(self, path, flags, timeout=0, callback=None):
    """Locate a file, recursively locate all disk servers.

    :param  path: path to the file to be located
    :type   path: string
    :param flags: An `ORed` combination of :mod:`XRootD.client.flags.OpenFlags`
    :returns:     tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                  object and :mod:`XRootD.client.responses.LocationInfo` object
    """
    if callback:
      callback = CallbackWrapper(callback, LocationInfo)
      return XRootDStatus(self.__fs.deeplocate(path, flags, timeout, callback))

    status, response = self.__fs.deeplocate(path, flags, timeout)
    if response: response = LocationInfo(response)
    return XRootDStatus(status), response
コード例 #19
0
ファイル: file.py プロジェクト: vokac/xrootd
  def read(self, offset=0, size=0, timeout=0, callback=None):
    """Read a data chunk from a given offset.

    :param offset: offset from the beginning of the file
    :type  offset: integer
    :param   size: number of bytes to be read
    :type    size: integer
    :returns:      tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                   object and the data that was read
    """
    if callback:
      callback = CallbackWrapper(callback, None)
      return XRootDStatus(self.__file.read(offset, size, timeout, callback))

    status, response = self.__file.read(offset, size, timeout)
    return XRootDStatus(status), response
コード例 #20
0
ファイル: file.py プロジェクト: vokac/xrootd
  def write(self, buffer, offset=0, size=0, timeout=0, callback=None):
    """Write a data chunk at a given offset.

    :param buffer: data to be written
    :param offset: offset from the beginning of the file
    :type  offset: integer
    :param   size: number of bytes to be written
    :type    size: integer
    :returns:      tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                   object and None
    """
    if callback:
      callback = CallbackWrapper(callback, None)
      return XRootDStatus(self.__file.write(buffer, offset, size, timeout, callback))

    status, response = self.__file.write(buffer, offset, size, timeout)
    return XRootDStatus(status), None
コード例 #21
0
    def prepare(self, files, flags, priority=0, timeout=0, callback=None):
        """Prepare one or more files for access.

    :param    files: list of files to be prepared
    :type     files: list
    :param    flags: An `ORed` combination of
                     :mod:`XRootD.client.flags.PrepareFlags`
    :param priority: priority of the request 0 (lowest) - 3 (highest)
    :type  priority: integer
    :returns:        tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                     object and None
     """
        if callback:
            callback = CallbackWrapper(callback, None)
            return XRootDStatus(
                self.__fs.prepare(files, flags, priority, timeout, callback))

        status, response = self.__fs.prepare(files, flags, priority, timeout)
        return XRootDStatus(status), response
コード例 #22
0
ファイル: file.py プロジェクト: vokac/xrootd
  def open(self, url, flags=0, mode=0, timeout=0, callback=None):
    """Open the file pointed to by the given URL.

    :param   url: url of the file to be opened
    :type    url: string
    :param flags: An `ORed` combination of :mod:`XRootD.client.flags.OpenFlags`
                  where the default is `OpenFlags.NONE`
    :param  mode: access mode for new files, an `ORed` combination of
                 :mod:`XRootD.client.flags.AccessMode` where the default is
                 `AccessMode.NONE`
    :returns:    tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                 object and None
    """
    if callback:
      callback = CallbackWrapper(callback, None)
      return XRootDStatus(self.__file.open(url, flags, mode, timeout, callback))

    status, response = self.__file.open(url, flags, mode, timeout)
    return XRootDStatus(status), None
コード例 #23
0
ファイル: file.py プロジェクト: vokac/xrootd
  def vector_read(self, chunks, timeout=0, callback=None):
    """Read scattered data chunks in one operation.

    :param chunks: list of the chunks to be read. The default maximum
                   chunk size is 2097136 bytes and the default maximum
                   number of chunks per request is 1024. The server may
                   be queried using :func:`XRootD.client.FileSystem.query`
                   for the actual settings.
    :type  chunks: list of 2-tuples of the form (offset, size)
    :returns:      tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                   object and :mod:`XRootD.client.responses.VectorReadInfo`
                   object
    """
    if callback:
      callback = CallbackWrapper(callback, VectorReadInfo)
      return XRootDStatus(self.__file.vector_read(chunks, timeout, callback))

    status, response = self.__file.vector_read(chunks, timeout)
    if response: response = VectorReadInfo(response)
    return XRootDStatus(status), response
コード例 #24
0
ファイル: filesystem.py プロジェクト: wyang007/xrootd
  def query(self, querycode, arg, timeout=0, callback=None):
    """Obtain server information.

    :param querycode: the query code as specified in
                      :mod:`XRootD.client.flags.QueryCode`
    :param       arg: query argument
    :type        arg: string
    :returns:         the query response or None if there was an error
    :rtype:           string

    .. note::
      For more information about XRootD query codes and arguments, see
      `the relevant section in the protocol reference
      <http://xrootd.slac.stanford.edu/doc/prod/XRdv299.htm#_Toc337053385>`_.
    """
    if callback:
      callback = CallbackWrapper(callback, None)
      return XRootDStatus(self.__fs.query(querycode, arg, timeout, callback))

    status, response = self.__fs.query(querycode, arg, timeout)
    return XRootDStatus(status), response
コード例 #25
0
ファイル: filesystem.py プロジェクト: wyang007/xrootd
  def mkdir(self, path, flags=0, mode=0, timeout=0, callback=None):
    """Create a directory.

    :param  path: path to the directory to create
    :type   path: string
    :param flags: An `ORed` combination of :mod:`XRootD.client.flags.MkDirFlags`
                  where the default is `MkDirFlags.NONE`
    :param  mode: the initial file access mode, an `ORed` combination of
                  :mod:`XRootD.client.flags.AccessMode` where the default is
                  `rwxr-x---`
    :returns:     tuple containing :mod:`XRootD.client.responses.XRootDStatus`
                  object and None
    """
    if mode == 0:
      mode = AccessMode.UR | AccessMode.UW | AccessMode.UX | \
             AccessMode.GR | AccessMode.GX

    if callback:
      callback = CallbackWrapper(callback, None)
      return XRootDStatus(self.__fs.mkdir(path, flags, mode, timeout, callback))

    status, response = self.__fs.mkdir(path, flags, mode, timeout)
    return XRootDStatus(status), None
コード例 #26
0
ファイル: file.py プロジェクト: gganis/xrootd
    def close(self, timeout=0, callback=None):
        """Close the file.

    :returns: tuple containing :mod:`XRootD.client.responses.XRootDStatus`
              object and None

    As of Python 2.5, you can avoid having to call this method explicitly if you
    use the :keyword:`with` statement.  For example, the following code will
    automatically close *f* when the :keyword:`with` block is exited::

      from __future__ import with_statement # This isn't required in Python 2.6

      with client.File() as f:
        f.open("root://someserver//somefile")
        for line in f:
          print line,
    """
        if callback:
            callback = CallbackWrapper(callback, None)
            return XRootDStatus(self.__file.close(timeout, callback))

        status, response = self.__file.close(timeout)
        return XRootDStatus(status), None