-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathentry_central.py
41 lines (31 loc) · 1.19 KB
/
entry_central.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import subprocess
import os
from nvflare.fuel.flare_api.flare_api import new_secure_session, Session
from nvflare.apis.job_def import RunStatus, JobMetaKey
# Path Constants
STARTUP_SCRIPT_DIRECTORY = "/workspace/runKit/server/startup"
STARTUP_SCRIPT_PATH = "/workspace/runKit/server/startup/start.sh"
ADMIN_DIRECTORY_PATH = "/workspace/runKit/admin"
JOB_DIRECTORY_PATH = "/workspace/runKit/job/"
ADMIN_USER_EMAIL = "admin@admin.com"
def start_server():
subprocess.run(["/bin/bash", STARTUP_SCRIPT_PATH], cwd=STARTUP_SCRIPT_DIRECTORY)
# Start the server
start_server()
# Start a session and submit a job
session = new_secure_session(
ADMIN_USER_EMAIL,
ADMIN_DIRECTORY_PATH
)
job_id = session.submit_job(JOB_DIRECTORY_PATH)
def job_status_callback(session: Session, job_id: str, job_meta, *cb_args, **cb_kwargs) -> bool:
job_status = job_meta[JobMetaKey.STATUS]
print(f"Job status: {job_status}")
if 'FINISHED' in job_status:
print(f"Job {job_id} finished, shutting down system")
session.shutdown("all")
return False
else:
return True
# Monitor the job with the callback
session.monitor_job(job_id, timeout=3600, poll_interval=10, cb=job_status_callback)