Provisioning: Add feature toggle (#102436)

* Provisioning: Add feature toggle

* Provisioning: Use isManagedRepository

* Fix toggle
pull/102380/head^2
Alex Khomenko 3 months ago committed by GitHub
parent 9a556fbde6
commit 229f37edb0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 3
      public/app/features/dashboard-scene/saving/provisioned/utils/getProvisionedMeta.ts
  2. 3
      public/app/features/dashboard-scene/scene/DashboardScene.tsx
  3. 4
      public/app/features/dashboard-scene/scene/NavToolbarActions.tsx
  4. 2
      public/app/features/dashboard-scene/settings/GeneralSettingsEditView.tsx
  5. 2
      public/app/features/dashboard/dashgrid/DashboardEmpty.tsx
  6. 6
      public/app/features/provisioning/hooks/useIsProvisionedNG.ts

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

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

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

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

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

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

Loading…
Cancel
Save