gc3libs.backends.arc0

Job control on ARC0 resources.

class gc3libs.backends.arc0.ArcLrms(name, architecture, max_cores, max_cores_per_job, max_memory_per_core, max_walltime, auth, arc_ldap=None, frontend=None, lost_job_timeout=120, **extra_args)

Manage jobs through the ARC middleware.

In addition to attributes

Attribute name Type Required?
arc_ldap string  
frontend string yes
cancel_job(*args, **kwargs)

Cancel a running job. If app is associated to a queued or running remote job, tell the execution middleware to cancel it.

close()

Return True if the list of files is expressed in one of the file transfer protocols the LRMS supports.

Return False otherwise.

free(*args, **kwargs)

Free up any remote resources used for the execution of app. In particular, this should delete any remote directories and files.

Call this method when app.execution.state is anything other than TERMINATED results in undefined behavior and will likely be the cause of errors later on. Be cautious.

get_resource_status(obj, *args)

Get dynamic information from the ARC infosystem and set attributes on the current object accordingly.

The following attributes are set:

  • total_queued
  • free_slots
  • user_running
  • user_queued
get_results(*args, **kwargs)

Retrieve job output files into local directory download_dir (which must already exists). Will not overwrite existing files, unless the optional argument overwrite is True.

peek(*args, **kwargs)

Download size bytes (at offset offset from the start) from remote file remote_filename and write them into local_file. If size is None (default), then snarf contents of remote file from offset unto the end.

Argument local_file is either a local path name (string), or a file-like object supporting a .write() method. If local_file is a path name, it is created if not existent, otherwise overwritten.

Argument remote_filename is the name of a file in the remote job “sandbox”.

Any exception raised by operations will be passed through.

submit_job(*args, **kwargs)

Submit an Application instance to the configured computational resource; return a gc3libs.Job instance for controlling the submitted job.

This method only returns if the job is successfully submitted; upon any failure, an exception is raised.

Note:

  1. job.state is not altered; it is the caller’s responsibility to update it.
  2. the job object may be updated with any information that is necessary for this LRMS to perform further operations on it.
update_job_state(obj, *args)

Query the state of the ARC0 job associated with app and update app.execution.state accordingly. Return the corresponding Run.State; see Run.State for more details.

The mapping of ARC0 job statuses to Run.State is as follows:

ARC job status Run.State
ACCEPTED SUBMITTED
ACCEPTING SUBMITTED
SUBMITTING SUBMITTED
PREPARING SUBMITTED
PREPARED SUBMITTED
INLRMS:Q SUBMITTED
INLRMS:R RUNNING
INLRMS:O STOPPED
INLRMS:E STOPPED
INLRMS:S STOPPED
INLRMS:H STOPPED
FINISHING RUNNING
EXECUTED RUNNING
FINISHED TERMINATING
CANCELING TERMINATING
FINISHED TERMINATING
FAILED TERMINATING
KILLED TERMINATED
DELETED TERMINATED

Any other ARC job status is mapped to Run.State.UNKNOWN. In particular, querying a job ID that is not found in the ARC information system will result in UNKNOWN state, as will querying a job that has just been submitted and has not yet found its way to the infosys.

validate_data(data_file_list)

Return True if the list of files is expressed in one of the file transfer protocols the LRMS supports.

Return False otherwise.