From 317c4cf072bb79094c8b089d4f3eec556df3de7d Mon Sep 17 00:00:00 2001 From: Jari Kolehmainen Date: Fri, 12 Feb 2021 14:25:17 +0200 Subject: [PATCH] Fix accessible namespaces functionality under restrictive RBAC (#2138) Signed-off-by: Jari Kolehmainen --- src/main/cluster.ts | 2 ++ src/renderer/components/context.ts | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/cluster.ts b/src/main/cluster.ts index cd92ab2650..5cf5a58bd9 100644 --- a/src/main/cluster.ts +++ b/src/main/cluster.ts @@ -399,6 +399,8 @@ export class Cluster implements ClusterModel, ClusterState { this.accessible = false; this.ready = false; this.activated = false; + this.allowedNamespaces = []; + this.accessibleNamespaces = []; this.resourceAccessStatuses.clear(); this.pushState(); } diff --git a/src/renderer/components/context.ts b/src/renderer/components/context.ts index 3c8c6d29e4..e8c9b1327d 100755 --- a/src/renderer/components/context.ts +++ b/src/renderer/components/context.ts @@ -14,7 +14,22 @@ export const clusterContext: ClusterContext = { }, get allNamespaces(): string[] { - return this.cluster?.allowedNamespaces ?? []; + if (!this.cluster) { + return []; + } + + // user given list of namespaces + if (this.cluster?.accessibleNamespaces.length) { + return this.cluster.accessibleNamespaces; + } + + if (namespaceStore.items.length > 0) { + // namespaces from kubernetes api + return namespaceStore.items.map((namespace) => namespace.getName()); + } else { + // fallback to cluster resolved namespaces because we could not load list + return this.cluster.allowedNamespaces || []; + } }, get contextNamespaces(): string[] {