⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.72
Server IP:
41.128.143.86
Server:
Linux host.raqmix.cloud 6.8.0-1025-azure #30~22.04.1-Ubuntu SMP Wed Mar 12 15:28:20 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.3.23
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
share
/
grafana
/
public
/
app
/
features
/
admin
/
View File Name :
AdminFeatureTogglesAPI.ts
import { getBackendSrv } from '@grafana/runtime'; export type FeatureToggle = { name: string; description?: string; enabled: boolean; stage: string; readOnly?: boolean; hidden?: boolean; }; export type CurrentTogglesState = { restartRequired: boolean; allowEditing: boolean; toggles: FeatureToggle[]; }; interface ResolvedToggleState { kind: 'ResolvedToggleState'; restartRequired?: boolean; allowEditing?: boolean; toggles?: K8sToggleSpec[]; // not used in patch enabled: { [key: string]: boolean }; } interface K8sToggleSpec { name: string; description: string; enabled: boolean; writeable: boolean; source: K8sToggleSource; stage: string; } interface K8sToggleSource { namespace: string; name: string; } interface FeatureTogglesAPI { getFeatureToggles(): Promise
; updateFeatureToggles(toggles: FeatureToggle[]): Promise
; } class K8sAPI implements FeatureTogglesAPI { baseURL = '/apis/featuretoggle.grafana.app/v0alpha1'; async getFeatureToggles(): Promise
{ const current = await getBackendSrv().get
(this.baseURL + '/current'); return { restartRequired: Boolean(current.restartRequired), allowEditing: Boolean(current.allowEditing), toggles: current.toggles!.map((t) => ({ name: t.name, description: t.description!, enabled: t.enabled, readOnly: !Boolean(t.writeable), stage: t.stage, hidden: false, // only return visible things })), }; } updateFeatureToggles(toggles: FeatureToggle[]): Promise
{ const patchBody: ResolvedToggleState = { kind: 'ResolvedToggleState', enabled: {}, }; toggles.forEach((t) => { patchBody.enabled[t.name] = t.enabled; }); return getBackendSrv().patch(this.baseURL + '/current', patchBody); } } export const getTogglesAPI = (): FeatureTogglesAPI => { return new K8sAPI(); };