...
Goals
Implementation of DRMAAv2 Specification
Background and strategic fit
The Distributed Resource Management Application API Version 2 (DRMAA) specification defines an interface for tightly coupled, but still portable access to the majority of DRM systems. PBS is a Distributed Resource Management system(DRMS). Standardized access to PBS product through a DRMAAv2 implementation(API). High-level API designers, meta-scheduler architects and end users can rely on DRMAAv2 implementations for a unified access to execution resources.
DRMAAv2 Specification (Distributed Resource Management Application API 2)
Overview
Open standards are taking major role in the exponential growth in many areas. DRMAA2 is such an open standard. It is the successor of the wide-spread DRMAA standard. DRMAA is generally used for submitting jobs (or creating job work-flows) into a compute cluster by using a cluster resource management system like PBS Professional. Unlike DRMAA, with DRMAA2 you can not only submit jobs, you can also get cluster related information, like getting host names, types and status information or insight about queues configured in the resource management system. You can also monitor jobs not submitted within the application. Overall it covers many more use cases than the old DRMAA standard.
...
https://www.ogf.org/documents/GFD.231.pdf
Assumptions
...
Color coding in Diagram
Requirements
The implementation of DRMAA2 specification for PBS Pro is broadly divided into the following requirements/user stories.
# | User Story | Importance | Notes |
---|
1 | Jira Legacy |
---|
server | JIRA (pbspro.atlassian.net) |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 32008a99-7831-3ff8-9638-3db0cd01164d |
---|
key | PP-628 |
---|
|
| |
|
2 | Jira Legacy |
---|
server | JIRA (pbspro.atlassian.net) |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 32008a99-7831-3ff8-9638-3db0cd01164d |
---|
key | PP-634 |
---|
|
|
|
|
3 | Jira Legacy |
---|
server | JIRA (pbspro.atlassian.net) |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 32008a99-7831-3ff8-9638-3db0cd01164d |
---|
key | PP-631 |
---|
|
|
|
|
4 | Jira Legacy |
---|
server | JIRA (pbspro.atlassian.net) |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 32008a99-7831-3ff8-9638-3db0cd01164d |
---|
key | PP-630 |
---|
|
|
|
|
5 | Jira Legacy |
---|
server | JIRA (pbspro.atlassian.net) |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 32008a99-7831-3ff8-9638-3db0cd01164d |
---|
key | PP-629 |
---|
|
|
|
|
6 | Jira Legacy |
---|
server | JIRA (pbspro.atlassian.net) |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 32008a99-7831-3ff8-9638-3db0cd01164d |
---|
key | PP-632 |
---|
|
|
|
|
7 | Jira Legacy |
---|
server | JIRA (pbspro.atlassian.net) |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 32008a99-7831-3ff8-9638-3db0cd01164d |
---|
key | PP-633 |
---|
|
|
|
|
8 | Jira Legacy |
---|
server | JIRA (pbspro.atlassian.net) |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 32008a99-7831-3ff8-9638-3db0cd01164d |
---|
key | PP-643 |
---|
|
|
|
|
9 | Jira Legacy |
---|
server | JIRA (pbspro.atlassian.net) |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 32008a99-7831-3ff8-9638-3db0cd01164d |
---|
key | PP-626 |
---|
|
|
|
|
10 | Jira Legacy |
---|
server | JIRA (pbspro.atlassian.net) |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 32008a99-7831-3ff8-9638-3db0cd01164d |
---|
key | PP-644 |
---|
|
|
|
|
11 | Jira Legacy |
---|
server | JIRA (pbspro.atlassian.net) |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 32008a99-7831-3ff8-9638-3db0cd01164d |
---|
key | PP-636 |
---|
|
|
|
|
12 | Jira Legacy |
---|
server | JIRA (pbspro.atlassian.net) |
---|
columns | key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution |
---|
serverId | 32008a99-7831-3ff8-9638-3db0cd01164d |
---|
key | PP-673 |
---|
|
|
|
|
Architecture and design
Application stack
DRMAA2 Layout
Note : Document is part of https://troeger.eu/files/talks/ogf35.pdf
Domain model diagram
...
Image Added
ConnectionPool is a set of active connections with PBSPro. In multi-threaded application each thread uses one connection. ConnectionPool Is Member of DRMSystem
...
Job State model Defined in DRMAAv2 Specification
PDF |
---|
name | DRMAA2Overview | statemodel.pdf |
---|
|
Note : Document is part of https://www.ogf.org/documents/GFD.231.pdf
DRMAA2 spec relies on concept of session to support the persistency of job and reservation information in multiple runs of short lived applications.
...
Refer DRMAAv2 document for description of Objects
Few important Sequence diagram
Image Modified
Image RemovedImage Added
Source Directory structure in github
├── ...
├──
pbsproPBSPro
│ ├──
src│DRMAAv2 ├── ├── lib│ ├── ├── ├──
Libdrmaa2 #
DRMAAv2 module Top level directory
| ├──
├──
-- configure.ac DRMAAv2 module Top level directory │ ├── ├──#
├──
This ├──
file libdrmaa2dictates the behavior of the final configure script that is generated by Autoconf.
| ├──
├──
-- INSTALL #
Instructions for successful compilation of this
| ├──
├──
-- autogen.sh All the function prototypes#
andThis definitionsfile includedprovides inautomatic thisbuild API.system Autoconfpreparation and libtool specification to create library.│ is useful for projects that use the GNU autotools.
| ├──
├──
├──
├──
├──
-- drmaa2.cppAUTHORS #
Altair authors information API definitions│
| ├──
├──
├──
├──
├── -- drmaa2.hChangeLog #
Delta change API and declaration
│information
| ├──
├── ├──
├──
src -- COPYING #
Altair Copyright information
| ├──
├──
-- NEWS Core infrastructure source files │ ├── ├── ├──
├──
inc #
Latest news and updates
| ├──
├──
-- README Core infrastructure internal include files#
README│
| ├──
├── ├──
├──
unittesting-- README.md #
README
| ├──
├──
api White-box testing │ # ├──
This ├──directory ├──
contains ├──
all the ├──
function srcprototypes and definitions included in this API.
│ ├──
├──
├──
c-binding #
C style API Sourcedefinitions for unit-testingexternal use
│ ├──
├── ├──
├──
├──
inc ├──
-- drmaa2.cpp #
API definitions
│ ├──
├──
├──
├──
-- drmaa2.h
Internal
#
includeAPI
files for unit-testing
and declaration
│ ├──
m4 ├──
├──
cpp-binding #
CPP style class definitions for external use
│ ├──
├──
├──
-- drmaa2.hpp
#
Class level
GNUdeclaration
|
m4
macros
required├──
for
DRMAAv2│ ├──
├── docsrc #
Core infrastructure source files
| ├──
├──
inc #
Core infrastructure internal include files
| ├──
├──
m4 Doxygen and man pages │ #
GNU -- Doxygen.in m4 macros required for DRMAAv2
| ├──
├──
docs #
Documentation files
| ├──
├──
├──
man Doxygen configure file │ -- configure.ac#
Man pages
| ├──
├──
├──
-- Doxygen.in #
Doxygen configure file
| ├──
├──
test
Existing configure.ac is updated with#
DRMAAv2 configs Testing
| ├──
├──
├──
unittesting #
White-box testing
(using CppUnit).
| ├──
├──
├── benchmarks # Placeholder for Load and stress tests
Directory structure in target
├── ...
├──
$(PBSDRMAAV2_EXEC)│ ├──
libLIB)
│ ├── ├──
libdrmaav2.so
├──
$(DRMAAV2_INCLUDE)
│ ├──
include
c-binding
│ ├──
├──
drmaav2drmaa2.h
│ ├──
cpp-binding
│ ├──
├──
drmaav2.hpp
Dependent packages
PBSPro - libdrmaav2.so needs libpbs.so library for IFL calls
...
doxygen - for generating docs
Compiling DRMAA2 applications for PBS Pro
It is assumed that libdrmaa2.so or libdrmaa2.a is installed as follows prior to compiling a DRMAA2 application.
rpm --install <rpm for libdrmaav2 for PBS Pro>libdrmaav2>
Example: rpm --install libdrmaav2_pbspro-1.0-17.x86_64.rpm
By default this will install the library to /usr/lib/libdrmaa2.*(so or a) and the headers are installed at /usr/include/drmaa2.
Now DRMAA2 application can be compiled as follows.
...
We also need to set the following before starting the application if in case we are using shared library.
export LD_LIBRARY_PATH=/usr/lib/libdrmaa2.so ./<drmaa2_app>
APIs defined in DRMAAv2 specification
Code Block |
---|
language | cpp |
---|
theme | Eclipse |
---|
title | Forward declaration required for API | collapseDRMAA2 app |
---|
linenumbers | true |
---|
|
typedef const char * drmaa2_string;
typedef struct drmaa2_list_s * drmaa2_list;
typedef struct drmaa2_list_s * drmaa2_string_list;
typedef struct drmaa2_list_s * drmaa2_j_list;
typedef struct drmaa2_list_s * drmaa2_queueinfo_list;
typedef struct drmaa2_list_s * drmaa2_machineinfo_list;
typedef struct drmaa2_list_s * drmaa2_slotinfo_list;
typedef struct drmaa2_list_s * drmaa2_r_list;
typedef struct drmaa2_dict_s * drmaa2_dict;
typedef drmaa2_jinfo_s * drmaa2_jinfo;
typedef drmaa2_slotinfo_s * drmaa2_slotinfo;
typedef drmaa2_rinfo_s * drmaa2_rinfo;
typedef drmaa2_jtemplate_s * drmaa2_jtemplate;
typedef drmaa2_rtemplate_s * drmaa2_rtemplate;
typedef drmaa2_notification_s * drmaa2_notification;
typedef drmaa2_queueinfo_s * drmaa2_queueinfo;
typedef drmaa2_version_s * drmaa2_version;
typedef drmaa2_machineinfo_s * drmaa2_machineinfo;
typedef struct drmaa2_jsession_s * drmaa2_jsession;
typedef struct drmaa2_rsession_s * drmaa2_rsession;
typedef struct drmaa2_msession_s * drmaa2_msession;
typedef struct drmaa2_j_s * drmaa2_j;
typedef struct drmaa2_jarray_s * drmaa2_jarray;
typedef struct drmaa2_r_s * drmaa2_r;
/**
Note : Names ending with _s are forward declaration
**/ |
Code Block |
---|
language | cpp |
---|
theme | Eclipse |
---|
title | Job States defined in specification |
---|
collapse | true |
---|
|
typedef enum drmaa2_jstate {
DRMAA2_UNDETERMINED = 0,
DRMAA2_QUEUED = 1,
DRMAA2_QUEUED_HELD = 2,
DRMAA2_RUNNING = 3,
DRMAA2_SUSPENDED = 4,
DRMAA2_REQUEUED = 5,
DRMAA2_REQUEUED_HELD = 6,
DRMAA2_DONE = 7,
DRMAA2_FAILED = 8
} drmaa2_jstate;
/**
Note : Refer DRMAA State Model in specfication
**/
|
Code Block |
---|
language | cpp |
---|
theme | Eclipse |
---|
title | API |
---|
collapse | true |
---|
|
drmaa2_error drmaa2_close_jsession (drmaa2_jsession js_)
drmaa2_close_jsession - closes the drmaa2_job session pointed by js
Parameters:
js_ - pointer to drmaa2_job session which needs to be closed
Side-Effects: none
Returns:
drmaa2_error - returns DRMAA2_SUCCESS if successful, returns DRMAA2_INVALID_SESSION if session is invalid
drmaa2_error drmaa2_close_msession (drmaa2_msession ms_)
Dis-associates monitoring session from DRMS. Should be callable only once else it should return DRMAA2_INVALID_SESSION error.
Parameters:
ms_ - pointer to drmaa2 monitoring session created earlier.
Side-Effects: none
Returns:
NULL and also sets sets drmaa2_lasterror_v to DRMAA2_INVALID_SESSION error if fails DRMAA2_SUCCESS if succeeds
drmaa2_error drmaa2_close_rsession (drmaa2_rsession rs_)
Disassociates reservation session from DRMS. Should be callable only once else it should return DRMAA2_INVALID_SESSION error.
Parameters:
rs_ - pointer to drmaa2 reservation session created earlier.
Side-Effects: none
Returns:
NULL and also sets sets drmaa2_lasterror_v to DRMAA2_INVALID_SESSION error if fails, DRMAA2_SUCCESS if succeeds
drmaa2_jsession drmaa2_create_jsession (const char * session_name_, const char * contact_)
Creates a drmaa2 job session for a given name and contact.
Parameters:
session_name_ - Name of the session .
contact_ - DRMS name.
Side-Effects: none
Returns:
drmaa2_jsession if succeeds, NULL if fails and sets drmaa2_lasterror_v to DRMAA2_INVALID_ARGUMENT error.
drmaa2_rsession drmaa2_create_rsession (const char * session_name_, const char * contact_)
Creates a drmaa2 reservation session for a given name and contact.
Parameters:
session_name_ - Name of the session.
contact_ - DRMS name.
Side-Effects: none
Returns:
drmaa2_jsession if succeeds NULL if fails and sets drmaa2_lasterror_v to DRMAA2_INVALID_ARGUMENT error.
drmaa2_string drmaa2_describe_attribute (const void * instance, const char * name)
drmaa2_error drmaa2_destroy_jsession (const char * session_name_)
drmaa2_destroy_jsession - destroys the drmaa2_job session pointed by js
Parameters:
session_name_ - pointer to drmaa2_job session which needs to be closed
Side-Effects: none
Returns:
drmaa2_error - returns DRMAA2_SUCCESS if successful, returns DRMAA2_INVALID_ARGUMENT if session name is invalid
drmaa2_error drmaa2_destroy_rsession (const char * session_name_)
Reaps the persisted or cached state information for the given session name.
Parameters:
session_name_ - Name of the session.
Side-Effects: none
Returns:
NULL and also sets sets drmaa2_lasterror_v to DRMAA2_INVALID_SESSION error if fails DRMAA2_SUCCESS if succeeds
drmaa2_dict drmaa2_dict_create (const drmaa2_dict_entryfree callback)
This function creates a drmaa dictionary.
Parameters:
callback - Call back function to call when free is called.
Side-Effects: none
Returns:
drmaa2_dict
drmaa2_error drmaa2_dict_del (drmaa2_dict d, const char * key)
This function deletes the entry with specified key from the dictionary.
Parameters:
d - Pointer to drmaa dict
key - pointer to key string
Side-Effects: none
Returns:
drmaa2_error
Return values:
DRMAA2_INVALID_ARGUMENT
void drmaa2_dict_free (drmaa2_dict * dRef)
This function frees a drmaa dict.
Parameters:
dRef - Pointer to drmaa dict
Side-Effects: none
Returns:
void
const char* drmaa2_dict_get (const drmaa2_dict d, const char * key)
This function gets the key's value from the dictionary.
Parameters:
d - Pointer to drmaa dict
key - pointer to key string
Side-Effects: none
Returns:
char *
drmaa2_bool drmaa2_dict_has (const drmaa2_dict d, const char * key)
This function checks for the presence of key in the dictionary.
Parameters:
d - Pointer to drmaa dict
#include <drmaa2/c-binding/drmaa2.h>
...
...
void main() {
...
...
} |
Now DRMAA2 application can be compiled and run as follows.
gcc <drmaa2_app>.c -ldrmaa2 -o <drmaa2_app>
./<drmaa2_app>
IFL call mapping with C-Style and CPP-style binding
C-Style Binding | CPP-Style Binding | IFL calls |
---|
void drmaa2_jsession_free(drmaa2_jsession * js) | delete jobSession; | N/A
|
void drmaa2_rsession_free(drmaa2_rsession * rs) | delete reservationSession; | N/A |
void drmaa2_j_free(drmaa2_j * j) | delete job; | N/A |
void drmaa2_jarray_free(drmaa2_jarray * ja) | delete jobArray; | N/A |
void drmaa2_r_free(drmaa2_r * r) | delete reservation; | N/A |
drmaa2_string drmaa2_rsession_get_contact(const drmaa2_rsession rs); | reservationSession.getContact() | N/A |
drmaa2_string drmaa2_rsession_get_session_name(const drmaa2_rsession rs); | reservationSession.getSessionName() | N/A |
drmaa2_r drmaa2_rsession_get_reservation (const drmaa2_rsession rs, const drmaa2_string reservationId); | reservationSession.getReservation() | pbs_statresv |
drmaa2_r drmaa2_rsession_request_reservation (const drmaa2_rsession rs, const drmaa2_rtemplate rt); | reservationSession.requestReservation() | pbs_submit_resv |
drmaa2_r_list drmaa2_rsession_get_reservations (const drmaa2_rsession rs); | reservationSession.getReservations() | pbs_statresv |
drmaa2_string drmaa2_r_get_id (const drmaa2_r r); | reservation.getId() | N/A
|
drmaa2_string drmaa2_r_get_session_name (const drmaa2_r r); | reservation.getId() | N/A
|
drmaa2_rtemplate drmaa2_r_get_reservation_template(const drmaa2_r r); | reservation.getReservationTemplate() | N/A |
drmaa2_rinfo drmaa2_r_get_info(const drmaa2_r r); | reservation.getReservationInfo() | pbs_statresv |
drmaa2_error drmaa2_r_terminate(drmaa2_r r); | reservation.terminate() | pbs_delresv |
drmaa2_string drmaa2_jarray_get_id(const drmaa2_jarray ja); | jobArray.getId() | N/A |
drmaa2_j_list drmaa2_jarray_get_jobs(const drmaa2_jarray ja); | jobArray.getJobs() | pbs_selectjob |
drmaa2_string drmaa2_jarray_get_session_name(const drmaa2_jarray ja); | jobArray.getSessionName() | N/A |
drmaa2_jtemplate drmaa2_jarray_get_job_template(const drmaa2_jarray ja); | jobArray.getJobTemplete() | N/A |
drmaa2_error drmaa2_jarray_suspend(drmaa2_jarray ja); | jobArray.suspend() | pbs_sigjob |
drmaa2_error drmaa2_jarray_resume(drmaa2_jarray ja); | jobArray.resume() | pbs_sigjob |
drmaa2_error drmaa2_jarray_hold(drmaa2_jarray ja); | jobArray.hold() | pbs_holdjob |
drmaa2_error drmaa2_jarray_release(drmaa2_jarray ja); | jobArray.release() | pbs_rlsjob |
drmaa2_error drmaa2_jarray_terminate(drmaa2_jarray ja); | jobArray.terminate() | pbs_deljob |
drmaa2_string drmaa2_jsession_get_contact(const drmaa2_jsession js); | jobSession.getContact() | N/A |
drmaa2_string drmaa2_jsession_get_session_name(const drmaa2_jsession js); | jobSession.getSessionName() | N/A |
drmaa2_string_list drmaa2_jsession_get_job_categories(const drmaa2_jsession js); | jobSession.getJobCategeries() | N/A |
drmaa2_j_list drmaa2_jsession_get_jobs (const drmaa2_jsession js, const drmaa2_jinfo filter); | jobSession.getJobs() | pbs_selectjob |
drmaa2_jarray drmaa2_jsession_get_job_array (const drmaa2_jsession js, const drmaa2_string jobarrayId); | jobSession.getJobArray() | pbs_selectjob |
drmaa2_j drmaa2_jsession_run_job (const drmaa2_jsession js, const drmaa2_jtemplate jt); | jobSession.runJob() | pbs_runjob , pbs_asyrunjob |
drmaa2_jarray drmaa2_jsession_run_bulk_jobs (const drmaa2_jsession js, const drmaa2_jtemplate jt, unsigned long begin_index, unsigned long end_index, unsigned long step, unsigned long max_parallel); | jobSession.runBulkJobs() | pbs_runjob , pbs_asyrunjob |
drmaa2_j drmaa2_jsession_wait_any_started (const drmaa2_jsession js, const drmaa2_j_list l, const time_t timeout); | jobSession.waitAnyStarted() | pbs_selectjob |
drmaa2_j drmaa2_jsession_wait_any_terminated (const drmaa2_jsession js, const drmaa2_j_list l, const time_t timeout); | jobSession.waitAnyTerminated() | pbs_selectjob |
drmaa2_string drmaa2_j_get_id(const drmaa2_j j); | job.getId() | N/A |
drmaa2_string drmaa2_j_get_session_name(const drmaa2_j j); | job.getSessionName | N/A |
drmaa2_jtemplate drmaa2_j_get_jt(const drmaa2_j j); | job.getJobTemplete() | N/A |
drmaa2_error drmaa2_j_suspend(drmaa2_j j); | job.suspend() | pbs_sigjob |
drmaa2_error drmaa2_j_resume(drmaa2_j j); | job.resume() | pbs_sigjob |
drmaa2_error drmaa2_j_hold (drmaa2_j j); | job.hold() | pbs_holdjob |
drmaa2_error drmaa2_j_release(drmaa2_j j); | job.resume() | pbs_rlsjob |
drmaa2_error drmaa2_j_terminate(drmaa2_j j); | job.terminate() | pbs_deljob |
drmaa2_jstate drmaa2_j_get_state (const drmaa2_j j, drmaa2_string * substate); | job.getState() | N/A |
drmaa2_jinfo drmaa2_j_get_info(const drmaa2_j j); | job.getInfo() | N/A |
drmaa2_error drmaa2_j_wait_started (const drmaa2_j j, const time_t timeout); | job.waitStarted() | pbs_selectjob |
drmaa2_error drmaa2_j_wait_terminated (const drmaa2_j j, const time_t timeout); | job.waitTerminated() | pbs_selectjob |
drmaa2_r_list drmaa2_msession_get_all_reservations (const drmaa2_msession ms); | monitoringSession.getAllReservations() | pbs_statresv |
drmaa2_j_list drmaa2_msession_get_all_jobs (const drmaa2_msession ms, const drmaa2_jinfo filter); | monitoringSession.getAllJobs() | pbs_selectjob |
drmaa2_queueinfo_list drmaa2_msession_get_all_queues (const drmaa2_msession ms, const drmaa2_string_list names); | monitoringSession.getAllQueues() | pbs_statque |
drmaa2_machineinfo_list drmaa2_msession_get_all_machines (const drmaa2_msession ms, const drmaa2_string_list names);
| monitoringSession.getAllMachines() | pbs_statnode , pbs_stathost ,pbs_statvnode
|
drmaa2_string drmaa2_get_drms_name() | sessionManager.getDrmsName() | N/A |
drmaa2_version drmaa2_get_drms_version() | sessionManager.getDrmsVersion() | N/A |
drmaa2_string drmaa2_get_drmaa_name() | sessionManager.getDrmaaName() | N/A |
drmaa2_version drmaa2_get_drmaa_version() | sessionManager.getDrmaaName() | N/A |
drmaa2_bool drmaa2_supports() | sessionManager.supports() | N/A |
drmaa2_jsession drmaa2_create_jsession (const char * session_name, const char * contact); | sessionManager.createJobSession() | N/A |
drmaa2_rsession drmaa2_create_rsession(const char * session_name, const char * contact); | sessionManager.createReservationSession() | N/A |
drmaa2_jsession drmaa2_open_jsession (const char * session_name); | sessionManager.openJobSession() | N/A |
drmaa2_rsession drmaa2_open_rsession (const char * session_name); | sessionManager.openReservationSession() | N/A |
drmaa2_msession drmaa2_open_msession (const char * session_name); | sessionManager.openMonitoringSession | N/A |
drmaa2_error drmaa2_close_jsession (drmaa2_jsession js); | sessionManager.closeJobSession() | N/A |
drmaa2_error drmaa2_close_rsession (drmaa2_rsession rs); | sessionManager.closeReservationSession() | N/A |
drmaa2_error drmaa2_close_msession (drmaa2_msession ms); | sessionManager.closeMonitoringSession() | N/A |
drmaa2_error drmaa2_destroy_jsession (const char * session_name); | sessionManager.destroyJobSession() | N/A |
drmaa2_error drmaa2_destroy_rsession (const char * session_name); | sessionManager.closeReservationSession() | N/A |
drmaa2_string_list drmaa2_get_jsession_names() | sessionManager.getJobSessionNames() | N/A |
drmaa2_string_list drmaa2_get_rsession_names () | sessionManager.getReservationSessionNames() | N/A |
drmaa2_error drmaa2_register_event_notification (const drmaa2_callback callback); | sessionManager.registerEventNotification() | N/A |
CPP-Style binding
Code Block |
---|
language | cpp |
---|
theme | Eclipse |
---|
title | CPP-style class defination |
---|
collapse | true |
---|
|
namespace drmaa2 {
typedef long TimeAmount;
typedef time_t AbsoluteTime;
enum DrmaaCapability {
ADVANCE_RESERVATION,
RESERVE_SLOTS,
CALLBACK,
BULK_JOBS_MAXPARALLEL,
JT_EMAIL,
JT_STAGING,
JT_DEADLINE,
JT_MAXSLOTS,
JT_ACCOUNTINGID,
RT_STARTNOW,
RT_DURATION,
RT_MACHINEOS,
T_MACHINEARCH
};
enum JobState {
UNDETERMINED,
QUEUED,
QUEUED_HELD,
RUNNING,
SUSPENDED,
REQUEUED,
REQUEUED_HELD,
DONE,
FAILED
};
enum OperatingSystem {
AIX = 0,
BSD = 1,
LINUX = 2,
HPUX = 3,
IRIX = 4,
MACOS = 5,
SUNOS = 6,
TRUE64 = 7,
UNIXWARE = 8,
WI = 9,
WINNT = 10,
OTHER_OS = 11
};
enum CpuArchitecture {
ALPHA = 0,
ARM = 1,
CELL = 2,
PARISC = 3,
X86 = 4,
X64 = 5,
IA64 = 6,
MIPS = 7,
PPC = 8,
PPC64 = 9,
SPARC = 10,
SPARC64 = 11,
OTHER_CPU = 12
};
template<class T>
typedef map<string, T> Dictionary;
typedef list<string> StringList;
typedef list<string> OrderedStringList;
enum DrmaaEvent {
NEW_STATE, MIGRATED, ATTRIBUTE_CHANGE
};
class DrmaaCallback {
void notify(DrmaaNotification notification) = 0;
};
struct DrmaaNotification {
DrmaaEvent event;
string jobId;
string sessionName;
JobState jobState;
};
struct Version {
string major;
string minor;
};
struct ReservationTemplate {
string reservationName;
time_t startTime;
time_t endTime;
time_t duration;
long minSlots;
long maxSlots;
set<string> usersACL;
vector<string> candidateMachines;
long minPhysMemory;
OperatingSystem machineOS;
CpuArchitecture machineArch;
};
struct QueueInfo {
string name;
};
typedef list<QueueInfo> QueueInfoList;
struct JobInfo {
string jobId;
long exitStatus;
string terminatingSignal;
string annotation;
JobState jobState;
string jobSubState;
vector<string> allocatedMachines;
string submissionMachine;
string jobOwner;
long slots;
string queueName;
time_t wallclockTime;
long cpuTime;
time_t submissionTime;
time_t dispatchTime;
time_t finishTime;
};
typedef list<JobInfo> JobInfoList;
struct SlotInfo {
string machineName;
string slots;
};
typedef list<SlotInfo> SlotInfoList;
struct ReservationInfo {
string reservationId;
string reservationName;
time_t reservedStartTime;
time_t reservedEndTime;
set<string> usersACL;
long reservedSlots;
SlotInfoList reservedMachines;
};
typedef list<ReservationInfo> ReservationInfoList;
struct JobTemplate {
string remoteCommand;
vector<string> args;
bool submitAsHold;
bool rerunnable;
Dictionary<string> jobEnvironment;
string workingDirectory;
string jobCategory;
set<string> email;
bool emailOnStarted;
bool emailOnTerminated;
string jobName;
string inputPath;
string outputPath;
string errorPath;
bool joinFiles;
string reservationId;
string queueName;
long minSlots;
long maxSlots;
long priority;
vector<string> candidateMachines;
long minPhysMemory;
OperatingSystem machineOS;
CpuArchitecture machineArch;
time_t startTime;
time_t deadlineTime;
Dictionary<string> stageInFiles;
Dictionary<string> stageOutFiles;
Dictionary<string> resourceLimits;
string accountingId;
};
struct MachineInfo {
string name;
bool available;
long sockets;
long coresPerSocket;
long threadsPerCore;
double load;
long physMemory;
long virtMemory;
OperatingSystem machineOS;
Version machineOSVersion;
CpuArchitecture machineArch;
};
typedef list<MachineInfo> MachineInfoList;
class Drmaa2Exception;
class DeniedByDrmsException;
class DrmCommunicationException;
class TryLaterException;
class TimeoutException;
class InternalException;
class InvalidArgumentException;
class InvalidSessionException;
class InvalidStateException;
class OutOfResourceException;
class UnsupportedAttributeException;
class UnsupportedOperationException;
class ImplementationSpecificException;
class DrmaaReflective {
/**
* TODO : How to support reflective in C++?
* Java provides reflection
*/
StringList jobTemplateImplSpec;
StringList jobInfoImplSpec;
StringList reservationTemplateImplSpec;
StringList reservationInfoImplSpec;
StringList queueInfoImplSpec;
StringList machineInfoImplSpec;
StringList notificationImplSpec;
string getInstanceValue(void *instance, string name);
void setInstanceValue(void *instance, string name, string value);
string describeAttribute(void *instance, string name);
};
class JobArray {
public:
virtual ~JobArray(void);
virtual string& getJobArrayId(void) const = 0;
virtual JobList& getJobs(void) const = 0;
virtual JobSession& getSession(void) const = 0;
virtual JobTemplate& getJobTemplate(void) const = 0;
virtual void suspend(void) = 0;
virtual void resume(void) = 0;
virtual void hold(void) = 0;
virtual void release(void) = 0;
virtual void terminate(void) = 0;
};
class Job {
public:
virtual ~Job(void);
virtual const string& getJobId(void) const = 0;
virtual const JobInfo& getJobInfo(void) const = 0;
virtual const JobState& getState(string& subState) const = 0;
virtual const JobTemplate& getJobTemplate(void) const = 0;
virtual void suspend(void) = 0;
virtual void resume(void) = 0;
virtual void hold(void) = 0;
virtual void release(void) = 0;
virtual void terminate(void) = 0;
virtual void waitStarted(TimeAmount& timeout_) = 0;
virtual void waitTerminated(TimeAmount& timeout_) = 0;
};
typedef list<Job> JobList;
class Reservation {
public:
virtual ~Reservation(void);
virtual const string& getReservationId(void) const = 0;
virtual const ReservationSession& getSession(void) const = 0;
virtual const ReservationTemplate& getReservationTemplate(void) const = 0;
virtual const ReservationInfo& getInfo(void) const = 0;
virtual void terminate(void) = 0;
};
typedef list<Reservation> ReservationList;
class ReservationSession {
public:
virtual ~ReservationSession(void);
virtual const string& getContact(void) const = 0;
virtual const string& getSessionName(void) const = 0;
virtual const Reservation& getReservation(string& reservationId_) = 0;
virtual const Reservation& requestReservation(
const ReservationTemplate& reservationTemplate_) = 0;
virtual const ReservationList& getReservations(void) = 0;
};
class JobSession {
public:
virtual ~JobSession(void);
virtual const string& getContact(void) const = 0;
virtual const string& getSessionName(void) const = 0;
virtual const StringList getJobCategories(void) const = 0;
virtual const JobList& getJobs(const JobInfo& filter_) = 0;
virtual const JobArray& getJobArray(const string& jobArrayId_) = 0;
virtual const string& runJob(const JobTemplate& jobTemplate_) = 0;
virtual const JobArray& runBulkJobs(const JobTemplate& jobTemplate_,
const long beginIndex_, const long endIndex_, const long step_,
const long maxParallel_) = 0;
virtual const Job& waitAnyStarted(const JobList& jobs_const,
const TimeAmount timeout_) = 0;
virtual const Job& waitAnyTerminated(const JobList& jobs_,
const TimeAmount timeout_) = 0;
};
class MonitoringSession {
public:
virtual ~MonitoringSession(void);
virtual const MachineInfoList& getAllMachines(list<string> machines_) = 0;
virtual const ReservationList& getAllReservations(void) = 0;
virtual const JobList& getAllJobs(JobInfo& filter_) = 0;
virtual const QueueInfoList& getAllQueues(list<string> queues_) = 0;
};
class SessionManager {
private:
SessionManager();
public:
/**
* SessionManager as singleton
*/
static SessionManager& getInstance() = 0;
public:
virtual ~SessionManager(void);
virtual const string& getDrmsName(void) const = 0;
virtual const Version& getDrmsVersion(void) const = 0;
virtual const Version& getDrmaaVersion(void) const = 0;
virtual bool supports(const DrmaaCapability& capability_) = 0;
virtual const JobSession& createJobSession(const string& sessionName_,
const string& contact_) = 0;
virtual const JobSession& openJobSession(const string& sessionName_) = 0;
virtual void closeJobSession(JobSession& session_) = 0;
virtual void destroyJobSession(const string& sessionName_) = 0;
virtual const ReservationSession& createReservationSession(
const string& sessionName_, const string& contact_) = 0;
virtual const ReservationSession& openReservationSession(
const string& sessionName_) = 0;
virtual void closeReservationSession(ReservationSession& session_) = 0;
void destroyReservationSession(const string& sessionName_) = 0;
virtual const MonitoringSession& openMonitoringSession(
key - pointer to keyconst string& contact_) = 0;
virtual Side-Effects: none
void closeMonitoringSession(MonitoringSession& session_) = 0;
virtual const StringList& getReservationSessionNames(void) = 0;
Returns: virtual const StringList& getJobSessionNames(void) = 0;
};
drmaa2_bool
drmaa2_string_list drmaa2_dict_list (const drmaa2_dict d)
This function returns a drmaa list of keys in the dictionary.
Parameters:
d - Pointer to drmaa dict
Side-Effects: none
Returns:
drmaa2_string_list
drmaa2_error drmaa2_dict_set (drmaa2_dict d, const char * key, const char * val)
This function sets the key value pair to the dictionary.
Parameters:
|
C-Style binding APIs definition
Note: APIs are as defined in https://www.ogf.org/documents/GFD.230.pdf
Code Block |
---|
language | cpp |
---|
theme | Eclipse |
---|
title | Forward declaration required for API |
---|
collapse | true |
---|
|
typedef const char * drmaa2_string;
typedef struct drmaa2_list_s * drmaa2_list;
typedef struct drmaa2_list_s * drmaa2_string_list;
typedef struct drmaa2_list_s * drmaa2_j_list;
typedef struct drmaa2_list_s * drmaa2_queueinfo_list;
typedef struct drmaa2_list_s * drmaa2_machineinfo_list;
typedef struct drmaa2_list_s * drmaa2_slotinfo_list;
typedef struct drmaa2_list_s * drmaa2_r_list;
typedef struct drmaa2_dict_s * drmaa2_dict;
typedef drmaa2_jinfo_s * drmaa2_jinfo;
typedef drmaa2_slotinfo_s * drmaa2_slotinfo;
typedef drmaa2_rinfo_s * drmaa2_rinfo;
typedef drmaa2_jtemplate_s * drmaa2_jtemplate;
typedef drmaa2_rtemplate_s * drmaa2_rtemplate;
typedef drmaa2_notification_s * drmaa2_notification;
typedef drmaa2_queueinfo_s * drmaa2_queueinfo;
typedef drmaa2_version_s * drmaa2_version;
typedef drmaa2_machineinfo_s * drmaa2_machineinfo;
typedef struct drmaa2_jsession_s * drmaa2_jsession;
typedef struct drmaa2_rsession_s * drmaa2_rsession;
typedef struct drmaa2_msession_s * drmaa2_msession;
typedef struct drmaa2_j_s * drmaa2_j;
typedef struct drmaa2_jarray_s * drmaa2_jarray;
typedef struct drmaa2_r_s * drmaa2_r;
d
-/**
Pointer Note to: drmaaNames dictending with _s are forward declaration
**/ |
Code Block |
---|
language | cpp |
---|
theme | Eclipse |
---|
title | Job States defined in specification |
---|
collapse | true |
---|
|
typedef enum drmaa2_jstate {
key - pointer to keyDRMAA2_UNDETERMINED string val - pointer to= value string0,
DRMAA2_QUEUED Side-Effects: none = Returns: 1,
DRMAA2_QUEUED_HELD drmaa2_error Return values: = 2,
DRMAA2_RUNNING DRMAA2_INVALID_ARGUMENT DRMAA2_SUCCESS drmaa2_string drmaa2_get_drmaa_name (void) drmaa2_get_drmaa_name - returns the DRM application name
= 3,
DRMAA2_SUSPENDED Parameters: -= void 4,
DRMAA2_REQUEUED Side-Effects: none = Returns:5,
DRMAA2_REQUEUED_HELD drmaa2_string drmaa2_version drmaa2_get_drmaa_version (void) = 6,
drmaa2_get_drmaa_version - returns the DRM application versionDRMAA2_DONE Parameters: = 7,
- void DRMAA2_FAILED Side-Effects: none = 8
Returns:
} drmaa2_jstate;
/**
Note : Refer DRMAA State Model in drmaa2_version
specfication
**/
|
Code Block |
---|
language | cpp |
---|
theme | Eclipse |
---|
title | API |
---|
collapse | true |
---|
|
drmaa2_stringerror drmaa2_get_drms_name (voidclose_jsession (drmaa2_jsession js_)
drmaa2_getclose_drms_namejsession - returnscloses the DRM system name drmaa2_job session pointed by js
Parameters:
js_ - void pointer to drmaa2_job session which needs to be closed
Side-Effects: none
Returns:
Returns: drmaa2_error - returns DRMAA2_SUCCESS if successful DRMAA2_INVALID_SESSION if session is drmaa2_stringinvalid
drmaa2_versionerror drmaa2_get_drms_version (voidclose_msession (drmaa2_msession ms_)
drmaa2_get_drms_version - returns the DRM system version
Parameters:
Dis-associates monitoring session from DRMS. Should be callable only once else it should return DRMAA2_INVALID_SESSION error.
-Parameters:
void Side-Effects: none ms_ - pointer to drmaa2 monitoring session created earlier.
ReturnsSide-Effects: none
Returns:
drmaa2_version drmaa2_string drmaa2_get_instance_value (const void * instance, const char * name)
DRMAA2_SUCCESS if succeeds NULL and also sets sets drmaa2_stringlasterror_listv to drmaa2DRMAA2_getINVALID_jsession_names (void)
SESSION error if fails
drmaa2_error drmaa2_getclose_jsession_names - returns the list of drmaa2_job sessionsrsession (drmaa2_rsession rs_)
Disassociates Side-Effects: none
Returns:
drmaa2_string_list - returns list of job session names available
drmaa2_string_list drmaa2_get_rsession_names (void)reservation session from DRMS. Should be callable only once else it should return DRMAA2_INVALID_SESSION error.
Parameters:
rs_ Get- apointer listto ofdrmaa2 all reservation session created namesearlier.
Side-Effects: none
Returns:
drmaa2DRMAA2_string_listSUCCESS if succeeds NULL and also sets sets drmaa2_lasterror_v Return values:
to DRMAA2_INVALID_SESSION error if fails
drmaa2_jsession drmaa2_create_jsession (const char NULL - If there are no existing reservation sessions* session_name_, const char * contact_)
· If this feature is not supported, set drmaa2_lasterror_v to DRMAA2_UNSUPPORTED_OPERATION
void drmaa2_j_free (drmaa2_j * j)Creates a drmaa2 job session for a given name and contact.
Parameters:
drmaa2_j_free - frees the drmaa2_job structure pointed by j session_name_ - Name of the session Parameters:.
jcontact_ - pointer to drmaa2_jobDRMS name.
Side-Effects: none
Returns:
Returns: drmaa2_jsession if succeeds NULL if fails and sets drmaa2_lasterror_v voidto DRMAA2_INVALID_ARGUMENT error.
drmaa2_stringrsession drmaa2_jcreate_get_idrsession (const drmaa2_j j)
char * session_name_, const char * contact_)
Creates a drmaa2 reservation session for a given name and contact.
drmaa2_j_get_id() - Returns newly allocated drmaa2_job id stringParameters:
session_name_ - Name of the Parameters:session.
jcontact_ - pointer to drmaa2_job structureDRMS name.
Side-Effects: none
Returns:
Returns: drmaa2_jsession if succeeds NULL if fails and sets DRMAA2_INVALID_ARGUMENT error.
drmaa2_string - Gets the job id from drmaa2_job
drmaa2_describe_attribute (const void * instance, const char * name)
drmaa2_jinfoerror drmaa2_jdestroy_get_infojsession (const drmaa2_j j)
char * session_name_)
drmaa2_j_get_info()destroy_jsession - Gets drmaa2_job info structure from destroys the drmaa2_job session inpointed drmaa2_j structure.by js
Parameters:
jsession_name_ - pointer to drmaa2_job structure. session which needs to be closed
Side-Effects: none
@return
DRMAA2_SUCCESS if successful
Returns: drmaa2_jinfo - returns drmaa2_jinfo if successfulDRMAA2_INVALID_ARGUMENT if session name is invalid
drmaa2_jtemplateerror drmaa2_jdestroy_get_jtrsession (const drmaa2_j j char * session_name_)
Reaps the persisted drmaa2_j_get_jt() - Returns pointer of drmaa2_job template structure from Jobor cached state information for the given session name.
Parameters:
jsession_name_ - pointerName toof drmaa2_jobthe structuresession.
Side-Effects: none
Returns:
drmaa2DRMAA2_stringSUCCESS if - Gets the job template from drmaa2_jobsuccessful DRMAA2_INVALID_ARGUMENT if session name is invalid
drmaa2_stringdict drmaa2_j_get_session_namedict_create (const drmaa2_jdict_entryfree jcallback)
drmaa2_j_get_session_name() - Returns newly allocated session name string This function creates a drmaa dictionary.
Parameters:
jcallback - pointerCall back function to drmaa2_job structure call when free is called.
Side-Effects: none
Returns:
drmaa2_string - gets the session name fromdict
drmaa2_session
error drmaa2_jstate drmaa2_j_get_statedict_del (const drmaa2_jdict jd, const drmaa2_stringchar * substatekey)
This function deletes drmaa2_j_get_state() - Gets drmaa2_job statethe entry with specified key from the drmaa2_job in drmaa2_j structuredictionary.
Parameters:
j - pointer to drmaa2_job structure.
substate - state of the drmaa2_job in drmaa2_j structure
d - Pointer to drmaa dict
Side-Effects: none key - pointer to key string
ReturnsSide-Effects: none
Returns:
drmaa2_jstate - returns current drmaa2_job state drmaa2_error - drmaa2DRMAA2_j_hold (drmaa2_j j)SUCCESS
· drmaa2DRMAA2_j_hold() - Holds the drmaa2_job in drmaa2_j structure.INVALID_ARGUMENT
void drmaa2_dict_free (drmaa2_dict * dRef)
This Parameters:function frees a drmaa dict.
j -Parameters:
pointer to drmaa2_job structure. dRef Side-Effects: nonePointer to drmaa dict
ReturnsSide-Effects: none
Returns:
drmaa2_error - Returns DRMAA2_SUCCESS on success Returns DRMAA2_INVALID_STATE if job statevoid
is
invalid for hold const char* drmaa2_error drmaa2_j_releasedict_get (const drmaa2_jdict j)d, const char * key)
drmaa2_j_release() - Releases the drmaa2_job in drmaa2_j structureThis function gets the key's value from the dictionary.
Parameters:
jd - pointerPointer to drmaa2_job structure.drmaa dict
Side-Effects: none key - pointer to key string
ReturnsSide-Effects: none
Returns:
drmaa2_error - Returns DRMAA2_SUCCESS on success Returns DRMAA2_INVALID_STATE if job state is invalid for releasechar *
drmaa2_errorbool drmaa2_jdict_resumehas (const drmaa2_j j)
dict d, const char * key)
drmaa2_j_resume() - Resumes the drmaa2_job in drmaa2_j structureThis function checks for the presence of key in the dictionary.
Parameters:
jd - pointerPointer to drmaa2_job structure.
drmaa dict
Side-Effects: none key - pointer to key string
Returns: Side-Effects: none
drmaa2_error - Returns:
DRMAA2_SUCCESS on success Returns DRMAA2_INVALID_STATE if job state is invalid for resumedrmaa2_bool
drmaa2_string_errorlist drmaa2_jdict_suspendlist (const drmaa2_jdict jd)
This function returns drmaa2_j_suspend() - Suspends the drmaa2_job in drmaa2_j structurea drmaa list of keys in the dictionary.
Parameters:
jd - pointerPointer to drmaa2_job structure.drmaa dict
Side-Effects: none
Returns:
drmaa2_string_list
drmaa2_error drmaa2_dict_set (drmaa2_dict d, const char * key, const Returns:char * val)
This function drmaa2_errorsets -the Returnskey DRMAA2_SUCCESSvalue onpair successto Returns DRMAA2_INVALID_STATE if job state is invalid for suspend
drmaa2_error drmaa2_j_terminate (drmaa2_j j)the dictionary.
Parameters:
d - Pointer to drmaa dict
drmaa2_j_terminate() - Terminates the drmaa2_job in drmaa2_j structure. key - pointer to key Parameters:string
jval - pointer to drmaa2_job structure.value string
Side-Effects: none
Returns:
drmaa2_error - Returns DRMAA2_SUCCESS
on
success drmaa2_error drmaa2_j_wait_started (const drmaa2_j j, const· time_t timeout)
DRMAA2_INVALID_ARGUMENT
drmaa2_string drmaa2_get_drmaa_name (void)
drmaa2_jget_waitdrmaa_started()name - Blocks tillreturns the drmaa2_jobDRM is started or till timeout expiresapplication name
Parameters:
j - pointervoid
to
drmaa2_job structure. Side-Effects: none
timeout - Timeout in time_t format. ·
Side-Effects: none Returns:
drmaa2_string
Returns: drmaa2_version drmaa2_get_drmaa_version (void)
drmaa2_get_drmaa_errorversion - returns DRMAA2_SUCCESS if successful returns DRMAA2_TIMEOUT if timeout happened the DRM application version
Parameters:
drmaa2_error drmaa2_j_wait_terminated (const drmaa2_j j, const time_t timeout) - void
drmaa2_j_wait_terminated() - Blocks till the drmaa2_job is terminated or till timeout expires
Side-Effects: none
Returns:
drmaa2_version
drmaa2_string drmaa2_get_drms_name (void)
Parameters: drmaa2_get_drms_name - returns the DRM system name
j - pointer to drmaa2_job structure. Parameters:
timeout - Timeout in time_t format.void
Side-Effects: none
Returns:
drmaa2_error - returns DRMAA2_SUCCESS if successful returns DRMAA2_TIMEOUT if timeout happened
void drmaa2_jarray_free (drmaa2_jarray * jastring
drmaa2_version drmaa2_get_drms_version (void)
drmaa2_get_jarraydrms_freeversion - freesreturns the drmaa2_jobDRM array structure pointed by jasystem version
Parameters:
ja - pointer to DRMAA jo arrayvoid
Side-Effects: none
Returns:
void
drmaa2_string
drmaa2_jarray_get_id (const drmaa2_jarray ja) drmaa2_jarray_get_id() Gets the id from drmaa2 drmaa2_job array.
Parameters:
version
drmaa2_string drmaa2_get_instance_value (const void * instance, const char * name)
drmaa2_string_list drmaa2_get_jsession_names (void)
jadrmaa2_get_jsession_names - returns the pointerlist toof drmaa2_job arraysessions
Side-Effects: none
Returns:
Returns: drmaa2_string_list - returns list of job session names available drmaa2_stringNULL -and joblast iderror ofis drmaa2_jobset
array
drmaa2_string_jtemplatelist drmaa2_jarray_get_jobrsession_templatenames (const drmaa2_jarray javoid)
drmaa2_jarray_get_job_template - returns the drmaa2_job template used to submit the drmaa2_job arrayGet a list of all reservation session names.
ParametersSide-Effects: none
Returns:
ja - pointer to drmaa2_job array drmaa2_string_list - list of Side-Effects: none
reservation sessions NULL - If there are no existing reservation sessions
Returns: · If this feature is not supported, set drmaa2_jtemplatelasterror_v - returns job template from drmaa2_job arrayto DRMAA2_UNSUPPORTED_OPERATION
void drmaa2_j_listfree (drmaa2_jarray_get_jobs (const drmaa2_jarray jaj * j)
drmaa2_jarray_get_jobs() Returns the list of jobs inj_free - frees the drmaa2_job structure pointed arrayby structure.j
Parameters:
jaj - Pointerpointer to drmaa2_job array
structure
Side-Effects: none
Returns:
drmaa2_j_list - gets list of drmaa2_jobs from drmaa2_jarrayvoid
drmaa2_string drmaa2_jarrayj_get_session_nameid (const drmaa2_jarrayj jaj)
drmaa2_jarrayj_get_session_nameid() - getsReturns thenewly session name in which the allocated drmaa2_job arrayid is submittedstring
Parameters:
jaj - pointer to drmaa2_job arraystructure.
Side-Effects: none
Returns:
Returns: drmaa2_string - Gets the job id from drmaa2_stringjob NULL - if returnsfails session name from drmaa2_job arrayand DRMAA2_INVALID_ARGUMENT error is set
drmaa2_errorjinfo drmaa2_jarrayj_get_holdinfo (const drmaa2_jarrayj jaj)
drmaa2_jarray_hold - holdsj_get_info() - Gets drmaa2_job info structure from the drmaa2_job array in drmaa2_j structure.
Parameters:
jaj - pointer to drmaa2_job array
Side-Effects: nonestructure.
Side-Effects: none
Returns:
drmaa2_errorjinfo - returns DRMAA2drmaa2_SUCCESSjinfo if successful returns DRMAA2_INVALID_STATENULL - if jobfails state not valid for holdand DRMAA2_INVALID_ARGUMENT error is set
drmaa2_errorjtemplate drmaa2_jarrayj_get_releasejt (const drmaa2_jarrayj jaj)
drmaa2_jarray_releasej_get_jt() - Returns releasespointer theof drmaa2_job array template structure from Job.
Parameters:
jaj - pointer to drmaa2_job arraystructure.
Side-Effects: none
Returns:
Returns: drmaa2_string - gets the session name from drmaa2_errorsession NULL - returns DRMAA2_SUCCESS if successfulfails returnsand DRMAA2_INVALID_STATEARGUMENT iferror job state not valid for releaseis set
drmaa2_errorstring drmaa2_j_get_jarraysession_resumename (const drmaa2_jarrayj jaj)
drmaa2_j_jarray_resumeget_session_name() - Returns resumesnewly allocated thesession drmaa2_jobname arraystring
Parameters:
jaj - pointer to drmaa2_job arraystructure.
Side-Effects: none
Returns:
Returns: drmaa2_string - gets the session name from drmaa2_errorsession NULL - returns DRMAA2_SUCCESS if successfulfails returnsand DRMAA2_INVALID_STATEARGUMENT iferror job state not valid for resumeis set
drmaa2_errorjstate drmaa2_j_jarrayget_suspendstate (const drmaa2_j j, drmaa2_jarraystring * jasubstate)
drmaa2_j_jarrayget_suspendstate() - suspends Gets drmaa2_job state from the drmaa2_job array in drmaa2_j structure.
Parameters:
jaj - pointer to drmaa2_job structure.
array Side-Effects: none substate - state of the drmaa2_job in drmaa2_j structure
ReturnsSide-Effects: none
Returns:
drmaa2_error - returns DRMAA2_SUCCESS if successful returns DRMAA2_INVALID_STATE if jobdrmaa2_jstate state- notreturns validcurrent fordrmaa2_job suspendstate
drmaa2_error drmaa2_jarrayj_terminatehold (drmaa2_jarrayj jaj)
drmaa2_jarrayj_terminatehold() - terminatesHolds the drmaa2_job arrayin drmaa2_j structure.
Parameters:
jaj - pointer to drmaa2_job arraystructure.
Side-Effects: none
Returns:
drmaa2_error - returnsReturns DRMAA2_SUCCESS on success DRMAA2_INVALID_STATE if successful job state is invalid for hold
drmaa2_jinfoerror drmaa2_jinfoj_createrelease (voiddrmaa2_j j)
drmaa2_jinfoj_createrelease() - createsReleases athe drmaa2_job infoin drmaa2_j structure.
and returns its pointer Parameters:
Side-Effects: none j - pointer to drmaa2_job structure.
Returns:Side-Effects: none
Returns:
drmaa2_jinfo - pointer to newly allocated drmaa2_jinfo structure NULLerror - ifReturns allocationDRMAA2_SUCCESS failson andsuccess DRMAA2_OUT_OF_RESOURCE error is setINVALID_STATE if job state is invalid for release
voiddrmaa2_error drmaa2_jinfoj_freeresume (drmaa2_jinfoj j)
* jiRef) drmaa2_jinfoj_freeresume() - freesResumes the drmaa2_job infoin drmaa2_j structure and its inner data types.
Parameters:
jiRefj - pointer to drmaa2_job info structure.
Side-Effects: none
Returns:
drmaa2_error - Returns: DRMAA2_SUCCESS on success DRMAA2_INVALID_STATE if job state is invalid for resume
void
drmaa2_error drmaa2_stringj_listsuspend (drmaa2_jinfo_impl_spec (void)j j)
drmaa2_jinfo_impl_specj_suspend() - ListsSuspends the drmaa spec implementations supported for job info (e.g. drmaa, drmaa2)
drmaa2_job in drmaa2_j structure.
Side-Effects: none Parameters:
Returns: j - pointer to drmaa2_string_listjob structure.
Return valuesSide-Effects: none
Returns:
list of drmaa spec implementations supported drmaa2_error - Returns DRMAA2_SUCCESS on success DRMAA2_INVALID_STATE NULLif -job Ifstate thisis featureinvalid isfor notsuspend
supported,
set drmaa2_lasterror_v to DRMAA2_UNSUPPORTED_OPERATION
voiddrmaa2_error drmaa2_jsessionj_freeterminate (drmaa2_jsession * js)j j)
drmaa2_jsession_free Freesj_terminate() - Terminates the memorydrmaa2_job ofin Job session pointed by jsdrmaa2_j structure.
Parameters:
jsj - pointer to drmaa2_jsessionjob structure.
Side-Effects: none
Returns:
drmaa2_error - Returns: DRMAA2_SUCCESS on success DRMAA2_INVALID_STATE if job state is invalid for terminate
void
drmaa2_stringerror drmaa2_jsessionj_getwait_contactstarted (const drmaa2_jsession js)j j, const time_t timeout)
drmaa2_jsessionj_getwait_contactstarted() - ReturnsBlocks till the drmaa2_job DRMSis namestarted ofor thetill drmaa2_jobtimeout sessionexpires
Parameters:
jsj - pointer to drmaa2_job sessionstructure.
Side-Effects: nonetimeout - Timeout in time_t format.
Side-Effects: none
Returns:
drmaa2_stringerror - returns the DRMS name from drmaa2_jsession DRMAA2_SUCCESS if successful DRMAA2_TIMEOUT if timeout happened
drmaa2_jarrayerror drmaa2_jsessionj_getwait_job_arrayterminated (const drmaa2_jsessionj jsj, const drmaa2time_stringt jobarrayIdtimeout)
drmaa2_jsessionj_get_job_arraywait_terminated() - Blocks returnstill the specifieddrmaa2_job jobis arrayterminated fromor thetill drmaa2_jobtimeout sessionexpires
Parameters:
jsj - pointer to drmaa2_job sessionstructure.
jobarrayIdtimeout - JobTimeout arrayin id which needs to be retrievedtime_t format.
Side-Effects: none
Returns:
drmaa2_jarrayerror - returns pointer to drmaa2_jarray with specified jobarrayId in the job sessionDRMAA2_SUCCESS if successful DRMAA2_TIMEOUT if timeout happened
void drmaa2_stringjarray_listfree (drmaa2_jsession_get_job_categories (const drmaa2_jsession jsjarray * ja)
drmaa2_jsession_get_job_categoriesjarray_free - returnsfrees the string list of drmaa2_job categoriesarray instructure thepointed drmaa2_jobby sessionja
Parameters:
jsja - pointer to drmaa2_job sessionDRMAA jo array
Side-Effects: none
Returns:
drmaa2_string_list - returns list of job categories from drmaa2_jsessionvoid
drmaa2_j_liststring drmaa2_jsessionjarray_get_jobsid (const drmaa2_jsession js, const drmaa2_jinfo filterjarray ja)
drmaa2_jsessionjarray_get_jobsid() -Gets returnsthe listid offrom jobsdrmaa2 in the drmaa2_job session matching the jobinfo filterarray.
Parameters:
jsja - pointer to drmaa2_job session js
array
filter - filter for getting jobs with specific conditions
Side-Effects: none
Returns:
Returns: drmaa2_string - job id of drmaa2_j_listjob -array returnsNULL list- ofif jobsfails matching the drmaa2_job filter providedand DRMAA2_INVALID_ARGUMENT error is set
drmaa2_stringjtemplate drmaa2_jsessionjarray_get_sessionjob_nametemplate (const drmaa2_jsessionjarray jsja)
drmaa2_jsessionjarray_get_sessionjob_nametemplate - returns the session name from the drmaa2_job template used to submit the drmaa2_job sessionarray.
Parameters:
jsja - pointer to drmaa2_job sessionarray
Side-Effects: none
Returns:
Returns: drmaa2_jtemplate - returns job template from drmaa2_job array NULL - drmaa2_stringif -fails returns session name from drmaa2_jsessionand DRMAA2_INVALID_ARGUMENT error is set
drmaa2_j_jarraylist drmaa2_jsessionjarray_runget_bulk_jobs (const drmaa2_jsession js_, const drmaa2_jtemplate jt_, unsigned long begin_index_, unsigned long end_index_, unsigned long step_, unsigned long
jarray ja)
drmaa2_jarray_get_jobs() Returns the list of jobs in the drmaa2_job array structure.
Parameters:
ja - Pointer to drmaa2_job array structure
Side-Effects: none
Returns:
max_parallel_) drmaa2_j_list - Writegets descriptionlist of function here.
Parameters: drmaa2_jobs from drmaa2_jarray NULL - if fails and DRMAA2_INVALID_ARGUMENT error is set
drmaa2_string drmaa2_jarray_get_session_name (const drmaa2_jarray ja)
js_ - pointer to drmaa2_job session
jt_ - Job template to be considered or used_jarray_get_session_name - gets the session name in which the drmaa2_job array is submitted
Parameters:
begin_index_ja - Startingpointer index ofto drmaa2_job array
Side-Effects: none
end_index_ - Ending index of drmaa2_job arrayReturns:
step_ - Increment between each jobs
max_parallel_ - Maximum parallel jobs to run
Side-Effects: none
drmaa2_string - returns session name from drmaa2_job array NULL - if fails and DRMAA2_INVALID_ARGUMENT error is set
drmaa2_error drmaa2_jarray_hold (drmaa2_jarray ja)
drmaa2_jarray_hold - holds the drmaa2_job array
ReturnsParameters:
drmaa2_jarrayja - returns pointer to drmaa2_jarrayjob ifarray
successful
returns NULL and sets last error to DRMAA2_INVALID_ARGUMENT if any argument is invalid returns NULL and sets last error to Side-Effects: none
Returns:
DRMAA2_INTERNALSUCCESS if anysuccessful internaldrmaa2_error errorif occursfails
drmaa2_jerror drmaa2_jsessionjarray_run_jobrelease (const drmaa2_jsession js_, const drmaa2_jtemplate jt_jarray ja)
drmaa2_jsession_run_job - runs job in the job session withjarray_release - releases the drmaa2_job templatearray
specified
Parameters:
js_ja - pointer to drmaa2_job sessionarray
Side-Effects: none
jt_ - Job template that needs to beReturns:
run Side-Effects: none DRMAA2_SUCCESS if successful drmaa2_error if fails
drmaa2_error drmaa2_jarray_resume (drmaa2_jarray ja)
Returns: drmaa2_jarray_resume - resumes the drmaa2_job array
drmaa2_j - returns pointer to jobParameters:
which is newly started in the job session returns NULL and setsja last- errorpointer to DRMAA2_INVALID_ARGUMENT if any argument is invalid returns NULL and sets
drmaa2_job array
Side-Effects: none
Returns:
last error to DRMAA2_INVALID_SESSION if session name is invalid DRMAA2_SUCCESS if successful drmaa2_j drmaa2_jsession_wait_any_started (consterror if fails
drmaa2_jsessionerror js, const drmaa2_jjarray_list l, const time_t timeoutsuspend (drmaa2_jarray ja)
drmaa2_jsession_wait_any_startedjarray_suspend - blocks tillsuspends the drmaa2_job inarray
the drmaa2_job session started orParameters:
till the time out ja Parameters:- pointer to drmaa2_job array
js Side- pointer to drmaa2_job session
Effects: none
Returns:
l -DRMAA2_SUCCESS listif ofsuccessful drmaa2_jobserror if fails
drmaa2_error drmaa2_jarray_terminate (drmaa2_jarray ja)
timeout - timeout to wait if event has not occurreddrmaa2_jarray_terminate - terminates the drmaa2_job array
Side-EffectsParameters:
none ja - pointer to drmaa2_job array
Returns: Side-Effects: none
drmaa2_j - returns pointer toReturns:
drmaa2_job which started returns NULL and last error is set to DRMAA2_TIMEOUTSUCCESS if timeoutsuccessful happensdrmaa2_error if fails
drmaa2_j drmaa2_jsession_wait_any_terminated (const drmaa2_jsession js, const jinfo drmaa2_jjinfo_list l, const time_t timeout)create (void)
drmaa2_jsession_wait_any_terminatedjinfo_create() - blockscreates tilla the drmaa2_job in the drmaa2_job session ended or till the time out info structure and returns its pointer
Side-Effects: none
ParametersReturns:
jsdrmaa2_jinfo - pointer to newly allocated drmaa2_jobjinfo structure sessionNULL - if allocation fails and DRMAA2_OUT_OF_RESOURCE error is set
l - list of drmaa2_jobsvoid drmaa2_jinfo_free (drmaa2_jinfo * jiRef)
drmaa2_jinfo_free() - frees timeoutthe -drmaa2_job timeoutinfo tostructure waitand ifits eventinner hasdata nottypes
occurs
Side-EffectsParameters:
none jiRef - pointer to drmaa2_job info structure.
Returns:
Side-Effects: none
drmaa2_j - returns pointer to drmaa2_job whichReturns:
terminated returns NULL and last error is set to DRMAA2_TIMEOUT if timeoutvoid
happens
drmaa2_jtemplatestring_list drmaa2_jtemplatejinfo_impl_createspec (void)
drmaa2_jinfo_jtemplateimpl_create()spec - creates a drmaa2_job template structure and returns its pointer Lists the drmaa spec implementations supported for job info (e.g. drmaa, drmaa2)
Side-Effects: none
Returns:
drmaa2_jtemplatestring_list - pointerlist of todrmaa drmaa2_jtemplatespec ifimplementations allocatedsupported NULL - if allocation fails and DRMAA2_OUT_OF_RESOURCE error is set If this feature is not supported, set drmaa2_lasterror_v to DRMAA2_UNSUPPORTED_OPERATION
void drmaa2_jtemplatejsession_free (drmaa2_jtemplatejsession * jtemplatejs)
drmaa2_jtemplatejsession_free() -Frees freesthe amemory drmaa2_jobof templateJob structuresession andpointed its inner data typesby js
Parameters:
jtemplatejs - pointer to drmaa2_job template structurejsession.
Side-Effects: none
Returns:
void
drmaa2_string_list drmaa2_jtemplatejsession_implget_speccontact (voidconst drmaa2_jsession js)
drmaa2_jtemplatejsession_implget_speccontact - ListsReturns the drmaaDRMS specname implementationsof supportedthe for drmaa2_job template (e.g. drmaa, drmaa2)session
Side-Effects: noneParameters:
Returns: js - pointer to drmaa2_string_list
job session.
Return values: Side-Effects: none
list of drmaa specReturns:
implementations supported DRMAA2_SUCCESS if NULLsuccessful -drmaa2_error Ifif thisfails
feature
is not supported, setdrmaa2_jarray drmaa2_lasterror_v to DRMAA2_UNSUPPORTED_OPERATION
jsession_get_job_array (const drmaa2_jsession js, const drmaa2_error drmaa2_lasterror (voidstring jobarrayId)
This functiondrmaa2_jsession_get_job_array - returns the lastspecified occurredjob error.array from the drmaa2_job session
Side-Effects: none Parameters:
js - Returns:
drmaa2_error
pointer to drmaa2_job session.
drmaa2_string drmaa2_lasterror_text (void) jobarrayId - ThisJob functionarray returnsid thewhich lastneeds occurredto errorbe inretrieved
string.
Side-Effects: none
Returns:
Returns: drmaa2_jarray - returns pointer to drmaa2_stringjarray -with newlyspecified allocatedjobarrayId stringin ofthe lastjob errorsession NULL - if If nofails and DRMAA2_INVALID_ARGUMENT error textis existsset
drmaa2_errorstring_list drmaa2_jsession_listget_job_addcategories (const drmaa2_listjsession l,js)
const void * value) drmaa2_jsession_get_job_categories - returns the Thisstring functionlist addsof andrmaa2_job elementcategories toin the list. drmaa2_job session
Parameters:
l - Pointer to drmaa list
value js - pointer to the element which needs to be inserteddrmaa2_job session
Side-Effects: none
Returns:
drmaa2_error
Return values:
_string_list - returns list of job categories from drmaa2_jsession NULL - if fails and DRMAA2_INVALID_ARGUMENT DRMAA2_OUT_OF_RESOURCE DRMAA2_SUCCESSerror is set
drmaa2_j_list drmaa2_jsession_listget_createjobs (const drmaa2_listtypejsession tjs, const drmaa2_list_entryfreejinfo callbackfilter)
drmaa2_jsession_get_jobs - Thisreturns functionlist createsof ajobs drmaain list.the drmaa2_job session matching the jobinfo filter
Parameters: Parameters:
t - Type of the listjs which- needspointer to drmaa2_job besession createdjs
callbackfilter - Callfilter backfor functiongetting tojobs callwith when free is called.specific conditions
Side-Effects: none
Returns:
drmaa2_j_list - returns list of jobs matching Returns:the drmaa2_job filter provided NULL - if fails and DRMAA2_INVALID_ARGUMENT error is drmaa2_listset
drmaa2_errorstring drmaa2_jsession_get_listsession_delname (const drmaa2_listjsession l,js)
long pos) drmaa2_jsession_get_session_name - Thisreturns functionthe deletessession an elementname from thedrmaa2_job listsession.
Parameters:
ljs - Pointerpointer to drmaa list
drmaa2_job session
pos - position of the element which needs to be deleted
Side-Effects: none
Returns:
drmaa2_errorstring - returns session name from drmaa2_jsession NULL - Returnif values:fails and DRMAA2_INVALID_ARGUMENT error is set
DRMAA2_INVALID_ARGUMENT DRMAA2_SUCCESS
void drmaa2_list_free (drmaa2_list * l)
s This function frees a drmaa list
drmaa2_jarray drmaa2_jsession_run_bulk_jobs (const drmaa2_jsession js_, const drmaa2_jtemplate jt_, unsigned long begin_index_, unsigned long end_index_, unsigned long step_, unsigned long
max_parallel_)
Parameters: Write description of function here.
l - Pointer toParameters:
drmaa list Side-Effects: none
js_ - pointer to drmaa2_job session
jt_ Returns:- Job template to be considered or used
void const void* drmaa2begin_listindex_get (const drmaa2_list l, long index)
- Starting index of drmaa2_job array
This function gets the element form a particular positionend_index_ - Ending index of the list.
drmaa2_job array
Parameters: l - Pointer to drmaa list
step_ - Increment between each jobs
index - postion from whcih the data hasmax_parallel_ - Maximum parallel jobs to berun
taken
Side-Effects: none
Returns:
void*drmaa2_jarray - returns pointer to thedrmaa2_jarray element retured as void*if successful NULL -and Ifsets thelast positionerror is not valid
long drmaa2_list_size (const drmaa2_list l)
This function returns the size of the list.to DRMAA2_INVALID_ARGUMENT if any argument is invalid NULL and sets last error to DRMAA2_INTERNAL
if any internal Parameters:error occurs
drmaa2_j drmaa2_jsession_run_job (const drmaa2_jsession js_, const l - Pointer to drmaa listdrmaa2_jtemplate jt_)
Side-Effects: none
drmaa2_jsession_run_job - runs job in the job session with the drmaa2_job template specified
ReturnsParameters:
longjs_ - pointer to drmaa2_machineinfo drmaa2_machineinfo_create (void)job session
drmaa2jt_machineinfo_create() - createsJob atemplate drmaa2_machineinfothat infoneeds structureto andbe returns itsrun
pointer
Side-Effects: none
Returns:
drmaa2_machineinfoj - returns pointer to job which is newly started in allocatedthe drmaa2_machineinfojob structuresession NULL -and ifsets allocationlast failserror andto DRMAA2_OUTINVALID_OF_RESOURCEARGUMENT errorif isany setargument is invalid NULL and void drmaa2_machineinfo_free (drmaa2_machineinfo * miRef)
sets last error to
This function frees the pre-allocated drmaa machine info structure.
Parameters:
miRef - Pointer to drmaa machine info
Side-Effects: none
DRMAA2_INVALID_SESSION if session name is invalid
drmaa2_j drmaa2_jsession_wait_any_started (const drmaa2_jsession js, const drmaa2_j_list l, const time_t timeout)
drmaa2_jsession_wait_any_started - blocks till the drmaa2_job in the drmaa2_job session started or till the time out
ReturnsParameters:
voidjs - pointer to drmaa2_string_list drmaa2_machineinfo_impl_spec (void)job session
drmaa2_machineinfo_impl_spec - Lists thel machine- infolist specof implementationsdrmaa2_jobs
supported Side-Effects: none timeout - timeout to wait if event has Returns:not occurred
drmaa2_string_listSide-Effects: none
Return valuesReturns:
list of machineinfodrmaa2_j spec- implementationsreturns supportedpointer to drmaa2_job which started NULL and last error is set to NULLDRMAA2_TIMEOUT -if Iftimeout thishappens
feature
is not supported, setdrmaa2_j drmaa2_lasterror_v to DRMAA2_UNSUPPORTED_OPERATION
void drmaa2_msession_free (drmaa2_msession * ms)
drmaa2_j_list drmaa2_msession_get_all_jobs (const drmaa2_msession ms_, const drmaa2_jinfo filter_)jsession_wait_any_terminated (const drmaa2_jsession js, const drmaa2_j_list l, const time_t timeout)
drmaa2_jsession_wait_any_terminated - blocks till the drmaa2_job in the drmaa2_job session ended or till the time out
Parameters:
Returns the listjs of- allpointer jobs i.e. DRMAA2 jobs and the jobs submitted out of DRMAA2 library also. The list or number of jobs returned should adhere to DRMS policies. Ex: The list might be
limited to contain only the jobs seen by the DRMAA2 user.to drmaa2_job session
l - list of drmaa2_jobs
timeout - timeout to wait if event has not occurs
Side-Effects: none
ParametersReturns:
msdrmaa2_j - returns pointer to drmaa2_msessionjob which createdterminated earlierNULL and last error is set to DRMAA2_TIMEOUT if timeout happens
filter_ - of typedrmaa2_jtemplate drmaa2_jinfojtemplate_create (through which we can query jobs per jobstate, job owner and per queue etcvoid)
drmaa2_jtemplate_create() - creates a drmaa2_job template structure and returns its pointer
Side-Effects: none
Returns:
none drmaa2_jtemplate - pointer to drmaa2_jtemplate if allocated NULL - if Returns:allocation fails and DRMAA2_OUT_OF_RESOURCE error is set
void drmaa2_j_list if succeeds NULL if fails_jtemplate_free (drmaa2_jtemplate * jtemplate)
drmaa2_machineinfo_list drmaa2_msession_get_all_machines (const drmaa2_msession ms_, const drmaa2_string_list names_)jtemplate_free() - frees a drmaa2_job template structure and its inner data types
Parameters:
Returns list of machines or hosts available for submitting jobs in thejtemplate DRMS- system.pointer to drmaa2_job template structure.
Parameters: Side-Effects: none
ms_ pointer toReturns:
drmaa2_msession created earlier void
names_ a drmaa2_string_list of queue names acts as filter i.e. we fetch info of only these queues.
Side-Effects: none drmaa2_jtemplate_impl_spec (void)
drmaa2_jtemplate_impl_spec - Lists the drmaa spec implementations supported for job template (e.g. drmaa, drmaa2)
Side-Effects: none
Returns:
drmaa2_machineinfostring_list - iflist succeedsof NULLdrmaa ifspec fails.implementations supported NULL - If drmaa2_queueinfo_list drmaa2_msession_get_all_queues (const drmaa2_msession ms_, const drmaa2_string_list names_)this feature is not supported, set drmaa2_lasterror_v to DRMAA2_UNSUPPORTED_OPERATION
drmaa2_error drmaa2_lasterror (void)
Returns list of queues available for submittingThis jobsfunction inreturns the last DRMSoccurred systemerror.
ParametersSide-Effects: none
Returns:
ms_ pointer to drmaa2_msession created earlier drmaa2_error
names_ a list of queue names acts as filter i.e. we fetch info of only these queuesdrmaa2_string drmaa2_lasterror_text (void)
This function returns the last occurred error in string.
Side-Effects: none
Returns:
or MT-Safe Returns: drmaa2_string - newly allocated string of last error NULL - If drmaa2_queueinfo_list if succeeds NULL if fails.no error text exists
drmaa2_error drmaa2_rlist_listadd (drmaa2_msession_get_all_reservations (const drmaa2_msession ms_)list l, const void * value)
This function adds an element Returnsto the list.
of all advance reservations visible for theParameters:
user running the DRMAA-based application. The list or number of jobs returnedl should- adherePointer to DRMS policies. Ex: The list mightdrmaa list
be limitedvalue to- containpointer onlyto the reservationselement seenwhich byneeds theto DRMAA2be user.inserted
ParametersSide-Effects: none
Returns:
ms_ pointer to drmaa2_msession created earlier drmaa2_error - DRMAA2_INVALID_ARGUMENT
Side-Effects: none · DRMAA2_OUT_OF_RESOURCE
Returns: · DRMAA2_SUCCESS
drmaa2_jlist drmaa2_list_create if succeeds NULL if fails
void(const drmaa2_listtype t, const drmaa2_notificationlist_free (drmaa2_notification * nRefentryfree callback)
This function frees the pre-allocatedcreates a drmaa notification structurelist.
Parameters:
nReft - Pointer to drmaa notification Type of the list which needs to be created
Side-Effects: nonecallback - Call back function to call when free is called.
Side-Effects: none
Returns:
voiddrmaa2_list
drmaa2_stringerror drmaa2_list_del (drmaa2_notification_impl_spec (voidlist l, long pos)
drmaa2_notification_impl_spec - Lists the notification spec implementations supportedThis function deletes an element from the list.
Side-EffectsParameters:
none Returns: l - Pointer to drmaa list
drmaa2_string_list pos - Returnposition values:of the element which needs to be deleted
list of notification spec implementations supportedSide-Effects: none
Returns:
NULL - If this feature is not supported, set drmaa2_lasterror_verror to- DRMAA2_UNSUPPORTEDINVALID_OPERATIONARGUMENT
drmaa2_jsession drmaa2_open_jsession (const char * session_name_) · DRMAA2_SUCCESS
void drmaa2_open_jsession - Opens an already existing drmaa2_job session
Parameters:_list_free (drmaa2_list * l)
s This function frees a drmaa list
Parameters:
session_name_ - Session name of the drmaa2_job sessionl which- needsPointer to bedrmaa openedlist
Side-Effects: none
Returns:
Returns: void
const void* drmaa2_list_jsession - returns pointer toget (const drmaa2_jsessionlist forl, along sessionindex)
which is already present This drmaa2_msession drmaa2_open_msession (const char * contact_)
Opens the monitoring sessionfunction gets the element form a particular position of the list.
Parameters:
contact_l - ContactPointer ofto thedrmaa sessionlist
Side-Effects: none index - postion from whcih the data
Returns:
drmaa2_msession if the session exists NULL if the session does not exist and if session name is invalid and also sets drmaa2_lasterror_v to DRMAA2_INVALID_ARGUMENT errorhas to be taken
Side-Effects: none
Returns:
drmaa2_rsession drmaa2_open_rsession (const char void* session_name_)
Opens the previously created session.
- pointer to the element retured as void* NULL - If the position is not valid
long drmaa2_list_size Parameters:
(const drmaa2_list l)
This function returns session_name_ - Namethe size of the sessionlist.
Side-EffectsParameters:
none l - Pointer to drmaa list
Returns: Side-Effects: none
drmaa2_rsession if a session exists NULL if theReturns:
session does not exist and if session name is invalid and also sets drmaa2_lasterror_v to DRMAA2_INVALID_ARGUMENT error.long - size of list
drmaa2_queueinfomachineinfo drmaa2_queueinfomachineinfo_create (void)
drmaa2_queueinfomachineinfo_create() - creates a drmaa2_queueinfomachineinfo info structure and returns its pointer
Side-Effects: none
Returns:
drmaa2_queueinfomachineinfo - pointer to newly allocated drmaa2_queueinfomachineinfo structure NULL - if allocation fails and DRMAA2_OUT_OF_RESOURCE error is set
void drmaa2_queueinfomachineinfo_free (drmaa2_queueinfomachineinfo * qiRefmiRef)
This function frees the pre-allocated drmaa queueinfomachine info structure.
Parameters:
qiRefmiRef - Pointer to drmaa queueinfomachine info
Side-Effects: none
Returns:
void
drmaa2_string_list drmaa2_queueinfomachineinfo_impl_spec (void)
drmaa2_queueinfomachineinfo_impl_spec - Lists the queuemachine info spec implementations supported
Side-Effects: none
Returns:
drmaa2_string_list -list of machineinfo spec implementations supported NULL - If this feature is not supported, set drmaa2_lasterror_v to DRMAA2_UNSUPPORTED_OPERATION
void drmaa2_msession_free (drmaa2_msession Side-Effects: none* ms)
drmaa2_j_list drmaa2_msession_get_all_jobs (const drmaa2_msession ms_, const Returns:
drmaa2_jinfo filter_)
Returns the drmaa2_string_list of all jobs i.e. DRMAA2 jobs and the Returnjobs values:submitted out of DRMAA2 library also. The list or number of jobs listreturned ofshould queueinfoadhere specto implementationsDRMS supportedpolicies. Ex: The list might be
NULL -limited Ifto thiscontain featureonly isthe notjobs supported,seen set drmaa2_lasterror_v to DRMAA2_UNSUPPORTED_OPERATION
by the DRMAA2 user.
void drmaa2_r_free (drmaa2_r * r) Parameters:
drmaa2_string drmaa2_r_get_id (const drmaa2_r r) ms_ - pointer Getto thedrmaa2_msession reservationcreated idearlier
from a given reservation object. filter_ - Parameters:of type drmaa2_jinfo (through which we can query jobs per jobstate, job rowner -and givenper reservationqueue objectetc
Side-Effects: none
Returns:
drmaa2_j_list if succeeds NULL if fails
drmaa2_machineinfo_list drmaa2_msession_get_all_machines (const drmaa2_msession ms_, const drmaa2_string_list names_)
Returns Return values:
- reservation idlist of machines or hosts available for submitting jobs in the DRMS system.
drmaa2_rinfo drmaa2_r_get_info (const drmaa2_r r)Parameters:
Getms_ thepointer reservationto infodrmaa2_msession fromcreated aearlier
given reservation object. Parameters:names_ a list of queue names acts as filter i.e. we fetch rinfo -of givenonly reservationthese objectqueues.
Side-Effects: none
Returns:
drmaa2_rinfo
_machineinfo_list if succeeds NULL if fails.
drmaa2_queueinfo_list drmaa2_msession_get_all_queues (const drmaa2_msession ms_, const drmaa2_string_list names_)
Return values:Returns list of queues available for submitting jobs in the DRMS system.
-
reservation info object drmaa2_rtemplate drmaa2_r_get_reservation_template (const drmaa2_r r)Parameters:
Getms_ thepointer reservationto templatedrmaa2_msession fromcreated aearlier
given reservation object. Parameters:names_ a list of queue names acts as filter i.e. we fetch rinfo -of givenonly reservationthese objectqueues.
Side-Effects: none
Returns:
drmaa2_rtemplatequeueinfo_list if succeeds NULL Return values:if fails.
- reservation template
drmaa2_stringdrmaa2_r_list drmaa2_rmsession_get_sessionall_namereservations (const drmaa2_rmsession rms_)
GetReturns the reservationlist sessionof nameall fromadvance areservations givenvisible reservationfor object.the user running the DRMAA-based application. The list or Parameters:number of jobs returned should adhere to DRMS r - given reservation object
Side-Effects: none
policies. Ex: The list might
Returns: be limited to contain only the reservations seen drmaa2_string
by the DRMAA2 user.
Return values: Parameters:
- reservation session name ms_ pointer to drmaa2_error drmaa2_r_terminate (drmaa2_r r)msession created earlier
Terminate a given reservation.Side-Effects: none
Returns:
Parameters: drmaa2_j_list if rsucceeds -NULL givenif reservationfails
object
void drmaa2_notification_free (drmaa2_notification * nRef)
Side-Effects: none This function Returns:
frees the pre-allocated drmaa notification structure.
Parameters:
drmaa2_error Return values: nRef - Pointer to drmaa notification
DRMAA2_SUCCESS Side-Effects: none
DRMAA2_DENIED_BY_DRMS
Returns:
drmaa2_error drmaa2_register_event_notification (const drmaa2_callback callback) void
Registers adrmaa2_string_list drmaa2_callback with the DRMS library. For the first phase of implementation we do not support this._notification_impl_spec (void)
drmaa2_notification_impl_spec - Lists the notification spec implementations supported
ParametersSide-Effects: none
Returns:
callback - a structure of type drmaa2_callback containing the details of callback function, event etc
Side-Effects: none
drmaa2_string_list - list of notification spec implementations supported NULL - If this feature is not supported, set drmaa2_lasterror_v to DRMAA2_UNSUPPORTED_OPERATION
drmaa2_jsession drmaa2_open_jsession (const char * session_name_)
Returns: drmaa2_open_jsession - Opens an already existing DRMAA2_UNSUPPORTED_OPERATION error if fails DRMAA2_SUCCESS if succeedsdrmaa2_job session
Parameters:
drmaa2_rinfo drmaa2_rinfo_create (void) drmaa2session_rinfoname_create() - Session name createsof athe drmaa2_reservationjob infosession structurewhich andneeds returnsto itsbe pointeropened
Side-Effects: none
Returns:
Returns: drmaa2_jsession - returns pointer to drmaa2_rinfojsession -for pointera tosession newlywhich allocatedis drmaa2_rinfoalready structurepresent NULL - if allocation fails and DRMAA2_OUTINVALID_OF_RESOURCEARGUMENT error is set
voiddrmaa2_msession drmaa2_rinfoopen_freemsession (drmaa2_rinfoconst char * riRefcontact_)
ThisOpens function frees the pre-allocated drmaa rinfo structuremonitoring session.
Parameters:
riRefcontact_ - PointerContact toof drmaathe reservationsession
info
Side-Effects: none
Returns:
Returns: drmaa2_msession if the session exists NULL if the session does not voidexist and if session name drmaa2_string_list drmaa2_rinfo_impl_spec (void)
Lists the drmaa spec implementations supported for reservation info (e.g. drmaa, drmaa2)is invalid and also sets drmaa2_lasterror_v to DRMAA2_INVALID_ARGUMENT error
drmaa2_rsession drmaa2_open_rsession (const char * session_name_)
Opens the previously Side-Effects: nonecreated session.
ReturnsParameters:
drmaa2session_stringname_list - Name of the session.
Return values: Side-Effects: none
list of drmaaReturns:
spec implementations supported drmaa2_rsession if a NULLsession -exists IfNULL this feature is not supported, setif sets drmaa2_lasterror_v to DRMAA2_UNSUPPORTEDINVALID_OPERATIONARGUMENT error.
void drmaa2_rsession_freequeueinfo (drmaa2_rsession * rs)queueinfo_create (void)
drmaa2_rsession_free Frees the memory of Reservation session pointed by rs
Parameters:
rs - pointer to drmaa2_rsession.queueinfo_create() - creates a drmaa2_queueinfo structure and returns its pointer
Side-Effects: none
Returns:
Returns: drmaa2_queueinfo - pointer to newly allocated drmaa2_queueinfo structure NULL void- if allocation fails and drmaa2_stringDRMAA2_OUT_OF_RESOURCE error is set
void drmaa2_rsessionqueueinfo_get_contactfree (const drmaa2_rsessionqueueinfo * rsqiRef)
GetThis thefunction contactfrees ofthe apre-allocated givendrmaa drmaa2queueinfo reservation sessionstructure.
Parameters:
rsqiRef - Pointer givento reservationdrmaa sessionqueueinfo
Side-Effects: none
Returns:
void
drmaa2_string_list drmaa2_queueinfo_impl_spec (void)
drmaa2_queueinfo_impl_spec - Lists the queue info spec implementations supported
Return valuesSide-Effects: none
Returns:
- contact name associated with reservation session drmaa2_string_list -list of queueinfo spec implementations supported NULL - ifIf reservationthis sessionfeature is not invalidsupported, set drmaa2_lasterror_v set to DRMAA2_INVALIDUNSUPPORTED_SESSIONOPERATION
void drmaa2_r_free (drmaa2_rsession_get_reservation (constr * r)
drmaa2_rsession rs, string drmaa2_r_get_id (const drmaa2_stringr reservationIdr)
Get the reservation objectid from a specificgiven reservation session with the object.
Parameters:
r - given reservation id.object
ParametersSide-Effects: none
Returns:
rs - given reservation session drmaa2_string
reservationIdReturn -values:
given reservation id Side-Effects: none
- reservation id
drmaa2_rinfo drmaa2_r_get_info (const drmaa2_r r)
Returns: Get the reservation info from a given reservation drmaa2_robject.
ReturnParameters:
values: r - given reservation interfaceobject
NULL - if reservation session is invalid, drmaa2_lasterror_v set to DRMAA2_INVALID_SESSION
Side-Effects: none
Returns:
·drmaa2_rinfo if- reservation idinfo object isNULL invalid, drmaa2_lasterror_v set to- if fails and DRMAA2_INVALID_ARGUMENT error is set
drmaa2_r_listrtemplate drmaa2_rsessionr_get_reservation_reservationstemplate (const drmaa2_rsessionr rs_r)
Get all the reservation objectstemplate from a specific reservation session.
Parameters:
rs_ - given reservation session
Side-Effects: none reservation object.
ReturnsParameters:
drmaa2_r_list
r - given reservation object
Return valuesSide-Effects: none
Returns:
- reservation interface list drmaa2_rtemplate- - reservation template NULL - if reservationfails session is invalid, drmaa2_lasterror_v set to DRMAA2_INVALID_SESSIONand DRMAA2_INVALID_ARGUMENT error is set
drmaa2_string drmaa2_rsessionr_get_session_name (const drmaa2_rsessionr rsr)
Get the reservation session name offrom a given drmaa2 reservation sessionobject.
Parameters:
rsr - given reservation sessionobject
Side-Effects: none
Returns:
drmaa2_string_string - reservation session name NULL - if fails and DRMAA2_INVALID_ARGUMENT error is set
drmaa2_error drmaa2_r_terminate (drmaa2_r r)
Terminate a given reservation.
Parameters:
Return values: r - given reservation object
- session name associated with reservation sessionSide-Effects: none
Returns:
NULL - if reservation session is invalid, drmaa2_lasterror_v set toerror - on success DRMAA2_SUCCESS DRMAA2_INVALID_SESSIONDENIED_BY_DRMS if failed
drmaa2_rerror drmaa2_rsessionregister_requestevent_reservationnotification (const drmaa2_rsession rs, const drmaa2_rtemplate rt_callback callback)
CreatesRegisters a reservation object in a specific reservation sessiondrmaa2_callback with the givenDRMS reservation templatelibrary. it also evaluates reservation template for For the mandatoryfirst attributesphase andof sendsimplementation thewe requestdo not to DRMSsupport this.
Parameters:
rscallback - givena reservationstructure sessionof type drmaa2_callback containing the rt_ - given reservation templatedetails of callback function, event etc
Side-Effects: none
Returns:
drmaa2DRMAA2_rSUCCESS if succeeds DRMAA2_UNSUPPORTED_OPERATION error if fails
Return values: drmaa2_rinfo drmaa2_rinfo_create (void)
drmaa2_rinfo_create() - reservationcreates interfacea drmaa2_reservation info structure and returns its pointer
NULL - if reservation session is invalid, drmaa2_lasterror_v set to DRMAA2_INVALID_SESSIONSide-Effects: none
Returns:
· if reservation template evaluation fails, drmaa2_lasterror_v setrinfo - pointer to DRMAA2_UNSUPPORTED_ATTRIBUTEnewly allocated drmaa2_rinfo structure ·NULL - if DRMSallocation rejectsfails reservation request, drmaa2_lasterror_v set to DRMAA2_DENIED_BY_DRMSand DRMAA2_OUT_OF_RESOURCE error is set
void drmaa2_rtemplaterinfo_free (drmaa2_rtemplate_create (voidrinfo * riRef)
This function frees the pre-allocated drmaa rtemplaterinfo structure.
Side-EffectsParameters: none
riRef - Pointer to drmaa reservation info
ReturnsSide-Effects: none
Returns:
drmaa2_rtemplate void
drmaa2_rtemplatestring_freelist (drmaa2_rtemplate * rt)_rinfo_impl_spec (void)
Lists the drmaa spec implementations Thissupported functionfor freesreservation the pre-allocated drmaa rtemplate structure.info (e.g. drmaa, drmaa2)
Side-Effects: none
ParametersReturns:
rtdrmaa2_string_list - Pointerlist toof drmaa rtemplatespec implementations supported NULL - If this feature is Side-Effects: none
not supported, set drmaa2_lasterror_v to DRMAA2_UNSUPPORTED_OPERATION
void drmaa2_rsession_free (drmaa2_rsession * rs)
Returns: drmaa2_rsession_free Frees the memory of Reservation session pointed by voidrs
drmaa2_string_list drmaa2_rtemplate_impl_spec (void) Parameters:
Lists the drmaa spec implementations supported forrs reservation- template (e.g. drmaa, drmaa2)pointer to drmaa2_rsession.
Side-Effects: none
Returns:
drmaa2_string_listvoid
drmaa2_string drmaa2_rsession_get_contact (const Return values:drmaa2_rsession rs)
Get the contact list of drmaaa specgiven implementationsdrmaa2 supportedreservation session.
Parameters:
NULL - If this feature is not supported, set drmaa2_lasterror_v to DRMAA2_UNSUPPORTED_OPERATIONrs - given reservation session
drmaa2_error
drmaa2_set_instance_value (void * instance, const char * name, const char * value) Side-Effects: none
void drmaa2_slotinfo_free (drmaa2_slotinfo * siRef) Returns:
This function frees the pre-allocated drmaa slotinfo.
Parameters:
drmaa2_string - contact name associated with reservation session NULL - if reservation session is invalid, drmaa2_lasterror_v set to DRMAA2_INVALID_SESSION
siRef - Pointer to drmaa slotinfo
drmaa2_r drmaa2_rsession_get_reservation (const drmaa2_rsession rs, const drmaa2_string reservationId)
Side-Effects: none
Get the reservation object from a specific reservation session with the given reservation id.
Returns: Parameters:
void rs - void drmaa2_string_free (drmaa2_string * str)given reservation session
This function freesreservationId the- previouslygiven allocated drmaa2_string.reservation id
ParametersSide-Effects: none
Returns:
str - pointer to pre allocated drmaa2_string drmaa2_r- reservation NULL Side-Effects: noneif reservation session is invalid, drmaa2_lasterror_v set to DRMAA2_INVALID_SESSION
Returns: · if reservation id is invalid, drmaa2_lasterror_v set to voidDRMAA2_INVALID_ARGUMENT
drmaa2_boolr_list drmaa2_rsession_supportsget_reservations (const drmaa2_capabilityrsession crs_)
drmaa2_supportsGet -all returnsthe truereservation ifobjects drmaafrom supportsa thespecific provided drmaa2_capabilityreservation session.
Parameters:
crs_ - drmaa2_capabilitygiven enumreservation valuesession
Side-Effects: none
Returns:
Returns:
drmaa2_versiondrmaa2_r_list - reservation interface list NULL - if reservation session is invalid, drmaa2_lasterror_v set to DRMAA2_INVALID_SESSION
voiddrmaa2_string drmaa2_rsession_versionget_session_freename (const drmaa2_versionrsession rs)
* vRef) Get the Thissession functionname freesof thea pre-allocatedgiven drmaadrmaa2 versionreservation structuresession.
Parameters:
vRefrs - Pointergiven toreservation drmaa versionsession
Side-Effects: none
Returns:
Returns: drmaa2_string - session name associated with reservation session NULL void- if
|
Sample Example
Code Block |
---|
language | cpp |
---|
theme | Eclipse |
---|
title | Example1: DRMAA2 Simple Application |
---|
linenumbers | true |
---|
collapse | true |
---|
|
drmaa2_jsession js; /* Job session object*/
drmaa2_jtemplate jt; /* Job session template*/
drmaa2_j j; /* Job object*/
...
...
...
/* Create and open job session */
js = drmaa2_create_jsession("testsession", DRMAA2_UNSET_STRING);
if (js == NULL) {
...
return;
}
...
...
...
/* Create job template */
jt = drmaa2_jtemplate_create();
jt->remoteCommand = strdup("/bin/date");
j = drmaa2_jsession_run_job(js, jt);
...
...
drmaa2_j_wait_terminated(j, DRMAA2_INFINITE_TIME);
drmaa2_jtemplate_free(&jt);
drmaa2_destroy_jsession("testsession");
...
...
...
drmaa2_j_free(&j);
drmaa2_jsession_free(&js);
...
...
... |
Code Block |
---|
language | cpp |
---|
theme | Eclipse |
---|
title | Example2: DRMAA2 Advance Application |
---|
linenumbers | true |
---|
collapse | true |
---|
|
...
...
...
drmaa2_jtemplate jt = drmaa2_jtemplate_create(); /* job template object */
drmaa2_rtemplate rt = drmaa2_rtemplate_create(); /* reservation template object */
drmaa2_string_list cl = drmaa2_list_create(DRMAA2_STRINGLIST, NULL); / *create list of strings */
drmaa2_dict env = drmaa2_dict_create(NULL); /* create a dictionary */
drmaa2_jsession js = drmaa2_create_jsession("myjsession", NULL); /* open sessions to DRM system */
if (js == NULL) {reservation session is invalid, drmaa2_lasterror_v set to DRMAA2_INVALID_SESSION
drmaa2_r drmaa2_rsession_request_reservation (const drmaa2_rsession rs, const drmaa2_rtemplate rt_)
Creates a reservation object in a specific reservation session with the given reservation template. it also evaluates reservation template for the mandatory attributes and sends the request
to DRMS.
Parameters:
rs - given reservation session
rt_ - given reservation template
Side-Effects: none
Returns:
drmaa2_r- reservation NULL - if reservation session is invalid, drmaa2_lasterror_v set to DRMAA2_INVALID_SESSION
· if reservation template evaluation fails, drmaa2_lasterror_v set to DRMAA2_UNSUPPORTED_ATTRIBUTE
· if DRMS rejects reservation request, drmaa2_lasterror_v set to DRMAA2_DENIED_BY_DRMS
drmaa2_rtemplate drmaa2_rtemplate_create (void)
This function frees the pre-allocated drmaa rtemplate structure.
Side-Effects: none
Returns:
drmaa2_rtemplate
void drmaa2_rtemplate_free (drmaa2_rtemplate * rt)
This function frees the pre-allocated drmaa rtemplate structure.
Parameters:
... rt - Pointer to drmaa rtemplate
... Side-Effects: none
return; } Returns:
drmaa2_rsession rs = drmaa2_create_rsession("myrsession", NULL); /* create a reservation sessionvoid
*/
if (rs == NULL)drmaa2_string_list drmaa2_rtemplate_impl_spec (void)
{Lists the drmaa spec implementations supported for reservation template (e...g. drmaa, drmaa2)
...
Side-Effects: none
return; Returns:
} drmaa2_msession ms = drmaa2_open_msession(NULL); /*create and open monitoring session */
ml = drmaa2_msession_get_all_machines(ms, DRMAA2_UNSET_LIST);string_list - list of drmaa spec implementations supported NULL - If this feature is not supported, set drmaa2_lasterror_v to DRMAA2_UNSUPPORTED_OPERATION
drmaa2_error drmaa2_set_instance_value (void /* determine instance, const char * name, ofconst first machinechar */ value)
ifvoid (drmaa2_listslotinfo_size(ml) < 1) {free (drmaa2_slotinfo * siRef)
... This function frees the pre-allocated drmaa slotinfo.
return;
} Parameters:
m = (drmaa2_machineinfo)drmaa2_list_get(ml, 0); drmaa2_list_add(cl, m->name); siRef - Pointer to rt->maxSlotsdrmaa =slotinfo
4;
Side-Effects: none
Returns:
void
void drmaa2_string_free (drmaa2_string * str)
This function frees the previously /* perform advance reservation */allocated drmaa2_string.
... Parameters:
rt->machineOS=DRMAA2_LINUX; rt->candidateMachines = cl; str - pointer to rpre =allocated drmaa2_rsession_request_reservation(rs, rt);string
jt->remoteCommand = strdup("/bin/date");Side-Effects: none
Returns:
void
drmaa2_bool drmaa2_supports (const drmaa2_capability c)
/* submit job */ drmaa2_supports jt->reservationId returns = drmaa2_r_get_id(r);
drmaa2_dict_set(env, "PBS_SCP", "/usr/bin/scp");true if drmaa supports the provided drmaa2_capability
jt->jobEnvironment = env;Parameters:
j = drmaa2_jsession_run_job(js, jt); c - drmaa2_j_wait_terminated(j, DRMAA2_INFINITE_TIME); capability enum value
Side-Effects: none
/* Wait for terminationReturns:
and print exit status */ ji = drmaa2_j_get_info(j);version
...
...
...
void drmaa2_version_free (drmaa2_version * vRef)
/* close sessions, cleanup */This function frees the drmaa2_jtemplate_free(&jt);
drmaa2_rtemplate_free(&rt);
pre-allocated drmaa version structure.
drmaa2_jinfo_free(&ji); drmaa2_j_free(&j);Parameters:
drmaa2_r_free(&r); drmaa2_close_msession(ms);
drmaa2_close_rsession(rs);vRef - Pointer to drmaa version
drmaa2_close_jsession(js); drmaa2_msession_free(&ms);Side-Effects: none
drmaa2_rsession_free(&rs); drmaa2_jsession_free(&js);Returns:
... ...
void
|
Source code licensing
GNU Affero General Public License
Questions
Question | Outcome |
---|
How to do Black box testing ? Are there any application available to do black-box/manual testing ? |
|
As PTL framework doesnt give session related automation, how to do automation? |
|
Do we need to add customs DRMAAv2 APIs to support all IFL API's? |
|
Not Doing
References
...