maui/include/msched-llapi.h
dev 9a0042c61e Initial revision
git-svn-id: svn://opensvn.adaptivecomputing.com/maui/trunk@2 3f5042e3-fb1d-0410-be18-d6ca2573e517
2005-07-12 21:12:53 +00:00

121 lines
5.5 KiB
C

/*
*/
#ifndef __LLAPI
#define __LLAPI
#define LL_JOB_VERSION 0
#define LL_PROC_VERSION 0
#define LL_CONTROL_VERSION 22
enum { LL_CM, QUERY_ALL, JOBS, MACHINES };
enum DataFilter { ALL_DATA, STATUS_LINE, Q_LINE };
enum Usage { SHARED, NOT_SHARED };
enum HoldType { NO_HOLD, HOLDTYPE_USER, HOLDTYPE_SYSTEM, HOLDTYPE_USERSYS };
enum {
STATE_IDLE,STATE_PENDING,STATE_STARTING,STATE_REMOVED,STATE_REJECT_PENDING,STATE_COMPLETE_PENDING,STATE_VACATE_PENDING,STATE_REMOVE_PENDING,STATE_RUNNING,STATE_HOLD,STATE_DEFERRED,STATE_REJECTED,STATE_UNEXPANDED,STATE_NOTQUEUED,STATE_COMPLETED,STATE_VACATED,STATE_NOTRUN,STATE_SUBMISSION_ERR,STATE_TERMINATED,STATE_CANCELED,STATE_PREEMPTED,STATE_PREEMPT_PENDING,STATE_RESUME_PENDING };
enum {
LL_MachineVirtualMemory,LL_MachineRealMemory,LL_MachineCPUs,LL_MachineDisk,LL_MachineMaxTasks,LL_MachinePoolList,LL_MachinePoolListSize,LL_MachineOperatingSystem,LL_MachineArchitecture,LL_MachineLoadAverage,LL_MachineSpeed,LL_MachineAdapterList,LL_MachineFeatureList,LL_MachineConfiguredClassList,LL_MachineAvailableClassList,LL_JobSubmitHost,LL_StepHoldType,LL_StepHostList,LL_StepState,LL_StepDispatchTime,LL_StepTaskInstanceCount,LL_StepCompletionDate,LL_StepCompletionCode,LL_StepMessages,LL_MachineName,LL_MachineStartdState,LL_StepGetFirstMachine,LL_StepGetNextMachine,LL_JobCredential,LL_CredentialUserName,LL_CredentialGroupName,LL_StepAccountNumber,LL_StepGetFirstNode,LL_NodeMinInstances,LL_NodeInitiatorCount,LL_StepGetNextNode,LL_NodeGetFirstTask,LL_NodeRequirements,LL_StepComment,LL_JobStepType,LL_JobSubmitTime,LL_StepStartCount,LL_StepStartDate,LL_StepExecSize,LL_StepImageSize,LL_StepIwd,LL_TaskExecutable,LL_StepWallClockLimitHard,LL_StepJobClass,LL_StepNodeUsage,LL_JobGetFirstStep,LL_StepID,LL_JobGetNextStep,LL_TaskIsMaster,LL_TaskGetFirstTaskInstance,LL_TaskInstanceMachineName,LL_TaskGetNextTaskInstance,LL_NodeGetNextTask };
enum { API_OK = 0,API_INVALID_INPUT,API_CANT_MALLOC,API_CANT_CONNECT,API_CONFIG_ERR,API_CANT_TRANSMIT,API_CANT_AUTH,API_CANT_FIND_PROC,API_WRNG_PROC_VERSION,API_WRNG_PROC_STATE,API_MACH_NOT_AVAIL,API_CANT_FIND_RUNCLASS,API_REQ_NOT_MET,API_WRNG_MACH_NO,API_LL_SCH_ON,API_MACH_DUP };
enum LL_control_op {
LL_CONTROL_RECYCLE, LL_CONTROL_RECONFIG, LL_CONTROL_START,
LL_CONTROL_STOP, LL_CONTROL_DRAIN, LL_CONTROL_DRAIN_STARTD,
LL_CONTROL_DRAIN_SCHEDD, LL_CONTROL_PURGE_SCHEDD, LL_CONTROL_FLUSH,
LL_CONTROL_SUSPEND, LL_CONTROL_RESUME, LL_CONTROL_RESUME_STARTD,
LL_CONTROL_RESUME_SCHEDD, LL_CONTROL_FAVOR_JOB, LL_CONTROL_UNFAVOR_JOB,
LL_CONTROL_FAVOR_USER, LL_CONTROL_UNFAVOR_USER,
LL_CONTROL_HOLD_USER, LL_CONTROL_HOLD_SYSTEM, LL_CONTROL_HOLD_RELEASE,
LL_CONTROL_PRIO_ABS, LL_CONTROL_PRIO_ADJ };
/* structures */
typedef void LL_element;
typedef void * LL_node;
typedef struct {
int cluster;
int proc;
char *from_host; /* name of the schedd host */
} LL_STEP_ID;
typedef struct {
LL_STEP_ID id; /* step id */
int q_date; /* UNIX time step was submitted */
int status; /* Running, unexpanded, completed,.. */
/* The following are valid after scheduling has occured */
int num_processors; /* actual number of assigned processors */
char **processor_list;/* list of processors on which to run step */
/* The following are inputs needed to actually start an executable */
char *cmd; /* a.out file */
char *args; /* command line args */
char *env; /* environment */
char *in; /* file for stdin */
char *out; /* file for stdout */
char *err; /* file for stderr */
char *iwd; /* Initial working directory */
char *notify_user; /* target to be used when sending mail */
char *shell; /* shell to be used */
char *tracker; /* user's step tracking exit */
char *tracker_arg; /* argument to tracking exit */
int notification; /* Notification options */
int image_size; /* Size of the virtual image in K */
int exec_size; /* size of the executable */
} LL_job_step;
typedef struct LL_job {
int version_num; /* LL_JOB_VERSION */
char *job_name; /* job name */
char *owner; /* login of person submitting job */
char *groupname; /* group name of owner's login group */
uid_t uid; /* unix userid of submitter */
gid_t gid; /* unix group id of submitter */
char *submit_host; /* Host of job submission */
int steps; /* number of steps in job */
LL_job_step **step_list; /* ptr to array of ptrs to job steps */
} LL_job;
typedef struct {
int version_num;
LL_STEP_ID StepId;
char *msg;
} LL_terminate_job_info;
typedef struct {
int version_num;
LL_STEP_ID StepId;
char **nodeList;
} LL_start_job_info;
/* API prototypes */
LL_element *ll_get_objs(LL_element *,int,void *,int *,int *);
LL_element *ll_next_obj(LL_element *);
int ll_free_objs(LL_element *);
int llfree_job_info(LL_job *,int);
LL_element *ll_query(int);
int ll_set_request(LL_element *,int,void *,int);
int ll_deallocate(LL_element *);
int ll_get_data(LL_element *,int,void *);
int ll_start_job(LL_start_job_info *);
int ll_terminate_job(LL_terminate_job_info *);
int ll_control(void);
int llsubmit(char *,void *,void *,LL_job *,int);
#endif /* __LLAPI */
/* END msched-llapi.h */