mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
simplify extension's registrations apis
Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
parent
d872e073e3
commit
85087e5cc1
@ -3,12 +3,7 @@ import { ExampleIcon, ExamplePage } from "./page"
|
|||||||
import React from "react"
|
import React from "react"
|
||||||
|
|
||||||
export default class ExampleExtension extends LensRendererExtension {
|
export default class ExampleExtension extends LensRendererExtension {
|
||||||
onActivate() {
|
clusterPages = [
|
||||||
console.log('EXAMPLE EXTENSION RENDERER: ACTIVATED', this.getMeta());
|
|
||||||
}
|
|
||||||
|
|
||||||
registerClusterPage() {
|
|
||||||
return [
|
|
||||||
{
|
{
|
||||||
path: "/extension-example",
|
path: "/extension-example",
|
||||||
title: "Example Extension",
|
title: "Example Extension",
|
||||||
@ -19,8 +14,3 @@ export default class ExampleExtension extends LensRendererExtension {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
onDeactivate() {
|
|
||||||
console.log('EXAMPLE EXTENSION RENDERER: DEACTIVATED', this.getMeta());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@ -3,8 +3,7 @@ import { MetricsFeature } from "./src/metrics-feature"
|
|||||||
import React from "react"
|
import React from "react"
|
||||||
|
|
||||||
export default class ClusterMetricsFeatureExtension extends LensRendererExtension {
|
export default class ClusterMetricsFeatureExtension extends LensRendererExtension {
|
||||||
registerClusterFeatures() {
|
clusterFeatures = [
|
||||||
return [
|
|
||||||
{
|
{
|
||||||
title: "Metrics Stack",
|
title: "Metrics Stack",
|
||||||
components: {
|
components: {
|
||||||
@ -22,4 +21,3 @@ export default class ClusterMetricsFeatureExtension extends LensRendererExtensio
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@ -3,12 +3,7 @@ import React from "react"
|
|||||||
import { NodeMenu, NodeMenuProps } from "./src/node-menu"
|
import { NodeMenu, NodeMenuProps } from "./src/node-menu"
|
||||||
|
|
||||||
export default class NodeMenuRendererExtension extends LensRendererExtension {
|
export default class NodeMenuRendererExtension extends LensRendererExtension {
|
||||||
async onActivate() {
|
kubeObjectMenuItems = [
|
||||||
console.log("node-menu extension activated")
|
|
||||||
}
|
|
||||||
|
|
||||||
registerKubeObjectMenus() {
|
|
||||||
return [
|
|
||||||
{
|
{
|
||||||
kind: "Node",
|
kind: "Node",
|
||||||
apiVersions: ["v1"],
|
apiVersions: ["v1"],
|
||||||
@ -18,4 +13,3 @@ export default class NodeMenuRendererExtension extends LensRendererExtension {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@ -4,12 +4,7 @@ import { PodLogsMenu, PodLogsMenuProps } from "./src/logs-menu"
|
|||||||
import React from "react"
|
import React from "react"
|
||||||
|
|
||||||
export default class PodMenuRendererExtension extends LensRendererExtension {
|
export default class PodMenuRendererExtension extends LensRendererExtension {
|
||||||
async onActivate() {
|
kubeObjectMenuItems = [
|
||||||
console.log("pod-menu extension activated")
|
|
||||||
}
|
|
||||||
|
|
||||||
registerKubeObjectMenus() {
|
|
||||||
return [
|
|
||||||
{
|
{
|
||||||
kind: "Pod",
|
kind: "Pod",
|
||||||
apiVersions: ["v1"],
|
apiVersions: ["v1"],
|
||||||
@ -26,4 +21,3 @@ export default class PodMenuRendererExtension extends LensRendererExtension {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@ -2,12 +2,7 @@ import { LensMainExtension, windowManager } from "@k8slens/extensions";
|
|||||||
import { supportPageURL } from "./src/support.route";
|
import { supportPageURL } from "./src/support.route";
|
||||||
|
|
||||||
export default class SupportPageMainExtension extends LensMainExtension {
|
export default class SupportPageMainExtension extends LensMainExtension {
|
||||||
async onActivate() {
|
appMenus = [
|
||||||
console.log("support page extension activated")
|
|
||||||
}
|
|
||||||
|
|
||||||
registerAppMenus() {
|
|
||||||
return [
|
|
||||||
{
|
{
|
||||||
parentId: "help",
|
parentId: "help",
|
||||||
label: "Support",
|
label: "Support",
|
||||||
@ -20,4 +15,3 @@ export default class SupportPageMainExtension extends LensMainExtension {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@ -4,12 +4,7 @@ import { supportPageRoute, supportPageURL } from "./src/support.route";
|
|||||||
import { Support } from "./src/support";
|
import { Support } from "./src/support";
|
||||||
|
|
||||||
export default class SupportPageRendererExtension extends LensRendererExtension {
|
export default class SupportPageRendererExtension extends LensRendererExtension {
|
||||||
async onActivate() {
|
globalPages = [
|
||||||
console.log("support page extension activated")
|
|
||||||
}
|
|
||||||
|
|
||||||
registerGlobalPages() {
|
|
||||||
return [
|
|
||||||
{
|
{
|
||||||
...supportPageRoute,
|
...supportPageRoute,
|
||||||
url: supportPageURL(),
|
url: supportPageURL(),
|
||||||
@ -19,10 +14,8 @@ export default class SupportPageRendererExtension extends LensRendererExtension
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
|
||||||
|
|
||||||
registerStatusBarItems() {
|
statusBarItems = [
|
||||||
return [
|
|
||||||
{
|
{
|
||||||
item: (
|
item: (
|
||||||
<div
|
<div
|
||||||
@ -36,4 +29,3 @@ export default class SupportPageRendererExtension extends LensRendererExtension
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|||||||
@ -5,14 +5,7 @@ import { tracker } from "./src/tracker"
|
|||||||
import React from "react"
|
import React from "react"
|
||||||
|
|
||||||
export default class TelemetryRendererExtension extends LensRendererExtension {
|
export default class TelemetryRendererExtension extends LensRendererExtension {
|
||||||
async onActivate() {
|
appPreferences = [
|
||||||
console.log("telemetry extension activated")
|
|
||||||
tracker.start()
|
|
||||||
await telemetryPreferencesStore.loadExtension(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
registerAppPreferences() {
|
|
||||||
return [
|
|
||||||
{
|
{
|
||||||
title: "Telemetry & Usage Tracking",
|
title: "Telemetry & Usage Tracking",
|
||||||
components: {
|
components: {
|
||||||
@ -20,10 +13,11 @@ export default class TelemetryRendererExtension extends LensRendererExtension {
|
|||||||
Input: () => <TelemetryPreferenceInput telemetry={telemetryPreferencesStore}/>
|
Input: () => <TelemetryPreferenceInput telemetry={telemetryPreferencesStore}/>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
];
|
||||||
}
|
|
||||||
|
|
||||||
onDeactivate() {
|
async onActivate() {
|
||||||
console.log("telemetry extension deactivated")
|
console.log("telemetry extension activated")
|
||||||
|
tracker.start()
|
||||||
|
await telemetryPreferencesStore.loadExtension(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,25 +37,25 @@ export class ExtensionLoader {
|
|||||||
loadOnMain() {
|
loadOnMain() {
|
||||||
logger.info('[EXTENSIONS-LOADER]: load on main')
|
logger.info('[EXTENSIONS-LOADER]: load on main')
|
||||||
this.autoloadExtensions((extension: LensMainExtension) => {
|
this.autoloadExtensions((extension: LensMainExtension) => {
|
||||||
extension.register(menuRegistry, extension.registerAppMenus())
|
extension.registerTo(menuRegistry, extension.appMenus)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
loadOnClusterManagerRenderer() {
|
loadOnClusterManagerRenderer() {
|
||||||
logger.info('[EXTENSIONS-LOADER]: load on main renderer (cluster manager)')
|
logger.info('[EXTENSIONS-LOADER]: load on main renderer (cluster manager)')
|
||||||
this.autoloadExtensions((extension: LensRendererExtension) => {
|
this.autoloadExtensions((extension: LensRendererExtension) => {
|
||||||
extension.register(globalPageRegistry, extension.registerGlobalPages())
|
extension.registerTo(globalPageRegistry, extension.globalPages)
|
||||||
extension.register(appPreferenceRegistry, extension.registerAppPreferences())
|
extension.registerTo(appPreferenceRegistry, extension.appPreferences)
|
||||||
extension.register(clusterFeatureRegistry, extension.registerClusterFeatures())
|
extension.registerTo(clusterFeatureRegistry, extension.clusterFeatures)
|
||||||
extension.register(statusBarRegistry, extension.registerStatusBarItems())
|
extension.registerTo(statusBarRegistry, extension.statusBarItems)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
loadOnClusterRenderer() {
|
loadOnClusterRenderer() {
|
||||||
logger.info('[EXTENSIONS-LOADER]: load on cluster renderer (dashboard)')
|
logger.info('[EXTENSIONS-LOADER]: load on cluster renderer (dashboard)')
|
||||||
this.autoloadExtensions((extension: LensRendererExtension) => {
|
this.autoloadExtensions((extension: LensRendererExtension) => {
|
||||||
extension.register(clusterPageRegistry, extension.registerClusterPages())
|
extension.registerTo(clusterPageRegistry, extension.clusterPages)
|
||||||
extension.register(kubeObjectMenuRegistry, extension.registerKubeObjectMenus())
|
extension.registerTo(kubeObjectMenuRegistry, extension.kubeObjectMenuItems)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -78,8 +78,8 @@ export class LensExtension implements ExtensionModel {
|
|||||||
// mock
|
// mock
|
||||||
}
|
}
|
||||||
|
|
||||||
register<T = any>(registry: BaseRegistry<T>, registryItems: T[]) {
|
registerTo<T = any>(registry: BaseRegistry<T>, items: T[] = []) {
|
||||||
const disposers = registryItems.map(item => registry.add(item));
|
const disposers = items.map(item => registry.add(item));
|
||||||
this.disposers.push(...disposers);
|
this.disposers.push(...disposers);
|
||||||
return () => {
|
return () => {
|
||||||
this.disposers = this.disposers.filter(disposer => !disposers.includes(disposer))
|
this.disposers = this.disposers.filter(disposer => !disposers.includes(disposer))
|
||||||
|
|||||||
@ -1,12 +1,7 @@
|
|||||||
import { LensExtension } from "./lens-extension"
|
|
||||||
import type { MenuRegistration } from "./registries/menu-registry";
|
import type { MenuRegistration } from "./registries/menu-registry";
|
||||||
|
import { observable } from "mobx";
|
||||||
|
import { LensExtension } from "./lens-extension"
|
||||||
|
|
||||||
export class LensMainExtension extends LensExtension {
|
export class LensMainExtension extends LensExtension {
|
||||||
registerAppMenus(): MenuRegistration[] {
|
@observable.shallow appMenus: MenuRegistration[] = []
|
||||||
return []
|
|
||||||
}
|
|
||||||
|
|
||||||
registerPrometheusProviders(): any[] {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,28 +1,12 @@
|
|||||||
import { LensExtension } from "./lens-extension"
|
|
||||||
import type { AppPreferenceRegistration, ClusterFeatureRegistration, KubeObjectMenuRegistration, PageRegistration, StatusBarRegistration } from "./registries"
|
import type { AppPreferenceRegistration, ClusterFeatureRegistration, KubeObjectMenuRegistration, PageRegistration, StatusBarRegistration } from "./registries"
|
||||||
|
import { observable } from "mobx";
|
||||||
|
import { LensExtension } from "./lens-extension"
|
||||||
|
|
||||||
export class LensRendererExtension extends LensExtension {
|
export class LensRendererExtension extends LensExtension {
|
||||||
registerGlobalPages(): PageRegistration[] {
|
@observable.shallow globalPages: PageRegistration[] = []
|
||||||
return []
|
@observable.shallow clusterPages: PageRegistration[] = []
|
||||||
}
|
@observable.shallow appPreferences: AppPreferenceRegistration[] = []
|
||||||
|
@observable.shallow clusterFeatures: ClusterFeatureRegistration[] = []
|
||||||
registerClusterPages(): PageRegistration[] {
|
@observable.shallow statusBarItems: StatusBarRegistration[] = []
|
||||||
return []
|
@observable.shallow kubeObjectMenuItems: KubeObjectMenuRegistration[] = []
|
||||||
}
|
|
||||||
|
|
||||||
registerAppPreferences(): AppPreferenceRegistration[] {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
|
|
||||||
registerClusterFeatures(): ClusterFeatureRegistration[] {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
|
|
||||||
registerStatusBarItems(): StatusBarRegistration[] {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
|
|
||||||
registerKubeObjectMenus(): KubeObjectMenuRegistration[] {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user