5. Examples¶
These examples shows how to use the Fugaku WebAPI with a valid client.
5.1. Get status of all machines.¶
response = client.get_machine_status()
print(f"status_code:{response.status_code}")
print(f"json:{json.dumps(response.json())}")
5.2. Get specified machine status.¶
Parameter’s “machine” is specify the machine name obtained by getting the status of all machines.Normally, specify “computer”.
machine_name = "computer"
response = client.get_specific_machine_status(machine_name)
print(f"status_code:{response.status_code}")
print(f"json:{json.dumps(response.json())}")
5.3. Download files.¶
If you want to download large files, use streams.
client._request_config["stream"] = True
response = client.download_filedata(machine_name, full_path)
print(f"status_code:{response.status_code}")
if response.status_code == 200:
local_file = "_download_filedata.out"
with open(local_file, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
5.4. Download file list.¶
response = client.download_fileList(machine_name, home_dir)
print(f"status_code:{response.status_code}")
file_list = response.json()['output'].strip().replace("\\n", "\n")
print(f"file_list:{file_list}")
5.5. Upload file.¶
This method does not support updating existing files.If you update existing file, use modify_file.
response = client.upload_file(machine_name, f"{home_dir}/{local_file}", local_file)
print(f"status_code:{response.status_code}")
5.6. Modify file.¶
response = client.modify_file(machine_name, f"{home_dir}/{local_file}", local_file)
print(f"status_code:{response.status_code}")
5.7. Get list of running jobs.¶
If you want subjobs, specifyed parameter’s jobid.
response = client.get_job_status(machine_name, limit=-1)
print(f"status_code:{response.status_code} json:{response.json()}")
response = client.get_job_status(machine_name, jobid=jobid)
print(f"status_code:{response.status_code} json:{response.json()}")
5.8. Get detailed job information.¶
response = client.get_job_detail(machine_name, jobid=jobid)
print(f"status_code:{response.status_code} json:{response.json()}")
5.9. Get list of completed jobs.¶
If you want subjobs, specifyed parameter’s jobid.
response = client.get_job_status_saact(machine_name)
print(f"status_code:{response.status_code} json:{response.json()}")
response = client.get_job_status_saact(machine_name, jobid=jobid)
print(f"status_code:{response.status_code} json:{response.json()}")
5.10. Generate job execution script.¶
script = {"APP_DATA":
{"ProgramGroupList":
{"ProgramGroup": [
{"ProgramList": {
"Program": [
{"Type": "mpi",
"FileName": "job-script/calc.sh",
"ThreadMode": "parallel",
"Threads": "1"
}
]
},
"GroupType": "serialgroup"
}
]
}
},
"COMMON_DATA": {
"NODE": "1",
"QUEUE": "1rack-A01",
"QOPT": " -L \"rscunit=rscunit_ft01\" "
}
}
response = client.make_Jobscript(
machine_name, f"{home_dir}/job-script/st-job.sh", script)
print(f"status_code:{response.status_code} json:{response.json()}")
5.11. Submit a job.¶
response = client.submit_job(
machine_name, f"{home_dir}/job-script/st-job.sh")
jobid = None
if response.status_code == 200:
jobid = response.json()["output"]
result = re.match("^\\[INFO\\] PJM \\d+ pjsub Job (\\d+) submitted.", jobid.strip())
if result :
jobid = result.group(1)
5.12. Cancel a job.¶
response = client.cancel_job(machine_name, jobid=jobid)
print(f"status_code:{response.status_code} json:{response.json()}")
5.13. Execute a command.¶
response = client.exec_command(machine_name, "id")
output = response.json()['output'].strip().replace("\\n", "\n")
print(f"output:{output}")