import React from "react" import { reaction } from "mobx"; import { Renderer, Common } from "@k8slens/extensions"; import { IpcRenderer } from "./src/ipc/renderer"; import { Logger } from "./src/utils/logger"; import { ClusterPageIcon, ClusterPage, KubescapeWorkloadDetails } from "./src/components"; import { KubescapePreferenceStore, KubescapeReportStore } from "./src/stores"; import { scanClusterTask } from "./src/kubescape/clusterScan"; export default class KubescapeExtension extends Renderer.LensExtension { clusterPages = [ { id: "kubescape-main", components: { Page: () => , } } ] /* Sidebar menu */ clusterPageMenus = [ { target: { pageId: "kubescape-main" }, title: "Kubescape", components: { Icon: ClusterPageIcon, } } ] /* workload object details */ kubeObjectDetailItems = [ { kind: "Node", apiVersions: ["v1"], priority: 9, components: { Details: (props: Renderer.Component.KubeObjectDetailsProps) => {...props} /> } }, { kind: "Pod", apiVersions: ["v1"], priority: 10, components: { Details: (props: Renderer.Component.KubeObjectDetailsProps) => {...props} /> } }, { kind: "Deployment", apiVersions: ["apps/v1"], priority: 10, components: { Details: (props: Renderer.Component.KubeObjectDetailsProps) => {...props} /> } }, { kind: "DaemonSet", apiVersions: ["apps/v1"], priority: 10, components: { Details: (props: Renderer.Component.KubeObjectDetailsProps) => {...props} /> } }, { kind: "StatefulSet", apiVersions: ["apps/v1"], priority: 10, components: { Details: (props: Renderer.Component.KubeObjectDetailsProps) => {...props} /> } }, { kind: "ReplicaSet", apiVersions: ["apps/v1"], priority: 10, components: { Details: (props: Renderer.Component.KubeObjectDetailsProps) => {...props} /> } }, { kind: "ServiceAccount", apiVersions: ["v1"], priority: 10, components: { Details: (props: Renderer.Component.KubeObjectDetailsProps) => {...props} /> } }, { kind: "CronJob", apiVersions: ["batch/v1beta1"], components: { Details: (props: Renderer.Component.KubeObjectDetailsProps) => {...props} /> }, }, ] // appPreferences = [ // { // title: "Kubescape Preferences", // components: { // Hint: () => , // Input: () => // } // } // ] disposers = [] async onActivate() { Logger.debug("Kubescape activated"); const ipc = IpcRenderer.createInstance(this); const preferenceStore = KubescapePreferenceStore.createInstance(); preferenceStore.loadExtension(this); const reportStore = KubescapeReportStore.createInstance(); reportStore.loadExtension(this); this.disposers.push(reaction(() => Renderer.Catalog.catalogEntities.activeEntity, async () => await scanClusterTask(preferenceStore, reportStore, ipc))); this.disposers.push(reaction(() => preferenceStore.isInstalled, async () => await scanClusterTask(preferenceStore, reportStore, ipc))); } async onDeactivate() { Logger.debug("Kubescape deactivated"); this.disposers.forEach((disposer) => disposer()); } }