Package Ganga :: Package Lib :: Package LCG :: Module LCG :: Class LCG
[hide private]
[frames] | no frames]

Class LCG

source code

                 object --+            
                          |            
   GPIDev.Base.Objects.Node --+        
                              |        
GPIDev.Base.Objects.GangaObject --+    
                                  |    
  GPIDev.Adapters.IBackend.IBackend --+
                                      |
                                     LCG

LCG backend - submit jobs to the EGEE/LCG Grid using gLite/EDG middleware.

The middleware type (EDG/gLite) may be selected with the middleware attribute. The specific middleware type must be enabled in ganga configuration. See [LCG] section of ~/.gangarc file.

If the input sandbox exceeds the limit specified in the ganga configuration, it is automatically uploaded to a storage element. This overcomes sandbox size limits on the resource broker.

For gLite middleware bulk (faster) submission is supported so splitting jobs may be more efficient than submitting bunches of individual jobs.

For more options see help on LCGRequirements.

See also: http://cern.ch/glite/documentation

Nested Classes [hide private]

Inherited from GPIDev.Base.Objects.GangaObject: __metaclass__

Instance Methods [hide private]
 
__init__(self)
x.__init__(...) initializes x; see help(type(x)) for signature
source code
 
__checkset_middleware__(self, value) source code
 
__checkset_perusable__(self, value) source code
 
__setup_sandboxcache__(self, job)
Sets up the sandbox cache object to adopt the runtime configuration of the LCG backend
source code
 
__check_and_prestage_inputfile__(self, file)
Checks the given input file size and if it's size is over "BoundSandboxLimit", prestage it to a grid SE.
source code
 
__refresh_jobinfo__(self, job)
Refresh the lcg jobinfo.
source code
 
__print_no_resource_error__(self, jdl)
Prints out the error message when no matched resource
source code
 
master_auto_resubmit(self, rjobs)
Resubmit each subjob individually as bulk resubmission will overwrite previous master job statuses
source code
 
master_submit(self, rjobs, subjobconfigs, masterjobconfig)
Submit the master job to the grid
source code
 
master_resubmit(self, rjobs)
Resubmit the master job to the grid
source code
 
master_kill(self)
kill the master job to the grid
source code
 
__mt_bulk_submit__(self, node_jdls, max_node)
submitting bulk jobs in multiple threads
source code
 
__mt_job_prepare__(self, rjobs, subjobconfigs, masterjobconfig)
preparing jobs in multiple threads
source code
 
master_bulk_submit(self, rjobs, subjobconfigs, masterjobconfig)
GLITE bulk submission
source code
 
master_bulk_resubmit(self, rjobs)
GLITE bulk resubmission
source code
 
master_bulk_kill(self)
GLITE bulk resubmission
source code
 
loginfo(self, verbosity=1)
Get the job's logging info
source code
 
match(self)
Match the job against available grid resources
source code
 
submit(self, subjobconfig, master_job_sandbox)
Submit the job to the grid
source code
 
resubmit(self)
Resubmit the job
source code
 
kill(self)
Kill the job
source code
 
__jobWrapperTemplate__(self)
Create job wrapper
source code
 
peek(self, filename='', command='')
Allow peeking of this job's stdout on the WN (i.e.
source code
 
inspect(self, cmd=None)
Allow viewing of this job's stdout on the WN (i.e.
source code
 
preparejob(self, jobconfig, master_job_sandbox)
Prepare the JDL
source code
 
check_proxy(self)
Update the proxy
source code
 
get_requirement_matches(self, jdl_file=None, spec_ce='')
Return any matches using the requirements or given jdlfile
source code

Inherited from GPIDev.Adapters.IBackend.IBackend: check_auto_resubmit, getStateTime, master_prepare, remove, setup, timedetails

Inherited from GPIDev.Base.Objects.GangaObject: __construct__, __deepcopy__, __getstate__, __setstate__, _attribute_filter__set__, _auto__init__, accept, getJobObject

Inherited from GPIDev.Base.Objects.Node: __copy__, __eq__, __ne__, clone, copyFrom, printSummaryTree, printTree

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Class Methods [hide private]
Static Methods [hide private]
 
updateGangaJobStatus(job, status)
map backend job status to Ganga job status
source code
 
master_updateMonitoringInformation(jobs)
Main Monitoring loop
source code
 
updateMonitoringInformation(jobs)
Monitoring loop for normal jobs
source code
 
