Complete platform management workflows
This commit is contained in:
@@ -1,5 +1,15 @@
|
||||
import type { ServerLifecycleCommandRequest, ServerLifecycleCreateRequest, ServerInstanceResponse } from "../api/types";
|
||||
import type { ServerCreateFormState } from "../contracts/serverManagement";
|
||||
import type {
|
||||
ClientManagerBuildRequest,
|
||||
DependencyJobRequest,
|
||||
LogBackfillRequest,
|
||||
RunDistributionGenerateRequest,
|
||||
RunUpdateRequest,
|
||||
ServerInstanceUpdateRequest,
|
||||
ServerLifecycleCommandRequest,
|
||||
ServerLifecycleCreateRequest,
|
||||
ServerInstanceResponse
|
||||
} from "../api/types";
|
||||
import type { ServerCreateFormState, ServerMetadataFormState, ServerRemovalConfirmationState } from "../contracts/serverManagement";
|
||||
|
||||
export function serverCreateRequestFromForm(form: ServerCreateFormState, sequence = Date.now()): ServerLifecycleCreateRequest {
|
||||
const id = form.id.trim();
|
||||
@@ -19,6 +29,75 @@ export function serverLifecycleCommandRequest(instance: ServerInstanceResponse,
|
||||
};
|
||||
}
|
||||
|
||||
export function serverMetadataUpdateRequestFromForm(form: ServerMetadataFormState): ServerInstanceUpdateRequest {
|
||||
return { name: form.name.trim() };
|
||||
}
|
||||
|
||||
export function serverArchiveConfirmation(instance: ServerInstanceResponse): ServerRemovalConfirmationState {
|
||||
return {
|
||||
action: "archive",
|
||||
serverInstanceId: instance.id,
|
||||
name: instance.name,
|
||||
state: instance.state
|
||||
};
|
||||
}
|
||||
|
||||
export function runDistributionGenerateRequest(serverInstanceId: string, targetOs: string, targetArch: string, sequence = Date.now()): RunDistributionGenerateRequest {
|
||||
return {
|
||||
targetOs,
|
||||
targetArch,
|
||||
idempotencyKey: runtimeIdempotencyKey("run.generate", serverInstanceId, sequence)
|
||||
};
|
||||
}
|
||||
|
||||
export function runUpdateRequest(serverInstanceId: string, artifactId: string, checksum?: string, sequence = Date.now()): RunUpdateRequest {
|
||||
return {
|
||||
artifactId,
|
||||
checksum,
|
||||
idempotencyKey: runtimeIdempotencyKey("run.update", serverInstanceId, sequence)
|
||||
};
|
||||
}
|
||||
|
||||
export function clientManagerBuildRequest(input: {
|
||||
serverInstanceId: string;
|
||||
profileKey: string;
|
||||
targetOs: string;
|
||||
targetArch: string;
|
||||
repositoryUrl: string;
|
||||
sourceRevision?: string;
|
||||
sequence?: number;
|
||||
}): ClientManagerBuildRequest {
|
||||
return {
|
||||
profileKey: input.profileKey.trim(),
|
||||
targetOs: input.targetOs,
|
||||
targetArch: input.targetArch,
|
||||
repositoryUrl: input.repositoryUrl.trim(),
|
||||
sourceRevision: input.sourceRevision?.trim() || undefined,
|
||||
idempotencyKey: runtimeIdempotencyKey("client-manager.generate", input.serverInstanceId, input.sequence ?? Date.now())
|
||||
};
|
||||
}
|
||||
|
||||
export function dependencyJobRequest(serverInstanceId: string, probeKey: string, installPlanKey = "", sequence = Date.now()): DependencyJobRequest {
|
||||
return {
|
||||
probeKey: probeKey.trim(),
|
||||
installPlanKey: installPlanKey.trim() || undefined,
|
||||
idempotencyKey: runtimeIdempotencyKey(installPlanKey ? "dependencies.install" : "dependencies.check", serverInstanceId, sequence)
|
||||
};
|
||||
}
|
||||
|
||||
export function logBackfillRequest(serverInstanceId: string, sourceKey: string, checkpointRef = "", limit = 200, sequence = Date.now()): LogBackfillRequest {
|
||||
return {
|
||||
sourceKey: sourceKey.trim(),
|
||||
checkpointRef: checkpointRef.trim() || undefined,
|
||||
limit,
|
||||
idempotencyKey: runtimeIdempotencyKey("logs.backfill", serverInstanceId, sequence)
|
||||
};
|
||||
}
|
||||
|
||||
export function runtimeIdempotencyKey(action: string, serverInstanceId: string, sequence: number): string {
|
||||
return `web:${action}:${serverInstanceId}:${sequence}`;
|
||||
}
|
||||
|
||||
export function lifecycleIdempotencyKey(action: "create" | "start" | "stop", serverInstanceId: string, sequence: number): string {
|
||||
return `web:${action}:${serverInstanceId}:${sequence}`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user