From 0661954a271aaf94546c0019d1d65024b62463f5 Mon Sep 17 00:00:00 2001 From: Lauri Nevala Date: Tue, 16 Jun 2020 17:46:37 +0300 Subject: [PATCH] Display namespace defined in kubeconfig always in the namespace selector (#472) Signed-off-by: Lauri Nevala --- .../+namespaces/namespace-select.tsx | 2 +- .../components/+namespaces/namespace.store.ts | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/dashboard/client/components/+namespaces/namespace-select.tsx b/dashboard/client/components/+namespaces/namespace-select.tsx index b4b5fd15cb..925835ff19 100644 --- a/dashboard/client/components/+namespaces/namespace-select.tsx +++ b/dashboard/client/components/+namespaces/namespace-select.tsx @@ -34,7 +34,7 @@ export class NamespaceSelect extends React.Component { private unsubscribe = noop; async componentDidMount() { - if (isAllowedResource("namespaces") && !namespaceStore.isLoaded) { + if (!namespaceStore.isLoaded) { await namespaceStore.loadAll(); } this.unsubscribe = namespaceStore.subscribe(); diff --git a/dashboard/client/components/+namespaces/namespace.store.ts b/dashboard/client/components/+namespaces/namespace.store.ts index 53ea00f19f..61797212f8 100644 --- a/dashboard/client/components/+namespaces/namespace.store.ts +++ b/dashboard/client/components/+namespaces/namespace.store.ts @@ -4,6 +4,7 @@ import { KubeObjectStore } from "../../kube-object.store"; import { Namespace, namespacesApi } from "../../api/endpoints"; import { IQueryParams, navigation, setQueryParams } from "../../navigation"; import { apiManager } from "../../api/api-manager"; +import { isAllowedResource } from "../..//api/rbac"; @autobind() export class NamespaceStore extends KubeObjectStore { @@ -43,6 +44,16 @@ export class NamespaceStore extends KubeObjectStore { } protected loadItems(namespaces?: string[]) { + if (!isAllowedResource("namespaces")) { + if (namespaces) { + return Promise.all(namespaces.map(name => this.getDummyNamespace(name))) + } + else { + return new Promise(() => { + return [] + }) + } + } if (namespaces) { return Promise.all(namespaces.map(name => this.api.get({ name }))) } @@ -51,6 +62,19 @@ export class NamespaceStore extends KubeObjectStore { } } + protected getDummyNamespace(name: string) { + return new Namespace({ + kind: "Namespace", + apiVersion: "v1", + metadata: { + name: name, + uid: "", + resourceVersion: "", + selfLink: `/api/v1/namespaces/${name}` + } + }) + } + setContext(namespaces: string[]) { this.contextNs.replace(namespaces); }