From 3b4983695ef9af1755fbac31936a6d1076bff834 Mon Sep 17 00:00:00 2001 From: Josh Hunt Date: Fri, 12 Apr 2024 13:26:13 +0100 Subject: [PATCH] E2C: Remove mock api (#86043) --- public/app/core/reducers/root.ts | 2 - .../app/features/migrate-to-cloud/mockAPI.ts | 229 ------------------ .../onprem/DisconnectModal.tsx | 6 +- public/app/store/configureStore.ts | 42 +--- 4 files changed, 4 insertions(+), 275 deletions(-) delete mode 100644 public/app/features/migrate-to-cloud/mockAPI.ts diff --git a/public/app/core/reducers/root.ts b/public/app/core/reducers/root.ts index 761d7ab8efc..40c029475c0 100644 --- a/public/app/core/reducers/root.ts +++ b/public/app/core/reducers/root.ts @@ -17,7 +17,6 @@ import foldersReducers from 'app/features/folders/state/reducers'; import invitesReducers from 'app/features/invites/state/reducers'; import importDashboardReducers from 'app/features/manage-dashboards/state/reducers'; import { cloudMigrationAPI } from 'app/features/migrate-to-cloud/api'; -import { migrateToCloudMockAPI } from 'app/features/migrate-to-cloud/mockAPI'; import organizationReducers from 'app/features/org/state/reducers'; import panelsReducers from 'app/features/panel/state/reducers'; import { reducer as pluginsReducer } from 'app/features/plugins/admin/state/reducer'; @@ -57,7 +56,6 @@ const rootReducers = { [alertingApi.reducerPath]: alertingApi.reducer, [publicDashboardApi.reducerPath]: publicDashboardApi.reducer, [browseDashboardsAPI.reducerPath]: browseDashboardsAPI.reducer, - [migrateToCloudMockAPI.reducerPath]: migrateToCloudMockAPI.reducer, [cloudMigrationAPI.reducerPath]: cloudMigrationAPI.reducer, }; diff --git a/public/app/features/migrate-to-cloud/mockAPI.ts b/public/app/features/migrate-to-cloud/mockAPI.ts deleted file mode 100644 index 93d1110ccb7..00000000000 --- a/public/app/features/migrate-to-cloud/mockAPI.ts +++ /dev/null @@ -1,229 +0,0 @@ -import { BaseQueryFn, createApi } from '@reduxjs/toolkit/query/react'; -import { lastValueFrom } from 'rxjs'; - -import { BackendSrvRequest, getBackendSrv } from '@grafana/runtime'; - -interface RequestOptions extends BackendSrvRequest { - manageError?: (err: unknown) => { error: unknown }; - showErrorAlert?: boolean; -} - -function createBackendSrvBaseQuery({ baseURL }: { baseURL: string }): BaseQueryFn { - async function backendSrvBaseQuery(requestOptions: RequestOptions) { - try { - const { data: responseData, ...meta } = await lastValueFrom( - getBackendSrv().fetch({ - ...requestOptions, - url: baseURL + requestOptions.url, - showErrorAlert: requestOptions.showErrorAlert, - }) - ); - return { data: responseData, meta }; - } catch (error) { - return requestOptions.manageError ? requestOptions.manageError(error) : { error }; - } - } - - return backendSrvBaseQuery; -} - -interface MigrateToCloudStatusDTO { - enabled: boolean; - stackURL?: string; -} - -interface CreateMigrationTokenResponseDTO { - token: string; -} - -export interface ConnectStackDTOMock { - stackURL: string; - token: string; -} - -type MigrationResourceStatus = 'not-migrated' | 'migrated' | 'migrating' | 'failed'; - -export interface MigrationResourceDatasource { - uid: string; - status: MigrationResourceStatus; - statusMessage?: string; - type: 'datasource'; - resource: { - uid: string; - name: string; - type: string; - icon?: string; - }; -} - -export interface MigrationResourceDashboard { - uid: string; - status: MigrationResourceStatus; - statusMessage?: string; - type: 'dashboard'; - resource: { - uid: string; - name: string; - }; -} - -export type MigrationResourceDTOMock = MigrationResourceDatasource | MigrationResourceDashboard; - -const mockApplications = ['auth-service', 'web server', 'backend']; -const mockEnvs = ['DEV', 'PROD']; -const mockRoles = ['db', 'load-balancer', 'server', 'logs']; -const mockDataSources = ['Prometheus', 'Loki', 'AWS Athena', 'AWS Cloudwatch', 'InfluxDB', 'Elasticsearch']; - -const mockDataSourceMetadata: Record = { - Prometheus: { - image: 'https://grafana.com/api/plugins/prometheus/versions/5.0.0/logos/small', - }, - - Loki: { - image: 'https://grafana.com/api/plugins/loki/versions/5.0.0/logos/small', - }, - - 'AWS Athena': { - image: 'https://grafana.com/api/plugins/grafana-athena-datasource/versions/2.13.5/logos/small', - }, - - 'AWS Cloudwatch': { - image: 'https://grafana.com/api/plugins/computest-cloudwatchalarm-datasource/versions/2.0.0/logos/small', - }, - - InfluxDB: { - image: 'https://grafana.com/api/plugins/influxdb/versions/5.0.0/logos/small', - }, - - Elasticsearch: { - image: 'https://grafana.com/api/plugins/elasticsearch/versions/5.0.0/logos/small', - }, -}; - -const mockMigrationResources: MigrationResourceDTOMock[] = Array.from({ length: 500 }).map((_, index) => { - const dataSource = mockDataSources[index % mockDataSources.length]; - const environment = mockEnvs[index % mockEnvs.length]; - const application = mockApplications[index % mockApplications.length]; - const role = mockRoles[index % mockRoles.length]; - - return { - status: 'not-migrated', - type: 'datasource', - uid: index.toString(16), - resource: { - uid: `${application}-${environment}-${role}-${index}`, - name: `${application} ${environment} ${role}`, - icon: mockDataSourceMetadata[dataSource]?.image, - type: dataSource, - }, - }; -}); - -mockMigrationResources[0].status = 'migrated'; -mockMigrationResources[1].status = 'failed'; -mockMigrationResources[1].statusMessage = `Source map error: Error: request failed with status 404 -Resource URL: http://localhost:3000/public/build/app.f4d0c6a0daa6a5b14892.js -Source Map URL: app.f4d0c6a0daa6a5b14892.js.map`; -mockMigrationResources[2].status = 'migrated'; -mockMigrationResources[3].status = 'migrated'; -mockMigrationResources[4].status = 'migrating'; -mockMigrationResources[5].status = 'migrating'; - -// TODO remove these mock properties/functions -const queryParams = new URLSearchParams(window.location.search); -const MOCK_DELAY_MS = 1000; -const MOCK_TOKEN = 'TODO_thisWillBeABigLongToken'; -let HAS_MIGRATION_TOKEN = false; -let HAS_STACK_DETAILS = !!queryParams.get('mockStackURL'); -let STACK_URL: string | undefined = queryParams.get('mockStackURL') || undefined; - -function dataWithMockDelay(data: T): Promise<{ data: T }> { - return new Promise((resolve) => { - setTimeout(() => { - resolve({ data }); - }, MOCK_DELAY_MS); - }); -} - -export const migrateToCloudMockAPI = createApi({ - tagTypes: ['migrationToken', 'stackDetails', 'resource'], - reducerPath: 'migrateToCloudMockAPI', - baseQuery: createBackendSrvBaseQuery({ baseURL: '/api' }), - endpoints: (builder) => ({ - // TODO :) - getStatus: builder.query({ - providesTags: ['stackDetails'], - queryFn: () => { - const responseData: MigrateToCloudStatusDTO = { enabled: HAS_STACK_DETAILS }; - if (STACK_URL) { - responseData.stackURL = STACK_URL; - } - return dataWithMockDelay(responseData); - }, - }), - - connectStack: builder.mutation({ - invalidatesTags: ['stackDetails'], - queryFn: async ({ stackURL }) => { - HAS_STACK_DETAILS = true; - STACK_URL = stackURL; - return dataWithMockDelay(undefined); - }, - }), - - disconnectStack: builder.mutation({ - invalidatesTags: ['stackDetails'], - queryFn: async () => { - HAS_STACK_DETAILS = false; - return dataWithMockDelay(undefined); - }, - }), - - createMigrationToken: builder.mutation({ - invalidatesTags: ['migrationToken'], - queryFn: async () => { - HAS_MIGRATION_TOKEN = true; - return dataWithMockDelay({ token: MOCK_TOKEN }); - }, - }), - - deleteMigrationToken: builder.mutation({ - invalidatesTags: ['migrationToken'], - queryFn: async () => { - HAS_MIGRATION_TOKEN = false; - return dataWithMockDelay(undefined); - }, - }), - - hasMigrationToken: builder.query({ - providesTags: ['migrationToken'], - queryFn: async () => { - return dataWithMockDelay(HAS_MIGRATION_TOKEN); - }, - }), - - startMigration: builder.mutation({ - queryFn: async () => { - return dataWithMockDelay(undefined); - }, - }), - - listResources: builder.query({ - providesTags: ['resource'], - queryFn: async () => { - return dataWithMockDelay(mockMigrationResources); - }, - }), - }), -}); - -export const { - useGetStatusQuery: useGetStatusQueryMock, - useConnectStackMutation: useConnectStackMutationMock, - useDisconnectStackMutation: useDisconnectStackMutationMock, - useCreateMigrationTokenMutation: useCreateMigrationTokenMutationMock, - useDeleteMigrationTokenMutation: useDeleteMigrationTokenMutationMock, - useHasMigrationTokenQuery: useHasMigrationTokenQueryMock, - useListResourcesQuery: useListResourcesQueryMock, - useStartMigrationMutation: useStartMigrationMutationMock, -} = migrateToCloudMockAPI; diff --git a/public/app/features/migrate-to-cloud/onprem/DisconnectModal.tsx b/public/app/features/migrate-to-cloud/onprem/DisconnectModal.tsx index 486e71255d9..f44c9258342 100644 --- a/public/app/features/migrate-to-cloud/onprem/DisconnectModal.tsx +++ b/public/app/features/migrate-to-cloud/onprem/DisconnectModal.tsx @@ -3,15 +3,15 @@ import React, { useCallback } from 'react'; import { Alert, ConfirmModal, Stack } from '@grafana/ui'; import { Trans, t } from 'app/core/internationalization'; -import { useDisconnectStackMutationMock } from '../mockAPI'; - interface Props { isOpen: boolean; onDismiss: () => void; } export const DisconnectModal = ({ isOpen, onDismiss }: Props) => { - const [disconnectStack, { isLoading, isError }] = useDisconnectStackMutationMock(); + const disconnectStack = useCallback(() => ({}), []); + const isLoading = false; + const isError = false; const handleConfirm = useCallback(async () => { const resp = await disconnectStack(); diff --git a/public/app/store/configureStore.ts b/public/app/store/configureStore.ts index a33dc4caaaa..3fed0e7644f 100644 --- a/public/app/store/configureStore.ts +++ b/public/app/store/configureStore.ts @@ -4,7 +4,6 @@ import { setupListeners } from '@reduxjs/toolkit/query'; import { browseDashboardsAPI } from 'app/features/browse-dashboards/api/browseDashboardsAPI'; import { publicDashboardApi } from 'app/features/dashboard/api/publicDashboardApi'; import { cloudMigrationAPI } from 'app/features/migrate-to-cloud/api'; -import { migrateToCloudMockAPI } from 'app/features/migrate-to-cloud/mockAPI'; import { StoreState } from 'app/types/store'; import { buildInitialState } from '../core/reducers/navModel'; @@ -31,8 +30,7 @@ export function configureStore(initialState?: Partial) { alertingApi.middleware, publicDashboardApi.middleware, browseDashboardsAPI.middleware, - cloudMigrationAPI.middleware, - migrateToCloudMockAPI.middleware + cloudMigrationAPI.middleware ), devTools: process.env.NODE_ENV !== 'production', preloadedState: { @@ -50,41 +48,3 @@ export function configureStore(initialState?: Partial) { export type RootState = ReturnType['getState']>; export type AppDispatch = ReturnType['dispatch']; - -/* -function getActionsToIgnoreSerializableCheckOn() { - return [ - 'dashboard/setPanelAngularComponent', - 'dashboard/panelModelAndPluginReady', - 'dashboard/dashboardInitCompleted', - 'plugins/panelPluginLoaded', - 'explore/initializeExplore', - 'explore/changeRange', - 'explore/updateDatasourceInstance', - 'explore/queryStoreSubscription', - 'explore/queryStreamUpdated', - ]; -} - -function getPathsToIgnoreMutationAndSerializableCheckOn() { - return [ - 'plugins.panels', - 'dashboard.panels', - 'dashboard.getModel', - 'payload.plugin', - 'panelEditorNew.getPanel', - 'panelEditorNew.getSourcePanel', - 'panelEditorNew.getData', - 'explore.left.queryResponse', - 'explore.right.queryResponse', - 'explore.left.datasourceInstance', - 'explore.right.datasourceInstance', - 'explore.left.range', - 'explore.left.eventBridge', - 'explore.right.eventBridge', - 'explore.right.range', - 'explore.left.querySubscription', - 'explore.right.querySubscription', - ]; -} -*/