diff --git a/nebius/compute/v1/gpu_cluster.proto b/nebius/compute/v1/gpu_cluster.proto index 3844048..696c013 100644 --- a/nebius/compute/v1/gpu_cluster.proto +++ b/nebius/compute/v1/gpu_cluster.proto @@ -12,7 +12,9 @@ option java_outer_classname = "GpuClusterProto"; option java_package = "ai.nebius.pub.compute.v1"; message GpuCluster { - common.v1.ResourceMetadata metadata = 1; + common.v1.ResourceMetadata metadata = 1 [(nid) = { + parent_resource: ["project"] + }]; GpuClusterSpec spec = 2; @@ -29,7 +31,10 @@ message GpuClusterSpec { } message GpuClusterStatus { - repeated string instances = 1; + // IDs of Compute instances that belong to this GPU cluster. + repeated string instances = 1 [(nid) = { + resource: ["computeinstance"] + }]; // Indicates whether there is an ongoing operation bool reconciling = 2; @@ -44,7 +49,9 @@ message GpuClusterStatusInfinibandTopologyPath { } message GpuClusterStatusInfinibandTopologyPathInstance { - string instance_id = 1; + string instance_id = 1 [(nid) = { + resource: ["computeinstance"] + }]; repeated string path = 2; } diff --git a/nebius/compute/v1/gpu_cluster_service.proto b/nebius/compute/v1/gpu_cluster_service.proto index 8269cb7..f663830 100644 --- a/nebius/compute/v1/gpu_cluster_service.proto +++ b/nebius/compute/v1/gpu_cluster_service.proto @@ -37,15 +37,26 @@ service GpuClusterService { rpc Delete(DeleteGpuClusterRequest) returns (common.v1.Operation); // Lists all operations that were performed within a specific parent resource. - rpc ListOperationsByParent(ListOperationsByParentRequest) returns (common.v1.ListOperationsResponse); + rpc ListOperationsByParent(ListOperationsByParentRequest) returns (common.v1.ListOperationsResponse) { + option (request_fields) = { + field_path: "parent_id" + nid: { + resource: ["project"] + } + }; + } } message GetGpuClusterRequest { - string id = 1; + string id = 1 [(nid) = { + resource: ["computegpucluster"] + }]; } message ListGpuClustersRequest { - string parent_id = 1; + string parent_id = 1 [(nid) = { + resource: ["project"] + }]; int64 page_size = 2; @@ -61,19 +72,25 @@ message ListGpuClustersRequest { } message CreateGpuClusterRequest { - common.v1.ResourceMetadata metadata = 1; + common.v1.ResourceMetadata metadata = 1 [(nid) = { + parent_resource: ["project"] + }]; GpuClusterSpec spec = 2; } message UpdateGpuClusterRequest { - common.v1.ResourceMetadata metadata = 1; + common.v1.ResourceMetadata metadata = 1 [(nid) = { + parent_resource: ["project"] + }]; GpuClusterSpec spec = 2; } message DeleteGpuClusterRequest { - string id = 1; + string id = 1 [(nid) = { + resource: ["computegpucluster"] + }]; } message ListGpuClustersResponse { diff --git a/nebius/compute/v1/instance.proto b/nebius/compute/v1/instance.proto index ed9449c..47ba507 100644 --- a/nebius/compute/v1/instance.proto +++ b/nebius/compute/v1/instance.proto @@ -145,7 +145,9 @@ message InstanceGpuClusterSpec { // set the ID of an existing GPU cluster. // You can only add the VM to the cluster when creating the VM. // For details, see https://docs.nebius.com/compute/clusters/gpu - string id = 1; + string id = 1 [(nid) = { + resource: ["computegpucluster"] + }]; } message AttachedDiskSpec { diff --git a/nebius/tunnel/v1/tunnel.proto b/nebius/tunnel/v1/tunnel.proto index 6e94f29..352ce9e 100644 --- a/nebius/tunnel/v1/tunnel.proto +++ b/nebius/tunnel/v1/tunnel.proto @@ -64,6 +64,23 @@ message TunnelStatus { // Services reachable through the tunnel. A service is listed while at least // one agent announces it, and follows the agents within about 30 seconds. repeated ServiceStatus services = 2; + + // Whether any agent is connected to the tunnel now. + ConnectionState connection_state = 3; +} + +// ConnectionState reports whether the tunnel has an agent behind it. Values are +// prefixed because a top-level enum puts them in the package scope. +enum ConnectionState { + // Proto3 zero value. A read of the tunnel never returns it; a mutation + // records it, because it reports the tunnel that was written. + CONNECTION_STATE_UNSPECIFIED = 0; + + // No agent is connected. Nothing the tunnel exposes is reachable. + CONNECTION_STATE_DISCONNECTED = 1; + + // At least one agent is connected. + CONNECTION_STATE_CONNECTED = 2; } // ServiceStatus is a service reachable through the tunnel.