122 lines
3.9 KiB
TypeScript
122 lines
3.9 KiB
TypeScript
import type { ProvisioningAction } from './provisioning.js';
|
|
import type { LaunchRecipeSummary } from './deployment-plan.js';
|
|
|
|
export const provisioningPhases = ['requested', 'eligibility', 'startup-queue', 'prepare', 'create-deployment',
|
|
'container-action', 'remove-container', 'delete-deployment', 'cleanup', 'verify-container', 'verify-game',
|
|
'verify-map', 'verify-plutonium', 'verify-stopped'] as const;
|
|
export type ProvisioningPhase = typeof provisioningPhases[number];
|
|
export type EvidenceResult = 'pass' | 'waiting' | 'fail' | 'unknown';
|
|
export type EvidenceSource = 'komodo' | 'rcon' | 'telemetry' | 'combined' | 'manifest' | null;
|
|
|
|
export interface ProvisioningCheck {
|
|
key: 'container' | 'game' | 'map' | 'plutonium-release' | 'plutonium-version' | 'occupancy' | 'stopped';
|
|
label: string;
|
|
result: EvidenceResult;
|
|
source: EvidenceSource;
|
|
checkedAt: string;
|
|
receivedAt: string | null;
|
|
expected: string | number | null;
|
|
actual: string | number | null;
|
|
message: string | null;
|
|
}
|
|
export interface ProvisioningBlocker {
|
|
code: string;
|
|
message: string;
|
|
automatic: boolean;
|
|
href?: string | null;
|
|
label?: string | null;
|
|
}
|
|
export interface ProvisioningCheckpoint {
|
|
key: string;
|
|
label: string;
|
|
at: string;
|
|
phase: ProvisioningPhase | null;
|
|
}
|
|
export interface RecoveryObservation {
|
|
state: 'held' | 'released' | 'transferred' | 'unknown';
|
|
at: string;
|
|
message: string;
|
|
operationId?: string | null;
|
|
}
|
|
export interface ProvisioningProgress {
|
|
version: 1;
|
|
phase: ProvisioningPhase | null;
|
|
phaseStartedAt: string | null;
|
|
observedAt: string | null;
|
|
blocker: ProvisioningBlocker | null;
|
|
checks: ProvisioningCheck[];
|
|
checkpoints: ProvisioningCheckpoint[];
|
|
command: { state: 'attempted' | 'accepted' | 'rejected' | 'uncertain'; at: string; message: string } | null;
|
|
recovery: RecoveryObservation | null;
|
|
recipeStatus: 'queued' | 'attempted' | null;
|
|
}
|
|
export interface ProvisioningEvent {
|
|
id: number;
|
|
created_at: string;
|
|
message: string;
|
|
kind?: string | null;
|
|
phase_key?: string | null;
|
|
details_json?: string | null;
|
|
}
|
|
export interface ProvisioningDeployment {
|
|
id: string;
|
|
server: string;
|
|
server_deleted_at: string | null;
|
|
action: ProvisioningAction;
|
|
state: string;
|
|
stage: string;
|
|
started_at: string;
|
|
finished_at: string | null;
|
|
submitted_at?: string | null;
|
|
checked_at?: string | null;
|
|
players?: number | null;
|
|
triggered_by: string;
|
|
error: string | null;
|
|
warnings: string;
|
|
server_exists: number;
|
|
expected_map?: string | null;
|
|
}
|
|
export interface ProvisioningSource {
|
|
kind: 'campaign' | 'beta' | 'maintenance' | 'watchdog';
|
|
source_id: string;
|
|
server?: string;
|
|
label: string;
|
|
href: string | null;
|
|
}
|
|
export interface ProvisioningCapacity {
|
|
evaluatedAt: string;
|
|
pools: {
|
|
kind: 'startup' | 'restart';
|
|
limit: number;
|
|
used: number;
|
|
holders: { id: string | null; server: string }[];
|
|
requestOrder: number | null;
|
|
ownsSlot: boolean;
|
|
}[];
|
|
}
|
|
export interface ProvisioningDetail {
|
|
deployment: ProvisioningDeployment;
|
|
events: ProvisioningEvent[];
|
|
activity: { total: number; latestId: number | null; failureExcerpt: ProvisioningEvent | null };
|
|
sources: ProvisioningSource[];
|
|
recipe: LaunchRecipeSummary | null;
|
|
blueprintName: string | null;
|
|
canResumeVerification: boolean;
|
|
canResumeCleanup: boolean;
|
|
canResumeRebuild: boolean;
|
|
canCancelRemoval: boolean;
|
|
collection: { id: string; name: string } | null;
|
|
progress: ProvisioningProgress | null;
|
|
capacity: ProvisioningCapacity;
|
|
warningMessages: string[];
|
|
generatedAt: string;
|
|
}
|
|
export interface ProvisioningEventPage {
|
|
events: ProvisioningEvent[];
|
|
total: number;
|
|
totalEvents: number;
|
|
latestId: number | null;
|
|
watermark: number;
|
|
nextCursor: number | null;
|
|
}
|