in src/job-exporter/src/docker_inspect.py [0:0]
def parse_docker_inspect(inspect_output, gpu_vender):
obj = json.loads(inspect_output)
m = {}
obj_labels = utils.walk_json_field_safe(obj, 0, "Config", "Labels")
if obj_labels is not None:
for k, v in obj_labels.items():
if k in keys:
m[k] = v
obj_env = utils.walk_json_field_safe(obj, 0, "Config", "Env")
if obj_env:
for env in obj_env:
k, v = env.split("=", 1)
if k in keys:
m[k] = v
# for kube-launcher tasks
if k == "FC_TASK_INDEX":
m["PAI_TASK_INDEX"] = v
else:
if k == "NVIDIA_VISIBLE_DEVICES" and gpu_vender == GpuVendor.NVIDIA and v \
and v != "all" and v != "void" and v != "none":
m["GPU_ID"] = v
if k == "PAI_AMD_VISIBLE_DEVICES" and gpu_vender == GpuVendor.AMD and v:
m["GPU_ID"] = v
if k == "FC_FRAMEWORK_ATTEMPT_INSTANCE_UID" or k == "APP_ID":
m["JOB_INSTANCE_ID"] = v
pid = utils.walk_json_field_safe(obj, 0, "State", "Pid")
return InspectResult(
m.get("PAI_USER_NAME") or m.get("DLWS_USER_NAME"),
m.get("PAI_JOB_NAME") or m.get("DLWS_JOB_ID"),
m.get("PAI_CURRENT_TASK_ROLE_NAME"),
m.get("PAI_TASK_INDEX"),
m.get("GPU_ID"),
m.get("JOB_INSTANCE_ID"),
m.get("PAI_VIRTUAL_CLUSTER"),
pid)