master_bulk_updateMonitoringInformation(jobs)
Monitoring loop for glite bulk jobs
source code
Class Variables [hide private]
  _schema = Schema(Version(1, 9), {'CE': SimpleItem(defvalue= ''...
  _category = 'backends'
  _name = 'LCG'
  _exportmethods = ['check_proxy', 'loginfo', 'inspect', 'match']
  _GUIPrefs = [{'attribute': 'CE', 'widget': 'String'}, {'attrib...
  _final_ganga_states = ['completing', 'completed', 'failed']

Inherited from GPIDev.Base.Objects.GangaObject (private): _registry

Inherited from GPIDev.Base.Objects.Node (private): _index_cache, _parent

Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__init__(self)
(Constructor)

source code 

x.__init__(...) initializes x; see help(type(x)) for signature

Overrides: object.__init__
(inherited documentation)

__check_and_prestage_inputfile__(self, file)

source code 
Checks the given input file size and if it's size is
over "BoundSandboxLimit", prestage it to a grid SE.

The argument is a path of the local file.

It returns a dictionary containing information to refer to the file:

    idx = {'lfc_host': lfc_host,
           'local': [the local file pathes],
           'remote': {'fname1': 'remote index1', 'fname2': 'remote index2', ... }
          }

If prestaging failed, None object is returned.

If the file has been previously uploaded (according to md5sum),
the prestaging is ignored and index to the previously uploaded file
is returned.

__refresh_jobinfo__(self, job)

source code 

Refresh the lcg jobinfo. It will be called after resubmission.

master_auto_resubmit(self, rjobs)

source code 

Resubmit each subjob individually as bulk resubmission will overwrite previous master job statuses

Overrides: GPIDev.Adapters.IBackend.IBackend.master_auto_resubmit

master_submit(self, rjobs, subjobconfigs, masterjobconfig)

source code 

Submit the master job to the grid

Overrides: GPIDev.Adapters.IBackend.IBackend.master_submit

master_resubmit(self, rjobs)

source code 

Resubmit the master job to the grid

Overrides: GPIDev.Adapters.IBackend.IBackend.master_resubmit

master_kill(self)

source code 

kill the master job to the grid

Overrides: GPIDev.Adapters.IBackend.IBackend.master_kill

submit(self, subjobconfig, master_job_sandbox)

source code 

Submit the job to the grid

Overrides: GPIDev.Adapters.IBackend.IBackend.submit

resubmit(self)

source code 

Resubmit the job

Overrides: GPIDev.Adapters.IBackend.IBackend.resubmit

kill(self)

source code 

Kill the job

Overrides: GPIDev.Adapters.IBackend.IBackend.kill

peek(self, filename='', command='')

source code 

Allow peeking of this job's stdout on the WN (i.e. while job is in 'running' state)

Return value: None

Overrides: GPIDev.Adapters.IBackend.IBackend.peek

inspect(self, cmd=None)

source code 

Allow viewing of this job's stdout on the WN (i.e. while job is in 'running' state)

Return value: None

master_updateMonitoringInformation(jobs)
Static Method

source code 

Main Monitoring loop

Overrides: GPIDev.Adapters.IBackend.IBackend.master_updateMonitoringInformation

updateMonitoringInformation(jobs)
Static Method

source code 

Monitoring loop for normal jobs

Overrides: GPIDev.Adapters.IBackend.IBackend.updateMonitoringInformation

Class Variable Details [hide private]

_schema

Value:
Schema(Version(1, 9), {'CE': SimpleItem(defvalue= '', doc= 'Request a \
specific Computing Element'), 'jobtype': SimpleItem(defvalue= 'Normal'\
, doc= 'Job type: Normal, MPICH'), 'requirements': ComponentItem('LCGR\
equirements', doc= 'Requirements for the resource selection'), 'sandbo\
xcache': ComponentItem('GridSandboxCache', copyable= 1, doc= 'Interfac\
e for handling oversized input sandbox'), 'parent_id': SimpleItem(defv\
alue= '', protected= 1, copyable= 0, hidden= 1, doc= 'Middleware job i\
dentifier for its parent job'), 'id': SimpleItem(defvalue= '', typelis\
...

_GUIPrefs

Value:
[{'attribute': 'CE', 'widget': 'String'}, {'attribute': 'jobtype', 'wi\
dget': 'String_Choice', 'choices': ['Normal', 'MPICH']}, {'attribute':\
 'middleware', 'widget': 'String_Choice', 'choices': ['EDG', 'GLITE']}\
]