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.
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import { currentClusterAtom } from '@/atoms/gpuservice';
|
|
import { getCurrentOrgNamespace } from '@/atoms/user';
|
|
import { useQueryData } from '@gpustack/core-ui';
|
|
import { useAtomValue } from 'jotai';
|
|
import { useCallback } from 'react';
|
|
import { apiVersion, KindMapping } from '../../constants';
|
|
import { createGPUServiceInstance } from '../apis';
|
|
import { FormData, ListItem } from '../config/types';
|
|
|
|
interface CreateInstanceParams {
|
|
data: FormData;
|
|
}
|
|
|
|
export default function useCreateInstance() {
|
|
const currentCluster = useAtomValue(currentClusterAtom);
|
|
const clusterID = currentCluster?.id;
|
|
// Admin "All" view has no Org context — fall back to the
|
|
// selected cluster's owner Org name for the K8s namespace.
|
|
const namespace = getCurrentOrgNamespace(currentCluster?.owner_principal_id);
|
|
|
|
const fetchDetail = useCallback(
|
|
(params: CreateInstanceParams, option?: any) =>
|
|
createGPUServiceInstance(
|
|
{
|
|
namespace,
|
|
clusterID,
|
|
data: {
|
|
apiVersion,
|
|
kind: KindMapping.instance,
|
|
metadata: {
|
|
name: params.data.metadata.name,
|
|
namespace
|
|
},
|
|
spec: params.data.spec
|
|
}
|
|
},
|
|
option
|
|
),
|
|
[namespace, clusterID]
|
|
);
|
|
|
|
const { detailData, loading, cancelRequest, fetchData } = useQueryData<
|
|
ListItem,
|
|
CreateInstanceParams
|
|
>({
|
|
fetchDetail,
|
|
key: 'createInstance'
|
|
});
|
|
|
|
return {
|
|
detailData,
|
|
loading,
|
|
cancelRequest,
|
|
fetchData
|
|
};
|
|
}
|