From 2adf5197fefb84d509b6b1f6c52ecd69d70b6def Mon Sep 17 00:00:00 2001 From: Michal Gold Date: Sun, 17 Aug 2025 16:47:19 +0300 Subject: [PATCH] Add custom repository management for cockpit-image-builder This PR adds custom repository management functionality to cockpit-image-builder, reintroducing 'sources' functionality that was available in cockpit-composer. Changes: - Add ManageRepositoriesButton component for on-premise/hosted environments - Add ManageRepositoriesModal for custom repository creation - Extend cockpit contentSourcesApi with repository endpoints - Add environment-specific API hooks in contentSourcesApi - Include comprehensive test coverage for new components --- .../components/ManageRepositoriesButton.tsx | 28 ++- .../components/ManageRepositoriesModal.tsx | 172 ++++++++++++++++++ src/store/cockpit/contentSourcesApi.ts | 60 +++++- src/store/contentSourcesApi.ts | 10 +- .../ManageRepositoriesButton.test.tsx | 87 +++++++++ .../ManageRepositoriesModal.test.tsx | 143 +++++++++++++++ 6 files changed, 494 insertions(+), 6 deletions(-) create mode 100644 src/Components/CreateImageWizard/steps/Repositories/components/ManageRepositoriesModal.tsx create mode 100644 src/test/Components/CreateImageWizard/steps/Repositories/ManageRepositoriesButton.test.tsx create mode 100644 src/test/Components/CreateImageWizard/steps/Repositories/ManageRepositoriesModal.test.tsx diff --git a/src/Components/CreateImageWizard/steps/Repositories/components/ManageRepositoriesButton.tsx b/src/Components/CreateImageWizard/steps/Repositories/components/ManageRepositoriesButton.tsx index 2e6e8541..6ffe40a6 100644 --- a/src/Components/CreateImageWizard/steps/Repositories/components/ManageRepositoriesButton.tsx +++ b/src/Components/CreateImageWizard/steps/Repositories/components/ManageRepositoriesButton.tsx @@ -1,11 +1,35 @@ -import React from 'react'; +import React, { useState } from 'react'; import { Button } from '@patternfly/react-core'; -import { ExternalLinkAltIcon } from '@patternfly/react-icons'; +import { ExternalLinkAltIcon, PlusIcon } from '@patternfly/react-icons'; + +import ManageRepositoriesModal from './ManageRepositoriesModal'; import { CONTENT_URL } from '../../../../../constants'; const ManageRepositoriesButton = () => { + const [isModalOpen, setIsModalOpen] = useState(false); + + if (process.env.IS_ON_PREMISE) { + return ( + <> + + setIsModalOpen(false)} + /> + + ); + } + return (