Source code for radical.saga.replica.logical_file


__author__    = "Andre Merzky, Ole Weidner"
__copyright__ = "Copyright 2012-2013, The SAGA Project"
__license__   = "MIT"


import radical.utils            as ru
import radical.utils.signatures as rus

from ..constants import SYNC, ASYNC, TASK
from ..adaptors  import base    as sab
from ..namespace import entry   as nsentry

from .. import attributes       as sa
from .. import session          as ss
from .. import task             as st
from .  import constants        as c


# ------------------------------------------------------------------------------
#
[docs]class LogicalFile (nsentry.Entry, sa.Attributes) : # -------------------------------------------------------------------------- #
[docs] @rus.takes ('LogicalFile', rus.optional ((ru.Url, str)), rus.optional (int, rus.nothing), rus.optional (ss.Session), rus.optional (sab.Base), rus.optional (dict), rus.optional (rus.one_of (SYNC, ASYNC, TASK))) @rus.returns (rus.nothing) def __init__ (self, url=None, flags=c.READ, session=None, _adaptor=None, _adaptor_state={}, _ttype=None) : ''' __init__(url=None, flags=READ, session=None) url: saga.Url flags: flags enum session: saga.Session ret: obj ''' # param checks if not flags : flags = 0 url = ru.Url (url) self._nsentry = super (LogicalFile, self) self._nsentry.__init__ (url, flags, session, _adaptor, _adaptor_state, _ttype=_ttype)
# -------------------------------------------------------------------------- # @classmethod @rus.takes ('LogicalFile', rus.optional ((ru.Url, str)), rus.optional (int, rus.nothing), rus.optional (ss.Session), rus.optional (rus.one_of (SYNC, ASYNC, TASK))) @rus.returns (st.Task) def create (cls, url=None, flags=c.READ, session=None, ttype=None) : ''' url: saga.Url flags: saga.replica.flags enum session: saga.Session ttype: saga.task.type enum ret: saga.Task ''' if not flags : flags = 0 _nsentry = super (LogicalFile, cls) return _nsentry.create (url, flags, session, ttype=ttype) # ---------------------------------------------------------------- #
[docs] @rus.takes ('LogicalFile', rus.optional (rus.one_of (SYNC, ASYNC, TASK))) @rus.returns ((bool, st.Task)) def is_file (self, ttype=None) : ''' is_file() ttype: saga.task.type enum ret: bool / saga.Task ''' return self.is_entry (ttype=ttype)
# -------------------------------------------------------------------------- # # replica methods #
[docs] @rus.takes ('LogicalFile', rus.optional (rus.one_of (SYNC, ASYNC, TASK))) @rus.returns ((int, st.Task)) def get_size (self, ttype=None) : ''' get_size() Return the size of the file. ttype: saga.task.type enum ret: int / saga.Task Returns the size of the physical file represented by this logical file (in bytes) Example:: # get a file handle lf = saga.replica.LogicalFile("irods://localhost/tmp/data.bin") # print the logical file's size print(lf.get_size ()) ''' return self._adaptor.get_size_self (ttype=ttype)
# -------------------------------------------------------------------------- #
[docs] @rus.takes ('LogicalFile', rus.optional ((ru.Url, str)), rus.optional (rus.one_of (SYNC, ASYNC, TASK))) @rus.returns ((rus.nothing, st.Task)) def add_location (self, name, ttype=None) : ''' add_location(name) Add a physical location. name: saga.Url ttype: saga.task.type enum ret: None / saga.Task ''' return self._adaptor.add_location (name, ttype=ttype)
# -------------------------------------------------------------------------- #
[docs] @rus.takes ('LogicalFile', rus.optional ((ru.Url, str)), rus.optional (rus.one_of (SYNC, ASYNC, TASK))) @rus.returns ((rus.nothing, st.Task)) def remove_location (self, name, ttype=None) : ''' remove_location(name) Remove a physical location. name: saga.Url ttype: saga.task.type enum ret: None / saga.Task ''' return self._adaptor.remove_location (name, ttype=ttype)
# -------------------------------------------------------------------------- #
[docs] @rus.takes ('LogicalFile', rus.optional ((ru.Url, str)), rus.optional ((ru.Url, str)), rus.optional (rus.one_of (SYNC, ASYNC, TASK))) @rus.returns ((rus.nothing, st.Task)) def update_location (self, old, new, ttype=None) : ''' update_location(old, new) Updates a physical location. old: saga.Url new: saga.Url ttype: saga.task.type enum ret: None / saga.Task ''' return self._adaptor.update_location (old, new, ttype=ttype)
# -------------------------------------------------------------------------- #
[docs] @rus.takes ('LogicalFile', rus.optional (rus.one_of (SYNC, ASYNC, TASK))) @rus.returns ((rus.list_of (ru.Url), st.Task)) def list_locations (self, ttype=None) : ''' list_locations() List all physical locations of a logical file. ttype: saga.task.type enum ret: list [saga.Url] / saga.Task ''' return self._adaptor.list_locations (ttype=ttype)
# -------------------------------------------------------------------------- #
[docs] @rus.takes ('LogicalFile', (ru.Url, str), rus.optional (int, rus.nothing), rus.optional (rus.one_of (SYNC, ASYNC, TASK))) @rus.returns ((rus.nothing, st.Task)) def replicate (self, name, flags=None, ttype=None) : ''' replicate(name) Replicate a logical file. name: saga.Url flags: flags enum ttype: saga.task.type enum ret: None / saga.Task ''' if not flags : flags = 0 return self._adaptor.replicate (name, flags, ttype=ttype)
# -------------------------------------------------------------------------- # non-GFD.90 #
[docs] @rus.takes ('LogicalFile', (ru.Url, str), rus.optional ((ru.Url, str)), rus.optional (int, rus.nothing), rus.optional (rus.one_of (SYNC, ASYNC, TASK))) @rus.returns ((rus.nothing, st.Task)) def upload (self, name, tgt=None, flags=None, ttype=None) : ''' upload(name, tgt=None, flags=None) Upload a physical file. name: saga.Url tgt: saga.Url flags: flags enum ttype: saga.task.type enum ret: None / saga.Task ''' if not flags : flags = 0 return self._adaptor.upload (name, tgt, flags, ttype=ttype)
# -------------------------------------------------------------------------- # non-GFD.90 #
[docs] @rus.takes ('LogicalFile', (ru.Url, str), rus.optional ((ru.Url, str)), rus.optional (int, rus.nothing), rus.optional (rus.one_of (SYNC, ASYNC, TASK))) @rus.returns ((rus.nothing, st.Task)) def download (self, name, src=None, flags=None, ttype=None) : ''' download(name, src=None, flags=None) Download a physical file. name: saga.Url src: saga.Url flags: flags enum ttype: saga.task.type enum ret: None / saga.Task ''' if not flags : flags = 0 return self._adaptor.download (name, src, flags, ttype=ttype)
# ------------------------------------------------------------------------------