forked from lei.chen/myxce
job submit and support run in worker
This commit is contained in:
parent
3630e38a07
commit
e497dd1b69
18 changed files with 502 additions and 236 deletions
|
|
@ -114,30 +114,43 @@ static void* xjob_create(objmgr_t* mgr, objtype_t* type, va_list ap)
|
|||
|
||||
job = MYOBJ_TO_OBJ(job_t*, obj);
|
||||
/* fill job data */
|
||||
job->job.jobid = submit->jobid;
|
||||
job->job.queue = create_obj_by_typename(mgr, "xstring", submit->queue);
|
||||
job->job.sub_time = submit->sub_time;
|
||||
job->job.queue_time = submit->queue_time;
|
||||
job->job.jobid = submit->jobid;
|
||||
job->job.submit = (job_submit_data_t*)calloc(1, sizeof(*(job->job.submit)));
|
||||
if (job->job.submit == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
job->job.submit->queue
|
||||
= create_obj_by_typename(mgr, "xstring", submit->submit->queue);
|
||||
/* FIXME: */
|
||||
if (1) {
|
||||
time_t now = time(NULL);
|
||||
|
||||
job->job.sub_time = now;
|
||||
job->job.queue_time = now;
|
||||
}
|
||||
|
||||
if (job->job.queue_time == 0) {
|
||||
job->job.queue_time = job->job.sub_time;
|
||||
}
|
||||
job->job.state = submit->state;
|
||||
job->job.user = create_obj_by_typename(mgr, "xstring", submit->user);
|
||||
job->job.state = submit->state;
|
||||
job->job.submit->user
|
||||
= create_obj_by_typename(mgr, "xstring", submit->submit->user);
|
||||
job->job.start_time = submit->start_time;
|
||||
job->job.finish_time = submit->finish_time;
|
||||
job->job.job_name
|
||||
= create_obj_by_typename(mgr, "xstring", submit->job_name);
|
||||
job->job.project_name
|
||||
= create_obj_by_typename(mgr, "xstring", submit->project_name);
|
||||
job->job.user_group
|
||||
= create_obj_by_typename(mgr, "xstring", submit->user_group);
|
||||
job->job.job_description
|
||||
= create_obj_by_typename(mgr, "xstring", submit->job_description);
|
||||
job->job.resreq = create_obj_by_typename(mgr, "xstring", submit->resreq);
|
||||
job->job.run_time = submit->run_time;
|
||||
job->job.mintasks = submit->mintasks;
|
||||
job->job.maxtasks = submit->maxtasks;
|
||||
job->job.pending_ctrl = submit->pending_ctrl;
|
||||
job->job.submit->job_name
|
||||
= create_obj_by_typename(mgr, "xstring", submit->submit->job_name);
|
||||
job->job.submit->project_name
|
||||
= create_obj_by_typename(mgr, "xstring", submit->submit->project_name);
|
||||
job->job.submit->user_group
|
||||
= create_obj_by_typename(mgr, "xstring", submit->submit->user_group);
|
||||
job->job.submit->job_description = create_obj_by_typename(
|
||||
mgr, "xstring", submit->submit->job_description);
|
||||
job->job.submit->resreq
|
||||
= create_obj_by_typename(mgr, "xstring", submit->submit->resreq);
|
||||
job->job.run_time = submit->run_time;
|
||||
job->job.submit->mintasks = submit->submit->mintasks;
|
||||
job->job.submit->maxtasks = submit->submit->maxtasks;
|
||||
job->job.pending_ctrl = submit->pending_ctrl;
|
||||
|
||||
job->job.pidinfo = NULL;
|
||||
|
||||
|
|
@ -159,35 +172,35 @@ static void* xjob_create(objmgr_t* mgr, objtype_t* type, va_list ap)
|
|||
}
|
||||
}
|
||||
|
||||
job->job.start_info = NULL;
|
||||
job->job.submit->start_info = NULL;
|
||||
|
||||
if (submit->start_info != NULL) {
|
||||
job->job.start_info
|
||||
if (submit->submit->start_info != NULL) {
|
||||
job->job.submit->start_info
|
||||
= (job_startinfo_t*)calloc(1, sizeof(job_startinfo_t));
|
||||
if (job->job.start_info == NULL) {
|
||||
if (job->job.submit->start_info == NULL) {
|
||||
SET_ERROR(ENOMEM);
|
||||
goto clean_job;
|
||||
}
|
||||
job->job.start_info->cmdline = create_obj_by_typename(
|
||||
mgr, "xstring", submit->start_info->cmdline);
|
||||
job->job.start_info->exdata = create_obj_by_typename(
|
||||
mgr, "xstring", submit->start_info->exdata);
|
||||
job->job.start_info->execcwd = create_obj_by_typename(
|
||||
mgr, "xstring", submit->start_info->execcwd);
|
||||
job->job.start_info->exechome = create_obj_by_typename(
|
||||
mgr, "xstring", submit->start_info->exechome);
|
||||
job->job.start_info->execuser = create_obj_by_typename(
|
||||
mgr, "xstring", submit->start_info->execuser);
|
||||
job->job.start_info->launch_type = create_obj_by_typename(
|
||||
mgr, "xstring", submit->start_info->launch_type);
|
||||
if (submit->start_info->job_pre_exec != NULL) {
|
||||
job->job.start_info->job_pre_exec = create_obj_by_typename(
|
||||
mgr, "xstring", submit->start_info->job_pre_exec);
|
||||
job->job.submit->start_info->cmdline = create_obj_by_typename(
|
||||
mgr, "xstring", submit->submit->start_info->cmdline);
|
||||
job->job.submit->start_info->exdata = create_obj_by_typename(
|
||||
mgr, "xstring", submit->submit->start_info->exdata);
|
||||
job->job.submit->start_info->execcwd = create_obj_by_typename(
|
||||
mgr, "xstring", submit->submit->start_info->execcwd);
|
||||
job->job.submit->start_info->exechome = create_obj_by_typename(
|
||||
mgr, "xstring", submit->submit->start_info->exechome);
|
||||
job->job.submit->start_info->execuser = create_obj_by_typename(
|
||||
mgr, "xstring", submit->submit->start_info->execuser);
|
||||
job->job.submit->start_info->launch_type = create_obj_by_typename(
|
||||
mgr, "xstring", submit->submit->start_info->launch_type);
|
||||
if (submit->submit->start_info->job_pre_exec != NULL) {
|
||||
job->job.submit->start_info->job_pre_exec = create_obj_by_typename(
|
||||
mgr, "xstring", submit->submit->start_info->job_pre_exec);
|
||||
}
|
||||
|
||||
if (submit->start_info->job_post_exec != NULL) {
|
||||
job->job.start_info->job_post_exec = create_obj_by_typename(
|
||||
mgr, "xstring", submit->start_info->job_post_exec);
|
||||
if (submit->submit->start_info->job_post_exec != NULL) {
|
||||
job->job.submit->start_info->job_post_exec = create_obj_by_typename(
|
||||
mgr, "xstring", submit->submit->start_info->job_post_exec);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -203,17 +216,14 @@ static void* xjob_create(objmgr_t* mgr, objtype_t* type, va_list ap)
|
|||
MOVE_PTR(job->job.run_usage, submit->run_usage);
|
||||
}
|
||||
|
||||
/* clang-format off */
|
||||
if ((job->job.queue == NULL) ||
|
||||
(job->job.user == NULL) ||
|
||||
(job->job.job_name == NULL) ||
|
||||
(job->job.start_info->cmdline == NULL) ||
|
||||
(job->job.project_name == NULL) ||
|
||||
(job->job.job_description == NULL) ||
|
||||
(job->job.resreq == NULL)) {
|
||||
/* clang-format on */
|
||||
if ((job->job.submit->queue == NULL) || (job->job.submit->user == NULL)
|
||||
|| (job->job.submit->job_name == NULL)
|
||||
|| (job->job.submit->start_info->cmdline == NULL)
|
||||
|| (job->job.submit->project_name == NULL)
|
||||
|| (job->job.submit->job_description == NULL)
|
||||
|| (job->job.submit->resreq == NULL)) {
|
||||
|
||||
FREEUP(job->job.start_info);
|
||||
FREEUP(job->job.submit->start_info);
|
||||
|
||||
job_obj_killer(job);
|
||||
|
||||
|
|
@ -240,12 +250,12 @@ void job_obj_killer(job_t* job)
|
|||
}
|
||||
|
||||
obj = TO_MYOBJ(job);
|
||||
DEREF_OBJ(job->job.queue);
|
||||
DEREF_OBJ(job->job.user);
|
||||
DEREF_OBJ(job->job.job_name);
|
||||
DEREF_OBJ(job->job.project_name);
|
||||
DEREF_OBJ(job->job.job_description);
|
||||
DEREF_OBJ(job->job.resreq);
|
||||
DEREF_OBJ(job->job.submit->queue);
|
||||
DEREF_OBJ(job->job.submit->user);
|
||||
DEREF_OBJ(job->job.submit->job_name);
|
||||
DEREF_OBJ(job->job.submit->project_name);
|
||||
DEREF_OBJ(job->job.submit->job_description);
|
||||
DEREF_OBJ(job->job.submit->resreq);
|
||||
|
||||
if (job->job.pidinfo != NULL) {
|
||||
FREEUP(job->job.pidinfo->pids);
|
||||
|
|
@ -285,16 +295,16 @@ void job_obj_killer(job_t* job)
|
|||
FREEUP(job->job.run_usage);
|
||||
}
|
||||
|
||||
if (job->job.start_info != NULL) {
|
||||
DEREF_OBJ(job->job.start_info->cmdline);
|
||||
DEREF_OBJ(job->job.start_info->exechome);
|
||||
DEREF_OBJ(job->job.start_info->execcwd);
|
||||
DEREF_OBJ(job->job.start_info->execuser);
|
||||
DEREF_OBJ(job->job.start_info->exdata);
|
||||
DEREF_OBJ(job->job.start_info->launch_type);
|
||||
DEREF_OBJ(job->job.start_info->job_pre_exec);
|
||||
DEREF_OBJ(job->job.start_info->job_post_exec);
|
||||
FREEUP(job->job.start_info);
|
||||
if (job->job.submit->start_info != NULL) {
|
||||
DEREF_OBJ(job->job.submit->start_info->cmdline);
|
||||
DEREF_OBJ(job->job.submit->start_info->exechome);
|
||||
DEREF_OBJ(job->job.submit->start_info->execcwd);
|
||||
DEREF_OBJ(job->job.submit->start_info->execuser);
|
||||
DEREF_OBJ(job->job.submit->start_info->exdata);
|
||||
DEREF_OBJ(job->job.submit->start_info->launch_type);
|
||||
DEREF_OBJ(job->job.submit->start_info->job_pre_exec);
|
||||
DEREF_OBJ(job->job.submit->start_info->job_post_exec);
|
||||
FREEUP(job->job.submit->start_info);
|
||||
}
|
||||
|
||||
FREEUP(job->job.exit_info);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue