From 3b728e5135be0700b14236075b72fd46dd23cda3 Mon Sep 17 00:00:00 2001 From: Rongsong Shen Date: Fri, 23 Jan 2026 16:05:23 +0800 Subject: [PATCH] improve support of api server in controller --- src/controller/apiserver.c | 28 ++++++++++++++-------------- src/include/typemap.h | 3 ++- src/schema/controller.capnp | 1 + 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/controller/apiserver.c b/src/controller/apiserver.c index e62207a..9921edc 100644 --- a/src/controller/apiserver.c +++ b/src/controller/apiserver.c @@ -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", diff --git a/src/include/typemap.h b/src/include/typemap.h index b26d61e..4bbdc8c 100644 --- a/src/include/typemap.h +++ b/src/include/typemap.h @@ -3,8 +3,8 @@ #define _TYPEMAP_H_ 1 #include -#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; diff --git a/src/schema/controller.capnp b/src/schema/controller.capnp index 622d805..ed0883e 100644 --- a/src/schema/controller.capnp +++ b/src/schema/controller.capnp @@ -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"); } }