88 lines
2.1 KiB
TypeScript
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,
|
|
};
|
|
}
|
|
}
|