HWRF  trunk@4391
Public Member Functions | Public Attributes | List of all members
produtil.datastore.UpstreamFile Class Reference

Represents a Product created by an external workflow. More...

Detailed Description

Represents a Product created by an external workflow.

This subclass of Product represents a file that is created by an external workflow. It implements a check() call that determines if the file is larger than a minimum size and older than a minimum age. Once the file is large enough and old enough, it sets the location and availability. Any calls to undeliver() or deliver() raise InvalidOperation.

Definition at line 915 of file datastore.py.

Inheritance diagram for produtil.datastore.UpstreamFile:
produtil.datastore.Product produtil.datastore.Datum hwrf.regrib.UpstreamGRIB1 hwrf.post.EGRIB1Product

Public Member Functions

def check
 Checks the specified file to see if it is available. More...
 
def undeliver (self)
 Undelivering an UpstreamFile merely sets the internal "available" flag to False. More...
 
def deliver
 Raises InvalidOperation. More...
 
- Public Member Functions inherited from produtil.datastore.Product
def add_callback
 Adds a delivery callback function. More...
 
def has_callbacks (self)
 Returns True if this Product has any callback functions and False otherwise.
 
def call_callbacks
 Calls all delivery callback functions. More...
 
def check (self, kwargs)
 Asks the product to check its own availability and update the database. More...
 
def deliver (self, kwargs)
 Asks the Product to deliver itself. More...
 
def undeliver (self, kwargs)
 "Undelivers" a product. More...
 
def setavailable (self, val)
 Sets the availability to the specified value. More...
 
def is_available (self)
 Is the product available? More...
 
def validate (self)
 Validates this object's Datastore, prodname and category. More...
 
- Public Member Functions inherited from produtil.datastore.Datum
def __init__ (self, dstore, prodname, category, meta=None, cache=30, location=None, kwargs)
 Datum constructor. More...
 
def __enter__ (self)
 Acquires this object's thread lock. More...
 
def __exit__ (self, etype, evalue, traceback)
 Releases this object's thread lock. More...
 
def validate (self)
 Validates this object's Datastore, prodname and category. More...
 
def getid (self)
 Returns the database ID of this datum. More...
 
def getdatastore (self)
 Returns the datastore of this datum. More...
 
def transaction (self)
 Creates, but does not lock, a Transaction for this datum's datastore. More...
 
def getprodtype (self)
 Returns the product type of this Datum. More...
 
def getprodname (self)
 Returns the product name part of the database ID. More...
 
def getcategory (self)
 Returns the product category part of the database ID. More...
 
def getlocation (self)
 Returns the "location" field of this Datum's database entry. More...
 
def setlocation (self, v)
 Sets the "location" field of this Datum's database entry. More...
 
def __hash__ (self)
 Integer hash function. More...
 
def __str__ (self)
 Human-readable description of this Datum. More...
 
def __repr__ (self)
 Python code-like description of this Datum. More...
 
def __cmp__ (self, other)
 Compares two Datums' prodnames and categories. More...
 
def set_loc_avail (self, loc, avail)
 Sets the location and availability of this Datum in a single transaction. More...
 
def update (self)
 Discards all cached metadata and refreshes it from the Datastore. More...
 
def __getitem__ (self, k)
 Returns the value of the specified metadata key or raises KeyError. More...
 
def meta
 Return the value of a metadata key. More...
 
def get
 Alias for self.meta() Returns the value of the specified metadata key or returns default if it is unset. More...
 
def __setitem__ (self, k, v)
 Sets the value of the specified metadata key. More...
 
def __delitem__ (self, k)
 Deletes the specified metadata key, which must not be "available" or "location". More...
 
def __contains__ (self, k)
 Determines if a metadata key is set. More...
 
def iteritems (self)
 Iterates over all metadata (key,value) pairs for this Datum, including "available" and "location". More...
 

Public Attributes

 available
 

Additional Inherited Members

- Properties inherited from produtil.datastore.Product
 available
 Read-write property: is the product available? More...
 
- Properties inherited from produtil.datastore.Datum
 prodname = property(getprodname,None,None,)
 Read-only property, an alias for getprodname(): the product name part of the database ID. More...
 
 category = property(getcategory,None,None,)
 Read-only property, an alias for getcategory(), the category name part of the database ID. More...
 
 prodtype
 Read-only property, an alias for getprodtype(), the product type. More...
 
 did
 Read-only property, an alias for getid(). More...
 
 dstore
 Read-only property, an alias for getdatastore(), the Datastore in which this Datum resides. More...
 
 location
 Read-write property, an alias for getlocation() and setlocation(). More...
 

Member Function Documentation

def produtil.datastore.UpstreamFile.check (   self,
  frominfo = None,
  minsize = None,
  minage = None,
  logger = None 
)

Checks the specified file to see if it is available.

Looks for the file on disk. Updates the "available" and "location" attributes of this Product. Uses two metadata values to decide whether the file is "available" if it exists:

self["minsize"] - minimum size in bytes. Default: 0 self["minage"] - minimum age in seconds. Default: 20

Both can be overridden by corresponding arguments. Note that one must be careful with the minimum age on poorly-maintained clusters due to clock skews.

Parameters
frominfoOptional: where to look for the file instead of looking at self.location
minsizeOptional: the minimum file size in bytes
minageOptional: the minimum file modification time in seconds.
loggerOptional: a logging.Logger for log messages.

Definition at line 924 of file datastore.py.

Referenced by produtil.fileop.FileWaiter.checkfiles().

def produtil.datastore.UpstreamFile.deliver (   self,
  location = None,
  frominfo = None 
)

Raises InvalidOperation.

You cannot deliver an upstream file. The upstream workflow must do that for you. Call check() instead to see if the file has been delivered.

Definition at line 969 of file datastore.py.

def produtil.datastore.UpstreamFile.undeliver (   self)

Undelivering an UpstreamFile merely sets the internal "available" flag to False.

It does not remove the data.

Definition at line 965 of file datastore.py.


The documentation for this class was generated from the following file: