From dbcb75c460791414b8fc74648584699d09402380 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Thu, 7 May 2026 17:44:31 +0000 Subject: [PATCH] feat: add baseos image build contracts --- ts/data/baseos.ts | 57 +++++++++++++++++++++++++++++++++++++++++++ ts/data/settings.ts | 4 +++ ts/requests/baseos.ts | 44 +++++++++++++++++++++++++++++++++ 3 files changed, 105 insertions(+) diff --git a/ts/data/baseos.ts b/ts/data/baseos.ts index 8cdc021..7ac5173 100644 --- a/ts/data/baseos.ts +++ b/ts/data/baseos.ts @@ -61,6 +61,63 @@ export interface IBaseOsNode { }; } +export type TBaseOsImageArchitecture = 'amd64' | 'arm64' | 'rpi'; + +export type TBaseOsImageBuildStatus = 'queued' | 'building' | 'ready' | 'failed' | 'cancelled'; + +export interface IBaseOsWifiConfig { + ssid: string; + password?: string; +} + +export interface IBaseOsImageArtifact { + bucketName: string; + key: string; + filename: string; + contentType: string; + size: number; + sha256: string; + createdAt: number; +} + +export interface IBaseOsImageBuild { + id: string; + data: { + status: TBaseOsImageBuildStatus; + architecture: TBaseOsImageArchitecture; + cloudlyUrl: string; + sourceImageUrl?: string; + ubuntuVersion?: string; + hostname?: string; + wifiSsid?: string; + sshPublicKey?: string; + artifact?: IBaseOsImageArtifact; + errorText?: string; + logs: string[]; + createdAt: number; + updatedAt: number; + startedAt?: number; + completedAt?: number; + expiresAt?: number; + }; +} + +export interface IBaseOsImageBuildRequest { + architecture: TBaseOsImageArchitecture; + cloudlyUrl?: string; + sourceImageUrl?: string; + ubuntuVersion?: string; + hostname?: string; + wifi?: IBaseOsWifiConfig; + sshPublicKey?: string; + artifactRetentionMs?: number; +} + +export interface IBaseOsImageDownloadUrl { + url: string; + expiresAt: number; +} + export interface IBaseOsRegisterResult { nodeId?: string; nodeToken?: string; diff --git a/ts/data/settings.ts b/ts/data/settings.ts index b69c353..cc7a2eb 100644 --- a/ts/data/settings.ts +++ b/ts/data/settings.ts @@ -11,6 +11,10 @@ export interface ICloudlySettings { // BaseOS enrollment baseosJoinToken?: string; + + // CoreBuild worker used for image generation + corebuildWorkerUrl?: string; + corebuildWorkerToken?: string; // AWS Credentials awsAccessKey?: string; diff --git a/ts/requests/baseos.ts b/ts/requests/baseos.ts index 2397c7c..630e857 100644 --- a/ts/requests/baseos.ts +++ b/ts/requests/baseos.ts @@ -1,5 +1,8 @@ import type { IBaseOsHeartbeatResult, + IBaseOsImageBuild, + IBaseOsImageBuildRequest, + IBaseOsImageDownloadUrl, IBaseOsNode, IBaseOsRegisterResult, IBaseOsRuntimeInfo, @@ -34,3 +37,44 @@ export interface IRequest_Any_Cloudly_GetBaseOsNodes { nodes: IBaseOsNode[]; }; } + +export interface IRequest_Any_Cloudly_CreateBaseOsImageBuild { + method: 'createBaseOsImageBuild'; + request: { + identity: IIdentity; + build: IBaseOsImageBuildRequest; + }; + response: { + build: IBaseOsImageBuild; + }; +} + +export interface IRequest_Any_Cloudly_GetBaseOsImageBuilds { + method: 'getBaseOsImageBuilds'; + request: { + identity: IIdentity; + }; + response: { + builds: IBaseOsImageBuild[]; + }; +} + +export interface IRequest_Any_Cloudly_GetBaseOsImageBuildById { + method: 'getBaseOsImageBuildById'; + request: { + identity: IIdentity; + buildId: string; + }; + response: { + build: IBaseOsImageBuild; + }; +} + +export interface IRequest_Any_Cloudly_CreateBaseOsImageDownloadUrl { + method: 'createBaseOsImageDownloadUrl'; + request: { + identity: IIdentity; + buildId: string; + }; + response: IBaseOsImageDownloadUrl; +}