From feabc773dd8435e2a38fa8d947a7518cd3c66366 Mon Sep 17 00:00:00 2001 From: Ashley McEntee <123661468+ashley-o0o@users.noreply.github.com> Date: Fri, 7 Feb 2025 15:30:34 -0500 Subject: [PATCH] Connection type admin view feature flag --- backend/src/types.ts | 1 + backend/src/utils/constants.ts | 1 + frontend/src/__mocks__/mockDashboardConfig.ts | 3 +++ .../connectionTypes/connectionTypes.cy.ts | 17 +++++++++++++++++ frontend/src/concepts/areas/const.ts | 4 ++++ frontend/src/concepts/areas/types.ts | 1 + frontend/src/k8sTypes.ts | 1 + frontend/src/utilities/NavData.tsx | 5 +++-- 8 files changed, 31 insertions(+), 2 deletions(-) diff --git a/backend/src/types.ts b/backend/src/types.ts index deda111919..7224316637 100644 --- a/backend/src/types.ts +++ b/backend/src/types.ts @@ -47,6 +47,7 @@ export type DashboardConfig = K8sResourceCommon & { disableConnectionTypes: boolean; disableStorageClasses: boolean; disableNIMModelServing: boolean; + disableAdminConnectionTypes: boolean; }; /** @deprecated -- replacing this with Platform Auth resource -- remove when this is no longer in the CRD */ groupsConfig?: { diff --git a/backend/src/utils/constants.ts b/backend/src/utils/constants.ts index b776870f71..854e09428c 100644 --- a/backend/src/utils/constants.ts +++ b/backend/src/utils/constants.ts @@ -73,6 +73,7 @@ export const blankDashboardCR: DashboardConfig = { disableConnectionTypes: false, disableStorageClasses: false, disableNIMModelServing: true, + disableAdminConnectionTypes: true, }, notebookController: { enabled: true, diff --git a/frontend/src/__mocks__/mockDashboardConfig.ts b/frontend/src/__mocks__/mockDashboardConfig.ts index bd39998bdb..69034311af 100644 --- a/frontend/src/__mocks__/mockDashboardConfig.ts +++ b/frontend/src/__mocks__/mockDashboardConfig.ts @@ -35,6 +35,7 @@ export type MockDashboardConfigType = { disableNotebookController?: boolean; notebookSizes?: NotebookSize[]; disableNIMModelServing?: boolean; + disableAdminConnectionTypes?: boolean; }; export const mockDashboardConfig = ({ @@ -69,6 +70,7 @@ export const mockDashboardConfig = ({ disableStorageClasses = false, disableNotebookController = false, disableNIMModelServing = true, + disableAdminConnectionTypes = true, notebookSizes = [ { name: 'XSmall', @@ -180,6 +182,7 @@ export const mockDashboardConfig = ({ disableServingRuntimeParams, disableStorageClasses, disableNIMModelServing, + disableAdminConnectionTypes, }, notebookController: { enabled: !disableNotebookController, diff --git a/frontend/src/__tests__/cypress/cypress/tests/mocked/connectionTypes/connectionTypes.cy.ts b/frontend/src/__tests__/cypress/cypress/tests/mocked/connectionTypes/connectionTypes.cy.ts index 3b60816a4f..da0a196b63 100644 --- a/frontend/src/__tests__/cypress/cypress/tests/mocked/connectionTypes/connectionTypes.cy.ts +++ b/frontend/src/__tests__/cypress/cypress/tests/mocked/connectionTypes/connectionTypes.cy.ts @@ -21,6 +21,23 @@ it('Connection types should not be available for non product admins', () => { connectionTypesPage.findNavItem().should('not.exist'); }); +it('Connection types should be hidden by feature flag', () => { + asProductAdminUser(); + + cy.visitWithLogin('/connectionTypes'); + + cy.interceptOdh( + 'GET /api/config', + mockDashboardConfig({ + disableAdminConnectionTypes: false, + }), + ); + + cy.interceptOdh('GET /api/connection-types', []); + connectionTypesPage.visit(); + connectionTypesPage.shouldBeEmpty(); +}); + describe('Connection types', () => { beforeEach(() => { asProductAdminUser(); diff --git a/frontend/src/concepts/areas/const.ts b/frontend/src/concepts/areas/const.ts index becc3c7a16..a73204aeb3 100644 --- a/frontend/src/concepts/areas/const.ts +++ b/frontend/src/concepts/areas/const.ts @@ -34,6 +34,7 @@ export const allFeatureFlags: string[] = Object.keys({ disableServingRuntimeParams: false, disableStorageClasses: false, disableNIMModelServing: true, + disableAdminConnectionTypes: true, } satisfies DashboardCommonConfig); export const SupportedAreasStateMap: SupportedAreasState = { @@ -144,4 +145,7 @@ export const SupportedAreasStateMap: SupportedAreasState = { featureFlags: ['disableNIMModelServing'], reliantAreas: [SupportedArea.K_SERVE], }, + [SupportedArea.ADMIN_CONNECTION_TYPES]: { + featureFlags: ['disableAdminConnectionTypes'], + }, }; diff --git a/frontend/src/concepts/areas/types.ts b/frontend/src/concepts/areas/types.ts index a1ef6ca92d..7d18be2ed7 100644 --- a/frontend/src/concepts/areas/types.ts +++ b/frontend/src/concepts/areas/types.ts @@ -39,6 +39,7 @@ export enum SupportedArea { ACCELERATOR_PROFILES = 'accelerator-profiles', HARDWARE_PROFILES = 'hardware-profiles', STORAGE_CLASSES = 'storage-classes', + ADMIN_CONNECTION_TYPES = 'admin-connection-types', /* DS Projects specific areas */ DS_PROJECTS_PERMISSIONS = 'ds-projects-permission', diff --git a/frontend/src/k8sTypes.ts b/frontend/src/k8sTypes.ts index 046f20cde0..1b4e40b43a 100644 --- a/frontend/src/k8sTypes.ts +++ b/frontend/src/k8sTypes.ts @@ -1205,6 +1205,7 @@ export type DashboardCommonConfig = { disableServingRuntimeParams: boolean; disableStorageClasses: boolean; disableNIMModelServing: boolean; + disableAdminConnectionTypes: boolean; }; export type DashboardConfigKind = K8sResourceCommon & { diff --git a/frontend/src/utilities/NavData.tsx b/frontend/src/utilities/NavData.tsx index 88174f87e7..ffa94cf103 100644 --- a/frontend/src/utilities/NavData.tsx +++ b/frontend/src/utilities/NavData.tsx @@ -157,13 +157,14 @@ const useCustomRuntimesNav = (): NavDataHref[] => }, ]); -const useConnectionTypesNav = (): NavDataHref[] => [ + const useConnectionTypesNav = (): NavDataHref[] => + useAreaCheck(SupportedArea.ADMIN_CONNECTION_TYPES, [ { id: 'settings-connection-types', label: 'Connection types', href: '/connectionTypes', }, -]; +]); const useStorageClassesNav = (): NavDataHref[] => useAreaCheck(SupportedArea.STORAGE_CLASSES, [