Provisioning: Add feature toggle (#102436)

* Provisioning: Add feature toggle

* Provisioning: Use isManagedRepository

* Fix toggle
This commit is contained in:
Alex Khomenko
2025-03-19 13:31:54 +02:00
committed by GitHub
parent 9a556fbde6
commit 229f37edb0
6 changed files with 14 additions and 6 deletions

View File

@ -1,3 +1,4 @@
import { config } from '@grafana/runtime';
import { folderAPI } from 'app/api/clients/folder';
import { AnnoKeyManagerIdentity, AnnoKeyManagerKind, ManagerKind } from 'app/features/apiserver/types';
import { dispatch } from 'app/store/store';
@ -6,7 +7,7 @@ import { dispatch } from 'app/store/store';
* Get k8s dashboard metadata based on the selected folder
*/
export async function getProvisionedMeta(folderUid?: string) {
if (!folderUid) {
if (!folderUid || !config.featureToggles.provisioning) {
return {};
}
const folderQuery = await dispatch(folderAPI.endpoints.getFolder.initiate({ name: folderUid })).unwrap();

View File

@ -751,6 +751,9 @@ export class DashboardScene extends SceneObjectBase<DashboardSceneState> impleme
}
isManagedRepository() {
if (!config.featureToggles.provisioning) {
return false;
}
return Boolean(this.getManagerKind() === ManagerKind.Repo);
}

View File

@ -79,7 +79,7 @@ export function ToolbarActions({ dashboard }: Props) {
const isEditingAndShowingDashboard = isEditing && isShowingDashboard;
const dashboardNewLayouts = config.featureToggles.dashboardNewLayouts;
const folderRepo = useSelector((state) => selectFolderRepository(state, meta.folderUid));
const isManaged = Boolean(dashboard.isManaged() || folderRepo);
const isManaged = Boolean(dashboard.isManagedRepository() || folderRepo);
if (!isEditingPanel) {
// This adds the presence indicators in enterprise
@ -219,7 +219,7 @@ export function ToolbarActions({ dashboard }: Props) {
dashboard.onShowAddLibraryPanelDrawer();
DashboardInteractions.toolbarAddButtonClicked({ item: 'add_library_panel' });
}}
disabled={dashboard.isManaged()}
disabled={dashboard.isManagedRepository()}
/>
<Menu.Item
key="add-row"

View File

@ -224,7 +224,7 @@ export class GeneralSettingsEditView
<TagsInput id="tags-input" tags={tags} onChange={model.onTagsChange} width={40} />
</Field>
<Field label={t('dashboard-settings.general.folder-label', 'Folder')}>
{dashboard.isManaged() ? (
{dashboard.isManagedRepository() ? (
<Input readOnly value={meta.folderTitle} />
) : (
<FolderPicker

View File

@ -52,7 +52,7 @@ const DashboardEmpty = ({ dashboard, canCreate }: Props) => {
}
};
const isProvisioned = dashboard instanceof DashboardScene && dashboard.isManaged();
const isProvisioned = dashboard instanceof DashboardScene && dashboard.isManagedRepository();
return (
<Stack alignItems="center" justifyContent="center">
<div className={styles.wrapper}>

View File

@ -1,3 +1,4 @@
import { config } from '@grafana/runtime';
import { useGetFrontendSettingsQuery } from 'app/api/clients/provisioning';
import { useUrlParams } from 'app/core/navigation/hooks';
@ -12,8 +13,11 @@ export function useIsProvisionedNG(dashboard: DashboardScene): boolean {
const folderRepository = useGetResourceRepository({ folderUid });
const { data } = useGetFrontendSettingsQuery();
if (!config.featureToggles.provisioning) {
return false;
}
return (
dashboard.isManaged() ||
dashboard.isManagedRepository() ||
Boolean(folderRepository) ||
Boolean(data?.items.some((item) => item.target === 'instance'))
);