improve support of api server in controller

This commit is contained in:
Rongsong Shen 2026-01-23 16:05:23 +08:00
parent 44fc5b23e9
commit 3b728e5135
3 changed files with 17 additions and 15 deletions

View file

@ -30,7 +30,7 @@ static int xce_apiserver_push_workers(cluster_t* c, endpoint_t* ep)
memset(&data, 0x0, sizeof(data));
data.table = Data_data_schedworkers;
data.table = Data_data_workers;
data.data.workers = &workers;
collect_workers(c, (collect_check_fn_t)check_worker_, &(workers.n_total),
@ -40,7 +40,7 @@ static int xce_apiserver_push_workers(cluster_t* c, endpoint_t* ep)
rc = xce_push_data_req(ep, c->myhost, &data, check_controller, c, 100);
/* free up collected resource value which used
passed to scheduler
passed to api server
*/
for (i = 0; i < workers.n_total; i++) {
xce_worker_t* w = workers.workers[i];
@ -71,7 +71,7 @@ static int xce_apiserver_push_jobs(cluster_t* c, endpoint_t* ep)
memset(&data, 0x0, sizeof(data));
data.table = Data_data_schedjobs;
data.table = Data_data_jobs;
data.data.jobs = &jobs;
collect_jobs(c, (collect_check_fn_t)check_job_, &(jobs.n_total),
@ -98,7 +98,7 @@ static int apiserver_push_joblist(cluster_t* c, xlist_t* l)
.jobs = (xce_job_t**)l->data };
memset(&data, 0x0, sizeof(data));
data.table = Data_data_schedjobs;
data.table = Data_data_jobs;
data.data.jobs = &jobs;
rc = xce_push_data_req(c->apiservers[i].ep, c->myhost, &data,
@ -148,8 +148,8 @@ static int apiserver_job_start_fun(int type, int situation, void* data,
&& (c->apiservers[i].ep != NULL)) {
int rc;
xce_notify_data_t xdata
= { .event = NotifyData_data_schedStartJob,
.data = { .sched_start_job = info->jobid } };
= { .event = NotifyData_data_jobPidInfo,
.data = { .pidinfo = info } };
/* FIXME: add job pid to API server? */
rc = notify(c, c->apiservers[i].ep, &xdata);
@ -181,8 +181,8 @@ static int apiserver_job_exit_fun(int type, int situation, void* data,
&& (c->apiservers[i].ep != NULL)) {
int rc;
xce_notify_data_t xdata
= { .event = NotifyData_data_schedExitJob,
.data = { .sched_exit_job = info->jobid } };
= { .event = NotifyData_data_jobFinishInfo,
.data = { .finishinfo = info } };
/* FIXME: we need to send exit code of job to API server */
rc = notify(c, c->apiservers[i].ep, &xdata);
@ -214,8 +214,8 @@ static int apiserver_job_fail_fun(int type, int situation, void* data,
&& (c->apiservers[i].ep != NULL)) {
int rc;
xce_notify_data_t xdata
= { .event = NotifyData_data_schedFailJob,
.data = { .sched_fail_job = info->jobid } };
= { .event = NotifyData_data_jobFailInfo,
.data = { .failinfo = info } };
/* FIXME: we need to add fail reason of job to api server */
rc = notify(c, c->apiservers[i].ep, &xdata);
@ -246,8 +246,8 @@ static int apiserver_job_update_fun(int type, int situation, void* data,
&& (c->apiservers[i].ep != NULL)) {
int rc;
xce_notify_data_t xdata
= { .event = NotifyData_data_schedUpdateJob,
.data = { .sched_update_job = &(job->job) } };
= { .event = NotifyData_data_updateJob,
.data = { .update_job = &(job->job) } };
rc = notify(c, c->apiservers[i].ep, &xdata);
if (rc < 0) {
@ -327,7 +327,7 @@ static int apiserver_push_workerlist(cluster_t* c, endpoint_t* ep, xlist_t* l)
memset(&data, 0x0, sizeof(data));
data.table = Data_data_schedworkers;
data.table = Data_data_workers;
data.data.workers = &workers;
rc = xce_push_data_req(ep, c->myhost, &data, check_controller, c, 100);
@ -493,7 +493,7 @@ static int apiserver_queue_hook_fun(int type, int situation, int detail,
= { .event = NotifyData_data_schedUpdateQueue,
.data = { .sched_update_queue = &(q->queue) } };
rc = notify(c, c->sched.ep, &xdata);
rc = notify(c, c->apiservers[i].ep, &xdata);
if (rc < 0) {
WARN(
"%s notify queue change to api server %s failed, rc %d",

View file

@ -3,8 +3,8 @@
#define _TYPEMAP_H_ 1
#include <stdint.h>
#include "xce/types.h"
#include "clusterconfig.h"
#include "xce/types.h"
typedef struct {
char* resname;
@ -148,6 +148,7 @@ typedef struct {
xce_task_finish_t* taskfinish;
uint64_t pdone_job;
xce_job_rusages_t* sched_job_rusages;
xce_job_t* update_job;
} data;
} xce_notify_data_t;

View file

@ -457,6 +457,7 @@ struct NotifyData $C.mapname("xce_notify_data_t"){
taskFinish @15: TaskFinish $C.mapname("taskfinish");
postDoneJob @16: UInt64 $C.mapname("pdone_job");
schedJobRusages @17: SchedJobRusages $C.mapname("sched_job_rusages");
updateJob @18: Job $C.mapname("update_job");
}
}