syntax = "proto3"; package api.v1; import "google/api/annotations.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; option go_package = "vgpu/api/v1;v1"; service Container { rpc GetAllContainers (GetAllContainersReq) returns (ContainersReply) { option (google.api.http) = { post: "/v1/containers" body: "*" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "List workloads"; }; } rpc GetContainer (GetContainerReq) returns (ContainerReply) { option (google.api.http) = { get: "/v1/container" }; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { summary: "Get workload details"; }; } } message GetAllContainersReq { message Filters { string name = 1; string node_name = 2; // Empty matches all. "abnormal" matches error, not_ready, and failed; // other values match an exact ContainerReply.status. string status = 3; string device_id = 4; string node_uid = 5; string resource_group = 6; string priority = 7; } message PageSize { int32 pageSize = 1; int32 pageNo = 2; string sort = 3; string sortField = 4; } Filters filters = 1; PageSize pageSize = 2; } message ContainerReply { string name = 1; string status = 2; string app_name = 3; string node_name = 4; int32 allocated_devices = 5; int32 allocated_cores = 6; int32 allocated_mem = 7; string type = 8; string create_time = 9; string start_time = 10; string end_time = 11; string pod_uid = 12; string node_uid = 13; string resource_pool = 14; string flavor = 15; string priority = 16; string namespace = 17; repeated string device_ids = 18; repeated string images = 19; optional bool allocated_cores_known = 20; ContainerStatusDetail status_detail = 21; } // The current regular container and its Pod context, without inferring health // from GPU telemetry. Optional values distinguish false/zero from unavailable. message ContainerStatusDetail { string container_state = 1; string reason = 2; string message = 3; optional bool ready = 4; int32 restart_count = 5; optional int32 exit_code = 6; string pod_phase = 7; string pod_ready = 8; string pod_ready_reason = 9; string pod_ready_message = 10; bool restart_pending = 11; string last_termination_reason = 12; optional int32 last_exit_code = 13; string last_termination_message = 14; string pod_reason = 15; string pod_message = 16; } message ContainersReply { repeated ContainerReply items = 1; } message GetContainerReq { string name = 1; string pod_uid = 2; string device_id = 3; }