#if !defined(_CLUSTER_H_) #define _CLUSTER_H_ 1 #include "config.h" #include #include #include "hook.h" #include "htab.h" #include "kvmgr.h" #include "myconf.h" #include "mylock.h" #include "netio.h" #include "objmgr.h" #include "vtaskmgr.h" #include "worker.h" #include "xce/cluster_def.h" #include "xce/types.h" #include "xlist.h" #include "zarray.h" typedef int (*collect_check_fn_t)(void*); extern int check_controller(void*); extern int cluster_init(cluster_t*); extern int cluster_start(cluster_t*); extern int cluster_run(cluster_t*); extern void cluster_fini(cluster_t*); extern int register_types(cluster_t*); extern int worker_ctrl(cluster_t*, xce_hostctrl_t*); extern xce_resource_t* get_resource(cluster_t*, char*); extern int add_to_xlist(xlist_t*, void*); extern int add_worker_to_xlist(xlist_t*, void*); extern int add_queue_to_xlist(xlist_t*, void*); extern int add_job_to_xlist(xlist_t*, void*); extern void resource_killer(void*); extern int add_resource(void*, char*, char*, int, xce_order_t, int, int); extern int update_resvals(cluster_t*, worker_t*, int, xce_resval_t*); extern int load_jobs(void*); extern int update_job(void*, uint64_t, xce_kv_list_t*); extern int do_job_started(void*, uint64_t, int, int*, int, int*); extern queue_t* create_queue(cluster_t*, xce_queue_t*); extern int build_queues(void*); extern void queue_fini(queue_t*); extern int queue_ctrl(cluster_t*, xce_queuectrl_t*); extern queue_t* qmgr_lockq(qmgr_t*, char*, int); extern int xce_update_data(endpoint_t*, cluster_t*, int, int, int*, int, xce_kv_t*); extern int on_scheduler_join(cluster_t*); extern int on_apiserver_join(cluster_t*, endpoint_t*); extern int xce_push_reslist(endpoint_t*, cluster_t*, int, xce_resource_t**); extern int xce_push_confvars(endpoint_t*, cluster_t*, int, xce_config_t**); extern int xce_push_workerlist(endpoint_t*, cluster_t*, int, xce_worker_t**); extern int xce_push_joblist(endpoint_t*, cluster_t*, int, xce_job_t**); extern int xce_push_queuelist(endpoint_t*, cluster_t*, int, xce_queue_t**); extern int xcesched_push_job(cluster_t*, uint64_t); extern int on_worker_join(void*, endpoint_t*); extern int get_resval(cluster_t*, char*, char*, xce_val_t*); extern job_t* jobmgr_lockjob(jobmgr_t*, uint64_t, int); extern int32_t jobmgr_add_job(jobmgr_t*, job_t*); extern void jobmgr_del_job(jobmgr_t*, job_t*); extern int handle_push(struct capn*, cluster_t*, endpoint_t*, struct Request*); extern int do_get_op(cluster_t*, endpoint_t*, xce_request_t*); extern int do_update_op(cluster_t*, endpoint_t*, xce_request_t*); extern int handle_join(cluster_t*, endpoint_t*, xce_request_t*); extern int handle_reply(endpoint_t*, struct Request*, cluster_t*); extern int handle_jobdispatch(cluster_t*, endpoint_t*, xce_request_t*); extern int handle_jobsubmit(cluster_t*, endpoint_t*, xce_request_t*); extern int handle_worker_leave(cluster_t*, int); extern int mark_worker_unavail(cluster_t*, worker_t*); extern int mark_worker_back(cluster_t*, worker_t*); extern int handle_scheduler_leave(cluster_t*); extern int handle_clusterconf(cluster_t*, endpoint_t*, xce_request_t*); extern void collect_confvars(cluster_t*, collect_check_fn_t, int*, xce_config_t***); extern void collect_queues(cluster_t*, collect_check_fn_t, int*, xce_queue_t***); extern void collect_resources(cluster_t*, collect_check_fn_t, int*, xce_resource_t***); extern void collect_jobs(cluster_t*, collect_check_fn_t, int*, xce_job_t***); extern void collect_workers(cluster_t*, collect_check_fn_t, int*, xce_worker_t***); extern void deref_objs(int, void**); extern int get_queue_exec(cluster_t*, char*, char**, char**); extern int jobmgr_iter(jobmgr_t*, xlist_t*, void*); extern int workermgr_iter(workermgr_t*, xlist_t*, void*); extern int on_job_start(cluster_t*, job_pidinfo_t*); extern int on_job_finish(cluster_t*, xce_jobfinish_t*); extern int on_job_fail(cluster_t*, job_failinfo_t*); extern int on_job_stop(cluster_t*, uint64_t); extern int on_job_resume(cluster_t*, uint64_t); extern int on_job_postdone(cluster_t*, endpoint_t*, uint64_t); extern int on_job_ckpt(cluster_t*, endpoint_t*, xce_ckptinfo_t*); extern int notify(cluster_t*, endpoint_t*, xce_notify_data_t*); extern int check_worker_(xce_worker_t*); extern int update_resval_list(cluster_t*, worker_t*, xce_resval_list_t*); extern int do_jobcontrol_op(cluster_t*, endpoint_t*, xce_request_t*); extern int job_ctrl(cluster_t*, xce_jobctrl_t*); extern int update_job_rusages(cluster_t*, endpoint_t*, xce_request_t*); extern int update_host_runusage(xce_job_runusage_t**, char*, int, xce_rusage_t**); extern int update_pids(job_pidinfo_t**, int, int*); extern int update_pgids(job_pidinfo_t**, int, int*); extern int get_ep_role(endpoint_t*); extern worker_t* get_ep_worker(cluster_t*, endpoint_t*); extern int check_worker_(xce_worker_t*); extern int update_resval_list(cluster_t*, worker_t*, xce_resval_list_t*); extern int do_jobcontrol_op(cluster_t*, endpoint_t*, xce_request_t*); extern int job_ctrl(cluster_t*, xce_jobctrl_t*); extern int do_queuecontrol_op(cluster_t*, endpoint_t*, xce_request_t*); extern int do_runtasks(cluster_t*, endpoint_t*, xce_request_t*); extern int on_task_start(cluster_t*, xce_task_pidinfo_t*); extern int on_task_fail(cluster_t*, xce_task_failinfo_t*); extern int on_task_finish(cluster_t*, xce_task_finish_t*); extern int xce_controller_res_init(cluster_t*); extern int map_resource_to_host(char*, cluster_t*); extern int release_resource_from_worker(char*, cluster_t*); extern int collect_resval_with_idx(zarray_t*, int*, xce_val_with_idx_t***); extern int do_set_preason(cluster_t*, endpoint_t*, xce_request_t*); extern int do_clr_preason(cluster_t*, endpoint_t*, xce_request_t*); extern int handle_apiserver_leave(cluster_t*, endpoint_t*); extern int add_apiserver(cluster_t*, char*, endpoint_t*); extern int apiserver_init(cluster_t*); #endif