improve api server support

This commit is contained in:
Rongsong Shen 2026-01-23 17:33:10 +08:00
parent 3b728e5135
commit 9e07a1b227
7 changed files with 141 additions and 44 deletions

View file

@ -147,9 +147,8 @@ static int apiserver_job_start_fun(int type, int situation, void* data,
if ((c->apiservers[i].name != NULL)
&& (c->apiservers[i].ep != NULL)) {
int rc;
xce_notify_data_t xdata
= { .event = NotifyData_data_jobPidInfo,
.data = { .pidinfo = info } };
xce_notify_data_t xdata = { .event = NotifyData_data_jobPidInfo,
.data = { .pidinfo = info } };
/* FIXME: add job pid to API server? */
rc = notify(c, c->apiservers[i].ep, &xdata);
@ -461,7 +460,7 @@ static int apiserver_resource_hook_fun(int type, int situation, int detail,
= { .event = NotifyData_data_schedUpdateResvals,
.data = { .sched_update_resvals = resvals } };
rc = notify(c, c->sched.ep, &xdata);
rc = notify(c, c->apiservers[i].ep, &xdata);
if (rc < 0) {
WARN("%s notify api server %s resource update fail, rc %d",
__func__, c->apiservers[i].name, rc);
@ -509,27 +508,33 @@ static int apiserver_queue_hook_fun(int type, int situation, int detail,
return 0;
}
int apiserver_init(cluster_t* c)
{
int i;
for(i = 0; i < N_APISERVER_MAX; i ++) {
c->apiservers[i].name = NULL;
c->apiservers[i].ep = NULL;
}
xce_add_hook(&(c->hooksys), XCE_CONTROLLER_HOOK_JOB,
(hook_fn_t)apiserver_job_hook_fun, NULL);
xce_add_hook(&(c->hooksys), XCE_CONTROLLER_HOOK_WORKER,
(hook_fn_t)apiserver_worker_hook_fun, NULL);
xce_add_hook(&(c->hooksys), XCE_CONTROLLER_HOOK_RESOURCE,
(hook_fn_t)apiserver_resource_hook_fun, NULL);
xce_add_hook(&(c->hooksys), XCE_CONTROLLER_HOOK_QUEUE,
(hook_fn_t)apiserver_queue_hook_fun, NULL);
return 0;
}
int on_apiserver_join(cluster_t* c, endpoint_t* ep)
{
/* FIXME: use lock to protect this later */
static int hook_installed = 0;
xce_apiserver_push_configs(c, ep);
xce_apiserver_push_workers(c, ep);
xce_apiserver_push_jobs(c, ep);
if (!hook_installed) {
hook_installed = 1;
xce_add_hook(&(c->hooksys), XCE_CONTROLLER_HOOK_JOB,
(hook_fn_t)apiserver_job_hook_fun, NULL);
xce_add_hook(&(c->hooksys), XCE_CONTROLLER_HOOK_WORKER,
(hook_fn_t)apiserver_worker_hook_fun, NULL);
xce_add_hook(&(c->hooksys), XCE_CONTROLLER_HOOK_RESOURCE,
(hook_fn_t)apiserver_resource_hook_fun, NULL);
xce_add_hook(&(c->hooksys), XCE_CONTROLLER_HOOK_QUEUE,
(hook_fn_t)apiserver_queue_hook_fun, NULL);
}
return 0;
}