Skip to content
Open
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
17 changes: 9 additions & 8 deletions go/types_cvms.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,14 +139,15 @@ type CvmGatewayInfo struct {

// NodeRef is a reference to a node.
type NodeRef struct {
ObjectType string `json:"object_type"`
ID *int `json:"id,omitempty"`
Name *string `json:"name,omitempty"`
Region *string `json:"region,omitempty"`
DeviceID *string `json:"device_id,omitempty"`
PPID *string `json:"ppid,omitempty"`
Status *string `json:"status,omitempty"`
Version *string `json:"version,omitempty"`
ObjectType string `json:"object_type"`
ID *int `json:"id,omitempty"`
Name *string `json:"name,omitempty"`
Region *string `json:"region,omitempty"`
DeviceID *string `json:"device_id,omitempty"`
DeviceIDs []DeviceIDEntry `json:"device_ids,omitempty"`
PPID *string `json:"ppid,omitempty"`
Status *string `json:"status,omitempty"`
Version *string `json:"version,omitempty"`
}

// UserRef is a reference to a user.
Expand Down
9 changes: 9 additions & 0 deletions go/types_nodes.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,20 @@ type TeepodCapacity struct {
SupportOnchainKMS *bool `json:"support_onchain_kms,omitempty"`
FMSPC *string `json:"fmspc,omitempty"`
DeviceID *string `json:"device_id,omitempty"`
DeviceIDs []DeviceIDEntry `json:"device_ids,omitempty"`
RegionIdentifier *string `json:"region_identifier,omitempty"`
DefaultKMS *string `json:"default_kms,omitempty"`
KMSList []string `json:"kms_list,omitempty"`
}

// DeviceIDEntry is one of a node's device_ids and the OS images it covers.
type DeviceIDEntry struct {
DeviceID string `json:"device_id"`
AlgorithmVersion string `json:"algorithm_version"`
OSImageIDs []int `json:"os_image_ids"`
Enabled bool `json:"enabled"`
}

// AvailableImage represents an available OS image on a node.
type AvailableImage struct {
Name string `json:"name"`
Expand Down
1 change: 1 addition & 0 deletions js/src/actions/get_available_nodes.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ const mockAvailableNodesData: AvailableNodes = {
support_onchain_kms: false,
fmspc: null,
device_id: null,
device_ids: [],
kms_list: [],
},
],
Expand Down
2 changes: 2 additions & 0 deletions js/src/actions/get_available_nodes.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { z } from "zod";
import { type Client } from "../client";
import { DeviceIdEntrySchema } from "../types/cvm_info_v20260121";
import { KmsInfoSchema } from "../types/kms_info";
import { defineSimpleAction } from "../utils/define-action";

Expand Down Expand Up @@ -87,6 +88,7 @@ export const TeepodCapacitySchema = z
support_onchain_kms: z.boolean().optional(),
fmspc: z.string().nullable().optional(),
device_id: z.string().nullable().optional(),
device_ids: z.array(DeviceIdEntrySchema).default([]),
region_identifier: z.string().nullable().optional(),
default_kms: z.string().nullable().optional(),
kms_list: z.array(z.string()).default([]),
Expand Down
9 changes: 9 additions & 0 deletions js/src/types/cvm_info_v20260121.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,21 @@ export const CvmLogUrlsV20260121Schema = z.object({
});
export type CvmLogUrlsV20260121 = z.infer<typeof CvmLogUrlsV20260121Schema>;

export const DeviceIdEntrySchema = z.object({
device_id: z.string(),
algorithm_version: z.string(),
enabled: z.boolean(),
});
export type DeviceIdEntry = z.infer<typeof DeviceIdEntrySchema>;

export const NodeRefSchema = z.object({
object_type: z.literal("node"),
id: z.number().int().nullable().optional(),
name: z.string().nullable().optional(),
region: z.string().nullable().optional(),
// Deprecated: resolved single device_id. Use device_ids for the full matrix.
device_id: z.string().nullable().optional(),
device_ids: z.array(DeviceIdEntrySchema).default([]),
ppid: z.string().nullable().optional(),
status: z.string().nullable().optional(),
version: z.string().nullable().optional(),
Expand Down
2 changes: 2 additions & 0 deletions python/src/phala_cloud/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
CvmCreateResourceGraphAny,
CvmCreateResourceGraphV20260121,
CvmCreateResourceGraphV20260522,
DeviceIdEntry,
GpuAvailability,
)
from .os_images import GetOsImagesRequest, GetOsImagesResponse, OSImagePublic
Expand All @@ -92,6 +93,7 @@
"AppCvmsBatchIsAllowedResponseV20260522",
"AvailableNodes",
"BillingPeriod",
"DeviceIdEntry",
"Certificate",
"CertificateIssuer",
"CertificateSubject",
Expand Down
2 changes: 2 additions & 0 deletions python/src/phala_cloud/models/cvms.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

from .base import AliasModel, CloudModel
from .kms import KmsInfo
from .nodes import DeviceIdEntry

BillingPeriod = Literal["skip", "hourly", "monthly"]
KmsType = Literal["phala", "ethereum", "base", "legacy"]
Expand Down Expand Up @@ -83,6 +84,7 @@ class NodeRef(CloudModel):
name: str | None = None
region: str | None = None
device_id: str | None = None
device_ids: list[DeviceIdEntry] = Field(default_factory=list)
ppid: str | None = None
status: str | None = None
version: str | None = None
Expand Down
8 changes: 8 additions & 0 deletions python/src/phala_cloud/models/nodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@ class AvailableOSImage(CloudModel):
os_image_hash: str | None = None


class DeviceIdEntry(CloudModel):
device_id: str
algorithm_version: str
os_image_ids: list[int] = Field(default_factory=list)
enabled: bool


class TeepodCapacity(CloudModel):
teepod_id: int
name: str
Expand All @@ -25,6 +32,7 @@ class TeepodCapacity(CloudModel):
support_onchain_kms: bool | None = None
fmspc: str | None = None
device_id: str | None = None
device_ids: list[DeviceIdEntry] = Field(default_factory=list)
region_identifier: str | None = None
default_kms: str | None = None
kms_list: list[str] = Field(default_factory=list)
Expand Down
Loading