Files
cloudly/ts/manager.baseos/classes.baseosimagebuild.ts
2026-05-07 20:33:14 +00:00

88 lines
2.1 KiB
TypeScript

import * as plugins from '../plugins.js';
export type TBaseOsImageArchitecture = 'amd64' | 'arm64' | 'rpi';
export type TBaseOsImageKind = 'ubuntu-iso' | 'balena-raw';
export type TBaseOsImageSourcePreset =
| 'balena-generic-amd64'
| 'balena-generic-aarch64'
| 'balena-raspberrypi4-64';
export type TBaseOsImageBuildStatus = 'queued' | 'building' | 'ready' | 'failed' | 'cancelled';
export interface IBaseOsImageArtifact {
bucketName: string;
key: string;
filename: string;
contentType: string;
size: number;
sha256: string;
createdAt: number;
}
export interface IBaseOsImageBuildPublic {
id: string;
data: {
status: TBaseOsImageBuildStatus;
architecture: TBaseOsImageArchitecture;
imageKind?: TBaseOsImageKind;
cloudlyUrl: string;
sourceImageUrl?: string;
sourceImagePreset?: TBaseOsImageSourcePreset;
balenaOsVersion?: 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;
};
}
@plugins.smartdata.managed()
export class BaseOsImageBuild extends plugins.smartdata.SmartDataDbDoc<
BaseOsImageBuild,
IBaseOsImageBuildPublic
> {
constructor(optionsArg?: IBaseOsImageBuildPublic & {
provisioningTokenHash?: string;
provisioningTokenConsumedAt?: number;
downloadTokenHash?: string;
downloadTokenExpiresAt?: number;
}) {
super();
if (optionsArg) {
Object.assign(this, optionsArg);
}
}
@plugins.smartdata.unI()
public id!: string;
@plugins.smartdata.svDb()
public provisioningTokenHash!: string;
@plugins.smartdata.svDb()
public provisioningTokenConsumedAt?: number;
@plugins.smartdata.svDb()
public downloadTokenHash?: string;
@plugins.smartdata.svDb()
public downloadTokenExpiresAt?: number;
@plugins.smartdata.svDb()
public data!: IBaseOsImageBuildPublic['data'];
public toPublicBuild(): IBaseOsImageBuildPublic {
return {
id: this.id,
data: this.data,
};
}
}