From 34bf64debc81670d52f4df7e83cb27e58182551b Mon Sep 17 00:00:00 2001 From: Gianluca Zuccarelli Date: Fri, 10 Jan 2025 12:47:21 +0000 Subject: [PATCH] store/cockpitApi: get blueprint endpoint Create a get blueprint endpoint for the on-prem store. --- .../Blueprints/BlueprintDiffModal.tsx | 2 +- .../Blueprints/BuildImagesButton.tsx | 2 +- .../CreateImageWizard/EditImageWizard.tsx | 2 +- .../utilities/useValidation.tsx | 6 ++-- src/store/backendApi.ts | 13 +++++++ src/store/cockpitApi.ts | 34 +++++++++++++++++-- 6 files changed, 50 insertions(+), 9 deletions(-) diff --git a/src/Components/Blueprints/BlueprintDiffModal.tsx b/src/Components/Blueprints/BlueprintDiffModal.tsx index 8501fa7b..bddf26d5 100644 --- a/src/Components/Blueprints/BlueprintDiffModal.tsx +++ b/src/Components/Blueprints/BlueprintDiffModal.tsx @@ -5,9 +5,9 @@ import { Button, Modal, ModalVariant } from '@patternfly/react-core'; import { BuildImagesButton } from './BuildImagesButton'; +import { useGetBlueprintQuery } from '../../store/backendApi'; import { selectSelectedBlueprintId } from '../../store/BlueprintSlice'; import { useAppSelector } from '../../store/hooks'; -import { useGetBlueprintQuery } from '../../store/imageBuilderApi'; type blueprintDiffProps = { // baseVersion is the version of the blueprint to compare the latest version against diff --git a/src/Components/Blueprints/BuildImagesButton.tsx b/src/Components/Blueprints/BuildImagesButton.tsx index 25e364ff..c486322a 100644 --- a/src/Components/Blueprints/BuildImagesButton.tsx +++ b/src/Components/Blueprints/BuildImagesButton.tsx @@ -19,12 +19,12 @@ import { addNotification } from '@redhat-cloud-services/frontend-components-noti import { skipToken } from '@reduxjs/toolkit/query'; import { targetOptions } from '../../constants'; +import { useGetBlueprintQuery } from '../../store/backendApi'; import { selectSelectedBlueprintId } from '../../store/BlueprintSlice'; import { useAppDispatch, useAppSelector } from '../../store/hooks'; import { ImageTypes, useComposeBlueprintMutation, - useGetBlueprintQuery, } from '../../store/imageBuilderApi'; type BuildImagesButtonPropTypes = { diff --git a/src/Components/CreateImageWizard/EditImageWizard.tsx b/src/Components/CreateImageWizard/EditImageWizard.tsx index 31721de5..cf30de0b 100644 --- a/src/Components/CreateImageWizard/EditImageWizard.tsx +++ b/src/Components/CreateImageWizard/EditImageWizard.tsx @@ -5,8 +5,8 @@ import { useNavigate } from 'react-router-dom'; import CreateImageWizard from './CreateImageWizard'; import { mapRequestToState } from './utilities/requestMapper'; +import { useGetBlueprintQuery } from '../../store/backendApi'; import { useAppDispatch } from '../../store/hooks'; -import { useGetBlueprintQuery } from '../../store/imageBuilderApi'; import { loadWizardState } from '../../store/wizardSlice'; import { resolveRelPath } from '../../Utilities/path'; diff --git a/src/Components/CreateImageWizard/utilities/useValidation.tsx b/src/Components/CreateImageWizard/utilities/useValidation.tsx index 25aba363..433039ee 100644 --- a/src/Components/CreateImageWizard/utilities/useValidation.tsx +++ b/src/Components/CreateImageWizard/utilities/useValidation.tsx @@ -1,11 +1,9 @@ import { useEffect, useState } from 'react'; import { UNIQUE_VALIDATION_DELAY } from '../../../constants'; +import { useLazyGetBlueprintsQuery } from '../../../store/backendApi'; import { useAppSelector } from '../../../store/hooks'; -import { - BlueprintsResponse, - useLazyGetBlueprintsQuery, -} from '../../../store/imageBuilderApi'; +import { BlueprintsResponse } from '../../../store/imageBuilderApi'; import { useShowActivationKeyQuery } from '../../../store/rhsmApi'; import { selectBlueprintId, diff --git a/src/store/backendApi.ts b/src/store/backendApi.ts index 733801d9..11a062e7 100644 --- a/src/store/backendApi.ts +++ b/src/store/backendApi.ts @@ -1,24 +1,37 @@ import { useGetArchitecturesQuery as useCockpitGetArchitecturesQuery, + useGetBlueprintQuery as useCockpitGetBlueprintQuery, useGetBlueprintsQuery as useCockpitGetBlueprintsQuery, + useLazyGetBlueprintsQuery as useCockpitLazyGetBlueprintsQuery, useDeleteBlueprintMutation as useCockpitDeleteMutation, } from './cockpitApi'; import { cockpitApi } from './enhancedCockpitApi'; import { imageBuilderApi } from './enhancedImageBuilderApi'; import { useGetArchitecturesQuery as useImageBuilderGetArchitecturesQuery, + useGetBlueprintQuery as useImageBuilderGetBlueprintQuery, useGetBlueprintsQuery as useImageBuilderGetBlueprintsQuery, + useLazyGetBlueprintsQuery as useImageBuilderLazyGetBlueprintsQuery, useDeleteBlueprintMutation as useImageBuilderDeleteMutation, + useGetOscapProfilesQuery as useImageBuilderGetOscapProfilesQuery, } from './imageBuilderApi'; export const useGetArchitecturesQuery = process.env.IS_ON_PREMISE ? useCockpitGetArchitecturesQuery : useImageBuilderGetArchitecturesQuery; +export const useGetBlueprintQuery = process.env.IS_ON_PREMISE + ? useCockpitGetBlueprintQuery + : useImageBuilderGetBlueprintQuery; + export const useGetBlueprintsQuery = process.env.IS_ON_PREMISE ? useCockpitGetBlueprintsQuery : useImageBuilderGetBlueprintsQuery; +export const useLazyGetBlueprintsQuery = process.env.IS_ON_PREMISE + ? useCockpitLazyGetBlueprintsQuery + : useImageBuilderLazyGetBlueprintsQuery; + export const useDeleteBlueprintMutation = process.env.IS_ON_PREMISE ? useCockpitDeleteMutation : useImageBuilderDeleteMutation; diff --git a/src/store/cockpitApi.ts b/src/store/cockpitApi.ts index 661f20ca..dd5738f1 100644 --- a/src/store/cockpitApi.ts +++ b/src/store/cockpitApi.ts @@ -19,6 +19,8 @@ import { DeleteBlueprintApiResponse, DeleteBlueprintApiArg, BlueprintItem, + GetBlueprintApiResponse, + GetBlueprintApiArg, } from './imageBuilderApi'; import { mapOnPremToHosted } from '../Components/Blueprints/helpers/onPremToHostedBlueprintMapper'; @@ -70,6 +72,32 @@ export const cockpitApi = emptyCockpitApi.injectEndpoints({ }; }, }), + getBlueprint: builder.query({ + queryFn: async ({ id, version }) => { + try { + const blueprintsDir = await getBlueprintsPath(); + const file = cockpit.file(path.join(blueprintsDir, id)); + + const contents = await file.read(); + const parsed = toml.parse(contents); + file.close(); + + const blueprint = mapOnPremToHosted(parsed); + + return { + data: { + ...blueprint, + id, + version, + last_modified_at: Date.now().toString(), + image_requests: [], + }, + }; + } catch (error) { + return { error }; + } + }, + }), getBlueprints: builder.query< GetBlueprintsApiResponse, GetBlueprintsApiArg @@ -175,7 +203,9 @@ export const cockpitApi = emptyCockpitApi.injectEndpoints({ }); export const { - useGetBlueprintsQuery, - useDeleteBlueprintMutation, useGetArchitecturesQuery, + useGetBlueprintQuery, + useGetBlueprintsQuery, + useLazyGetBlueprintsQuery, + useDeleteBlueprintMutation, } = cockpitApi;