Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions nebius/compute/v1/gpu_cluster.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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;
Expand All @@ -44,7 +49,9 @@ message GpuClusterStatusInfinibandTopologyPath {
}

message GpuClusterStatusInfinibandTopologyPathInstance {
string instance_id = 1;
string instance_id = 1 [(nid) = {
resource: ["computeinstance"]
}];

repeated string path = 2;
}
29 changes: 23 additions & 6 deletions nebius/compute/v1/gpu_cluster_service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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 {
Expand Down
4 changes: 3 additions & 1 deletion nebius/compute/v1/instance.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
17 changes: 17 additions & 0 deletions nebius/tunnel/v1/tunnel.proto
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down