Commit Graph
48 Commits
Author SHA1 Message Date
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
gitlawrandjialin e7a376db70 refactor: adapt org-namespace lookup to principal name rename
Tracks the gpustack identity-consolidation effort: the unified
``principals`` table's URL-safe identifier column was renamed
``slug`` → ``name`` (with the legacy display ``name`` → ``display_name``).
The enterprise plugin's persisted org caches (``organizationList``,
``allOrganizations`` in localStorage) now write ``name`` instead of
``slug`` on each Organization row.

``getCurrentOrgNamespace`` reads those caches to compose the k8s
namespace (``gpustack-{name}``) for GPU-instance / storage CRDs.
Updated to read ``item.name`` so namespace resolution stays in sync
with what the enterprise plugin writes — otherwise every gpu-service
write would fall through to ``gpustack-default`` even when the user
has an Org context.

Stale ``slug`` references in surrounding comments also retitled to
``name`` to avoid divergence between code and prose. The namespace
format itself (``gpustack-{...}``) is unchanged — only the column it
sources is.
2026-05-21 12:15:39 +08:00
gitlawrandjialin 2dae886fd1 fix(gpu-service): use gpustack-{slug} namespace for org resources
The legacy ``getCurrentOrganizationId`` helper returned the raw numeric
org id from localStorage, which the GPU-service / storage call sites
then used as the K8s namespace path segment — producing requests like
``/v2/clusters/1/proxy/.../namespaces/5/instances``. The backend
creates a namespace named ``gpustack-{slug}`` (matching
``get_namespace_name``), so the request hit a namespace that doesn't
exist.

Replace the helper with ``getCurrentOrgNamespace`` that:

- prefers the Org the caller is acting under (numeric
  ``currentOrganizationId`` from localStorage, slug looked up in the
  persisted ``organizationList`` or ``allOrganizations`` cache);
- falls back to the selected cluster's owner Org slug for the admin
  "All" view, where there is no explicit Org context but the resource
  still has to land in some Org's namespace — call sites pass
  ``currentCluster?.owner_principal_id`` through;
- falls back to ``gpustack-default`` only if neither path resolves a
  slug (first load before any cache hydrates, etc.).

``ClusterListItem`` is widened with the optional ``owner_principal_id``
field so TypeScript accepts the fallback argument; the backend has
been returning it via ``ClusterPublic`` all along.
2026-05-13 12:29:09 +08:00
jialinandjialin 6c161c6ae7 build: sync config 2026-04-24 14:28:30 +08:00
jialinandjialin 8711c27b78 chore: replace components with core-ui, upgrade eslint 2026-04-24 14:28:30 +08:00
jialinandjialin 41c9b86fd9 fix: k8s volume config 2026-04-14 20:42:01 +08:00
jialinandjialin 0956538b79 fix: volume name update while typing 2026-04-10 15:17:58 +08:00
jialinandjialin f2a4ab2654 feat: k8s volume mounts 2026-04-10 15:17:58 +08:00
jialin 15d635322b fix: target model text overflow 2026-02-10 17:29:57 +08:00
jialin 198a52e230 chore: add runtime in register k8s command 2026-02-09 15:58:29 +08:00
jialin a1a7979fb3 fix: update open playground btn 2026-02-05 11:55:05 +08:00
jialin 4e8b5e26ae feat: monitor button 2026-02-04 20:14:25 +08:00
jialin fc76822bdf fix: catalog size 2026-01-12 12:24:34 +08:00
jialin d35bd16543 fix: cluster pending status 2026-01-08 09:26:55 +08:00
jialin 1b661bb8cd feat: set default cluster 2025-12-23 20:54:16 +08:00
jialin e6c12d81ea fix: edit worker pool miss data 2025-12-18 14:06:32 +08:00
jialin bd6f4b3f76 fix: add worker, create cluster 2025-12-17 14:59:07 +08:00
jialin 6968f9fa6b feat: worker_config 2025-12-16 18:43:28 +08:00
jialin 03999a9d2c chore: os image filter 2025-12-03 11:38:16 +08:00
jialin 8f9562d6a4 style: adjust some ui statements 2025-11-20 11:47:09 +08:00
jialin f963b3a000 chore: config base url 2025-11-13 12:22:16 +08:00
jialin ab93c53092 chore: default cluster by state 2025-10-22 12:13:01 +08:00
jialin 19e275a17a chore: update worker locale 2025-10-17 21:11:31 +08:00
jialin 37a3aa75cc chore: cluster locales 2025-10-17 10:15:55 +08:00
jialin 620c113fae fix(style): cluster state do not display 2025-10-14 13:09:22 +08:00
jialin 3a9bf17d7e chore: update worker, cluster status value 2025-09-23 11:15:43 +08:00
jialin a3002ce450 chore: worker resource info adjust 2025-09-23 11:15:43 +08:00
jialin 2515e8f598 chore: update cloud providers 2025-09-22 10:36:34 +08:00
jialin f542ebecb4 fix: cluster value setting, volumes setting 2025-09-19 20:00:25 +08:00
jialin f36613227e fix: os image dropdown list 2025-09-17 15:17:31 +08:00
jialin 336bafd6ce chore: cluster docker provider 2025-09-16 11:26:17 +08:00
jialin c467280170 fix: display instance type spec 2025-09-16 11:26:17 +08:00
jialin deeee70807 feat: add watch api in cluster 2025-09-16 11:26:17 +08:00
jialin 07ade24ea1 refactor: cluster list 2025-09-16 11:26:17 +08:00
jialin 8de272239e refactor: create cluster by steps 2025-09-16 11:26:17 +08:00
jialin 6e5a7035c8 feat: cloud options 2025-09-16 11:26:17 +08:00
jialin 632f206228 fix: cluster apis 2025-09-16 11:26:17 +08:00
jialin f04f1f828f fix: add do cluster 2025-09-16 11:26:17 +08:00
jialin 0c1057d554 refactor: credential table columns 2025-09-16 11:26:17 +08:00
jialin 43936e21d9 feat: instances on worker 2025-09-16 11:26:17 +08:00
jialin 949eded4ee refactor: resource table columns 2025-09-16 11:26:17 +08:00
jialin 84859d1b7c style: cluster table list 2025-09-16 11:26:17 +08:00
jialin 553ec724c2 fix: gpu selector by cluster 2025-09-16 11:26:17 +08:00
jialin 62dbd18ef8 chore: create cluster ux 2025-09-16 11:26:17 +08:00
jialin 55b0a20a4a refactor: update scroll modal 2025-09-16 11:26:17 +08:00
jialin 29b74f85c5 chore: adjust deployment modal form 2025-09-16 11:26:17 +08:00
jialin ed49e03802 feat: cluster ux 2025-09-16 11:26:17 +08:00
jialin 89001dbb92 feat: add cluster list 2025-09-16 11:26:17 +08:00