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
4 changes: 3 additions & 1 deletion nebius/compute/v1/image.proto
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ option java_outer_classname = "ImageProto";
option java_package = "ai.nebius.pub.compute.v1";

message Image {
common.v1.ResourceMetadata metadata = 1;
common.v1.ResourceMetadata metadata = 1 [(nid) = {
parent_resource: ["project"]
}];

ImageSpec spec = 2;

Expand Down
34 changes: 27 additions & 7 deletions nebius/compute/v1/image_service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,14 @@ service ImageService {
rpc Delete(DeleteImageRequest) 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"]
}
};
}

// Lists all public images available in a specific region. Regions doc https://docs.nebius.com/overview/regions
// Public images can contain specific labels in metadata like:
Expand All @@ -51,17 +58,24 @@ service ImageService {
}

message GetImageRequest {
string id = 1;
string id = 1 [(nid) = {
resource: ["computeimage"]
}];
}

message GetImageLatestByFamilyRequest {
string image_family = 1;

string parent_id = 2; // default 'project-{region}public-images'
// default 'project-{region}public-images'
string parent_id = 2 [(nid) = {
resource: ["project"]
}];
}

message ListImagesRequest {
string parent_id = 1;
string parent_id = 1 [(nid) = {
resource: ["project"]
}];

int64 page_size = 2;

Expand All @@ -77,19 +91,25 @@ message ListImagesRequest {
}

message CreateImageRequest {
common.v1.ResourceMetadata metadata = 1;
common.v1.ResourceMetadata metadata = 1 [(nid) = {
parent_resource: ["project"]
}];

ImageSpec spec = 2;
}

message UpdateImageRequest {
common.v1.ResourceMetadata metadata = 1;
common.v1.ResourceMetadata metadata = 1 [(nid) = {
parent_resource: ["project"]
}];

ImageSpec spec = 2;
}

message DeleteImageRequest {
string id = 1;
string id = 1 [(nid) = {
resource: ["computeimage"]
}];
}

message ListImagesResponse {
Expand Down
6 changes: 4 additions & 2 deletions nebius/compute/v1/instance.proto
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,11 @@ message InstanceSpec {
// nvlinstancegroup
InstanceRecoveryPolicy recovery_policy = 15 [(field_behavior) = IMMUTABLE];

// Include these parameters to create a Preemptible VM and omit them to create a Regular VM
// Set this field to create a preemptible VM, or omit it to create a regular VM.
// For details, see https://docs.nebius.com/compute/virtual-machines/preemptible
PreemptibleSpec preemptible = 19 [(field_behavior) = IMMUTABLE];
// A preemptible VM cannot be converted to a regular VM or vice versa. Once set, this field cannot be removed; if the
// VM was created without it, the field cannot be added later.
PreemptibleSpec preemptible = 19;

// Instance's hostname. Used to generate default DNS record in format `<hostname>.<network_id>.compute.internal.`
// or `<instance_id>.<network_id>.compute.internal.` if hostname is not specified.
Expand Down
41 changes: 8 additions & 33 deletions nebius/mk8s/v1/node_group.proto
Original file line number Diff line number Diff line change
Expand Up @@ -111,30 +111,9 @@ message NodeTemplate {
GpuSettings gpu_settings = 13;

// OS version that will be used to create the boot disk of Compute Instances in the NodeGroup.
// Supported platform / Kubernetes version / OS / driver presets combinations
// * `gpu-l40s-a`, `gpu-l40s-d`, `gpu-h100-sxm`, `gpu-h200-sxm`, `cpu-e1`, `cpu-e2`, `cpu-d3`:
// * `drivers_preset`: `""`
// * `version`: 1.30 → `"ubuntu22.04"`
// * `version`: 1.31 → `"ubuntu22.04"` (default), `"ubuntu24.04"`
// * `gpu-l40s-a`, `gpu-l40s-d`, `gpu-h100-sxm`, `gpu-h200-sxm`:
// * `drivers_preset`: `"cuda12"` (CUDA 12.4)
// * `version`: 1.30, 1.31 → `"ubuntu22.04"`
// * `drivers_preset`: `"cuda12.4"`
// * `version`: 1.31 → `"ubuntu22.04"`
// * `drivers_preset`: `"cuda12.8"`
// * `version`: 1.31 → `"ubuntu24.04"`
// * `gpu-b200-sxm`:
// * `drivers_preset`: `""`
// * `version`: 1.30, 1.31 → `"ubuntu24.04"`
// * `drivers_preset`: `"cuda12"` (CUDA 12.8)
// * `version`: 1.30, 1.31 → `"ubuntu24.04"`
// * `drivers_preset`: `"cuda12.8"`
// * `version`: 1.31 → `"ubuntu24.04"`
// * `gpu-b200-sxm-a`:
// * `drivers_preset`: `""`
// * `version`: 1.31 → `"ubuntu24.04"`
// * `drivers_preset`: `"cuda12.8"`
// * `version`: 1.31 → `"ubuntu24.04"`
// Supported OS depend on the platform and Kubernetes version.
// To get the up-to-date list of supported OS for a given Kubernetes version and platform, run:
// nebius mk8s node-group get-compatibility-matrix --cluster-kubernetes-version VERSION --platform PLATFORM
string os = 16;

// Nebius Compute GPUCluster ID that will be attached to node.
Expand Down Expand Up @@ -226,15 +205,11 @@ message NodeMetadataTemplate {
// GPU-related settings.
message GpuSettings {
// Identifier of the predefined set of drivers included in the ComputeImage deployed on ComputeInstances that are part of the NodeGroup.
// Supported presets for different platform / Kubernetes version combinations:
// * `gpu-l40s-a`, `gpu-l40s-d`, `gpu-h100-sxm`, `gpu-h200-sxm`:
// * `version`: 1.30 → `"cuda12"` (CUDA 12.4)
// * `version`: 1.31 → `"cuda12"` (CUDA 12.4), `"cuda12.4"`, `"cuda12.8"`
// * `gpu-b200-sxm`:
// * `version`: 1.31 → `"cuda12"` (CUDA 12.8), `"cuda12.8"`
// * `gpu-b200-sxm-a`:
// * `version`: 1.31 → `"cuda12.8"`
string drivers_preset = 1 [(buf.validate.field).required = true];
// Supported presets depend on the platform and Kubernetes version.
// To get the up-to-date list of supported presets for a given Kubernetes version and platform, run:
// nebius mk8s node-group get-compatibility-matrix --cluster-kubernetes-version VERSION --platform PLATFORM
// Leave empty for GPU nodes that do not have preinstalled drivers, including DRA-enabled node groups.
string drivers_preset = 1;
}

message GpuClusterSpec {
Expand Down