Files
gpustack-ui/src/pages/cluster-management/components/add-worker/config.ts
T
Yuxing Deng acb90531b2 feat: extend cluster k8s_options with multi-vendor manifest support
- 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.
2026-05-26 16:54:14 +08:00

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;
}