def parse_docker_inspect()

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)