170 lines
4.5 KiB
TypeScript
170 lines
4.5 KiB
TypeScript
import { PluginLoadingStrategy, PluginMeta, PluginType } from '@grafana/data';
|
|
import { AppPluginConfig, setPluginComponentsHook, setPluginExtensionsHook } from '@grafana/runtime';
|
|
import { SupportedPlugin } from 'app/features/alerting/unified/types/pluginBridges';
|
|
|
|
import { mockPluginLinkExtension } from '../mocks';
|
|
|
|
export function setupPluginsExtensionsHook() {
|
|
setPluginExtensionsHook(() => ({
|
|
extensions: plugins.map((plugin) =>
|
|
mockPluginLinkExtension({
|
|
pluginId: plugin.id,
|
|
title: plugin.name,
|
|
path: `/a/${plugin.id}`,
|
|
})
|
|
),
|
|
isLoading: false,
|
|
}));
|
|
setPluginComponentsHook(() => ({
|
|
components: [],
|
|
isLoading: false,
|
|
}));
|
|
}
|
|
|
|
export const pluginMeta = {
|
|
[SupportedPlugin.Slo]: {
|
|
id: SupportedPlugin.Slo,
|
|
name: 'SLO dashboard',
|
|
type: PluginType.app,
|
|
enabled: true,
|
|
info: {
|
|
author: {
|
|
name: 'Grafana Labs',
|
|
url: '',
|
|
},
|
|
description: 'Create and manage Service Level Objectives',
|
|
links: [],
|
|
logos: {
|
|
small: 'public/plugins/grafana-slo-app/img/logo.svg',
|
|
large: 'public/plugins/grafana-slo-app/img/logo.svg',
|
|
},
|
|
screenshots: [],
|
|
version: 'local-dev',
|
|
updated: '2024-04-09',
|
|
},
|
|
module: 'public/plugins/grafana-slo-app/module.js',
|
|
baseUrl: 'public/plugins/grafana-slo-app',
|
|
} satisfies PluginMeta,
|
|
[SupportedPlugin.Irm]: {
|
|
id: SupportedPlugin.Irm,
|
|
name: 'Grafana IRM',
|
|
type: PluginType.app,
|
|
enabled: true,
|
|
info: {
|
|
author: { name: 'Grafana Labs', url: '' },
|
|
description: 'Grafana IRM',
|
|
links: [],
|
|
logos: {
|
|
small: 'public/plugins/grafana-irm-app/img/logo.svg',
|
|
large: 'public/plugins/grafana-irm-app/img/logo.svg',
|
|
},
|
|
screenshots: [],
|
|
version: 'local-dev',
|
|
updated: '2024-04-09',
|
|
},
|
|
module: 'public/plugins/grafana-irm-app/module.js',
|
|
baseUrl: 'public/plugins/grafana-irm-app',
|
|
} satisfies PluginMeta,
|
|
[SupportedPlugin.Incident]: {
|
|
id: SupportedPlugin.Incident,
|
|
name: 'Incident management',
|
|
type: PluginType.app,
|
|
enabled: true,
|
|
info: {
|
|
author: {
|
|
name: 'Grafana Labs',
|
|
url: '',
|
|
},
|
|
description: 'Incident management',
|
|
links: [],
|
|
logos: {
|
|
small: 'public/plugins/grafana-incident-app/img/logo.svg',
|
|
large: 'public/plugins/grafana-incident-app/img/logo.svg',
|
|
},
|
|
screenshots: [],
|
|
version: 'local-dev',
|
|
updated: '2024-04-09',
|
|
},
|
|
module: 'public/plugins/grafana-incident-app/module.js',
|
|
baseUrl: 'public/plugins/grafana-incident-app',
|
|
} satisfies PluginMeta,
|
|
[SupportedPlugin.OnCall]: {
|
|
id: SupportedPlugin.OnCall,
|
|
name: 'OnCall',
|
|
type: PluginType.app,
|
|
enabled: true,
|
|
info: {
|
|
author: {
|
|
name: 'Grafana Labs',
|
|
url: '',
|
|
},
|
|
description: 'OnCall',
|
|
links: [],
|
|
logos: {
|
|
small: '',
|
|
large: '',
|
|
},
|
|
screenshots: [],
|
|
version: 'local-dev',
|
|
updated: '2024-04-09',
|
|
},
|
|
module: 'public/plugins/grafana-oncall-app/module.js',
|
|
baseUrl: 'public/plugins/grafana-oncall-app',
|
|
} satisfies PluginMeta,
|
|
['grafana-asserts-app']: {
|
|
id: 'grafana-asserts-app',
|
|
name: 'Asserts',
|
|
type: PluginType.app,
|
|
enabled: true,
|
|
info: {
|
|
author: {
|
|
name: 'Grafana Labs',
|
|
url: '',
|
|
},
|
|
description: 'Asserts',
|
|
links: [],
|
|
logos: {
|
|
small: 'public/plugins/grafana-asserts-app/img/logo.svg',
|
|
large: 'public/plugins/grafana-asserts-app/img/logo.svg',
|
|
},
|
|
screenshots: [],
|
|
version: 'local-dev',
|
|
updated: '2024-04-09',
|
|
},
|
|
module: 'public/plugins/grafana-asserts-app/module.js',
|
|
baseUrl: 'public/plugins/grafana-asserts-app',
|
|
} satisfies PluginMeta,
|
|
};
|
|
|
|
export const plugins: PluginMeta[] = [
|
|
pluginMeta[SupportedPlugin.Slo],
|
|
pluginMeta[SupportedPlugin.Incident],
|
|
pluginMeta[SupportedPlugin.OnCall],
|
|
pluginMeta['grafana-asserts-app'],
|
|
];
|
|
|
|
export function pluginMetaToPluginConfig(pluginMeta: PluginMeta): AppPluginConfig {
|
|
return {
|
|
id: pluginMeta.id,
|
|
path: pluginMeta.baseUrl,
|
|
preload: true,
|
|
version: pluginMeta.info.version,
|
|
angular: { detected: false, hideDeprecation: false },
|
|
loadingStrategy: PluginLoadingStrategy.script,
|
|
dependencies: {
|
|
plugins: [],
|
|
grafanaVersion: 'local-dev',
|
|
extensions: {
|
|
exposedComponents: [],
|
|
},
|
|
},
|
|
extensions: {
|
|
addedLinks: [],
|
|
addedComponents: [],
|
|
extensionPoints: [],
|
|
exposedComponents: [],
|
|
addedFunctions: [],
|
|
},
|
|
};
|
|
}
|