From cbcec7e3f25ba945351bf85cdcb2dde40c99460d Mon Sep 17 00:00:00 2001 From: xudaotutou <13435638964@163.com> Date: Wed, 13 Sep 2023 18:48:44 +0800 Subject: [PATCH] feat(applaunchpad, dbprovider, template):support multi ns (#3927) --- frontend/packages/client-sdk/src/master.ts | 4 +++- frontend/packages/client-sdk/src/types/user.d.ts | 12 +++++++----- frontend/packages/client-sdk/src/utils/kubernetes.ts | 2 +- .../applaunchpad/src/services/backend/kubernetes.ts | 2 +- frontend/providers/applaunchpad/src/utils/user.ts | 2 +- .../dbprovider/src/services/backend/kubernetes.ts | 2 +- .../template/src/services/backend/kubernetes.ts | 2 +- 7 files changed, 15 insertions(+), 11 deletions(-) diff --git a/frontend/packages/client-sdk/src/master.ts b/frontend/packages/client-sdk/src/master.ts index 6e624f85ff9..2f6edabca7d 100644 --- a/frontend/packages/client-sdk/src/master.ts +++ b/frontend/packages/client-sdk/src/master.ts @@ -55,8 +55,10 @@ class MasterSDK { return { user: { id: session.user.userId, + k8sUsername: session.user.k8s_username, name: session.user.name, - avatar: session.user.avatar + avatar: session.user.avatar, + nsid: session.user.nsid }, kubeconfig: session.kubeconfig }; diff --git a/frontend/packages/client-sdk/src/types/user.d.ts b/frontend/packages/client-sdk/src/types/user.d.ts index 6d129866e33..b93a6040d8f 100644 --- a/frontend/packages/client-sdk/src/types/user.d.ts +++ b/frontend/packages/client-sdk/src/types/user.d.ts @@ -30,11 +30,13 @@ export type UserQuotaItemType = { limit: number; }; -export type UserInfoV1 = { - readonly id: string; - readonly name: string; - readonly avatar: string; -}; +export type UserInfoV1 = Readonly<{ + id: string; + name: string; + avatar: string; + k8sUsername: string; + nsid: string; +}>; export type SessionV1 = { token?: OAuthToken; diff --git a/frontend/packages/client-sdk/src/utils/kubernetes.ts b/frontend/packages/client-sdk/src/utils/kubernetes.ts index d7e750c6675..ef0cea3d077 100644 --- a/frontend/packages/client-sdk/src/utils/kubernetes.ts +++ b/frontend/packages/client-sdk/src/utils/kubernetes.ts @@ -266,7 +266,7 @@ export async function initK8s({ req }: { req: { headers: IncomingHttpHeaders } } return Promise.reject('User is null'); } - const namespace = `ns-${kube_user.name}`; + const namespace = kc.contexts[0].namespace || `ns-${kube_user.name}`; return Promise.resolve({ kc, diff --git a/frontend/providers/applaunchpad/src/services/backend/kubernetes.ts b/frontend/providers/applaunchpad/src/services/backend/kubernetes.ts index 26aaca75273..c6629fa8024 100644 --- a/frontend/providers/applaunchpad/src/services/backend/kubernetes.ts +++ b/frontend/providers/applaunchpad/src/services/backend/kubernetes.ts @@ -195,7 +195,7 @@ export async function getK8s({ kubeconfig }: { kubeconfig: string }) { return Promise.reject('用户不存在'); } - const namespace = `ns-${kube_user.name}`; + const namespace = kc.contexts[0].namespace || `ns-${kube_user.name}`; const applyYamlList = async (yamlList: string[], type: 'create' | 'replace') => { // insert namespace diff --git a/frontend/providers/applaunchpad/src/utils/user.ts b/frontend/providers/applaunchpad/src/utils/user.ts index 4ca5f37b754..bbe29b48d14 100644 --- a/frontend/providers/applaunchpad/src/utils/user.ts +++ b/frontend/providers/applaunchpad/src/utils/user.ts @@ -18,7 +18,7 @@ export const getUserNamespace = () => { const kubeConfig = getUserKubeConfig(); const json: any = yaml.load(kubeConfig); try { - return `ns-${json.users[0].name}`; + return json?.contexts[0]?.context?.namespace || `ns-${json.users[0].name}`; } catch (err) { return 'nx-'; } diff --git a/frontend/providers/dbprovider/src/services/backend/kubernetes.ts b/frontend/providers/dbprovider/src/services/backend/kubernetes.ts index feb7a1a75d5..31802ac42b0 100644 --- a/frontend/providers/dbprovider/src/services/backend/kubernetes.ts +++ b/frontend/providers/dbprovider/src/services/backend/kubernetes.ts @@ -212,7 +212,7 @@ export async function getK8s({ kubeconfig }: { kubeconfig: string }) { return Promise.reject('用户不存在'); } - const namespace = GetUserDefaultNameSpace(kube_user.name); + const namespace = kc.contexts[0].namespace || GetUserDefaultNameSpace(kube_user.name); const applyYamlList = async (yamlList: string[], type: 'create' | 'replace' | 'update') => { // insert namespace diff --git a/frontend/providers/template/src/services/backend/kubernetes.ts b/frontend/providers/template/src/services/backend/kubernetes.ts index 2a1dbe53965..e2ad73e30c7 100644 --- a/frontend/providers/template/src/services/backend/kubernetes.ts +++ b/frontend/providers/template/src/services/backend/kubernetes.ts @@ -150,7 +150,7 @@ export async function getK8s({ kubeconfig }: { kubeconfig: string }) { return Promise.reject('用户不存在'); } - const namespace = GetUserDefaultNameSpace(kube_user.name); + const namespace = kc.contexts[0].namespace || GetUserDefaultNameSpace(kube_user.name); const applyYamlList = async (yamlList: string[], type: 'create' | 'replace' | 'dryrun') => { // insert namespace