1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

all Roles tab to be viewed if cluster has access to clusterrole

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2021-02-26 11:08:22 -05:00
parent ca152e1cc5
commit 73492ee287
4 changed files with 7 additions and 4 deletions

View File

@ -5,7 +5,7 @@ export type KubeResource =
"secrets" | "configmaps" | "ingresses" | "networkpolicies" | "persistentvolumeclaims" | "persistentvolumes" | "storageclasses" | "secrets" | "configmaps" | "ingresses" | "networkpolicies" | "persistentvolumeclaims" | "persistentvolumes" | "storageclasses" |
"pods" | "daemonsets" | "deployments" | "statefulsets" | "replicasets" | "jobs" | "cronjobs" | "pods" | "daemonsets" | "deployments" | "statefulsets" | "replicasets" | "jobs" | "cronjobs" |
"endpoints" | "customresourcedefinitions" | "horizontalpodautoscalers" | "podsecuritypolicies" | "poddisruptionbudgets" | "endpoints" | "customresourcedefinitions" | "horizontalpodautoscalers" | "podsecuritypolicies" | "poddisruptionbudgets" |
"role" | "rolebinding" | "clusterrolebinding" | "serviceaccount"; "role" | "clusterrole" | "rolebinding" | "clusterrolebinding" | "serviceaccount";
export interface KubeApiResource extends KubeApiResourceData { export interface KubeApiResource extends KubeApiResourceData {
apiName: KubeResource; // valid api resource name (e.g. "namespaces") apiName: KubeResource; // valid api resource name (e.g. "namespaces")
@ -17,6 +17,7 @@ export interface KubeApiResourceData {
} }
export const apiResources: Record<KubeResource, KubeApiResourceData> = { export const apiResources: Record<KubeResource, KubeApiResourceData> = {
"clusterrole": { kind: "ClusterRole", group: "rbac.authorization.k8s.io" },
"clusterrolebinding": { kind: "ClusterRoleBinding", group: "rbac.authorization.k8s.io" }, "clusterrolebinding": { kind: "ClusterRoleBinding", group: "rbac.authorization.k8s.io" },
"configmaps": { kind: "ConfigMap" }, "configmaps": { kind: "ConfigMap" },
"cronjobs": { kind: "CronJob", group: "batch" }, "cronjobs": { kind: "CronJob", group: "batch" },

View File

@ -36,7 +36,7 @@ import { Cluster } from "../cluster";
import { ContextHandler } from "../context-handler"; import { ContextHandler } from "../context-handler";
import { getFreePort } from "../port"; import { getFreePort } from "../port";
import { V1ResourceAttributes } from "@kubernetes/client-node"; import { V1ResourceAttributes } from "@kubernetes/client-node";
import { apiResources } from "../../common/rbac"; import { apiResourceList } from "../../common/rbac";
import request from "request-promise-native"; import request from "request-promise-native";
import { Kubectl } from "../kubectl"; import { Kubectl } from "../kubectl";
@ -173,7 +173,7 @@ describe("create clusters", () => {
expect(mockedRequest).toBeCalled(); expect(mockedRequest).toBeCalled();
expect(c.accessible).toBe(true); expect(c.accessible).toBe(true);
expect(c.allowedNamespaces.length).toBe(1); expect(c.allowedNamespaces.length).toBe(1);
expect(c.allowedResources.length).toBe(apiResources.length); expect(c.allowedResources.length).toBe(apiResourceList.length);
c.disconnect(); c.disconnect();
jest.resetAllMocks(); jest.resetAllMocks();
}); });

View File

@ -35,7 +35,8 @@ export class UserManagement extends React.Component {
}); });
} }
if (isAllowedResource("role")) { if (isAllowedResource("role") || isAllowedResource("clusterrole")) {
// TODO: seperate out these two pages
tabRoutes.push({ tabRoutes.push({
title: "Roles", title: "Roles",
component: Roles, component: Roles,

View File

@ -29,5 +29,6 @@ export const ResourceNames: Record<KubeResource, string> = {
"role": "Roles", "role": "Roles",
"rolebinding": "Role Bindings", "rolebinding": "Role Bindings",
"clusterrolebinding": "Cluster Role Bindings", "clusterrolebinding": "Cluster Role Bindings",
"clusterrole": "Cluster Roles",
"serviceaccount": "Service Accounts" "serviceaccount": "Service Accounts"
}; };