- New k8s_pod_spec form sections (image credentials, node selector, gpu vendor overrides) under k8s_options, replacing the legacy flat k8s_volume_mounts list. UI keys aligned to the backend wire shape (snake_case k8s_options + camelCase inside). - System default container registry is pre-filled into the first image credential when creating a new cluster; empty username/password are coerced to null on submit to match the Optional[str] backend schema. - Register cluster flow supports multi-runtime selection gated by the cluster's gpuVendorOverrides: non-override vendors stay single-select with an inline hint; multi-add only opens once an override vendor is picked, and non-override cards become disabled in that state. - Manifest URL emits multiple ?runtime= params; check-env step combines per-vendor commands; downstream steps are disabled when no vendor is selected. - Pre-validate gpuVendorOverrides at save time (non-empty selector, no duplicates across vendors, no key clash with base nodeSelector) so the user sees the error before hitting the manifest endpoint. - Misc: dark-mode background of the k8s_pod_spec / volume mount titles no longer clashes with the drawer; cluster Steps no longer leaks the internal showModules/showForms props to the DOM.
81 lines
1.7 KiB
TypeScript
81 lines
1.7 KiB
TypeScript
export const StepNamesMap = {
|
|
SelectCluster: 'SelectCluster',
|
|
SelectGPU: 'SelectGPU',
|
|
CheckEnv: 'CheckEnv',
|
|
SpecifyArgs: 'SpecifyArgs',
|
|
RunCommand: 'RunCommand'
|
|
} as const;
|
|
|
|
export type StepName = keyof typeof StepNamesMap;
|
|
|
|
export const DockerStepsFromCluster = [
|
|
StepNamesMap.SelectGPU,
|
|
StepNamesMap.CheckEnv,
|
|
StepNamesMap.SpecifyArgs,
|
|
StepNamesMap.RunCommand
|
|
];
|
|
|
|
export const DockerStepsFromWorker = [
|
|
StepNamesMap.SelectCluster,
|
|
StepNamesMap.SelectGPU,
|
|
StepNamesMap.CheckEnv,
|
|
StepNamesMap.SpecifyArgs,
|
|
StepNamesMap.RunCommand
|
|
];
|
|
|
|
export const K8sStepsFromCluter = [
|
|
StepNamesMap.SelectGPU,
|
|
StepNamesMap.CheckEnv,
|
|
StepNamesMap.RunCommand
|
|
];
|
|
|
|
export interface SummaryDataKeys {
|
|
currentGPU: string;
|
|
// Multi-vendor selection for K8s register flow — array of GPU driver keys.
|
|
// Falls back to `[currentGPU]` for the single-select default path.
|
|
selectedGPUs: string[];
|
|
cluster_id: number;
|
|
clusterName: string;
|
|
workerCommand: {
|
|
label: string;
|
|
link: string;
|
|
notes: string[];
|
|
};
|
|
modelDirConfig: {
|
|
enabled: boolean;
|
|
path: string;
|
|
};
|
|
cacheDirConfig: {
|
|
enabled: boolean;
|
|
path: string;
|
|
};
|
|
workerIPConfig: {
|
|
enabled: boolean;
|
|
ip: string;
|
|
required: boolean;
|
|
};
|
|
containerNameConfig: {
|
|
enabled: boolean;
|
|
name: string;
|
|
};
|
|
gpustackDataVolumeConfig: {
|
|
enabled: boolean;
|
|
path: string;
|
|
};
|
|
externalWorkerIPConfig: {
|
|
enable: boolean;
|
|
ip: string;
|
|
required: boolean;
|
|
};
|
|
}
|
|
|
|
export type SummaryDataMap = {
|
|
[key in keyof SummaryDataKeys]: SummaryDataKeys[key];
|
|
};
|
|
|
|
export type SummaryDataKey = keyof SummaryDataKeys;
|
|
|
|
export interface AddWorkerStepProps {
|
|
disabled?: boolean;
|
|
}
|