From 25c3031bbca8f88070b1602b62a3ce91ee139719 Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Mon, 23 Dec 2024 13:51:57 +0100 Subject: [PATCH 1/4] Update dashboard to use Cozystack API Signed-off-by: Andrei Kvapil --- .../dashboard/images/dashboard/Dockerfile | 6 +- .../images/dashboard/release-url.diff | 34 + .../dashboard/images/kubeapps-apis/Dockerfile | 13 +- .../kubeapps-apis/dashboard-resource.diff | 155 - .../images/kubeapps-apis/dockerfile.diff | 38 - .../images/kubeapps-apis/fluxcd.diff | 3268 ----------------- .../images/kubeapps-apis/labels.diff | 69 - .../kubeapps-apis/reconcile-strategy.diff | 12 - packages/system/dashboard/values.yaml | 303 +- 9 files changed, 340 insertions(+), 3558 deletions(-) create mode 100644 packages/system/dashboard/images/dashboard/release-url.diff delete mode 100644 packages/system/dashboard/images/kubeapps-apis/dashboard-resource.diff delete mode 100644 packages/system/dashboard/images/kubeapps-apis/dockerfile.diff delete mode 100644 packages/system/dashboard/images/kubeapps-apis/fluxcd.diff delete mode 100644 packages/system/dashboard/images/kubeapps-apis/labels.diff delete mode 100644 packages/system/dashboard/images/kubeapps-apis/reconcile-strategy.diff diff --git a/packages/system/dashboard/images/dashboard/Dockerfile b/packages/system/dashboard/images/dashboard/Dockerfile index fb702aa1..a7ad1953 100644 --- a/packages/system/dashboard/images/dashboard/Dockerfile +++ b/packages/system/dashboard/images/dashboard/Dockerfile @@ -9,13 +9,13 @@ RUN wget -O- https://github.com/vmware-tanzu/kubeapps/archive/refs/tags/v${VERSI COPY apple-touch-icon.png favicon-16x16.png favicon-32x32.png favicon.ico mstile-144x144.png mstile-150x150.png mstile-310x150.png mstile-310x310.png mstile-70x70.png safari-pinned-tab.svg public/ +COPY release-url.diff /patches/release-url.diff +RUN patch -p2 < /patches/release-url.diff + RUN sed -i 's/opacity: 0.05;/display: none;/g' src/components/InfoCard/InfoCard.scss RUN sed -i 's/"Kubeapps",/"Cozystack",/' lang/en.json RUN sed -i 's/Kubeapps/Cozystack/g' public/site.webmanifest RUN sed -i 's/Welcome To Kubeapps/Welcome To Cozystack/g' ./src/components/LoginForm/LoginForm.tsx ./src/components/AppList/AppListGrid.tsx ./src/components/AppList/AppList.test.tsx -RUN sed -i src/components/DeploymentForm/DeploymentForm.tsx \ - -e '/const handleDeploy/i \ const packageName = packageId ? packageId.split("/").pop() : "";' \ - -e '/releaseName,$/ s|releaseName,|packageName + "-" + releaseName,|' RUN sed -i '/by VMware/,/ \.$/d' src/components/Header/Menu.tsx RUN sed -i '/height: 4em;/ s/4em/4.5em/' src/components/Header/Header.scss RUN sed -i '/background-image/ s|base64,[^"]\+|base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjUyMSIKICAgaGVpZ2h0PSIxODUiCiAgIHZpZXdCb3g9IjAgMCA1MjEgMTg1IgogICBmaWxsPSJub25lIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmc5NTgiCiAgIHNvZGlwb2RpOmRvY25hbWU9IkNPWllTVEFDSy5zdmciCiAgIGlua3NjYXBlOnZlcnNpb249IjEuMS4xIChjMzA4NGVmLCAyMDIxLTA5LTIyKSIKICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCiAgIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzOTYyIiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0ibmFtZWR2aWV3OTYwIgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIHNob3dndWlkZXM9InRydWUiCiAgICAgaW5rc2NhcGU6Z3VpZGUtYmJveD0idHJ1ZSIKICAgICBpbmtzY2FwZTp6b29tPSIwLjU2NjEwNjA5IgogICAgIGlua3NjYXBlOmN4PSIxNTEuMDMxNzYiCiAgICAgaW5rc2NhcGU6Y3k9IjMxNy4wNzgzNyIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjEyOTYiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iOTY5IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2Zzk1OCIgLz4KICA8cGF0aAogICAgIGQ9Ik0gNDcyLjk5MzQ1LDEyMC44NjMxMiBWIDU3LjQwODc3OSBoIDcuMzggViA4Ni4yMTA3MiBoIDAuMTggbCAzMC43ODIsLTI4LjgwMTk0MSBoIDkuNDUxIGwgLTM1LjI4MywzMi44NTIyNDEgMC4wOSwtMy45NjAyIDM3LjE3MywzNC41NjIzIGggLTkuNzIxIGwgLTMyLjQ5MiwtMjkuODgyIGggLTAuMTggdiAyOS44ODIgeiIKICAgICBmaWxsPSIjZmZmZmZmIgogICAgIGlkPSJwYXRoOTQwIiAvPgogIDxwYXRoCiAgICAgZD0ibSA0MzkuODg0NDUsMTIxLjY3MzIyIGMgLTYuMjQxLDAgLTExLjU4MSwtMS4zMjAxIC0xNi4wMjEsLTMuOTYwMyAtNC40NDEsLTIuNjQwMiAtNy44NjEsLTYuMzkwNCAtMTAuMjYxLC0xMS4yNTA4IC0yLjM0LC00Ljg2MDMgLTMuNTEsLTEwLjY1MDcgLTMuNTEsLTE3LjM3MTIgMCwtNi43MjA0IDEuMTcsLTEyLjQ4MDggMy41MSwtMTcuMjgxMSAyLjQsLTQuODYwNCA1LjgyLC04LjYxMDY0IDEwLjI2MSwtMTEuMjUwODIgNC40NCwtMi42NDAxOSA5Ljc4LC0zLjk2MDI4IDE2LjAyMSwtMy45NjAyOCA0LjM4LDAgOC40MywwLjY5MDA0OCAxMi4xNTEsMi4wNzAxNCAzLjcyLDEuMzgwMSA2Ljg0LDMuMzkwMjQgOS4zNiw2LjAzMDQyIGwgLTIuODgsNi4wMzA0NCBjIC0yLjc2LC0yLjU4MDIgLTUuNjQsLTQuNDQwMzMgLTguNjQxLC01LjU4MDQxIC0yLjk0LC0xLjIwMDA4IC02LjIxLC0xLjgwMDEyIC05LjgxLC0xLjgwMDEyIC03LjE0MSwwIC0xMi42MDEsMi4yNTAxNSAtMTYuMzgxLDYuNzUwNDMgLTMuNzgxLDQuNTAwMyAtNS42NzEsMTAuODMwOCAtNS42NzEsMTguOTkxMyAwLDguMTYwNiAxLjg5LDE0LjUyMSA1LjY3MSwxOS4wODE0IDMuNzgsNC41MDAzIDkuMjQsNi43NTA0IDE2LjM4MSw2Ljc1MDQgMy42LDAgNi44NywtMC41NyA5LjgxLC0xLjcxMDEgMy4wMDEsLTEuMjAwMSA1Ljg4MSwtMy4wOTAyIDguNjQxLC01LjY3MDQgbCAyLjg4LDYuMDMwNCBjIC0yLjUyLDIuNTgwMiAtNS42NCw0LjU5MDQgLTkuMzYsNi4wMzA1IC0zLjcyMSwxLjM4IC03Ljc3MSwyLjA3MDEgLTEyLjE1MSwyLjA3MDEgeiIKICAgICBmaWxsPSIjZmZmZmZmIgogICAgIGlkPSJwYXRoOTQyIiAvPgogIDxwYXRoCiAgICAgZD0ibSAzNDEuNzk1NDUsMTIwLjg2MzEyIDI3Ljk5MiwtNjMuNDU0MzQxIGggNi4zIGwgMjcuOTkyLDYzLjQ1NDM0MSBoIC03LjY1IGwgLTcuODMxLC0xOC4wOTEyIDMuNiwxLjg5MDEgaCAtMzguNzAyIGwgMy42OSwtMS44OTAxIC03Ljc0MSwxOC4wOTEyIHogbSAzMS4wNTIsLTU0LjgxMzc0IC0xNC40OTEsMzQuMTEyMzQgLTIuMTYsLTEuNzEwMSBoIDMzLjMwMiBsIC0xLjk4LDEuNzEwMSAtMTQuNDkxLC0zNC4xMTIzNCB6IgogICAgIGZpbGw9IiNmZmZmZmYiCiAgICAgaWQ9InBhdGg5NDQiIC8+CiAgPHBhdGgKICAgICBkPSJtIDMxNi4xOTk0NSwxMjAuODYzMTIgdiAtNTcuMDYzOSBoIC0yMy4wNDIgdiAtNi4zOTA0NDEgaCA1My41NTQgdiA2LjM5MDQ0MSBoIC0yMy4wNDIgdiA1Ny4wNjM5IHoiCiAgICAgZmlsbD0iI2ZmZmZmZiIKICAgICBpZD0icGF0aDk0NiIgLz4KICA8cGF0aAogICAgIGZpbGwtcnVsZT0iZXZlbm9kZCIKICAgICBjbGlwLXJ1bGU9ImV2ZW5vZGQiCiAgICAgZD0ibSAyMzYuNjQ1NDUsNTcuMzI5MzExIGggNTAuODI3IHYgNi4zNTMzNzkgaCAtNTAuODI3IHogbSAwLDU3LjE4MDQwOSBoIDUwLjgyNyB2IDYuMzUzNCBoIC01MC44MjcgeiBtIDUwLjgyNywtMjguNTkwMiBoIC01MC44MjcgdiA2LjM1MzQgaCA1MC44MjcgeiIKICAgICBmaWxsPSIjZmZmZmZmIgogICAgIGlkPSJwYXRoOTQ4IiAvPgogIDxwYXRoCiAgICAgZD0ibSAxOTkuODYzNDUsMTIwLjg2MzEyIHYgLTMyLjg1MjIgbCAxLjYyLDUuMTMwMyAtMjUuOTIyLC0zNS43MzI0NDEgaCA4LjY0MSBsIDIwLjQzMSwyOC4yNjE5NDEgaCAtMS44OSBsIDIwLjQzMiwtMjguMjYxOTQxIGggOC4zNyBsIC0yNS44MzIsMzUuNzMyNDQxIDEuNTMxLC01LjEzMDMgdiAzMi44NTIyIHoiCiAgICAgZmlsbD0iI2ZmZmZmZiIKICAgICBpZD0icGF0aDk1MCIgLz4KICA8cGF0aAogICAgIGQ9Im0gMTI2Ljk5MTQ1LDEyMC44NjMxMiB2IC01LjQ5MDMgbCAzOC41MjMsLTU0LjQ1MzggdiAyLjg4MDIgaCAtMzguNTIzIHYgLTYuMzkwNDQxIGggNDUuNDUzIHYgNS40OTAzODEgbCAtMzguNTIyLDU0LjM2Mzc2IHYgLTIuNzkwMiBoIDM5Ljc4MyB2IDYuMzkwNCB6IgogICAgIGZpbGw9IiNmZmZmZmYiCiAgICAgaWQ9InBhdGg5NTIiIC8+CiAgPHBhdGgKICAgICBkPSJtIDg5LjQ2MzU1MywxMjEuNjczMjIgYyAtNC4zODAzLDAgLTguMzcwNiwtMC43NTAxIC0xMS45NzA4LC0yLjI1MDIgLTMuNjAwMywtMS41NjAxIC02LjY2MDUsLTMuNzUwMiAtOS4xODA3LC02LjU3MDQgLTIuNTIwMSwtMi44MjAyIC00LjQ3MDMsLTYuMjQwNCAtNS44NTA0LC0xMC4yNjA3IC0xLjMyMDEsLTQuMDIwMyAtMS45ODAxLC04LjUyMDYgLTEuOTgwMSwtMTMuNTAxIDAsLTUuMDQwMyAwLjY2LC05LjU0MDYgMS45ODAxLC0xMy41MDA5IDEuMzgwMSwtNC4wMjAzIDMuMzMwMywtNy40MTA1IDUuODUwNCwtMTAuMTcwNjkgMi41MjAyLC0yLjgyMDIgNS41NTA0LC00Ljk4MDM0IDkuMDkwNywtNi40ODA0NSAzLjYwMDIsLTEuNTYwMTA0IDcuNjIwNSwtMi4zNDAxNiAxMi4wNjA4LC0yLjM0MDE2IDQuNTAwMywwIDguNTIwNiwwLjc1MDA1NCAxMi4wNjA3OTcsMi4yNTAxNiAzLjYwMDEsMS41MDAxIDYuNjYwMSwzLjY2MDI1IDkuMTgxMSw2LjQ4MDQ0IDIuNTgsMi44MjAyIDQuNTMsNi4yNDA0IDUuODUsMTAuMjYwNyAxLjM4LDMuOTYwMyAyLjA3LDguNDMwNiAyLjA3LDEzLjQxMDkgMCw1LjA0MDQgLTAuNjksOS41NzA3IC0yLjA3LDEzLjU5MSAtMS4zOCw0LjAyMDMgLTMuMzMsNy40NDA1IC01Ljg1LDEwLjI2MDcgLTIuNTIxLDIuODIwMiAtNS41ODEsNS4wMTAzIC05LjE4MTEsNi41NzA0IC0zLjU0MDE5NywxLjUwMDEgLTcuNTYwNDk3LDIuMjUwMiAtMTIuMDYwNzk3LDIuMjUwMiB6IG0gMCwtNi41NzA1IGMgNC41NjAzLDAgOC40MDA2LC0xLjAyIDExLjUyMDc5NywtMy4wNjAyIDMuMTgwMSwtMi4wNDAxIDUuNjEwMSwtNS4wMTAzIDcuMjkwMSwtOC45MTA2IDEuNjgxLC0zLjkwMDMgMi41MjEsLTguNTgwNiAyLjUyMSwtMTQuMDQxIDAsLTUuNTIwMyAtMC44NCwtMTAuMjAwNyAtMi41MjEsLTE0LjA0MDkgLTEuNjgsLTMuODQwMyAtNC4xMSwtNi43ODA1IC03LjI5MDEsLTguODIwNjQgLTMuMTIwMTk3LC0yLjA0MDE0IC02Ljk2MDQ5NywtMy4wNjAyIC0xMS41MjA3OTcsLTMuMDYwMiAtNC40NDAzLDAgLTguMjUwNiwxLjAyMDA2IC0xMS40MzA4LDMuMDYwMiAtMy4xMjAyLDIuMDQwMTQgLTUuNTIwNCw1LjAxMDM0IC03LjIwMDUsOC45MTA2NCAtMS42ODAxLDMuODQwMiAtMi41MjAyLDguNDkwNiAtMi41MjAyLDEzLjk1MDkgMCw1LjQ2MDQgMC44NDAxLDEwLjE0MDcgMi41MjAyLDE0LjA0MSAxLjY4MDEsMy44NDAzIDQuMDgwMyw2LjgxMDUgNy4yMDA1LDguOTEwNiAzLjE4MDIsMi4wNDAyIDYuOTkwNSwzLjA2MDIgMTEuNDMwOCwzLjA2MDIgeiIKICAgICBmaWxsPSIjZmZmZmZmIgogICAgIGlkPSJwYXRoOTU0IiAvPgogIDxwYXRoCiAgICAgZD0ibSAzMS41NTg1NTMsMTIxLjY3MzIyIGMgLTYuMjQwNSwwIC0xMS41ODA4LC0xLjMyMDEgLTE2LjAyMTIsLTMuOTYwMyAtNC40NDAyNiwtMi42NDAyIC03Ljg2MDQ4OTcsLTYuMzkwNCAtMTAuMjYwNjU5NywtMTEuMjUwOCAtMi4zNDAxNiwtNC44NjAzIC0zLjUxMDI0LC0xMC42NTA3IC0zLjUxMDI0LC0xNy4zNzEyIDAsLTYuNzIwNCAxLjE3MDA4LC0xMi40ODA4IDMuNTEwMjQsLTE3LjI4MTEgMi40MDAxNywtNC44NjA0IDUuODIwMzk5NywtOC42MTA2NCAxMC4yNjA2NTk3LC0xMS4yNTA4MiA0LjQ0MDQsLTIuNjQwMTkgOS43ODA3LC0zLjk2MDI4IDE2LjAyMTIsLTMuOTYwMjggNC4zODAzLDAgOC40MzA1LDAuNjkwMDQ4IDEyLjE1MDgsMi4wNzAxNCAzLjcyMDMsMS4zODAxIDYuODQwNSwzLjM5MDI0IDkuMzYwNiw2LjAzMDQyIGwgLTIuODgwMiw2LjAzMDQ0IGMgLTIuNzYwMSwtMi41ODAyIC01LjY0MDMsLTQuNDQwMzMgLTguNjQwNiwtNS41ODA0MSAtMi45NDAyLC0xLjIwMDA4IC02LjIxMDQsLTEuODAwMTIgLTkuODEwNiwtMS44MDAxMiAtNy4xNDA1LDAgLTEyLjYwMDksMi4yNTAxNSAtMTYuMzgxMiw2Ljc1MDQzIC0zLjc4MDIyLDQuNTAwMyAtNS42NzAzNDk3LDEwLjgzMDggLTUuNjcwMzQ5NywxOC45OTEzIDAsOC4xNjA2IDEuODkwMTI5NywxNC41MjEgNS42NzAzNDk3LDE5LjA4MTQgMy43ODAzLDQuNTAwMyA5LjI0MDcsNi43NTA0IDE2LjM4MTIsNi43NTA0IDMuNjAwMiwwIDYuODcwNCwtMC41NyA5LjgxMDYsLTEuNzEwMSAzLjAwMDMsLTEuMjAwMSA1Ljg4MDUsLTMuMDkwMiA4LjY0MDYsLTUuNjcwNCBsIDIuODgwMiw2LjAzMDQgYyAtMi41MjAxLDIuNTgwMiAtNS42NDAzLDQuNTkwNCAtOS4zNjA2LDYuMDMwNSAtMy43MjAzLDEuMzggLTcuNzcwNSwyLjA3MDEgLTEyLjE1MDgsMi4wNzAxIHoiCiAgICAgZmlsbD0iI2ZmZmZmZiIKICAgICBpZD0icGF0aDk1NiIgLz4KPC9zdmc+Cg==|' src/components/Header/Header.scss diff --git a/packages/system/dashboard/images/dashboard/release-url.diff b/packages/system/dashboard/images/dashboard/release-url.diff new file mode 100644 index 00000000..97c125f6 --- /dev/null +++ b/packages/system/dashboard/images/dashboard/release-url.diff @@ -0,0 +1,34 @@ +diff --git a/dashboard/src/shared/url.ts b/dashboard/src/shared/url.ts +index 7918652b0..64c3435af 100644 +--- a/dashboard/src/shared/url.ts ++++ b/dashboard/src/shared/url.ts +@@ -36,7 +36,7 @@ export const app = { + return `${app.apps.list( + pkgCluster, + pkgNamespace, +- )}/${pkgPluginName}/${pkgPluginVersion}/${pkgId}`; ++ )}/${pkgPluginName}/${pkgPluginVersion}/${encodeURIComponent(pkgId)}`; + }, + upgrade: (ref: InstalledPackageReference) => `${app.apps.get(ref)}/upgrade`, + upgradeTo: (ref: InstalledPackageReference, version?: string) => +diff --git a/dashboard/src/components/DeploymentForm/DeploymentForm.tsx b/dashboard/src/components/DeploymentForm/DeploymentForm.tsx +index 7ccb77b5d..589f72b65 100644 +--- a/dashboard/src/components/DeploymentForm/DeploymentForm.tsx ++++ b/dashboard/src/components/DeploymentForm/DeploymentForm.tsx +@@ -144,13 +144,15 @@ export default function DeploymentForm() { + ); + setDeploying(false); + if (deployed) { ++ const chartParts = packageId?.split("/") || []; ++ const kind = chartParts[chartParts.length - 1]; + push( + // Redirect to the installed package, note that the cluster/ns are the ones passed + // in the URL, not the ones from the package. + url.app.apps.get({ + context: { cluster: targetCluster, namespace: targetNamespace }, + plugin: pluginObj, +- identifier: releaseName, ++ identifier: `${kind}%2F${releaseName}`, + } as AvailablePackageReference), + ); + } diff --git a/packages/system/dashboard/images/kubeapps-apis/Dockerfile b/packages/system/dashboard/images/kubeapps-apis/Dockerfile index db82be16..2d66bbd5 100644 --- a/packages/system/dashboard/images/kubeapps-apis/Dockerfile +++ b/packages/system/dashboard/images/kubeapps-apis/Dockerfile @@ -4,18 +4,10 @@ # syntax = docker/dockerfile:1 FROM alpine as source -ARG VERSION=v2.12.0 +ARG COMMIT_REF=bcf015b116061cd1b07ed3cb533bb689423087c8 RUN apk add --no-cache patch WORKDIR /source -RUN wget -O- https://github.com/vmware-tanzu/kubeapps/archive/refs/tags/${VERSION}.tar.gz | tar xzf - --strip-components=1 -COPY fluxcd.diff /patches/fluxcd.diff -COPY labels.diff /patches/labels.diff -COPY reconcile-strategy.diff /patches/reconcile-strategy.diff -COPY dashboard-resource.diff /patches/dashboard-resource.diff -RUN patch -p1 < /patches/fluxcd.diff -RUN patch -p1 < /patches/labels.diff -RUN patch -p1 < /patches/reconcile-strategy.diff -RUN patch -p1 < /patches/dashboard-resource.diff +RUN wget -O- https://github.com/aenix-io/kubeapps/archive/${COMMIT_REF}.tar.gz | tar xzf - --strip-components=1 FROM bitnami/golang:1.23.4 AS builder WORKDIR /go/src/github.com/vmware-tanzu/kubeapps @@ -45,7 +37,6 @@ RUN curl -sSL "https://github.com/bufbuild/buf/releases/download/v$BUF_VERSION/b # TODO: Remove and instead use built-in gRPC container probes once we're supporting >= 1.24 only. https://kubernetes.io/blog/2022/05/13/grpc-probes-now-in-beta/ RUN curl -sSL "https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/v${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-${TARGETARCH}" -o "/bin/grpc_health_probe" && chmod +x "/bin/grpc_health_probe" - # With the trick below, Go's build cache is kept between builds. # https://github.com/golang/go/issues/27719#issuecomment-514747274 RUN --mount=type=cache,target=/go/pkg/mod \ diff --git a/packages/system/dashboard/images/kubeapps-apis/dashboard-resource.diff b/packages/system/dashboard/images/kubeapps-apis/dashboard-resource.diff deleted file mode 100644 index ed18ce6e..00000000 --- a/packages/system/dashboard/images/kubeapps-apis/dashboard-resource.diff +++ /dev/null @@ -1,155 +0,0 @@ -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/server.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/server.go -index ef3d506b3..a69f8552f 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/server.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/server.go -@@ -5,6 +5,7 @@ package main - - import ( - "context" -+ "encoding/json" - "fmt" - "net/http" - -@@ -16,7 +17,6 @@ import ( - helmv2 "github.com/fluxcd/helm-controller/api/v2" - sourcev1 "github.com/fluxcd/source-controller/api/v1" - authorizationv1 "k8s.io/api/authorization/v1" -- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/apimachinery/pkg/types" -@@ -28,12 +28,16 @@ import ( - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/plugins/fluxv2/packages/v1alpha1" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/cache" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/common" -- "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/pkg/clientgetter" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/pkg/paginate" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/pkg/pkgutils" -- "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/pkg/resourcerefs" -+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - log "k8s.io/klog/v2" - ctrlclient "sigs.k8s.io/controller-runtime/pkg/client" -+ -+ "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/pkg/clientgetter" -+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" -+ "k8s.io/client-go/discovery/cached/memory" -+ "k8s.io/client-go/restmapper" - ) - - // Compile-time statement to ensure this service implementation satisfies the core packaging API -@@ -135,6 +139,7 @@ func NewServer(configGetter core.KubernetesConfigGetter, kubeappsCluster string, - if err != nil { - log.Fatalf("%s", err) - } -+ - return &Server{ - clientGetter: clientProvider, - serviceAccountClientGetter: backgroundClientGetter, -@@ -462,36 +467,84 @@ func (s *Server) DeleteInstalledPackage(ctx context.Context, request *connect.Re - // resources created by an installed package. - func (s *Server) GetInstalledPackageResourceRefs(ctx context.Context, request *connect.Request[corev1.GetInstalledPackageResourceRefsRequest]) (*connect.Response[corev1.GetInstalledPackageResourceRefsResponse], error) { - pkgRef := request.Msg.GetInstalledPackageRef() -- identifier := pkgRef.GetIdentifier() -- log.InfoS("+fluxv2 GetInstalledPackageResourceRefs", "cluster", pkgRef.GetContext().GetCluster(), "namespace", pkgRef.GetContext().GetNamespace(), "id", identifier) -+ log.InfoS("+fluxv2 GetInstalledPackageResourceRefs", "cluster", pkgRef.GetContext().GetCluster(), "namespace", pkgRef.GetContext().GetNamespace(), "id", pkgRef.GetIdentifier()) - -- key := types.NamespacedName{Namespace: pkgRef.Context.Namespace, Name: identifier} -- rel, err := s.getReleaseInCluster(ctx, request.Header(), key) -+ // Getting dynamic client -+ dynamicClient, err := s.clientGetter.Dynamic(request.Header(), pkgRef.GetContext().GetCluster()) - if err != nil { -+ log.Errorf("Failed to get dynamic client: %v", err) - return nil, err - } -- hrName := helmReleaseName(key, rel) -- refs, err := resourcerefs.GetInstalledPackageResourceRefs(request.Header(), hrName, s.actionConfigGetter) -+ -+ // Getting Discovery Client to work with RESTMapper -+ discoveryClient, err := s.clientGetter.Typed(request.Header(), pkgRef.GetContext().GetCluster()) - if err != nil { -+ log.Errorf("Failed to create discovery client: %v", err) - return nil, err -- } else { -- return connect.NewResponse( -- &corev1.GetInstalledPackageResourceRefsResponse{ -- Context: &corev1.Context{ -- Cluster: s.kubeappsCluster, -- // TODO (gfichtenholt) it is not specifically called out in the spec why there is a -- // need for a Context in the response and MORE imporantly what the value of Namespace -- // field should be. In particular, there is use case when Flux Helm Release in -- // installed in ns1 but specifies targetNamespace as test2. Should we: -- // (a) return ns1 (the namespace where CRs are installed) OR -- // (b) return ns2 (the namespace where flux installs the resources specified by the -- // release). -- // For now lets use (a) -- Namespace: key.Namespace, -- }, -- ResourceRefs: refs, -- }), nil - } -+ mapper := restmapper.NewDeferredDiscoveryRESTMapper(memory.NewMemCacheClient(discoveryClient.Discovery())) -+ -+ // Getting the role -+ roleGVR := schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1", Resource: "roles"} -+ roleName := fmt.Sprintf("%s-dashboard-resources", pkgRef.GetIdentifier()) -+ namespace := pkgRef.GetContext().GetNamespace() -+ role, err := dynamicClient.Resource(roleGVR).Namespace(namespace).Get(ctx, roleName, metav1.GetOptions{}) -+ if err != nil { -+ log.Errorf("Failed to get role %s: %v", roleName, err) -+ return nil, connect.NewError(connect.CodeInvalidArgument, fmt.Errorf("Unable to get role %s: %w", roleName, err)) -+ } -+ -+ // Logging Role content for debugging -+ roleContent, _ := json.Marshal(role) -+ log.Infof("Role content: %s", string(roleContent)) -+ -+ // Parsing rules from Role and creating ResourceRefs -+ resourcesFromRole := make([]*corev1.ResourceRef, 0) -+ rules, found, _ := unstructured.NestedSlice(role.Object, "rules") -+ if !found { -+ log.Errorf("No rules found in role %s", roleName) -+ return nil, connect.NewError(connect.CodeInternal, fmt.Errorf("No rules found in role %s", roleName)) -+ } -+ -+ for _, rule := range rules { -+ r := rule.(map[string]interface{}) -+ resources, _ := r["resources"].([]interface{}) -+ apiGroups, _ := r["apiGroups"].([]interface{}) -+ -+ for _, resource := range resources { -+ resourceStr := resource.(string) -+ for _, apiGroup := range apiGroups { -+ apiGroupStr := apiGroup.(string) -+ -+ // Using GroupVersionResource to get GroupVersionKind -+ gvr := schema.GroupVersionResource{Group: apiGroupStr, Version: "v1", Resource: resourceStr} -+ gvk, err := mapper.KindFor(gvr) -+ if err != nil { -+ log.Errorf("Failed to get GroupVersionKind for GVR %v: %v", gvr, err) -+ continue -+ } -+ -+ resourceNames, _ := r["resourceNames"].([]interface{}) -+ for _, resourceName := range resourceNames { -+ resourceNameStr := resourceName.(string) -+ resourcesFromRole = append(resourcesFromRole, &corev1.ResourceRef{ -+ ApiVersion: gvk.GroupVersion().String(), -+ Kind: gvk.Kind, -+ Name: resourceNameStr, -+ Namespace: namespace, -+ }) -+ } -+ } -+ } -+ } -+ -+ return connect.NewResponse(&corev1.GetInstalledPackageResourceRefsResponse{ -+ Context: &corev1.Context{ -+ Cluster: s.kubeappsCluster, -+ Namespace: namespace, -+ }, -+ ResourceRefs: resourcesFromRole, -+ }), nil - } - - func (s *Server) AddPackageRepository(ctx context.Context, request *connect.Request[corev1.AddPackageRepositoryRequest]) (*connect.Response[corev1.AddPackageRepositoryResponse], error) { diff --git a/packages/system/dashboard/images/kubeapps-apis/dockerfile.diff b/packages/system/dashboard/images/kubeapps-apis/dockerfile.diff deleted file mode 100644 index 4384f145..00000000 --- a/packages/system/dashboard/images/kubeapps-apis/dockerfile.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- b/system/kubeapps/images/kubeapps-apis/Dockerfile -+++ a/system/kubeapps/images/kubeapps-apis/Dockerfile -@@ -3,9 +3,19 @@ - - # syntax = docker/dockerfile:1 - -+FROM alpine as source -+ARG VERSION=v2.11.0 -+RUN apk add --no-cache patch -+WORKDIR /source -+RUN wget -O- https://github.com/vmware-tanzu/kubeapps/archive/refs/tags/${VERSION}.tar.gz | tar xzf - --strip-components=1 -+COPY fluxcd.diff /patches/fluxcd.diff -+COPY labels.diff /patches/labels.diff -+COPY reconcile-strategy.diff /patches/reconcile-strategy.diff -+COPY dashboard-resource.diff /patches/dashboard-resource.diff -+RUN patch -p1 < /patches/fluxcd.diff -+RUN patch -p1 < /patches/labels.diff -+RUN patch -p1 < /patches/reconcile-strategy.diff -+RUN patch -p1 < /patches/dashboard-resource.diff -+ - FROM bitnami/golang:1.22.2 as builder - WORKDIR /go/src/github.com/vmware-tanzu/kubeapps --COPY go.mod go.sum ./ -+COPY --from=source /source/go.mod /source/go.sum ./ - ARG VERSION="devel" - ARG TARGETARCH - -@@ -40,8 +52,8 @@ - - # We don't copy the pkg and cmd directories until here so the above layers can - # be reused. --COPY pkg pkg --COPY cmd cmd -+COPY --from=source /source/pkg pkg -+COPY --from=source /source/cmd cmd - - RUN if [ ! -z ${lint:-} ]; then \ - # Run golangci-lint to detect issues diff --git a/packages/system/dashboard/images/kubeapps-apis/fluxcd.diff b/packages/system/dashboard/images/kubeapps-apis/fluxcd.diff deleted file mode 100644 index 1ed14806..00000000 --- a/packages/system/dashboard/images/kubeapps-apis/fluxcd.diff +++ /dev/null @@ -1,3268 +0,0 @@ -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/cache/watcher_cache.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/cache/watcher_cache.go -index b5c6f434c..030ec9c46 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/cache/watcher_cache.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/cache/watcher_cache.go -@@ -131,7 +131,7 @@ type NamespacedResourceWatcherCacheConfig struct { - OnResyncFunc ResyncFunc - - // These funcs are needed to manipulate API-specific objects, such as flux's -- // sourcev1beta2.HelmRepository, in a generic fashion -+ // sourcev1.HelmRepository, in a generic fashion - NewObjFunc NewObjectFunc - NewListFunc NewObjectListFunc - ListItemsFunc GetListItemsFunc -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/chart.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/chart.go -index 58aae6e88..c0d62a9a7 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/chart.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/chart.go -@@ -12,7 +12,7 @@ import ( - "strings" - - "github.com/bufbuild/connect-go" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - corev1 "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/packages/v1alpha1" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/cache" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/common" -@@ -27,12 +27,12 @@ import ( - "sigs.k8s.io/yaml" - ) - --func (s *Server) getChartInCluster(ctx context.Context, headers http.Header, key types.NamespacedName) (*sourcev1beta2.HelmChart, error) { -+func (s *Server) getChartInCluster(ctx context.Context, headers http.Header, key types.NamespacedName) (*sourcev1.HelmChart, error) { - client, err := s.getClient(headers, key.Namespace) - if err != nil { - return nil, err - } -- var chartObj sourcev1beta2.HelmChart -+ var chartObj sourcev1.HelmChart - if err = client.Get(ctx, key, &chartObj); err != nil { - return nil, connecterror.FromK8sError("get", "HelmChart", key.String(), err) - } -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/chart_integration_test.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/chart_integration_test.go -index 2c16c88ec..95455476f 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/chart_integration_test.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/chart_integration_test.go -@@ -12,7 +12,7 @@ import ( - "testing" - "time" - -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - grpc_retry "github.com/grpc-ecosystem/go-grpc-middleware/retry" - corev1 "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/packages/v1alpha1" - fluxplugin "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/plugins/fluxv2/packages/v1alpha1" -@@ -329,12 +329,12 @@ func TestKindClusterRepoAndChartRBAC(t *testing.T) { - rules := map[string][]rbacv1.PolicyRule{ - names[1].Namespace: { - { -- APIGroups: []string{sourcev1beta2.GroupVersion.Group}, -+ APIGroups: []string{sourcev1.GroupVersion.Group}, - Resources: []string{fluxHelmRepositories}, - Verbs: []string{"get", "list"}, - }, - { -- APIGroups: []string{sourcev1beta2.GroupVersion.Group}, -+ APIGroups: []string{sourcev1.GroupVersion.Group}, - Resources: []string{"helmcharts"}, - Verbs: []string{"get", "list"}, - }, -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/chart_test.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/chart_test.go -index 7641d5c77..362fc82ef 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/chart_test.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/chart_test.go -@@ -16,7 +16,7 @@ import ( - "github.com/bufbuild/connect-go" - fluxmeta "github.com/fluxcd/pkg/apis/meta" - sourcev1 "github.com/fluxcd/source-controller/api/v1" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - "github.com/go-redis/redismock/v8" - corev1 "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/packages/v1alpha1" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/cache" -@@ -187,7 +187,7 @@ func TestGetAvailablePackageDetail(t *testing.T) { - } - defer ts2.Close() - -- s, mock, err := newServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}, charts, secretObjs) -+ s, mock, err := newServerWithRepos(t, []sourcev1.HelmRepository{*repo}, charts, secretObjs) - if err != nil { - t.Fatalf("%+v", err) - } -@@ -291,7 +291,7 @@ func TestTransientHttpFailuresAreRetriedForChartCache(t *testing.T) { - } - defer ts2.Close() - -- s, mock, err := newServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}, charts, nil) -+ s, mock, err := newServerWithRepos(t, []sourcev1.HelmRepository{*repo}, charts, nil) - if err != nil { - t.Fatalf("%+v", err) - } -@@ -468,7 +468,7 @@ func TestNonExistingRepoOrInvalidPkgVersionGetAvailablePackageDetail(t *testing. - } - defer ts2.Close() - -- s, mock, err := newServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}, charts, nil) -+ s, mock, err := newServerWithRepos(t, []sourcev1.HelmRepository{*repo}, charts, nil) - if err != nil { - t.Fatalf("%+v", err) - } -@@ -649,7 +649,7 @@ func TestGetAvailablePackageVersions(t *testing.T) { - } - defer ts.Close() - -- s, mock, err := newServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}, charts, nil) -+ s, mock, err := newServerWithRepos(t, []sourcev1.HelmRepository{*repo}, charts, nil) - if err != nil { - t.Fatalf("%+v", err) - } -@@ -736,7 +736,7 @@ func TestGetOciAvailablePackageVersions(t *testing.T) { - t.Fatal(err) - } - -- s, mock, err := newServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}, tc.charts, nil) -+ s, mock, err := newServerWithRepos(t, []sourcev1.HelmRepository{*repo}, tc.charts, nil) - if err != nil { - t.Fatalf("%+v", err) - } -@@ -979,12 +979,12 @@ func TestChartWithRelativeURL(t *testing.T) { - } - })) - -- repoSpec := &sourcev1beta2.HelmRepositorySpec{ -+ repoSpec := &sourcev1.HelmRepositorySpec{ - URL: ts.URL, - Interval: metav1.Duration{Duration: 1 * time.Minute}, - } - -- repoStatus := &sourcev1beta2.HelmRepositoryStatus{ -+ repoStatus := &sourcev1.HelmRepositoryStatus{ - Artifact: &sourcev1.Artifact{ - Digest: "651f952130ea96823711d08345b85e82be011dc6", - LastUpdateTime: metav1.Time{Time: lastUpdateTime}, -@@ -1003,7 +1003,7 @@ func TestChartWithRelativeURL(t *testing.T) { - defer ts.Close() - - s, mock, err := newServerWithRepos(t, -- []sourcev1beta2.HelmRepository{repo}, -+ []sourcev1.HelmRepository{repo}, - []testSpecChartWithUrl{ - { - chartID: fmt.Sprintf("%s/airflow", repoName), -@@ -1073,7 +1073,7 @@ func TestGetOciAvailablePackageDetail(t *testing.T) { - t.Fatal(err) - } - -- s, mock, err := newServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}, tc.charts, nil) -+ s, mock, err := newServerWithRepos(t, []sourcev1.HelmRepository{*repo}, tc.charts, nil) - if err != nil { - t.Fatalf("%+v", err) - } -@@ -1129,8 +1129,8 @@ func TestGetOciAvailablePackageDetail(t *testing.T) { - } - } - --func newChart(name, namespace string, spec *sourcev1beta2.HelmChartSpec, status *sourcev1beta2.HelmChartStatus) sourcev1beta2.HelmChart { -- helmChart := sourcev1beta2.HelmChart{ -+func newChart(name, namespace string, spec *sourcev1.HelmChartSpec, status *sourcev1.HelmChartStatus) sourcev1.HelmChart { -+ helmChart := sourcev1.HelmChart{ - ObjectMeta: metav1.ObjectMeta{ - Name: name, - Generation: int64(1), -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/common/utils.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/common/utils.go -index cdb3611b0..5d5f5433b 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/common/utils.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/common/utils.go -@@ -24,8 +24,8 @@ import ( - "github.com/bufbuild/connect-go" - "github.com/docker/cli/cli/config" - "github.com/docker/cli/cli/config/credentials" -- helmv2beta2 "github.com/fluxcd/helm-controller/api/v2beta2" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ helmv2 "github.com/fluxcd/helm-controller/api/v2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - "github.com/go-redis/redis/v8" - "github.com/google/go-containerregistry/pkg/authn" - plugins "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/plugins/v1alpha1" -@@ -68,20 +68,20 @@ func init() { - } - - repositoriesGvr = schema.GroupVersionResource{ -- Group: sourcev1beta2.GroupVersion.Group, -- Version: sourcev1beta2.GroupVersion.Version, -+ Group: sourcev1.GroupVersion.Group, -+ Version: sourcev1.GroupVersion.Version, - Resource: "helmrepositories", - } - - chartsGvr = schema.GroupVersionResource{ -- Group: sourcev1beta2.GroupVersion.Group, -- Version: sourcev1beta2.GroupVersion.Version, -+ Group: sourcev1.GroupVersion.Group, -+ Version: sourcev1.GroupVersion.Version, - Resource: "helmcharts", - } - - releasesGvr = schema.GroupVersionResource{ -- Group: helmv2beta2.GroupVersion.Group, -- Version: helmv2beta2.GroupVersion.Version, -+ Group: helmv2.GroupVersion.Group, -+ Version: helmv2.GroupVersion.Version, - Resource: "helmreleases", - } - } -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/global_vars_test.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/global_vars_test.go -index e3c1880a5..556516068 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/global_vars_test.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/global_vars_test.go -@@ -10,10 +10,10 @@ import ( - - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/pkg/k8sutils" - -- helmv2beta2 "github.com/fluxcd/helm-controller/api/v2beta2" -+ helmv2 "github.com/fluxcd/helm-controller/api/v2" - fluxmeta "github.com/fluxcd/pkg/apis/meta" - sourcev1 "github.com/fluxcd/source-controller/api/v1" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - corev1 "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/packages/v1alpha1" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/plugins/fluxv2/packages/v1alpha1" - "google.golang.org/protobuf/types/known/anypb" -@@ -1006,33 +1006,33 @@ var ( - }, - } - -- add_repo_1 = sourcev1beta2.HelmRepository{ -+ add_repo_1 = sourcev1.HelmRepository{ - TypeMeta: metav1.TypeMeta{ -- Kind: sourcev1beta2.HelmRepositoryKind, -- APIVersion: sourcev1beta2.GroupVersion.String(), -+ Kind: sourcev1.HelmRepositoryKind, -+ APIVersion: sourcev1.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "bar", - Namespace: "foo", - ResourceVersion: "1", - }, -- Spec: sourcev1beta2.HelmRepositorySpec{ -+ Spec: sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 10 * time.Minute}, - }, - } - -- add_repo_2 = sourcev1beta2.HelmRepository{ -+ add_repo_2 = sourcev1.HelmRepository{ - TypeMeta: metav1.TypeMeta{ -- Kind: sourcev1beta2.HelmRepositoryKind, -- APIVersion: sourcev1beta2.GroupVersion.String(), -+ Kind: sourcev1.HelmRepositoryKind, -+ APIVersion: sourcev1.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "bar", - Namespace: "foo", - ResourceVersion: "1", - }, -- Spec: sourcev1beta2.HelmRepositorySpec{ -+ Spec: sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 10 * time.Minute}, - // TODO(agamez): flux upgrade - migrate to CertSecretRef, see https://github.com/fluxcd/flux2/releases/tag/v2.1.0 -@@ -1040,17 +1040,17 @@ var ( - }, - } - -- add_repo_3 = sourcev1beta2.HelmRepository{ -+ add_repo_3 = sourcev1.HelmRepository{ - TypeMeta: metav1.TypeMeta{ -- Kind: sourcev1beta2.HelmRepositoryKind, -- APIVersion: sourcev1beta2.GroupVersion.String(), -+ Kind: sourcev1.HelmRepositoryKind, -+ APIVersion: sourcev1.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "bar", - Namespace: "foo", - ResourceVersion: "1", - }, -- Spec: sourcev1beta2.HelmRepositorySpec{ -+ Spec: sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 10 * time.Minute}, - // TODO(agamez): flux upgrade - migrate to CertSecretRef, see https://github.com/fluxcd/flux2/releases/tag/v2.1.0 -@@ -1058,17 +1058,17 @@ var ( - }, - } - -- add_repo_4 = sourcev1beta2.HelmRepository{ -+ add_repo_4 = sourcev1.HelmRepository{ - TypeMeta: metav1.TypeMeta{ -- Kind: sourcev1beta2.HelmRepositoryKind, -- APIVersion: sourcev1beta2.GroupVersion.String(), -+ Kind: sourcev1.HelmRepositoryKind, -+ APIVersion: sourcev1.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "bar", - Namespace: "foo", - ResourceVersion: "1", - }, -- Spec: sourcev1beta2.HelmRepositorySpec{ -+ Spec: sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 10 * time.Minute}, - // TODO(agamez): flux upgrade - migrate to CertSecretRef, see https://github.com/fluxcd/flux2/releases/tag/v2.1.0 -@@ -1077,51 +1077,51 @@ var ( - }, - } - -- add_repo_5 = sourcev1beta2.HelmRepository{ -+ add_repo_5 = sourcev1.HelmRepository{ - TypeMeta: metav1.TypeMeta{ -- Kind: sourcev1beta2.HelmRepositoryKind, -- APIVersion: sourcev1beta2.GroupVersion.String(), -+ Kind: sourcev1.HelmRepositoryKind, -+ APIVersion: sourcev1.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "bar", - Namespace: "foo", - ResourceVersion: "1", - }, -- Spec: sourcev1beta2.HelmRepositorySpec{ -+ Spec: sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 10 * time.Minute}, - PassCredentials: true, - }, - } - -- add_repo_6 = sourcev1beta2.HelmRepository{ -+ add_repo_6 = sourcev1.HelmRepository{ - TypeMeta: metav1.TypeMeta{ -- Kind: sourcev1beta2.HelmRepositoryKind, -- APIVersion: sourcev1beta2.GroupVersion.String(), -+ Kind: sourcev1.HelmRepositoryKind, -+ APIVersion: sourcev1.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "bar", - Namespace: "foo", - ResourceVersion: "1", - }, -- Spec: sourcev1beta2.HelmRepositorySpec{ -+ Spec: sourcev1.HelmRepositorySpec{ - URL: github_stefanprodan_podinfo_oci_registry_url, - Interval: metav1.Duration{Duration: 10 * time.Minute}, - Type: "oci", - }, - } - -- add_repo_7 = sourcev1beta2.HelmRepository{ -+ add_repo_7 = sourcev1.HelmRepository{ - TypeMeta: metav1.TypeMeta{ -- Kind: sourcev1beta2.HelmRepositoryKind, -- APIVersion: sourcev1beta2.GroupVersion.String(), -+ Kind: sourcev1.HelmRepositoryKind, -+ APIVersion: sourcev1.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "bar", - Namespace: "foo", - ResourceVersion: "1", - }, -- Spec: sourcev1beta2.HelmRepositorySpec{ -+ Spec: sourcev1.HelmRepositorySpec{ - URL: github_stefanprodan_podinfo_oci_registry_url, - Interval: metav1.Duration{Duration: 10 * time.Minute}, - Type: "oci", -@@ -1129,10 +1129,10 @@ var ( - }, - } - -- add_repo_8 = sourcev1beta2.HelmRepository{ -+ add_repo_8 = sourcev1.HelmRepository{ - TypeMeta: metav1.TypeMeta{ -- Kind: sourcev1beta2.HelmRepositoryKind, -- APIVersion: sourcev1beta2.GroupVersion.String(), -+ Kind: sourcev1.HelmRepositoryKind, -+ APIVersion: sourcev1.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "bar", -@@ -1140,7 +1140,7 @@ var ( - ResourceVersion: "1", - Annotations: map[string]string{k8sutils.AnnotationDescriptionKey: "repo desc"}, - }, -- Spec: sourcev1beta2.HelmRepositorySpec{ -+ Spec: sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 10 * time.Minute}, - }, -@@ -1831,7 +1831,7 @@ var ( - Namespace: "test", - Generation: 1, - }, -- releaseStatus: helmv2beta2.HelmReleaseStatus{ -+ releaseStatus: helmv2.HelmReleaseStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, -@@ -1844,7 +1844,7 @@ var ( - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, - Type: "Released", - Status: metav1.ConditionTrue, -- Reason: helmv2beta2.InstallSucceededReason, -+ Reason: helmv2.InstallSucceededReason, - Message: "Helm install succeeded", - }, - }, -@@ -1886,7 +1886,7 @@ var ( - releaseSuspend: true, - releaseServiceAccountName: "foo", - releaseValues: &v1.JSON{Raw: redis_existing_spec_completed_with_values_and_reconciliation_options_values_bytes}, -- releaseStatus: helmv2beta2.HelmReleaseStatus{ -+ releaseStatus: helmv2.HelmReleaseStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, -@@ -1899,7 +1899,7 @@ var ( - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, - Type: "Released", - Status: metav1.ConditionTrue, -- Reason: helmv2beta2.InstallSucceededReason, -+ Reason: helmv2.InstallSucceededReason, - Message: "Helm install succeeded", - }, - }, -@@ -1923,20 +1923,20 @@ var ( - Namespace: "test", - Generation: 1, - }, -- releaseStatus: helmv2beta2.HelmReleaseStatus{ -+ releaseStatus: helmv2.HelmReleaseStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, - Type: fluxmeta.ReadyCondition, - Status: metav1.ConditionFalse, -- Reason: helmv2beta2.InstallFailedReason, -+ Reason: helmv2.InstallFailedReason, - Message: "install retries exhausted", - }, - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, - Type: "Released", - Status: metav1.ConditionFalse, -- Reason: helmv2beta2.InstallFailedReason, -+ Reason: helmv2.InstallFailedReason, - Message: "Helm install failed: unable to build kubernetes objects from release manifest: error validating \"\": error validating data: ValidationError(Deployment.spec.replicas): invalid type for io.k8s.api.apps.v1.DeploymentSpec.replicas: got \"string\", expected \"integer\"", - }, - }, -@@ -1961,13 +1961,13 @@ var ( - Namespace: "test", - Generation: 1, - }, -- releaseStatus: helmv2beta2.HelmReleaseStatus{ -+ releaseStatus: helmv2.HelmReleaseStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, - Type: fluxmeta.ReadyCondition, - Status: metav1.ConditionFalse, -- Reason: helmv2beta2.GetLastReleaseFailedReason, -+ Reason: helmv2.GetLastReleaseFailedReason, - Message: "failed to get last release revision", - }, - }, -@@ -1990,13 +1990,13 @@ var ( - Namespace: "test", - Generation: 2, - }, -- releaseStatus: helmv2beta2.HelmReleaseStatus{ -+ releaseStatus: helmv2.HelmReleaseStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, - Type: fluxmeta.ReadyCondition, - Status: metav1.ConditionFalse, -- Reason: helmv2beta2.GetLastReleaseFailedReason, -+ Reason: helmv2.GetLastReleaseFailedReason, - Message: "failed to get last release revision", - }, - }, -@@ -2027,7 +2027,7 @@ var ( - Namespace: "namespace-2", - Generation: 1, - }, -- releaseStatus: helmv2beta2.HelmReleaseStatus{ -+ releaseStatus: helmv2.HelmReleaseStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, -@@ -2040,7 +2040,7 @@ var ( - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, - Type: "Released", - Status: metav1.ConditionTrue, -- Reason: helmv2beta2.InstallSucceededReason, -+ Reason: helmv2.InstallSucceededReason, - Message: "Helm install succeeded", - }, - }, -@@ -2064,7 +2064,7 @@ var ( - Namespace: "namespace-2", - Generation: 1, - }, -- releaseStatus: helmv2beta2.HelmReleaseStatus{ -+ releaseStatus: helmv2.HelmReleaseStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, -@@ -2077,7 +2077,7 @@ var ( - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, - Type: "Released", - Status: metav1.ConditionTrue, -- Reason: helmv2beta2.InstallSucceededReason, -+ Reason: helmv2.InstallSucceededReason, - Message: "Helm install succeeded", - }, - }, -@@ -2101,7 +2101,7 @@ var ( - Namespace: "test", - Generation: 1, - }, -- releaseStatus: helmv2beta2.HelmReleaseStatus{ -+ releaseStatus: helmv2.HelmReleaseStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, -@@ -2130,13 +2130,13 @@ var ( - Namespace: "test", - Generation: 1, - }, -- releaseStatus: helmv2beta2.HelmReleaseStatus{ -+ releaseStatus: helmv2.HelmReleaseStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, - Type: fluxmeta.ReadyCondition, - Status: metav1.ConditionFalse, -- Reason: helmv2beta2.ArtifactFailedReason, -+ Reason: helmv2.ArtifactFailedReason, - Message: "HelmChart 'default/kubeapps-my-redis' is not ready", - }, - }, -@@ -2168,7 +2168,7 @@ var ( - Namespace: "test", - Generation: 1, - }, -- releaseStatus: helmv2beta2.HelmReleaseStatus{ -+ releaseStatus: helmv2.HelmReleaseStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, -@@ -2181,7 +2181,7 @@ var ( - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, - Type: "Released", - Status: metav1.ConditionTrue, -- Reason: helmv2beta2.InstallSucceededReason, -+ Reason: helmv2.InstallSucceededReason, - Message: "Helm install succeeded", - }, - }, -@@ -2275,41 +2275,41 @@ var ( - PostInstallationNotes: "some notes", - } - -- flux_helm_release_basic = newFluxHelmRelease(helmv2beta2.HelmChartTemplateSpec{ -+ flux_helm_release_basic = newFluxHelmRelease(helmv2.HelmChartTemplateSpec{ - Chart: "podinfo", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "podinfo", - Namespace: "namespace-1", - }, - }) - -- flux_helm_release_semver_constraint = newFluxHelmRelease(helmv2beta2.HelmChartTemplateSpec{ -+ flux_helm_release_semver_constraint = newFluxHelmRelease(helmv2.HelmChartTemplateSpec{ - Chart: "podinfo", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "podinfo", - Namespace: "namespace-1", - }, - Version: "> 5", - }) - -- flux_helm_release_reconcile_options = &helmv2beta2.HelmRelease{ -+ flux_helm_release_reconcile_options = &helmv2.HelmRelease{ - TypeMeta: metav1.TypeMeta{ -- Kind: helmv2beta2.HelmReleaseKind, -- APIVersion: helmv2beta2.GroupVersion.String(), -+ Kind: helmv2.HelmReleaseKind, -+ APIVersion: helmv2.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "my-podinfo", - Namespace: "test", - ResourceVersion: "1", - }, -- Spec: helmv2beta2.HelmReleaseSpec{ -- Chart: helmv2beta2.HelmChartTemplate{ -- Spec: helmv2beta2.HelmChartTemplateSpec{ -+ Spec: helmv2.HelmReleaseSpec{ -+ Chart: helmv2.HelmChartTemplate{ -+ Spec: helmv2.HelmChartTemplateSpec{ - Chart: "podinfo", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "podinfo", - Namespace: "namespace-1", - }, -@@ -2327,22 +2327,22 @@ var ( - "message": "what we do in the shadows", - }}) - -- flux_helm_release_values = &helmv2beta2.HelmRelease{ -+ flux_helm_release_values = &helmv2.HelmRelease{ - TypeMeta: metav1.TypeMeta{ -- Kind: helmv2beta2.HelmReleaseKind, -- APIVersion: helmv2beta2.GroupVersion.String(), -+ Kind: helmv2.HelmReleaseKind, -+ APIVersion: helmv2.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "my-podinfo", - Namespace: "test", - ResourceVersion: "1", - }, -- Spec: helmv2beta2.HelmReleaseSpec{ -- Chart: helmv2beta2.HelmChartTemplate{ -- Spec: helmv2beta2.HelmChartTemplateSpec{ -+ Spec: helmv2.HelmReleaseSpec{ -+ Chart: helmv2.HelmChartTemplate{ -+ Spec: helmv2.HelmChartTemplateSpec{ - Chart: "podinfo", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "podinfo", - Namespace: "namespace-1", - }, -@@ -2357,10 +2357,10 @@ var ( - InstalledPackageRef: installedRef("my-podinfo", "test"), - } - -- flux_helm_release_updated_1 = &helmv2beta2.HelmRelease{ -+ flux_helm_release_updated_1 = &helmv2.HelmRelease{ - TypeMeta: metav1.TypeMeta{ -- Kind: helmv2beta2.HelmReleaseKind, -- APIVersion: helmv2beta2.GroupVersion.String(), -+ Kind: helmv2.HelmReleaseKind, -+ APIVersion: helmv2.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "my-redis", -@@ -2368,12 +2368,12 @@ var ( - Generation: int64(1), - ResourceVersion: "1000", - }, -- Spec: helmv2beta2.HelmReleaseSpec{ -- Chart: helmv2beta2.HelmChartTemplate{ -- Spec: helmv2beta2.HelmChartTemplateSpec{ -+ Spec: helmv2.HelmReleaseSpec{ -+ Chart: helmv2.HelmChartTemplate{ -+ Spec: helmv2.HelmChartTemplateSpec{ - Chart: "redis", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "bitnami-1", - Namespace: "default", - }, -@@ -2384,10 +2384,10 @@ var ( - }, - } - -- flux_helm_release_updated_2 = &helmv2beta2.HelmRelease{ -+ flux_helm_release_updated_2 = &helmv2.HelmRelease{ - TypeMeta: metav1.TypeMeta{ -- Kind: helmv2beta2.HelmReleaseKind, -- APIVersion: helmv2beta2.GroupVersion.String(), -+ Kind: helmv2.HelmReleaseKind, -+ APIVersion: helmv2.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "my-redis", -@@ -2395,12 +2395,12 @@ var ( - Generation: int64(1), - ResourceVersion: "1000", - }, -- Spec: helmv2beta2.HelmReleaseSpec{ -- Chart: helmv2beta2.HelmChartTemplate{ -- Spec: helmv2beta2.HelmChartTemplateSpec{ -+ Spec: helmv2.HelmReleaseSpec{ -+ Chart: helmv2.HelmChartTemplate{ -+ Spec: helmv2.HelmChartTemplateSpec{ - Chart: "redis", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "bitnami-1", - Namespace: "default", - }, -@@ -2424,7 +2424,7 @@ var ( - Namespace: "test", - Generation: 1, - }, -- releaseStatus: helmv2beta2.HelmReleaseStatus{ -+ releaseStatus: helmv2.HelmReleaseStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, -@@ -2437,7 +2437,7 @@ var ( - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, - Type: "Released", - Status: metav1.ConditionTrue, -- Reason: helmv2beta2.InstallSucceededReason, -+ Reason: helmv2.InstallSucceededReason, - Message: "Helm install succeeded", - }, - }, -@@ -2457,10 +2457,10 @@ var ( - status: release.StatusDeployed, - } - -- flux_helm_release_updated_target_ns_is_set = &helmv2beta2.HelmRelease{ -+ flux_helm_release_updated_target_ns_is_set = &helmv2.HelmRelease{ - TypeMeta: metav1.TypeMeta{ -- Kind: helmv2beta2.HelmReleaseKind, -- APIVersion: helmv2beta2.GroupVersion.String(), -+ Kind: helmv2.HelmReleaseKind, -+ APIVersion: helmv2.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "my-redis", -@@ -2468,12 +2468,12 @@ var ( - Generation: int64(1), - ResourceVersion: "1000", - }, -- Spec: helmv2beta2.HelmReleaseSpec{ -- Chart: helmv2beta2.HelmChartTemplate{ -- Spec: helmv2beta2.HelmChartTemplateSpec{ -+ Spec: helmv2.HelmReleaseSpec{ -+ Chart: helmv2.HelmChartTemplate{ -+ Spec: helmv2.HelmChartTemplateSpec{ - Chart: "redis", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "bitnami-1", - Namespace: "default", - }, -@@ -2661,50 +2661,50 @@ var ( - }, - } - -- flux_helm_release_upgrade_policy_none = newFluxHelmRelease(helmv2beta2.HelmChartTemplateSpec{ -+ flux_helm_release_upgrade_policy_none = newFluxHelmRelease(helmv2.HelmChartTemplateSpec{ - Chart: "podinfo", - Version: "5.2.1", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "podinfo", - Namespace: "namespace-1", - }, - }) - -- flux_helm_release_upgrade_policy_major = newFluxHelmRelease(helmv2beta2.HelmChartTemplateSpec{ -+ flux_helm_release_upgrade_policy_major = newFluxHelmRelease(helmv2.HelmChartTemplateSpec{ - Chart: "podinfo", - Version: ">=5.2.1", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "podinfo", - Namespace: "namespace-1", - }, - }) - -- flux_helm_release_upgrade_policy_minor = newFluxHelmRelease(helmv2beta2.HelmChartTemplateSpec{ -+ flux_helm_release_upgrade_policy_minor = newFluxHelmRelease(helmv2.HelmChartTemplateSpec{ - Chart: "podinfo", - Version: ">=5.2.1 <6.0.0", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "podinfo", - Namespace: "namespace-1", - }, - }) - -- flux_helm_release_upgrade_policy_patch = newFluxHelmRelease(helmv2beta2.HelmChartTemplateSpec{ -+ flux_helm_release_upgrade_policy_patch = newFluxHelmRelease(helmv2.HelmChartTemplateSpec{ - Chart: "podinfo", - Version: ">=5.2.1 <5.3.0", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "podinfo", - Namespace: "namespace-1", - }, - }) - -- flux_helm_release_updated_upgrade_major = &helmv2beta2.HelmRelease{ -+ flux_helm_release_updated_upgrade_major = &helmv2.HelmRelease{ - TypeMeta: metav1.TypeMeta{ -- Kind: helmv2beta2.HelmReleaseKind, -- APIVersion: helmv2beta2.GroupVersion.String(), -+ Kind: helmv2.HelmReleaseKind, -+ APIVersion: helmv2.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "my-redis", -@@ -2712,13 +2712,13 @@ var ( - Generation: int64(1), - ResourceVersion: "1000", - }, -- Spec: helmv2beta2.HelmReleaseSpec{ -- Chart: helmv2beta2.HelmChartTemplate{ -- Spec: helmv2beta2.HelmChartTemplateSpec{ -+ Spec: helmv2.HelmReleaseSpec{ -+ Chart: helmv2.HelmChartTemplate{ -+ Spec: helmv2.HelmChartTemplateSpec{ - Version: ">=14.4.0", - Chart: "redis", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "bitnami-1", - Namespace: "default", - }, -@@ -2728,10 +2728,10 @@ var ( - }, - } - -- flux_helm_release_updated_upgrade_minor = &helmv2beta2.HelmRelease{ -+ flux_helm_release_updated_upgrade_minor = &helmv2.HelmRelease{ - TypeMeta: metav1.TypeMeta{ -- Kind: helmv2beta2.HelmReleaseKind, -- APIVersion: helmv2beta2.GroupVersion.String(), -+ Kind: helmv2.HelmReleaseKind, -+ APIVersion: helmv2.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "my-redis", -@@ -2739,13 +2739,13 @@ var ( - Generation: int64(1), - ResourceVersion: "1000", - }, -- Spec: helmv2beta2.HelmReleaseSpec{ -- Chart: helmv2beta2.HelmChartTemplate{ -- Spec: helmv2beta2.HelmChartTemplateSpec{ -+ Spec: helmv2.HelmReleaseSpec{ -+ Chart: helmv2.HelmChartTemplate{ -+ Spec: helmv2.HelmChartTemplateSpec{ - Version: ">=14.4.0 <15.0.0", - Chart: "redis", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "bitnami-1", - Namespace: "default", - }, -@@ -2755,10 +2755,10 @@ var ( - }, - } - -- flux_helm_release_updated_upgrade_patch = &helmv2beta2.HelmRelease{ -+ flux_helm_release_updated_upgrade_patch = &helmv2.HelmRelease{ - TypeMeta: metav1.TypeMeta{ -- Kind: helmv2beta2.HelmReleaseKind, -- APIVersion: helmv2beta2.GroupVersion.String(), -+ Kind: helmv2.HelmReleaseKind, -+ APIVersion: helmv2.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "my-redis", -@@ -2766,13 +2766,13 @@ var ( - Generation: int64(1), - ResourceVersion: "1000", - }, -- Spec: helmv2beta2.HelmReleaseSpec{ -- Chart: helmv2beta2.HelmChartTemplate{ -- Spec: helmv2beta2.HelmChartTemplateSpec{ -+ Spec: helmv2.HelmReleaseSpec{ -+ Chart: helmv2.HelmChartTemplate{ -+ Spec: helmv2.HelmChartTemplateSpec{ - Version: ">=14.4.0 <14.5.0", - Chart: "redis", -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -- Kind: sourcev1beta2.HelmRepositoryKind, -+ SourceRef: helmv2.CrossNamespaceObjectReference{ -+ Kind: sourcev1.HelmRepositoryKind, - Name: "bitnami-1", - Namespace: "default", - }, -@@ -3230,13 +3230,13 @@ var ( - } - - get_summaries_repo_1 = newRepo("bar", "foo", -- &sourcev1beta2.HelmRepositorySpec{ -+ &sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 10 * time.Minute}, - // TODO(agamez): flux upgrade - migrate to CertSecretRef, see https://github.com/fluxcd/flux2/releases/tag/v2.1.0 - SecretRef: &fluxmeta.LocalObjectReference{}, - }, -- &sourcev1beta2.HelmRepositoryStatus{ -+ &sourcev1.HelmRepositoryStatus{ - Artifact: &sourcev1.Artifact{ - Digest: "651f952130ea96823711d08345b85e82be011dc6", - LastUpdateTime: metav1.Time{Time: lastUpdateTime}, -@@ -3257,11 +3257,11 @@ var ( - }) - - get_summaries_repo_2 = newRepo("zot", "xyz", -- &sourcev1beta2.HelmRepositorySpec{ -+ &sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 10 * time.Minute}, - }, -- &sourcev1beta2.HelmRepositoryStatus{ -+ &sourcev1.HelmRepositoryStatus{ - Artifact: &sourcev1.Artifact{ - Digest: "651f952130ea96823711d08345b85e82be011dc6", - LastUpdateTime: metav1.Time{Time: lastUpdateTime}, -@@ -3282,19 +3282,19 @@ var ( - }) - - get_summaries_repo_3 = newRepo("pending", "xyz", -- &sourcev1beta2.HelmRepositorySpec{ -+ &sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 10 * time.Minute}, - }, -- &sourcev1beta2.HelmRepositoryStatus{ObservedGeneration: -1}, -+ &sourcev1.HelmRepositoryStatus{ObservedGeneration: -1}, - ) - - get_summaries_repo_4 = newRepo("failed", "xyz", -- &sourcev1beta2.HelmRepositorySpec{ -+ &sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 10 * time.Minute}, - }, -- &sourcev1beta2.HelmRepositoryStatus{ -+ &sourcev1.HelmRepositoryStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, -@@ -4027,19 +4027,19 @@ var ( - } - } - -- newFluxHelmRelease = func(chartSpec helmv2beta2.HelmChartTemplateSpec) *helmv2beta2.HelmRelease { -- return &helmv2beta2.HelmRelease{ -+ newFluxHelmRelease = func(chartSpec helmv2.HelmChartTemplateSpec) *helmv2.HelmRelease { -+ return &helmv2.HelmRelease{ - TypeMeta: metav1.TypeMeta{ -- Kind: helmv2beta2.HelmReleaseKind, -- APIVersion: helmv2beta2.GroupVersion.String(), -+ Kind: helmv2.HelmReleaseKind, -+ APIVersion: helmv2.GroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Name: "my-podinfo", - Namespace: "test", - ResourceVersion: "1", - }, -- Spec: helmv2beta2.HelmReleaseSpec{ -- Chart: helmv2beta2.HelmChartTemplate{ -+ Spec: helmv2.HelmReleaseSpec{ -+ Chart: helmv2.HelmChartTemplate{ - Spec: chartSpec, - }, - Interval: metav1.Duration{Duration: 1 * time.Minute}, -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/integration_utils_test.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/integration_utils_test.go -index 2433a17b0..37f3c8871 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/integration_utils_test.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/integration_utils_test.go -@@ -18,9 +18,9 @@ import ( - "testing" - "time" - -- helmv2beta2 "github.com/fluxcd/helm-controller/api/v2beta2" -+ helmv2 "github.com/fluxcd/helm-controller/api/v2" - fluxmeta "github.com/fluxcd/pkg/apis/meta" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - "github.com/go-redis/redis/v8" - "github.com/vmware-tanzu/kubeapps/cmd/apprepository-controller/pkg/client/clientset/versioned/scheme" - plugins "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/plugins/v1alpha1" -@@ -143,7 +143,7 @@ func checkEnv(t *testing.T) (fluxplugin.FluxV2PackagesServiceClient, fluxplugin. - } - - // Check for helmrepositories left over from manual testing. This has caused me a lot grief -- var l *sourcev1beta2.HelmRepositoryList -+ var l *sourcev1.HelmRepositoryList - var names []string - const maxWait = 25 - for i := 0; i <= maxWait; i++ { -@@ -250,12 +250,12 @@ func kubeAddHelmRepository(t *testing.T, name types.NamespacedName, typ, url, se - if interval <= 0 { - interval = time.Duration(10 * time.Minute) - } -- repo := sourcev1beta2.HelmRepository{ -+ repo := sourcev1.HelmRepository{ - ObjectMeta: metav1.ObjectMeta{ - Name: name.Name, - Namespace: name.Namespace, - }, -- Spec: sourcev1beta2.HelmRepositorySpec{ -+ Spec: sourcev1.HelmRepositorySpec{ - URL: url, - Interval: metav1.Duration{Duration: interval}, - }, -@@ -296,7 +296,7 @@ func kubeAddHelmRepositoryAndCleanup(t *testing.T, name types.NamespacedName, ty - return err - } - --func kubeGetHelmRepository(t *testing.T, name types.NamespacedName) (*sourcev1beta2.HelmRepository, error) { -+func kubeGetHelmRepository(t *testing.T, name types.NamespacedName) (*sourcev1.HelmRepository, error) { - t.Logf("+kubeGetHelmRepository(%s)", name) - - ctx, cancel := context.WithTimeout(context.Background(), defaultContextTimeout) -@@ -304,7 +304,7 @@ func kubeGetHelmRepository(t *testing.T, name types.NamespacedName) (*sourcev1be - if ifc, err := kubeGetCtrlClient(); err != nil { - return nil, err - } else { -- var repo sourcev1beta2.HelmRepository -+ var repo sourcev1.HelmRepository - if err := ifc.Get(ctx, name, &repo); err != nil { - return nil, err - } -@@ -312,7 +312,7 @@ func kubeGetHelmRepository(t *testing.T, name types.NamespacedName) (*sourcev1be - } - } - --func kubeListAllHelmRepositories(t *testing.T) (*sourcev1beta2.HelmRepositoryList, error) { -+func kubeListAllHelmRepositories(t *testing.T) (*sourcev1.HelmRepositoryList, error) { - t.Logf("+kubeListAllHelmRepositories()") - - ctx, cancel := context.WithTimeout(context.Background(), defaultContextTimeout) -@@ -320,7 +320,7 @@ func kubeListAllHelmRepositories(t *testing.T) (*sourcev1beta2.HelmRepositoryLis - if ifc, err := kubeGetCtrlClient(); err != nil { - return nil, err - } else { -- var repoList sourcev1beta2.HelmRepositoryList -+ var repoList sourcev1.HelmRepositoryList - if err := ifc.List(ctx, &repoList); err != nil { - return nil, err - } -@@ -339,7 +339,7 @@ func kubeWaitUntilHelmRepositoryIsReady(t *testing.T, name types.NamespacedName) - } else { - ctx, cancel := context.WithTimeout(context.Background(), 90*time.Second) - defer cancel() -- var repoList sourcev1beta2.HelmRepositoryList -+ var repoList sourcev1.HelmRepositoryList - if watcher, err := ifc.Watch(ctx, &repoList); err != nil { - return err - } else { -@@ -356,8 +356,8 @@ func kubeWaitUntilHelmRepositoryIsReady(t *testing.T, name types.NamespacedName) - } - switch event.Type { - case watch.Added, watch.Modified: -- if repo, ok := event.Object.(*sourcev1beta2.HelmRepository); !ok { -- return errors.New("Could not cast to *sourcev1beta2.HelmRepository") -+ if repo, ok := event.Object.(*sourcev1.HelmRepository); !ok { -+ return errors.New("Could not cast to *sourcev1.HelmRepository") - } else { - hour, minute, second := time.Now().Clock() - complete, success, reason := isHelmRepositoryReady(*repo) -@@ -380,7 +380,7 @@ func kubeWaitUntilHelmRepositoryIsReady(t *testing.T, name types.NamespacedName) - // this should eventually be replaced with flux plugin's DeleteRepository() - func kubeDeleteHelmRepository(t *testing.T, name types.NamespacedName) error { - t.Logf("+kubeDeleteHelmRepository(%s)", name) -- repo := &sourcev1beta2.HelmRepository{ -+ repo := &sourcev1.HelmRepository{ - ObjectMeta: metav1.ObjectMeta{ - Name: name.Name, - Namespace: name.Namespace, -@@ -399,7 +399,7 @@ func kubeExistsHelmRepository(t *testing.T, name types.NamespacedName) (bool, er - t.Logf("+kubeExistsHelmRepository(%s)", name) - ctx, cancel := context.WithTimeout(context.Background(), defaultContextTimeout) - defer cancel() -- var repo sourcev1beta2.HelmRepository -+ var repo sourcev1.HelmRepository - if ifc, err := kubeGetCtrlClient(); err != nil { - return false, err - } else if err = ifc.Get(ctx, name, &repo); err == nil { -@@ -413,7 +413,7 @@ func kubeDeleteHelmRelease(t *testing.T, name types.NamespacedName) error { - t.Logf("+kubeDeleteHelmRelease(%s)", name) - ctx, cancel := context.WithTimeout(context.Background(), defaultContextTimeout) - defer cancel() -- release := &helmv2beta2.HelmRelease{ -+ release := &helmv2.HelmRelease{ - ObjectMeta: metav1.ObjectMeta{ - Name: name.Name, - Namespace: name.Namespace, -@@ -430,7 +430,7 @@ func kubeExistsHelmRelease(t *testing.T, name types.NamespacedName) (bool, error - t.Logf("+kubeExistsHelmRelease(%s)", name) - ctx, cancel := context.WithTimeout(context.Background(), defaultContextTimeout) - defer cancel() -- var rel helmv2beta2.HelmRelease -+ var rel helmv2.HelmRelease - if ifc, err := kubeGetCtrlClient(); err != nil { - return false, err - } else if err = ifc.Get(ctx, name, &rel); err == nil { -@@ -825,7 +825,7 @@ func kubeCreateSecret(t *testing.T, secret *apiv1.Secret) error { - return err - } - --func kubeSetKubeappsManagedSecretOwnerRef(t *testing.T, secretName types.NamespacedName, ownerRepo *sourcev1beta2.HelmRepository) error { -+func kubeSetKubeappsManagedSecretOwnerRef(t *testing.T, secretName types.NamespacedName, ownerRepo *sourcev1.HelmRepository) error { - t.Logf("+kubeSetKubeappsManagedSecretOwnerRef(%s, %s)", secretName, ownerRepo.Name) - typedClient, err := kubeGetTypedClient() - if err != nil { -@@ -851,9 +851,9 @@ func kubeSetKubeappsManagedSecretOwnerRef(t *testing.T, secretName types.Namespa - *metav1.NewControllerRef( - ownerRepo, - schema.GroupVersionKind{ -- Group: sourcev1beta2.GroupVersion.Group, -- Version: sourcev1beta2.GroupVersion.Version, -- Kind: sourcev1beta2.HelmRepositoryKind, -+ Group: sourcev1.GroupVersion.Group, -+ Version: sourcev1.GroupVersion.Version, -+ Kind: sourcev1.HelmRepositoryKind, - }), - } - -@@ -1028,11 +1028,11 @@ func kubeGetCtrlClient() (ctrlclient.WithWatch, error) { - return nil, err - } else { - scheme := runtime.NewScheme() -- err = sourcev1beta2.AddToScheme(scheme) -+ err = sourcev1.AddToScheme(scheme) - if err != nil { - return nil, err - } -- err = helmv2beta2.AddToScheme(scheme) -+ err = helmv2.AddToScheme(scheme) - if err != nil { - return nil, err - } -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/oci_repo.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/oci_repo.go -index 67bfa5480..149f904c4 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/oci_repo.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/oci_repo.go -@@ -47,7 +47,7 @@ import ( - - "github.com/fluxcd/pkg/oci/auth/login" - "github.com/fluxcd/pkg/version" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - - // OCI Registry As a Storage (ORAS) - orasregistryauthv2 "oras.land/oras-go/v2/registry/remote/auth" -@@ -386,7 +386,7 @@ func newRegistryClient(isLogin bool, tlsConfig *tls.Config, getterOpts []getter. - // OCI Helm repository, which defines a source, does not produce an Artifact - // ref https://fluxcd.io/docs/components/source/helmrepositories/#helm-oci-repository - --func (s *repoEventSink) onAddOciRepo(repo sourcev1beta2.HelmRepository) ([]byte, bool, error) { -+func (s *repoEventSink) onAddOciRepo(repo sourcev1.HelmRepository) ([]byte, bool, error) { - log.V(4).Infof("+onAddOciRepo(%s)", common.PrettyPrint(repo)) - defer log.V(4).Info("-onAddOciRepo") - -@@ -444,7 +444,7 @@ func (s *repoEventSink) onAddOciRepo(repo sourcev1beta2.HelmRepository) ([]byte, - return buf.Bytes(), true, nil - } - --func (s *repoEventSink) onModifyOciRepo(key string, oldValue interface{}, repo sourcev1beta2.HelmRepository) ([]byte, bool, error) { -+func (s *repoEventSink) onModifyOciRepo(key string, oldValue interface{}, repo sourcev1.HelmRepository) ([]byte, bool, error) { - log.Infof("+onModifyOciRepo(%s)", common.PrettyPrint(repo)) - defer log.Info("-onModifyOciRepo") - -@@ -576,12 +576,12 @@ func (r *OCIChartRepository) shortRepoName(fullRepoName string) (string, error) - } - } - --func (s *Server) newOCIChartRepositoryAndLogin(ctx context.Context, repo sourcev1beta2.HelmRepository) (*OCIChartRepository, error) { -+func (s *Server) newOCIChartRepositoryAndLogin(ctx context.Context, repo sourcev1.HelmRepository) (*OCIChartRepository, error) { - sink := s.newRepoEventSink() - return sink.newOCIChartRepositoryAndLogin(ctx, repo) - } - --func (s *repoEventSink) newOCIChartRepositoryAndLogin(ctx context.Context, repo sourcev1beta2.HelmRepository) (*OCIChartRepository, error) { -+func (s *repoEventSink) newOCIChartRepositoryAndLogin(ctx context.Context, repo sourcev1.HelmRepository) (*OCIChartRepository, error) { - if loginOpts, getterOpts, cred, err := s.clientOptionsForOciRepo(ctx, repo); err != nil { - return nil, connect.NewError(connect.CodeInternal, fmt.Errorf("Failed to create registry client: %w", err)) - } else { -@@ -649,7 +649,7 @@ func (s *repoEventSink) newOCIChartRepositoryAndLoginWithOptions(registryURL str - return ociRepo, nil - } - --func (s *repoEventSink) clientOptionsForOciRepo(ctx context.Context, repo sourcev1beta2.HelmRepository) ([]registry.LoginOption, []getter.Option, *orasregistryauthv2.Credential, error) { -+func (s *repoEventSink) clientOptionsForOciRepo(ctx context.Context, repo sourcev1.HelmRepository) ([]registry.LoginOption, []getter.Option, *orasregistryauthv2.Credential, error) { - var loginOpts []registry.LoginOption - var cred *orasregistryauthv2.Credential - getterOpts := []getter.Option{ -@@ -680,7 +680,7 @@ func (s *repoEventSink) clientOptionsForOciRepo(ctx context.Context, repo source - } - } - -- if repo.Spec.Provider != "" && repo.Spec.Provider != sourcev1beta2.GenericOCIProvider { -+ if repo.Spec.Provider != "" && repo.Spec.Provider != "generic" { - ctxTimeout, cancel := context.WithTimeout(ctx, repo.Spec.Timeout.Duration) - defer cancel() - -@@ -734,7 +734,7 @@ func downloadChartWithHelmGetter(tlsConfig *tls.Config, getterOptions []getter.O - return buf, err - } - --func getOciChartModels(appNames []string, allTags map[string]TagList, ociChartRepo *OCIChartRepository, repo *sourcev1beta2.HelmRepository) ([]models.Chart, error) { -+func getOciChartModels(appNames []string, allTags map[string]TagList, ociChartRepo *OCIChartRepository, repo *sourcev1.HelmRepository) ([]models.Chart, error) { - charts := []models.Chart{} - for _, fullAppName := range appNames { - appName, err := ociChartRepo.shortRepoName(fullAppName) -@@ -756,7 +756,7 @@ func getOciChartModels(appNames []string, allTags map[string]TagList, ociChartRe - return charts, nil - } - --func getOciChartModel(appName string, tags TagList, ociChartRepo *OCIChartRepository, repo *sourcev1beta2.HelmRepository) (*models.Chart, error) { -+func getOciChartModel(appName string, tags TagList, ociChartRepo *OCIChartRepository, repo *sourcev1.HelmRepository) (*models.Chart, error) { - // Encode repository names to store them in the database. - encodedAppName := url.PathEscape(appName) - chartID := path.Join(repo.Name, encodedAppName) -@@ -870,8 +870,8 @@ func downloadOCIChartFn(ociRepo *OCIChartRepository) func(chartID, chartUrl, cha - } - - // oidcAuth generates the OIDC credential authenticator based on the specified cloud provider. --func oidcAuth(ctx context.Context, repo sourcev1beta2.HelmRepository) (*orasregistryauthv2.Credential, error) { -- url := strings.TrimPrefix(repo.Spec.URL, sourcev1beta2.OCIRepositoryPrefix) -+func oidcAuth(ctx context.Context, repo sourcev1.HelmRepository) (*orasregistryauthv2.Credential, error) { -+ url := strings.TrimPrefix(repo.Spec.URL, "oci://") - ref, err := name.ParseReference(url) - if err != nil { - return nil, fmt.Errorf("failed to parse URL '%s': %w", repo.Spec.URL, err) -@@ -888,11 +888,11 @@ func oidcAuth(ctx context.Context, repo sourcev1beta2.HelmRepository) (*orasregi - func loginWithManager(ctx context.Context, provider, url string, ref name.Reference) (*orasregistryauthv2.Credential, error) { - opts := login.ProviderOptions{} - switch provider { -- case sourcev1beta2.AmazonOCIProvider: -+ case "amazon": - opts.AwsAutoLogin = true -- case sourcev1beta2.AzureOCIProvider: -+ case "azure": - opts.AzureAutoLogin = true -- case sourcev1beta2.GoogleOCIProvider: -+ case "gcp": - opts.GcpAutoLogin = true - } - -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go -index c489cb6ca..37593c166 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go -@@ -12,9 +12,9 @@ import ( - "time" - - "github.com/bufbuild/connect-go" -- helmv2beta2 "github.com/fluxcd/helm-controller/api/v2beta2" -+ helmv2 "github.com/fluxcd/helm-controller/api/v2" - fluxmeta "github.com/fluxcd/pkg/apis/meta" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - corev1 "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/packages/v1alpha1" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/common" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/pkg/connecterror" -@@ -40,7 +40,7 @@ var ( - ) - - // namespace maybe "", in which case releases from all namespaces are returned --func (s *Server) listReleasesInCluster(ctx context.Context, headers http.Header, namespace string) ([]helmv2beta2.HelmRelease, error) { -+func (s *Server) listReleasesInCluster(ctx context.Context, headers http.Header, namespace string) ([]helmv2.HelmRelease, error) { - client, err := s.getClient(headers, namespace) - if err != nil { - return nil, err -@@ -53,7 +53,7 @@ func (s *Server) listReleasesInCluster(ctx context.Context, headers http.Header, - // 2) there is a "consistent snapshot" problem, where the client doesn't want to - // see any results created/updated/deleted after the first request is issued - // To fix this, we must make use of resourceVersion := relList.GetResourceVersion() -- var relList helmv2beta2.HelmReleaseList -+ var relList helmv2.HelmReleaseList - if err = client.List(ctx, &relList); err != nil { - return nil, connecterror.FromK8sError("list", "HelmRelease", namespace+"/*", err) - } else { -@@ -61,13 +61,13 @@ func (s *Server) listReleasesInCluster(ctx context.Context, headers http.Header, - } - } - --func (s *Server) getReleaseInCluster(ctx context.Context, headers http.Header, key types.NamespacedName) (*helmv2beta2.HelmRelease, error) { -+func (s *Server) getReleaseInCluster(ctx context.Context, headers http.Header, key types.NamespacedName) (*helmv2.HelmRelease, error) { - client, err := s.getClient(headers, key.Namespace) - if err != nil { - return nil, err - } - -- var rel helmv2beta2.HelmRelease -+ var rel helmv2.HelmRelease - if err = client.Get(ctx, key, &rel); err != nil { - return nil, connecterror.FromK8sError("get", "HelmRelease", key.String(), err) - } -@@ -106,7 +106,7 @@ func (s *Server) paginatedInstalledPkgSummaries(ctx context.Context, headers htt - return installedPkgSummaries, nil - } - --func (s *Server) installedPkgSummaryFromRelease(ctx context.Context, headers http.Header, rel helmv2beta2.HelmRelease) (*corev1.InstalledPackageSummary, error) { -+func (s *Server) installedPkgSummaryFromRelease(ctx context.Context, headers http.Header, rel helmv2.HelmRelease) (*corev1.InstalledPackageSummary, error) { - name, err := common.NamespacedName(&rel) - if err != nil { - return nil, err -@@ -236,11 +236,7 @@ func (s *Server) installedPackageDetail(ctx context.Context, headers http.Header - - // this will only be present if install/upgrade succeeded - // TODO(agamez): flux upgrade - migrate to Status.History, see https://github.com/fluxcd/flux2/releases/tag/v2.2.0 -- pkgVersion := rel.Status.LastAppliedRevision -- if pkgVersion == "" { -- // this is the back-up option: will be there if the reconciliation is in progress or has failed -- pkgVersion = rel.Status.LastAttemptedRevision -- } -+ pkgVersion := rel.Status.LastAttemptedRevision - - availablePackageRef, err := installedPackageAvailablePackageRef(rel) - if err != nil { -@@ -288,7 +284,7 @@ func (s *Server) installedPackageDetail(ctx context.Context, headers http.Header - }, nil - } - --func (s *Server) getReleaseViaHelmApi(headers http.Header, key types.NamespacedName, rel *helmv2beta2.HelmRelease) (*release.Release, error) { -+func (s *Server) getReleaseViaHelmApi(headers http.Header, key types.NamespacedName, rel *helmv2.HelmRelease) (*release.Release, error) { - // post installation notes can only be retrieved via helm APIs, flux doesn't do it - // see discussion in https://cloud-native.slack.com/archives/CLAJ40HV3/p1629244025187100 - if s.actionConfigGetter == nil { -@@ -458,7 +454,7 @@ func (s *Server) updateRelease(ctx context.Context, headers http.Header, package - // process and the current status no longer applies. metadata and spec I want - // to keep, as they may have had added labels and/or annotations and/or - // even other changes made by the user. -- rel.Status = helmv2beta2.HelmReleaseStatus{} -+ rel.Status = helmv2.HelmReleaseStatus{} - - client, err := s.getClient(headers, packageRef.Context.Namespace) - if err != nil { -@@ -489,7 +485,7 @@ func (s *Server) deleteRelease(ctx context.Context, headers http.Header, package - - log.V(4).Infof("Deleting release: [%s]", packageRef.Identifier) - -- rel := &helmv2beta2.HelmRelease{ -+ rel := &helmv2.HelmRelease{ - ObjectMeta: metav1.ObjectMeta{ - Name: packageRef.Identifier, - Namespace: packageRef.Context.Namespace, -@@ -507,19 +503,19 @@ func (s *Server) deleteRelease(ctx context.Context, headers http.Header, package - // 2. metadata.namespace, where this HelmRelease CRD will exist, same as (3) below - // per https://github.com/vmware-tanzu/kubeapps/pull/3640#issuecomment-949315105 - // 3. spec.targetNamespace, where flux will install any artifacts from the release --func (s *Server) newFluxHelmRelease(chart *models.Chart, targetName types.NamespacedName, versionExpr string, reconcile *corev1.ReconciliationOptions, values map[string]interface{}) (*helmv2beta2.HelmRelease, error) { -- fluxRelease := &helmv2beta2.HelmRelease{ -+func (s *Server) newFluxHelmRelease(chart *models.Chart, targetName types.NamespacedName, versionExpr string, reconcile *corev1.ReconciliationOptions, values map[string]interface{}) (*helmv2.HelmRelease, error) { -+ fluxRelease := &helmv2.HelmRelease{ - ObjectMeta: metav1.ObjectMeta{ - Name: targetName.Name, - Namespace: targetName.Namespace, - }, -- Spec: helmv2beta2.HelmReleaseSpec{ -- Chart: helmv2beta2.HelmChartTemplate{ -- Spec: helmv2beta2.HelmChartTemplateSpec{ -+ Spec: helmv2.HelmReleaseSpec{ -+ Chart: &helmv2.HelmChartTemplate{ -+ Spec: helmv2.HelmChartTemplateSpec{ - Chart: chart.Name, -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -+ SourceRef: helmv2.CrossNamespaceObjectReference{ - Name: chart.Repo.Name, -- Kind: sourcev1beta2.HelmRepositoryKind, -+ Kind: sourcev1.HelmRepositoryKind, - Namespace: chart.Repo.Namespace, - }, - }, -@@ -581,7 +577,7 @@ func (s *Server) newFluxHelmRelease(chart *models.Chart, targetName types.Namesp - // when install completes with success - // - "reason" field: failure only when flux returns "InstallFailed" reason - // otherwise pending or unspecified when there are no status conditions to go by --func isHelmReleaseReady(rel helmv2beta2.HelmRelease) (ready bool, status corev1.InstalledPackageStatus_StatusReason, userReason string) { -+func isHelmReleaseReady(rel helmv2.HelmRelease) (ready bool, status corev1.InstalledPackageStatus_StatusReason, userReason string) { - if !checkReleaseGeneration(rel) { - // according to https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties - // observedGeneration represents the .metadata.generation that the condition was set based upon. -@@ -601,9 +597,8 @@ func isHelmReleaseReady(rel helmv2beta2.HelmRelease) (ready bool, status corev1. - // "reason": "InstallFailed" - // i.e. not super useful - userReason = readyCond.Reason -- if userReason == helmv2beta2.InstallFailedReason || -- userReason == helmv2beta2.UpgradeFailedReason || -- userReason == helmv2beta2.GetLastReleaseFailedReason { -+ if userReason == helmv2.InstallFailedReason || -+ userReason == helmv2.UpgradeFailedReason { - isInstallFailed = true - } - } -@@ -627,7 +622,7 @@ func isHelmReleaseReady(rel helmv2beta2.HelmRelease) (ready bool, status corev1. - return false, corev1.InstalledPackageStatus_STATUS_REASON_PENDING, userReason - } - --func installedPackageStatus(rel helmv2beta2.HelmRelease) *corev1.InstalledPackageStatus { -+func installedPackageStatus(rel helmv2.HelmRelease) *corev1.InstalledPackageStatus { - ready, reason, userReason := isHelmReleaseReady(rel) - return &corev1.InstalledPackageStatus{ - Ready: ready, -@@ -636,7 +631,7 @@ func installedPackageStatus(rel helmv2beta2.HelmRelease) *corev1.InstalledPackag - } - } - --func installedPackageReconciliationOptions(rel *helmv2beta2.HelmRelease) *corev1.ReconciliationOptions { -+func installedPackageReconciliationOptions(rel *helmv2.HelmRelease) *corev1.ReconciliationOptions { - reconciliationOptions := &corev1.ReconciliationOptions{} - reconciliationOptions.Interval = pkgutils.FromDuration(&rel.Spec.Interval) - reconciliationOptions.Suspend = rel.Spec.Suspend -@@ -644,7 +639,7 @@ func installedPackageReconciliationOptions(rel *helmv2beta2.HelmRelease) *corev1 - return reconciliationOptions - } - --func installedPackageAvailablePackageRef(rel *helmv2beta2.HelmRelease) (*corev1.AvailablePackageReference, error) { -+func installedPackageAvailablePackageRef(rel *helmv2.HelmRelease) (*corev1.AvailablePackageReference, error) { - repoName := rel.Spec.Chart.Spec.SourceRef.Name - if repoName == "" { - return nil, connect.NewError(connect.CodeInternal, fmt.Errorf("Missing required field spec.chart.spec.sourceRef.name")) -@@ -670,7 +665,7 @@ func installedPackageAvailablePackageRef(rel *helmv2beta2.HelmRelease) (*corev1. - } - - // ref https://fluxcd.io/docs/components/helm/helmreleases/ --func helmReleaseName(key types.NamespacedName, rel *helmv2beta2.HelmRelease) types.NamespacedName { -+func helmReleaseName(key types.NamespacedName, rel *helmv2.HelmRelease) types.NamespacedName { - helmReleaseName := rel.Spec.ReleaseName - // according to docs ReleaseName is optional and defaults to a composition of - // '[TargetNamespace-]Name'. -@@ -691,7 +686,7 @@ func helmReleaseName(key types.NamespacedName, rel *helmv2beta2.HelmRelease) typ - return types.NamespacedName{Name: helmReleaseName, Namespace: helmReleaseNamespace} - } - --func checkReleaseGeneration(rel helmv2beta2.HelmRelease) bool { -+func checkReleaseGeneration(rel helmv2.HelmRelease) bool { - generation := rel.GetGeneration() - observedGeneration := rel.Status.ObservedGeneration - return generation > 0 && generation == observedGeneration -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release_integration_test.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release_integration_test.go -index ba46e9633..dd5507e60 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release_integration_test.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release_integration_test.go -@@ -12,8 +12,8 @@ import ( - "testing" - "time" - -- helmv2beta2 "github.com/fluxcd/helm-controller/api/v2beta2" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ helmv2 "github.com/fluxcd/helm-controller/api/v2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - "github.com/google/go-cmp/cmp" - "github.com/google/go-cmp/cmp/cmpopts" - corev1 "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/packages/v1alpha1" -@@ -949,7 +949,7 @@ func TestKindClusterRBAC_ReadRelease(t *testing.T) { - rules := map[string][]rbacv1.PolicyRule{ - ns2: { - { -- APIGroups: []string{helmv2beta2.GroupVersion.Group}, -+ APIGroups: []string{helmv2.GroupVersion.Group}, - Resources: []string{fluxHelmReleases}, - Verbs: []string{"get", "list"}, - }, -@@ -1044,14 +1044,14 @@ func TestKindClusterRBAC_ReadRelease(t *testing.T) { - nsToRules := map[string][]rbacv1.PolicyRule{ - ns1: { - { -- APIGroups: []string{sourcev1beta2.GroupVersion.Group}, -+ APIGroups: []string{sourcev1.GroupVersion.Group}, - Resources: []string{"helmcharts"}, - Verbs: []string{"get", "list"}, - }, - }, - ns2: { - { -- APIGroups: []string{helmv2beta2.GroupVersion.Group}, -+ APIGroups: []string{helmv2.GroupVersion.Group}, - Resources: []string{fluxHelmReleases}, - Verbs: []string{"get", "list"}, - }, -@@ -1188,7 +1188,7 @@ func TestKindClusterRBAC_CreateRelease(t *testing.T) { - nsToRules := map[string][]rbacv1.PolicyRule{ - ns2: { - { -- APIGroups: []string{helmv2beta2.GroupVersion.Group}, -+ APIGroups: []string{helmv2.GroupVersion.Group}, - Resources: []string{fluxHelmReleases}, - Verbs: []string{"create"}, - }, -@@ -1218,14 +1218,14 @@ func TestKindClusterRBAC_CreateRelease(t *testing.T) { - nsToRules = map[string][]rbacv1.PolicyRule{ - ns1: { - { -- APIGroups: []string{sourcev1beta2.GroupVersion.Group}, -+ APIGroups: []string{sourcev1.GroupVersion.Group}, - Resources: []string{"helmcharts"}, - Verbs: []string{"get"}, - }, - }, - ns2: { - { -- APIGroups: []string{helmv2beta2.GroupVersion.Group}, -+ APIGroups: []string{helmv2.GroupVersion.Group}, - Resources: []string{fluxHelmReleases}, - Verbs: []string{"create"}, - }, -@@ -1335,7 +1335,7 @@ func TestKindClusterRBAC_UpdateRelease(t *testing.T) { - nsToRules := map[string][]rbacv1.PolicyRule{ - ns2: { - { -- APIGroups: []string{helmv2beta2.GroupVersion.Group}, -+ APIGroups: []string{helmv2.GroupVersion.Group}, - Resources: []string{fluxHelmReleases}, - Verbs: []string{"get"}, - }, -@@ -1368,7 +1368,7 @@ func TestKindClusterRBAC_UpdateRelease(t *testing.T) { - nsToRules = map[string][]rbacv1.PolicyRule{ - ns2: { - { -- APIGroups: []string{helmv2beta2.GroupVersion.Group}, -+ APIGroups: []string{helmv2.GroupVersion.Group}, - Resources: []string{fluxHelmReleases}, - Verbs: []string{"get", "update"}, - }, -@@ -1476,7 +1476,7 @@ func TestKindClusterRBAC_DeleteRelease(t *testing.T) { - nsToRules := map[string][]rbacv1.PolicyRule{ - ns2: { - { -- APIGroups: []string{helmv2beta2.GroupVersion.Group}, -+ APIGroups: []string{helmv2.GroupVersion.Group}, - Resources: []string{fluxHelmReleases}, - Verbs: []string{"delete"}, - }, -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release_test.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release_test.go -index 824afc678..8827ccdbe 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release_test.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release_test.go -@@ -12,10 +12,10 @@ import ( - "time" - - "github.com/bufbuild/connect-go" -- helmv2beta2 "github.com/fluxcd/helm-controller/api/v2beta2" -+ helmv2 "github.com/fluxcd/helm-controller/api/v2" - fluxmeta "github.com/fluxcd/pkg/apis/meta" - sourcev1 "github.com/fluxcd/source-controller/api/v1" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - "github.com/google/go-cmp/cmp" - "github.com/google/go-cmp/cmp/cmpopts" - corev1 "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/packages/v1alpha1" -@@ -43,7 +43,7 @@ type testSpecGetInstalledPackages struct { - releaseValues *v1.JSON - releaseSuspend bool - releaseServiceAccountName string -- releaseStatus helmv2beta2.HelmReleaseStatus -+ releaseStatus helmv2.HelmReleaseStatus - // only used to test edge cases now, most tests should not set this - targetNamespace string - } -@@ -511,7 +511,7 @@ func TestCreateInstalledPackage(t *testing.T) { - existingObjs testSpecCreateInstalledPackage - expectedStatusCode codes.Code - expectedResponse *corev1.CreateInstalledPackageResponse -- expectedRelease *helmv2beta2.HelmRelease -+ expectedRelease *helmv2.HelmRelease - defaultUpgradePolicyStr string - }{ - { -@@ -637,7 +637,7 @@ func TestCreateInstalledPackage(t *testing.T) { - } - defer ts.Close() - -- s, mock, err := newSimpleServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}) -+ s, mock, err := newSimpleServerWithRepos(t, []sourcev1.HelmRepository{*repo}) - if err != nil { - t.Fatal(err) - } -@@ -686,12 +686,12 @@ func TestCreateInstalledPackage(t *testing.T) { - t.Fatal(err) - } else { - key := types.NamespacedName{Namespace: tc.request.TargetContext.Namespace, Name: tc.request.Name} -- var actualRel helmv2beta2.HelmRelease -+ var actualRel helmv2.HelmRelease - if err = ctrlClient.Get(context.Background(), key, &actualRel); err != nil { - t.Fatal(err) - } else { - // Values are JSON string and need to be compared as such -- opts = cmpopts.IgnoreFields(helmv2beta2.HelmReleaseSpec{}, "Values") -+ opts = cmpopts.IgnoreFields(helmv2.HelmReleaseSpec{}, "Values") - - // Manually setting TypeMeta, as the fakeclient doesn't do it anymore: - // https://github.com/kubernetes-sigs/controller-runtime/pull/2633 -@@ -714,7 +714,7 @@ func TestUpdateInstalledPackage(t *testing.T) { - existingK8sObjs *testSpecGetInstalledPackages - expectedErrorCode connect.Code - expectedResponse *corev1.UpdateInstalledPackageResponse -- expectedRelease *helmv2beta2.HelmRelease -+ expectedRelease *helmv2.HelmRelease - defaultUpgradePolicyStr string - }{ - { -@@ -894,7 +894,7 @@ func TestUpdateInstalledPackage(t *testing.T) { - Name: tc.expectedResponse.InstalledPackageRef.Identifier, - } - ctx := context.Background() -- var actualRel helmv2beta2.HelmRelease -+ var actualRel helmv2.HelmRelease - if ctrlClient, err := s.clientGetter.ControllerRuntime(http.Header{}, s.kubeappsCluster); err != nil { - t.Fatal(err) - } else if err = ctrlClient.Get(ctx, key, &actualRel); err != nil { -@@ -902,7 +902,7 @@ func TestUpdateInstalledPackage(t *testing.T) { - } - - // Values are JSON string and need to be compared as such -- opts = cmpopts.IgnoreFields(helmv2beta2.HelmReleaseSpec{}, "Values") -+ opts = cmpopts.IgnoreFields(helmv2.HelmReleaseSpec{}, "Values") - - // Manually setting TypeMeta, as the fakeclient doesn't do it anymore: - // https://github.com/kubernetes-sigs/controller-runtime/pull/2633 -@@ -985,7 +985,7 @@ func TestDeleteInstalledPackage(t *testing.T) { - Name: tc.request.InstalledPackageRef.Identifier, - } - ctx := context.Background() -- var actualRel helmv2beta2.HelmRelease -+ var actualRel helmv2.HelmRelease - if ctrlClient, err := s.clientGetter.ControllerRuntime(http.Header{}, s.kubeappsCluster); err != nil { - t.Fatal(err) - } else if err = ctrlClient.Get(ctx, key, &actualRel); !errors.IsNotFound(err) { -@@ -1129,15 +1129,15 @@ func TestGetInstalledPackageResourceRefs(t *testing.T) { - } - } - --func newChartsAndReleases(t *testing.T, existingK8sObjs []testSpecGetInstalledPackages) (charts []sourcev1beta2.HelmChart, releases []helmv2beta2.HelmRelease, cleanup func()) { -+func newChartsAndReleases(t *testing.T, existingK8sObjs []testSpecGetInstalledPackages) (charts []sourcev1.HelmChart, releases []helmv2.HelmRelease, cleanup func()) { - httpServers := []*httptest.Server{} - cleanup = func() { - for _, ts := range httpServers { - ts.Close() - } - } -- charts = []sourcev1beta2.HelmChart{} -- releases = []helmv2beta2.HelmRelease{} -+ charts = []sourcev1.HelmChart{} -+ releases = []helmv2.HelmRelease{} - - for _, existing := range existingK8sObjs { - tarGzBytes, err := os.ReadFile(existing.chartTarGz) -@@ -1155,24 +1155,24 @@ func newChartsAndReleases(t *testing.T, existingK8sObjs []testSpecGetInstalledPa - })) - httpServers = append(httpServers, ts) - -- chartSpec := &sourcev1beta2.HelmChartSpec{ -+ chartSpec := &sourcev1.HelmChartSpec{ - Chart: existing.chartName, -- SourceRef: sourcev1beta2.LocalHelmChartSourceReference{ -+ SourceRef: sourcev1.LocalHelmChartSourceReference{ - Name: existing.repoName, -- Kind: sourcev1beta2.HelmRepositoryKind, -+ Kind: sourcev1.HelmRepositoryKind, - }, - Version: existing.chartSpecVersion, - Interval: metav1.Duration{Duration: 1 * time.Minute}, - } - -- chartStatus := &sourcev1beta2.HelmChartStatus{ -+ chartStatus := &sourcev1.HelmChartStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, - Message: "Fetched revision: " + existing.chartSpecVersion, - Type: fluxmeta.ReadyCondition, - Status: metav1.ConditionTrue, -- Reason: sourcev1beta2.ChartPullSucceededReason, -+ Reason: sourcev1.ChartPullSucceededReason, - }, - }, - Artifact: &sourcev1.Artifact{ -@@ -1183,14 +1183,14 @@ func newChartsAndReleases(t *testing.T, existingK8sObjs []testSpecGetInstalledPa - chart := newChart(existing.chartName, existing.repoNamespace, chartSpec, chartStatus) - charts = append(charts, chart) - -- releaseSpec := &helmv2beta2.HelmReleaseSpec{ -- Chart: helmv2beta2.HelmChartTemplate{ -- Spec: helmv2beta2.HelmChartTemplateSpec{ -+ releaseSpec := &helmv2.HelmReleaseSpec{ -+ Chart: helmv2.HelmChartTemplate{ -+ Spec: helmv2.HelmChartTemplateSpec{ - Chart: existing.chartName, - Version: existing.chartSpecVersion, -- SourceRef: helmv2beta2.CrossNamespaceObjectReference{ -+ SourceRef: helmv2.CrossNamespaceObjectReference{ - Name: existing.repoName, -- Kind: sourcev1beta2.HelmRepositoryKind, -+ Kind: sourcev1.HelmRepositoryKind, - Namespace: existing.repoNamespace, - }, - }, -@@ -1217,8 +1217,8 @@ func newChartsAndReleases(t *testing.T, existingK8sObjs []testSpecGetInstalledPa - return charts, releases, cleanup - } - --func newRelease(meta metav1.ObjectMeta, spec *helmv2beta2.HelmReleaseSpec, status *helmv2beta2.HelmReleaseStatus) helmv2beta2.HelmRelease { -- helmRelease := helmv2beta2.HelmRelease{ -+func newRelease(meta metav1.ObjectMeta, spec *helmv2.HelmReleaseSpec, status *helmv2.HelmReleaseStatus) helmv2.HelmRelease { -+ helmRelease := helmv2.HelmRelease{ - ObjectMeta: meta, - } - -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo.go -index 790b21514..5154ed7f7 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo.go -@@ -18,7 +18,7 @@ import ( - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/pkg/k8sutils" - - fluxmeta "github.com/fluxcd/pkg/apis/meta" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - corev1 "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/packages/v1alpha1" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/plugins/fluxv2/packages/v1alpha1" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/cache" -@@ -52,7 +52,7 @@ var ( - // returns a list of HelmRepositories from specified namespace. - // ns can be "", in which case all namespaces (cluster-wide), excluding - // the ones that the caller has no read access to --func (s *Server) listReposInNamespace(ctx context.Context, headers http.Header, ns string) ([]sourcev1beta2.HelmRepository, error) { -+func (s *Server) listReposInNamespace(ctx context.Context, headers http.Header, ns string) ([]sourcev1.HelmRepository, error) { - // the actual List(...) call will be executed in the context of - // kubeapps-internal-kubeappsapis service account - // ref https://github.com/vmware-tanzu/kubeapps/issues/4390 for explanation -@@ -62,7 +62,7 @@ func (s *Server) listReposInNamespace(ctx context.Context, headers http.Header, - return nil, err - } - -- var repoList sourcev1beta2.HelmRepositoryList -+ var repoList sourcev1.HelmRepositoryList - listOptions := ctrlclient.ListOptions{ - Namespace: ns, - } -@@ -83,7 +83,7 @@ func (s *Server) listReposInNamespace(ctx context.Context, headers http.Header, - return nil, err - } - } -- items := []sourcev1beta2.HelmRepository{} -+ items := []sourcev1.HelmRepository{} - for _, item := range repoList.Items { - if allowedNamespaces.Has(item.GetNamespace()) { - items = append(items, item) -@@ -93,7 +93,7 @@ func (s *Server) listReposInNamespace(ctx context.Context, headers http.Header, - } - } - --func (s *Server) getRepoInCluster(ctx context.Context, headers http.Header, key types.NamespacedName) (*sourcev1beta2.HelmRepository, error) { -+func (s *Server) getRepoInCluster(ctx context.Context, headers http.Header, key types.NamespacedName) (*sourcev1.HelmRepository, error) { - // unlike List(), there is no need to execute Get() in the context of - // kubeapps-internal-kubeappsapis service account and then filter out results based on - // whether or not the caller hasAccessToNamespace(). We can just pass the caller -@@ -103,7 +103,7 @@ func (s *Server) getRepoInCluster(ctx context.Context, headers http.Header, key - if err != nil { - return nil, err - } -- var repo sourcev1beta2.HelmRepository -+ var repo sourcev1.HelmRepository - if err = client.Get(ctx, key, &repo); err != nil { - return nil, connecterror.FromK8sError("get", "HelmRepository", key.String(), err) - } -@@ -111,7 +111,7 @@ func (s *Server) getRepoInCluster(ctx context.Context, headers http.Header, key - } - - // regexp expressions are used for matching actual names against expected patters --func (s *Server) filterReadyReposByName(repoList []sourcev1beta2.HelmRepository, match []string) (sets.Set[string], error) { -+func (s *Server) filterReadyReposByName(repoList []sourcev1.HelmRepository, match []string) (sets.Set[string], error) { - if s.repoCache == nil { - return nil, connect.NewError(connect.CodeFailedPrecondition, fmt.Errorf("Server cache has not been properly initialized")) - } -@@ -232,7 +232,7 @@ func (s *Server) newRepo(ctx context.Context, request *connect.Request[corev1.Ad - } - - typ := request.Msg.GetType() -- if typ != "helm" && typ != sourcev1beta2.HelmRepositoryTypeOCI { -+ if typ != "helm" && typ != sourcev1.HelmRepositoryTypeOCI { - return nil, connect.NewError(connect.CodeUnimplemented, fmt.Errorf("Repository type [%s] not supported", typ)) - } - -@@ -323,7 +323,7 @@ func (s *Server) repoDetail(ctx context.Context, headers http.Header, repoRef *c - // will have a FluxPackageRepositoryCustomDetail in it. Flux spec already clearly states - // If you do not specify .spec.provider, it defaults to generic. - // https://fluxcd.io/flux/components/source/helmrepositories/#provider -- if repo.Spec.Provider != "" && repo.Spec.Provider != sourcev1beta2.GenericOCIProvider { -+ if repo.Spec.Provider != "" && repo.Spec.Provider != "generic" { - if customDetail, err = anypb.New(&v1alpha1.FluxPackageRepositoryCustomDetail{ - Provider: repo.Spec.Provider, - }); err != nil { -@@ -357,7 +357,7 @@ func (s *Server) repoDetail(ctx context.Context, headers http.Header, repoRef *c - - func (s *Server) repoSummaries(ctx context.Context, headers http.Header, ns string) ([]*corev1.PackageRepositorySummary, error) { - summaries := []*corev1.PackageRepositorySummary{} -- var repos []sourcev1beta2.HelmRepository -+ var repos []sourcev1.HelmRepository - var err error - if ns == apiv1.NamespaceAll { - if repos, err = s.listReposInNamespace(ctx, headers, ns); err != nil { -@@ -368,7 +368,7 @@ func (s *Server) repoSummaries(ctx context.Context, headers http.Header, ns stri - // namely, if a specific namespace is passed in, we need to list repos in that namespace - // and if the caller happens not to have 'read' access to that namespace, a PermissionDenied - // error should be raised, as opposed to returning an empty list with no error -- var repoList sourcev1beta2.HelmRepositoryList -+ var repoList sourcev1.HelmRepositoryList - var client ctrlclient.Client - if client, err = s.getClient(headers, ns); err != nil { - return nil, err -@@ -491,7 +491,7 @@ func (s *Server) updateRepo(ctx context.Context, repoRef *corev1.PackageReposito - // process and the current status no longer applies. metadata and spec I want - // to keep, as they may have had added labels and/or annotations and/or - // even other changes made by the user. -- repo.Status = sourcev1beta2.HelmRepositoryStatus{} -+ repo.Status = sourcev1.HelmRepositoryStatus{} - - if client, err := s.getClient(request.Header(), key.Namespace); err != nil { - return nil, err -@@ -529,7 +529,7 @@ func (s *Server) deleteRepo(ctx context.Context, headers http.Header, repoRef *c - // For kubeapps-managed secrets environment secrets will be deleted (garbage-collected) - // when the owner repo is deleted - -- repo := &sourcev1beta2.HelmRepository{ -+ repo := &sourcev1.HelmRepository{ - ObjectMeta: metav1.ObjectMeta{ - Name: repoRef.Identifier, - Namespace: repoRef.Context.Namespace, -@@ -562,10 +562,10 @@ func (s *repoEventSink) onAddRepo(key string, obj ctrlclient.Object) (interface{ - log.V(4).Infof("+onAddRepo(%s)", key) - defer log.V(4).Info("-onAddRepo()") - -- if repo, ok := obj.(*sourcev1beta2.HelmRepository); !ok { -- return nil, false, fmt.Errorf("expected an instance of *sourcev1beta2.HelmRepository, got: %T", obj) -+ if repo, ok := obj.(*sourcev1.HelmRepository); !ok { -+ return nil, false, fmt.Errorf("expected an instance of *sourcev1.HelmRepository, got: %T", obj) - } else if isRepoReady(*repo) { -- if repo.Spec.Type == sourcev1beta2.HelmRepositoryTypeOCI { -+ if repo.Spec.Type == sourcev1.HelmRepositoryTypeOCI { - return s.onAddOciRepo(*repo) - } else { - return s.onAddHttpRepo(*repo) -@@ -579,7 +579,7 @@ func (s *repoEventSink) onAddRepo(key string, obj ctrlclient.Object) (interface{ - } - - // ref https://fluxcd.io/docs/components/source/helmrepositories/#status --func (s *repoEventSink) onAddHttpRepo(repo sourcev1beta2.HelmRepository) ([]byte, bool, error) { -+func (s *repoEventSink) onAddHttpRepo(repo sourcev1.HelmRepository) ([]byte, bool, error) { - if artifact := repo.GetArtifact(); artifact != nil { - if checksum := artifact.Digest; checksum == "" { - return nil, false, connect.NewError(connect.CodeInternal, -@@ -595,7 +595,7 @@ func (s *repoEventSink) onAddHttpRepo(repo sourcev1beta2.HelmRepository) ([]byte - } - } - --func (s *repoEventSink) indexAndEncode(checksum string, repo sourcev1beta2.HelmRepository) ([]byte, bool, error) { -+func (s *repoEventSink) indexAndEncode(checksum string, repo sourcev1.HelmRepository) ([]byte, bool, error) { - charts, err := s.indexOneRepo(repo) - if err != nil { - return nil, false, err -@@ -637,7 +637,7 @@ func (s *repoEventSink) indexAndEncode(checksum string, repo sourcev1beta2.HelmR - - // it is assumed the caller has already checked that this repo is ready - // At present, there is only one caller of indexOneRepo() and this check is already done by it --func (s *repoEventSink) indexOneRepo(repo sourcev1beta2.HelmRepository) ([]models.Chart, error) { -+func (s *repoEventSink) indexOneRepo(repo sourcev1.HelmRepository) ([]models.Chart, error) { - startTime := time.Now() - - // ref https://fluxcd.io/docs/components/source/helmrepositories/#status -@@ -698,12 +698,12 @@ func (s *repoEventSink) indexOneRepo(repo sourcev1beta2.HelmRepository) ([]model - - // onModifyRepo essentially tells the cache whether or not to and what to store for a given key - func (s *repoEventSink) onModifyRepo(key string, obj ctrlclient.Object, oldValue interface{}) (interface{}, bool, error) { -- if repo, ok := obj.(*sourcev1beta2.HelmRepository); !ok { -- return nil, false, fmt.Errorf("expected an instance of *sourcev1beta2.HelmRepository, got: %T", obj) -+ if repo, ok := obj.(*sourcev1.HelmRepository); !ok { -+ return nil, false, fmt.Errorf("expected an instance of *sourcev1.HelmRepository, got: %T", obj) - } else if isRepoReady(*repo) { - // first check the repo is ready - -- if repo.Spec.Type == sourcev1beta2.HelmRepositoryTypeOCI { -+ if repo.Spec.Type == sourcev1.HelmRepositoryTypeOCI { - return s.onModifyOciRepo(key, oldValue, *repo) - } else { - return s.onModifyHttpRepo(key, oldValue, *repo) -@@ -716,7 +716,7 @@ func (s *repoEventSink) onModifyRepo(key string, obj ctrlclient.Object, oldValue - } - } - --func (s *repoEventSink) onModifyHttpRepo(key string, oldValue interface{}, repo sourcev1beta2.HelmRepository) ([]byte, bool, error) { -+func (s *repoEventSink) onModifyHttpRepo(key string, oldValue interface{}, repo sourcev1.HelmRepository) ([]byte, bool, error) { - // We should to compare checksums on what's stored in the cache - // vs the modified object to see if the contents has really changed before embarking on - // expensive operation indexOneRepo() below. -@@ -796,7 +796,7 @@ func (s *repoEventSink) fromKey(key string) (*types.NamespacedName, error) { - return &types.NamespacedName{Namespace: parts[1], Name: parts[2]}, nil - } - --func (s *repoEventSink) getRepoSecret(ctx context.Context, repo sourcev1beta2.HelmRepository) (*apiv1.Secret, error) { -+func (s *repoEventSink) getRepoSecret(ctx context.Context, repo sourcev1.HelmRepository) (*apiv1.Secret, error) { - if repo.Spec.SecretRef == nil { - return nil, nil - } -@@ -825,7 +825,7 @@ func (s *repoEventSink) getRepoSecret(ctx context.Context, repo sourcev1beta2.He - - // The reason I do this here is to set up auth that may be needed to fetch chart tarballs by - // ChartCache --func (s *repoEventSink) clientOptionsForHttpRepo(ctx context.Context, repo sourcev1beta2.HelmRepository) (*common.HttpClientOptions, error) { -+func (s *repoEventSink) clientOptionsForHttpRepo(ctx context.Context, repo sourcev1.HelmRepository) (*common.HttpClientOptions, error) { - if secret, err := s.getRepoSecret(ctx, repo); err == nil && secret != nil { - return common.HttpClientOptionsFromSecret(*secret) - } else { -@@ -837,7 +837,7 @@ func (s *repoEventSink) clientOptionsForHttpRepo(ctx context.Context, repo sourc - // repo-related utilities - // - --func isRepoReady(repo sourcev1beta2.HelmRepository) bool { -+func isRepoReady(repo sourcev1.HelmRepository) bool { - // see docs at https://fluxcd.io/docs/components/source/helmrepositories/ - // Confirm the state we are observing is for the current generation - if !checkRepoGeneration(repo) { -@@ -854,7 +854,7 @@ func isRepoReady(repo sourcev1beta2.HelmRepository) bool { - // - reason: if present - // docs: - // 1. https://fluxcd.io/docs/components/source/helmrepositories/#status-examples --func isHelmRepositoryReady(repo sourcev1beta2.HelmRepository) (complete bool, success bool, reason string) { -+func isHelmRepositoryReady(repo sourcev1.HelmRepository) (complete bool, success bool, reason string) { - // flux source-controller v1beta2 API made a change so that we can no longer - // rely on a simple "metadata.generation" vs "status.observedGeneration" check for a - // quick answer. The resource may now exist with "observedGeneration": -1 either in -@@ -882,7 +882,7 @@ func isHelmRepositoryReady(repo sourcev1beta2.HelmRepository) (complete bool, su - return false, false, reason - } - --func repoStatus(repo sourcev1beta2.HelmRepository) *corev1.PackageRepositoryStatus { -+func repoStatus(repo sourcev1.HelmRepository) *corev1.PackageRepositoryStatus { - complete, success, reason := isHelmRepositoryReady(repo) - s := &corev1.PackageRepositoryStatus{ - Ready: complete && success, -@@ -899,7 +899,7 @@ func repoStatus(repo sourcev1beta2.HelmRepository) *corev1.PackageRepositoryStat - return s - } - --func checkRepoGeneration(repo sourcev1beta2.HelmRepository) bool { -+func checkRepoGeneration(repo sourcev1.HelmRepository) bool { - generation := repo.GetGeneration() - observedGeneration := repo.Status.ObservedGeneration - return generation > 0 && generation == observedGeneration -@@ -914,7 +914,7 @@ func newFluxHelmRepo( - interval string, - secret *apiv1.Secret, - passCredentials bool, -- provider string) (*sourcev1beta2.HelmRepository, error) { -+ provider string) (*sourcev1.HelmRepository, error) { - pollInterval := defaultPollInterval - if interval != "" { - if duration, err := pkgutils.ToDuration(interval); err != nil { -@@ -923,18 +923,18 @@ func newFluxHelmRepo( - pollInterval = *duration - } - } -- fluxRepo := &sourcev1beta2.HelmRepository{ -+ fluxRepo := &sourcev1.HelmRepository{ - ObjectMeta: metav1.ObjectMeta{ - Name: targetName.Name, - Namespace: targetName.Namespace, - }, -- Spec: sourcev1beta2.HelmRepositorySpec{ -+ Spec: sourcev1.HelmRepositorySpec{ - URL: url, - Interval: pollInterval, - }, - } -- if typ == sourcev1beta2.HelmRepositoryTypeOCI { -- fluxRepo.Spec.Type = sourcev1beta2.HelmRepositoryTypeOCI -+ if typ == sourcev1.HelmRepositoryTypeOCI { -+ fluxRepo.Spec.Type = sourcev1.HelmRepositoryTypeOCI - } - if desc != "" { - k8sutils.SetDescription(&fluxRepo.ObjectMeta, desc) -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo_auth.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo_auth.go -index 517a503ec..f811e0297 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo_auth.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo_auth.go -@@ -10,7 +10,7 @@ import ( - "net/http" - - "github.com/bufbuild/connect-go" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - corev1 "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/packages/v1alpha1" - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/pkg/connecterror" - "github.com/vmware-tanzu/kubeapps/pkg/kube" -@@ -79,7 +79,7 @@ func (s *Server) handleRepoSecretForCreate( - func (s *Server) handleRepoSecretForUpdate( - ctx context.Context, - headers http.Header, -- repo *sourcev1beta2.HelmRepository, -+ repo *sourcev1.HelmRepository, - newTlsConfig *corev1.PackageRepositoryTlsConfig, - newAuth *corev1.PackageRepositoryAuth) (updatedSecret *apiv1.Secret, isKubeappsManagedSecret bool, isSecretUpdated bool, err error) { - -@@ -208,7 +208,7 @@ func (s *Server) validateUserManagedRepoSecret( - return nil, connect.NewError(connect.CodeInternal, fmt.Errorf("Specified secret [%s] missing fields 'username' and/or 'password'", secretRef)) - } - case corev1.PackageRepositoryAuth_PACKAGE_REPOSITORY_AUTH_TYPE_TLS: -- if repoType == sourcev1beta2.HelmRepositoryTypeOCI { -+ if repoType == sourcev1.HelmRepositoryTypeOCI { - // ref https://fluxcd.io/flux/components/source/helmrepositories/#tls-authentication - // Note: TLS authentication is not yet supported by OCI Helm repositories. - return nil, connect.NewError(connect.CodeInternal, fmt.Errorf("Package repository authentication type %q is not supported for OCI repositories", auth.Type)) -@@ -218,7 +218,7 @@ func (s *Server) validateUserManagedRepoSecret( - } - } - case corev1.PackageRepositoryAuth_PACKAGE_REPOSITORY_AUTH_TYPE_DOCKER_CONFIG_JSON: -- if repoType == sourcev1beta2.HelmRepositoryTypeOCI { -+ if repoType == sourcev1.HelmRepositoryTypeOCI { - if secret.Data[apiv1.DockerConfigJsonKey] == nil { - return nil, connect.NewError(connect.CodeInternal, fmt.Errorf("Specified secret [%s] missing field '%s'", secretRef, apiv1.DockerConfigJsonKey)) - } -@@ -251,7 +251,7 @@ func (s *Server) setOwnerReferencesForRepoSecret( - ctx context.Context, - headers http.Header, - secret *apiv1.Secret, -- repo *sourcev1beta2.HelmRepository) error { -+ repo *sourcev1.HelmRepository) error { - - // TODO(agamez): flux upgrade - migrate to CertSecretRef, see https://github.com/fluxcd/flux2/releases/tag/v2.1.0 - if repo.Spec.SecretRef != nil && secret != nil { -@@ -263,9 +263,9 @@ func (s *Server) setOwnerReferencesForRepoSecret( - *metav1.NewControllerRef( - repo, - schema.GroupVersionKind{ -- Group: sourcev1beta2.GroupVersion.Group, -- Version: sourcev1beta2.GroupVersion.Version, -- Kind: sourcev1beta2.HelmRepositoryKind, -+ Group: sourcev1.GroupVersion.Group, -+ Version: sourcev1.GroupVersion.Version, -+ Kind: sourcev1.HelmRepositoryKind, - }), - } - if _, err := secretsInterface.Update(ctx, secret, metav1.UpdateOptions{}); err != nil { -@@ -276,7 +276,7 @@ func (s *Server) setOwnerReferencesForRepoSecret( - return nil - } - --func (s *Server) getRepoTlsConfigAndAuth(ctx context.Context, headers http.Header, repo sourcev1beta2.HelmRepository) (*corev1.PackageRepositoryTlsConfig, *corev1.PackageRepositoryAuth, error) { -+func (s *Server) getRepoTlsConfigAndAuth(ctx context.Context, headers http.Header, repo sourcev1.HelmRepository) (*corev1.PackageRepositoryTlsConfig, *corev1.PackageRepositoryAuth, error) { - var tlsConfig *corev1.PackageRepositoryTlsConfig - var auth *corev1.PackageRepositoryAuth - -@@ -385,7 +385,7 @@ func newSecretFromTlsConfigAndAuth(repoName types.NamespacedName, - } - } - case corev1.PackageRepositoryAuth_PACKAGE_REPOSITORY_AUTH_TYPE_TLS: -- if repoType == sourcev1beta2.HelmRepositoryTypeOCI { -+ if repoType == sourcev1.HelmRepositoryTypeOCI { - // ref https://fluxcd.io/flux/components/source/helmrepositories/#tls-authentication - // Note: TLS authentication is not yet supported by OCI Helm repositories. - return nil, false, connect.NewError(connect.CodeInternal, fmt.Errorf("Package repository authentication type %q is not supported for OCI repositories", auth.Type)) -@@ -413,7 +413,7 @@ func newSecretFromTlsConfigAndAuth(repoName types.NamespacedName, - } - } - case corev1.PackageRepositoryAuth_PACKAGE_REPOSITORY_AUTH_TYPE_DOCKER_CONFIG_JSON: -- if repoType != sourcev1beta2.HelmRepositoryTypeOCI { -+ if repoType != sourcev1.HelmRepositoryTypeOCI { - return nil, false, connect.NewError(connect.CodeInternal, fmt.Errorf("Unsupported package repository authentication type: %q", auth.Type)) - } - -@@ -569,7 +569,7 @@ func getRepoTlsConfigAndAuthWithKubeappsManagedSecrets(secret *apiv1.Secret) (*c - return tlsConfig, auth, nil - } - --func isSecretKubeappsManaged(secret *apiv1.Secret, repo *sourcev1beta2.HelmRepository) bool { -+func isSecretKubeappsManaged(secret *apiv1.Secret, repo *sourcev1.HelmRepository) bool { - if !metav1.IsControlledBy(secret, repo) { - return false - } -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo_test.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo_test.go -index e90758d47..23d9e3e68 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo_test.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo_test.go -@@ -19,7 +19,7 @@ import ( - "github.com/bufbuild/connect-go" - fluxmeta "github.com/fluxcd/pkg/apis/meta" - sourcev1 "github.com/fluxcd/source-controller/api/v1" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - "github.com/go-redis/redismock/v8" - "github.com/google/go-cmp/cmp" - "github.com/google/go-cmp/cmp/cmpopts" -@@ -414,7 +414,7 @@ func TestGetAvailablePackageSummariesWithoutPagination(t *testing.T) { - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { -- repos := []sourcev1beta2.HelmRepository{} -+ repos := []sourcev1.HelmRepository{} - - for _, rs := range tc.repos { - ts2, repo, err := newHttpRepoAndServeIndex(rs.index, rs.name, rs.namespace, nil, "") -@@ -479,7 +479,7 @@ func TestGetAvailablePackageSummariesWithPagination(t *testing.T) { - index: testYaml("index-with-categories.yaml"), - }, - } -- repos := []sourcev1beta2.HelmRepository{} -+ repos := []sourcev1.HelmRepository{} - for _, rs := range existingRepos { - ts2, repo, err := newHttpRepoAndServeIndex(rs.index, rs.name, rs.namespace, nil, "") - if err != nil { -@@ -616,12 +616,12 @@ func TestGetAvailablePackageSummaryAfterRepoIndexUpdate(t *testing.T) { - })) - defer ts.Close() - -- repoSpec := &sourcev1beta2.HelmRepositorySpec{ -+ repoSpec := &sourcev1.HelmRepositorySpec{ - URL: "https://example.repo.com/charts", - Interval: metav1.Duration{Duration: 1 * time.Minute}, - } - -- repoStatus := &sourcev1beta2.HelmRepositoryStatus{ -+ repoStatus := &sourcev1.HelmRepositoryStatus{ - Artifact: &sourcev1.Artifact{ - Digest: "651f952130ea96823711d08345b85e82be011dc6", - LastUpdateTime: metav1.Time{Time: lastUpdateTime}, -@@ -640,7 +640,7 @@ func TestGetAvailablePackageSummaryAfterRepoIndexUpdate(t *testing.T) { - repoName := types.NamespacedName{Namespace: "ns2", Name: "testrepo"} - repo := newRepo(repoName.Name, repoName.Namespace, repoSpec, repoStatus) - -- s, mock, err := newSimpleServerWithRepos(t, []sourcev1beta2.HelmRepository{repo}) -+ s, mock, err := newSimpleServerWithRepos(t, []sourcev1.HelmRepository{repo}) - if err != nil { - t.Fatalf("error instantiating the server: %v", err) - } -@@ -752,7 +752,7 @@ func TestGetAvailablePackageSummaryAfterFluxHelmRepoDelete(t *testing.T) { - } - defer ts.Close() - -- s, mock, err := newServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}, charts, nil) -+ s, mock, err := newServerWithRepos(t, []sourcev1.HelmRepository{*repo}, charts, nil) - if err != nil { - t.Fatalf("%+v", err) - } -@@ -847,7 +847,7 @@ func TestGetAvailablePackageSummaryAfterCacheResync(t *testing.T) { - } - defer ts2.Close() - -- s, mock, err := newSimpleServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}) -+ s, mock, err := newSimpleServerWithRepos(t, []sourcev1.HelmRepository{*repo}) - if err != nil { - t.Fatalf("error instantiating the server: %v", err) - } -@@ -932,7 +932,7 @@ func TestGetAvailablePackageSummariesAfterCacheResyncQueueNotIdle(t *testing.T) - } - - // first, I'd like to fill up the work queue with a whole bunch of work items -- repos := []*sourcev1beta2.HelmRepository{} -+ repos := []*sourcev1.HelmRepository{} - mapReposCached := make(map[string][]byte) - keysInOrder := []string{} - -@@ -1181,7 +1181,7 @@ func TestAddPackageRepository(t *testing.T) { - name string - request *corev1.AddPackageRepositoryRequest - expectedResponse *corev1.AddPackageRepositoryResponse -- expectedRepo *sourcev1beta2.HelmRepository -+ expectedRepo *sourcev1.HelmRepository - errorCode connect.Code - existingSecret *apiv1.Secret - expectedCreatedSecret *apiv1.Secret -@@ -1411,7 +1411,7 @@ func TestAddPackageRepository(t *testing.T) { - if ctrlClient, err := s.clientGetter.ControllerRuntime(http.Header{}, s.kubeappsCluster); err != nil { - t.Fatal(err) - } else { -- var actualRepo sourcev1beta2.HelmRepository -+ var actualRepo sourcev1.HelmRepository - if err = ctrlClient.Get(ctx, nsname, &actualRepo); err != nil { - t.Fatal(err) - } else { -@@ -1429,7 +1429,7 @@ func TestAddPackageRepository(t *testing.T) { - } - } else { - // TODO(agamez): flux upgrade - migrate to CertSecretRef, see https://github.com/fluxcd/flux2/releases/tag/v2.1.0 -- opt1 := cmpopts.IgnoreFields(sourcev1beta2.HelmRepositorySpec{}, "SecretRef") -+ opt1 := cmpopts.IgnoreFields(sourcev1.HelmRepositorySpec{}, "SecretRef") - - // Manually setting TypeMeta, as the fakeclient doesn't do it anymore: - // https://github.com/kubernetes-sigs/controller-runtime/pull/2633 -@@ -1637,7 +1637,7 @@ func TestGetPackageRepositoryDetail(t *testing.T) { - secretRef = tc.repoSecret.Name - secrets = append(secrets, tc.repoSecret) - } -- var repo *sourcev1beta2.HelmRepository -+ var repo *sourcev1.HelmRepository - if !tc.pending && !tc.failed { - var ts *httptest.Server - var err error -@@ -1647,11 +1647,11 @@ func TestGetPackageRepositoryDetail(t *testing.T) { - } - defer ts.Close() - } else if tc.pending { -- repoSpec := &sourcev1beta2.HelmRepositorySpec{ -+ repoSpec := &sourcev1.HelmRepositorySpec{ - URL: "https://example.repo.com/charts", - Interval: metav1.Duration{Duration: 1 * time.Minute}, - } -- repoStatus := &sourcev1beta2.HelmRepositoryStatus{ -+ repoStatus := &sourcev1.HelmRepositoryStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, -@@ -1665,11 +1665,11 @@ func TestGetPackageRepositoryDetail(t *testing.T) { - repo1 := newRepo(tc.repoName, tc.repoNamespace, repoSpec, repoStatus) - repo = &repo1 - } else { // failed -- repoSpec := &sourcev1beta2.HelmRepositorySpec{ -+ repoSpec := &sourcev1.HelmRepositorySpec{ - URL: "https://example.repo.com/charts", - Interval: metav1.Duration{Duration: 1 * time.Minute}, - } -- repoStatus := &sourcev1beta2.HelmRepositoryStatus{ -+ repoStatus := &sourcev1.HelmRepositoryStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, -@@ -1686,7 +1686,7 @@ func TestGetPackageRepositoryDetail(t *testing.T) { - - // the index.yaml will contain links to charts but for the purposes - // of this test they do not matter -- s, _, err := newServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}, nil, secrets) -+ s, _, err := newServerWithRepos(t, []sourcev1.HelmRepository{*repo}, nil, secrets) - if err != nil { - t.Fatalf("error instantiating the server: %v", err) - } -@@ -1744,7 +1744,7 @@ func TestGetOciPackageRepositoryDetail(t *testing.T) { - t.Fatal(err) - } - -- s, mock, err := newServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}, nil, nil) -+ s, mock, err := newServerWithRepos(t, []sourcev1.HelmRepository{*repo}, nil, nil) - if err != nil { - t.Fatalf("error instantiating the server: %v", err) - } -@@ -1786,7 +1786,7 @@ func TestGetPackageRepositorySummaries(t *testing.T) { - testCases := []struct { - name string - request *corev1.GetPackageRepositorySummariesRequest -- existingRepos []sourcev1beta2.HelmRepository -+ existingRepos []sourcev1.HelmRepository - expectedErrorCode connect.Code - expectedResponse *corev1.GetPackageRepositorySummariesResponse - }{ -@@ -1795,7 +1795,7 @@ func TestGetPackageRepositorySummaries(t *testing.T) { - request: &corev1.GetPackageRepositorySummariesRequest{ - Context: &corev1.Context{}, - }, -- existingRepos: []sourcev1beta2.HelmRepository{ -+ existingRepos: []sourcev1.HelmRepository{ - get_summaries_repo_1, - get_summaries_repo_2, - get_summaries_repo_3, -@@ -1815,7 +1815,7 @@ func TestGetPackageRepositorySummaries(t *testing.T) { - request: &corev1.GetPackageRepositorySummariesRequest{ - Context: &corev1.Context{Namespace: "foo"}, - }, -- existingRepos: []sourcev1beta2.HelmRepository{ -+ existingRepos: []sourcev1.HelmRepository{ - get_summaries_repo_1, - get_summaries_repo_2, - get_summaries_repo_3, -@@ -2124,7 +2124,7 @@ func TestUpdatePackageRepository(t *testing.T) { - if tc.newRepoSecret != nil { - secrets = append(secrets, tc.newRepoSecret) - } -- var repo *sourcev1beta2.HelmRepository -+ var repo *sourcev1.HelmRepository - if !tc.pending { - var ts *httptest.Server - var err error -@@ -2134,11 +2134,11 @@ func TestUpdatePackageRepository(t *testing.T) { - } - defer ts.Close() - } else { -- repoSpec := &sourcev1beta2.HelmRepositorySpec{ -+ repoSpec := &sourcev1.HelmRepositorySpec{ - URL: "https://example.repo.com/charts", - Interval: metav1.Duration{Duration: 1 * time.Minute}, - } -- repoStatus := &sourcev1beta2.HelmRepositoryStatus{ -+ repoStatus := &sourcev1.HelmRepositoryStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, -@@ -2156,7 +2156,7 @@ func TestUpdatePackageRepository(t *testing.T) { - - // the index.yaml will contain links to charts but for the purposes - // of this test they do not matter -- s, _, err := newServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}, nil, secrets) -+ s, _, err := newServerWithRepos(t, []sourcev1.HelmRepository{*repo}, nil, secrets) - if err != nil { - t.Fatalf("error instantiating the server: %v", err) - } -@@ -2219,7 +2219,7 @@ func TestUpdatePackageRepository(t *testing.T) { - - // check the created/updated secret - if tc.expectedCreatedSecret != nil { -- var actualRepo sourcev1beta2.HelmRepository -+ var actualRepo sourcev1.HelmRepository - if err = ctrlClient.Get(ctx, types.NamespacedName{Namespace: tc.repoNamespace, Name: tc.repoName}, &actualRepo); err != nil { - t.Fatal(err) - } -@@ -2285,7 +2285,7 @@ func TestDeletePackageRepository(t *testing.T) { - if tc.newRepoSecret != nil { - secrets = append(secrets, tc.newRepoSecret) - } -- var repo *sourcev1beta2.HelmRepository -+ var repo *sourcev1.HelmRepository - if !tc.pending { - var ts *httptest.Server - var err error -@@ -2295,11 +2295,11 @@ func TestDeletePackageRepository(t *testing.T) { - } - defer ts.Close() - } else { -- repoSpec := &sourcev1beta2.HelmRepositorySpec{ -+ repoSpec := &sourcev1.HelmRepositorySpec{ - URL: "https://example.repo.com/charts", - Interval: metav1.Duration{Duration: 1 * time.Minute}, - } -- repoStatus := &sourcev1beta2.HelmRepositoryStatus{ -+ repoStatus := &sourcev1.HelmRepositoryStatus{ - Conditions: []metav1.Condition{ - { - LastTransitionTime: metav1.Time{Time: lastTransitionTime}, -@@ -2317,7 +2317,7 @@ func TestDeletePackageRepository(t *testing.T) { - - // the index.yaml will contain links to charts but for the purposes - // of this test they do not matter -- s, _, err := newServerWithRepos(t, []sourcev1beta2.HelmRepository{*repo}, nil, secrets) -+ s, _, err := newServerWithRepos(t, []sourcev1.HelmRepository{*repo}, nil, secrets) - if err != nil { - t.Fatalf("error instantiating the server: %v", err) - } -@@ -2331,7 +2331,7 @@ func TestDeletePackageRepository(t *testing.T) { - Namespace: tc.request.PackageRepoRef.Context.Namespace, - Name: tc.request.PackageRepoRef.Identifier, - } -- var actualRepo sourcev1beta2.HelmRepository -+ var actualRepo sourcev1.HelmRepository - if tc.expectedErrorCode == 0 { - if err = ctrlClient.Get(ctx, nsname, &actualRepo); err != nil { - t.Fatal(err) -@@ -2414,7 +2414,7 @@ func TestGetOciAvailablePackageSummariesWithoutPagination(t *testing.T) { - t.Run(tc.name, func(t *testing.T) { - initOciFakeClientBuilder(t, *tc.seedData) - -- repos := []sourcev1beta2.HelmRepository{} -+ repos := []sourcev1.HelmRepository{} - - for _, rs := range tc.repos { - repo, err := newOciRepo(rs.repoName, rs.repoNamespace, rs.repoUrl) -@@ -2451,8 +2451,8 @@ func TestGetOciAvailablePackageSummariesWithoutPagination(t *testing.T) { - } - } - --func newRepo(name string, namespace string, spec *sourcev1beta2.HelmRepositorySpec, status *sourcev1beta2.HelmRepositoryStatus) sourcev1beta2.HelmRepository { -- helmRepository := sourcev1beta2.HelmRepository{ -+func newRepo(name string, namespace string, spec *sourcev1.HelmRepositorySpec, status *sourcev1.HelmRepositoryStatus) sourcev1.HelmRepository { -+ helmRepository := sourcev1.HelmRepository{ - ObjectMeta: metav1.ObjectMeta{ - Name: name, - Generation: 1, -@@ -2489,7 +2489,7 @@ func newRepo(name string, namespace string, spec *sourcev1beta2.HelmRepositorySp - - // these functions should affect only unit test, not production code - // does a series of mock.ExpectGet(...) --func (s *Server) redisMockExpectGetFromRepoCache(mock redismock.ClientMock, filterOptions *corev1.FilterOptions, repos ...sourcev1beta2.HelmRepository) error { -+func (s *Server) redisMockExpectGetFromRepoCache(mock redismock.ClientMock, filterOptions *corev1.FilterOptions, repos ...sourcev1.HelmRepository) error { - mapVals := make(map[string][]byte) - ociRepoKeys := sets.Set[string]{} - for _, r := range repos { -@@ -2532,7 +2532,7 @@ func (s *Server) redisMockExpectGetFromRepoCache(mock redismock.ClientMock, filt - return nil - } - --func (s *Server) redisMockSetValueForRepo(mock redismock.ClientMock, repo sourcev1beta2.HelmRepository, oldValue []byte) (key string, bytes []byte, err error) { -+func (s *Server) redisMockSetValueForRepo(mock redismock.ClientMock, repo sourcev1.HelmRepository, oldValue []byte) (key string, bytes []byte, err error) { - bg := &clientgetter.FixedClusterClientProvider{ClientsFunc: func(ctx context.Context) (*clientgetter.ClientGetter, error) { - return s.clientGetter.GetClients(http.Header{}, s.kubeappsCluster) - }} -@@ -2540,7 +2540,7 @@ func (s *Server) redisMockSetValueForRepo(mock redismock.ClientMock, repo source - return sinkNoCache.redisMockSetValueForRepo(mock, repo, oldValue) - } - --func (sink *repoEventSink) redisMockSetValueForRepo(mock redismock.ClientMock, repo sourcev1beta2.HelmRepository, oldValue []byte) (key string, newValue []byte, err error) { -+func (sink *repoEventSink) redisMockSetValueForRepo(mock redismock.ClientMock, repo sourcev1.HelmRepository, oldValue []byte) (key string, newValue []byte, err error) { - if key, newValue, err = sink.redisKeyValueForRepo(repo); err != nil { - if oldValue == nil { - mock.ExpectGet(key).RedisNil() -@@ -2565,7 +2565,7 @@ func redisMockSetValueForRepo(mock redismock.ClientMock, key string, newValue, o - mock.ExpectInfo("memory").SetVal("used_memory_rss_human:NA\r\nmaxmemory_human:NA") - } - --func (s *Server) redisKeyValueForRepo(r sourcev1beta2.HelmRepository) (key string, byteArray []byte, err error) { -+func (s *Server) redisKeyValueForRepo(r sourcev1.HelmRepository) (key string, byteArray []byte, err error) { - cg := &clientgetter.FixedClusterClientProvider{ClientsFunc: func(ctx context.Context) (*clientgetter.ClientGetter, error) { - return s.clientGetter.GetClients(http.Header{}, s.kubeappsCluster) - }} -@@ -2573,7 +2573,7 @@ func (s *Server) redisKeyValueForRepo(r sourcev1beta2.HelmRepository) (key strin - return sinkNoChartCache.redisKeyValueForRepo(r) - } - --func (sink *repoEventSink) redisKeyValueForRepo(r sourcev1beta2.HelmRepository) (key string, byteArray []byte, err error) { -+func (sink *repoEventSink) redisKeyValueForRepo(r sourcev1.HelmRepository) (key string, byteArray []byte, err error) { - if key, err = redisKeyForRepo(r); err != nil { - return key, nil, err - } else { -@@ -2591,7 +2591,7 @@ func (sink *repoEventSink) redisKeyValueForRepo(r sourcev1beta2.HelmRepository) - } - } - --func redisKeyForRepo(r sourcev1beta2.HelmRepository) (string, error) { -+func redisKeyForRepo(r sourcev1.HelmRepository) (string, error) { - // redis convention on key format - // https://redis.io/topics/data-types-intro - // Try to stick with a schema. For instance "object-type:id" is a good idea, as in "user:1000". -@@ -2612,7 +2612,7 @@ func redisKeyForRepoNamespacedName(name types.NamespacedName) (string, error) { - return fmt.Sprintf("%s:%s:%s", fluxHelmRepositories, name.Namespace, name.Name), nil - } - --func newHttpRepoAndServeIndex(repoIndex, repoName, repoNamespace string, replaceUrls map[string]string, secretRef string) (*httptest.Server, *sourcev1beta2.HelmRepository, error) { -+func newHttpRepoAndServeIndex(repoIndex, repoName, repoNamespace string, replaceUrls map[string]string, secretRef string) (*httptest.Server, *sourcev1.HelmRepository, error) { - indexYAMLBytes, err := os.ReadFile(repoIndex) - if err != nil { - return nil, nil, err -@@ -2631,7 +2631,7 @@ func newHttpRepoAndServeIndex(repoIndex, repoName, repoNamespace string, replace - fmt.Fprintln(w, string(indexYAMLBytes)) - })) - -- repoSpec := &sourcev1beta2.HelmRepositorySpec{ -+ repoSpec := &sourcev1.HelmRepositorySpec{ - URL: "https://example.repo.com/charts", - Interval: metav1.Duration{Duration: 1 * time.Minute}, - } -@@ -2644,7 +2644,7 @@ func newHttpRepoAndServeIndex(repoIndex, repoName, repoNamespace string, replace - revision := "651f952130ea96823711d08345b85e82be011dc6" - sz := int64(31989) - -- repoStatus := &sourcev1beta2.HelmRepositoryStatus{ -+ repoStatus := &sourcev1.HelmRepositoryStatus{ - Artifact: &sourcev1.Artifact{ - Path: fmt.Sprintf("helmrepository/%s/%s/index-%s.yaml", repoNamespace, repoName, revision), - Digest: revision, -@@ -2669,16 +2669,16 @@ func newHttpRepoAndServeIndex(repoIndex, repoName, repoNamespace string, replace - return ts, &repo, nil - } - --func newOciRepo(repoName, repoNamespace, repoUrl string) (*sourcev1beta2.HelmRepository, error) { -+func newOciRepo(repoName, repoNamespace, repoUrl string) (*sourcev1.HelmRepository, error) { - timeout := metav1.Duration{Duration: 60 * time.Second} -- repoSpec := &sourcev1beta2.HelmRepositorySpec{ -+ repoSpec := &sourcev1.HelmRepositorySpec{ - URL: repoUrl, - Interval: metav1.Duration{Duration: 1 * time.Minute}, - Timeout: &timeout, - Type: "oci", - } - -- repoStatus := &sourcev1beta2.HelmRepositoryStatus{ -+ repoStatus := &sourcev1.HelmRepositoryStatus{ - Conditions: []metav1.Condition{ - { - Type: fluxmeta.ReadyCondition, -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/server.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/server.go -index 53fac6474..ef3d506b3 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/server.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/server.go -@@ -13,8 +13,8 @@ import ( - - "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/plugins/pkg/helm" - -- helmv2beta2 "github.com/fluxcd/helm-controller/api/v2beta2" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ helmv2 "github.com/fluxcd/helm-controller/api/v2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - authorizationv1 "k8s.io/api/authorization/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" -@@ -89,11 +89,11 @@ func NewServer(configGetter core.KubernetesConfigGetter, kubeappsCluster string, - - // register the GitOps Toolkit schema definitions - scheme := runtime.NewScheme() -- err = sourcev1beta2.AddToScheme(scheme) -+ err = sourcev1.AddToScheme(scheme) - if err != nil { - log.Fatalf("%s", err) - } -- err = helmv2beta2.AddToScheme(scheme) -+ err = helmv2.AddToScheme(scheme) - if err != nil { - log.Fatalf("%s", err) - } -@@ -112,11 +112,11 @@ func NewServer(configGetter core.KubernetesConfigGetter, kubeappsCluster string, - OnGetFunc: s.onGetRepo, - OnDeleteFunc: s.onDeleteRepo, - OnResyncFunc: s.onResync, -- NewObjFunc: func() ctrlclient.Object { return &sourcev1beta2.HelmRepository{} }, -- NewListFunc: func() ctrlclient.ObjectList { return &sourcev1beta2.HelmRepositoryList{} }, -+ NewObjFunc: func() ctrlclient.Object { return &sourcev1.HelmRepository{} }, -+ NewListFunc: func() ctrlclient.ObjectList { return &sourcev1.HelmRepositoryList{} }, - ListItemsFunc: func(ol ctrlclient.ObjectList) []ctrlclient.Object { -- if hl, ok := ol.(*sourcev1beta2.HelmRepositoryList); !ok { -- log.Errorf("Expected: *sourcev1beta2.HelmRepositoryList, got: %T", ol) -+ if hl, ok := ol.(*sourcev1.HelmRepositoryList); !ok { -+ log.Errorf("Expected: *sourcev1.HelmRepositoryList, got: %T", ol) - return nil - } else { - ret := make([]ctrlclient.Object, len(hl.Items)) -@@ -619,7 +619,7 @@ func (s *Server) GetPackageRepositoryPermissions(ctx context.Context, request *c - } - - resource := schema.GroupResource{ -- Group: sourcev1beta2.GroupVersion.Group, -+ Group: sourcev1.GroupVersion.Group, - Resource: fluxHelmRepositories, - } - -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/server_test.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/server_test.go -index abed61c06..14278399e 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/server_test.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/server_test.go -@@ -13,9 +13,9 @@ import ( - "time" - - "github.com/bufbuild/connect-go" -- helmv2beta2 "github.com/fluxcd/helm-controller/api/v2beta2" -+ helmv2 "github.com/fluxcd/helm-controller/api/v2" - fluxmeta "github.com/fluxcd/pkg/apis/meta" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - "github.com/go-redis/redis/v8" - "github.com/go-redis/redismock/v8" - corev1 "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/packages/v1alpha1" -@@ -46,13 +46,13 @@ import ( - func TestGetAvailablePackagesStatus(t *testing.T) { - testCases := []struct { - name string -- repo sourcev1beta2.HelmRepository -+ repo sourcev1.HelmRepository - statusCode codes.Code - }{ - { - name: "returns without error if response status does not contain conditions", - repo: newRepo("test", "default", -- &sourcev1beta2.HelmRepositorySpec{ -+ &sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 1 * time.Minute}, - }, -@@ -62,21 +62,21 @@ func TestGetAvailablePackagesStatus(t *testing.T) { - { - name: "returns without error if response status does not contain conditions (2)", - repo: newRepo("test", "default", -- &sourcev1beta2.HelmRepositorySpec{ -+ &sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 1 * time.Minute}, - }, -- &sourcev1beta2.HelmRepositoryStatus{}), -+ &sourcev1.HelmRepositoryStatus{}), - statusCode: codes.OK, - }, - { - name: "returns without error if response does not contain ready repos", - repo: newRepo("test", "default", -- &sourcev1beta2.HelmRepositorySpec{ -+ &sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 1 * time.Minute}, - }, -- &sourcev1beta2.HelmRepositoryStatus{ -+ &sourcev1.HelmRepositoryStatus{ - Conditions: []metav1.Condition{ - { - Type: fluxmeta.ReadyCondition, -@@ -91,7 +91,7 @@ func TestGetAvailablePackagesStatus(t *testing.T) { - name: "returns without error if repo object does not contain namespace", - repo: newRepo("test", "", - nil, -- &sourcev1beta2.HelmRepositoryStatus{ -+ &sourcev1.HelmRepositoryStatus{ - Conditions: []metav1.Condition{ - { - Type: fluxmeta.ReadyCondition, -@@ -106,7 +106,7 @@ func TestGetAvailablePackagesStatus(t *testing.T) { - name: "returns without error if repo object contains default spec", - repo: newRepo("test", "default", - nil, -- &sourcev1beta2.HelmRepositoryStatus{ -+ &sourcev1.HelmRepositoryStatus{ - Conditions: []metav1.Condition{ - { - Type: fluxmeta.ReadyCondition, -@@ -120,8 +120,8 @@ func TestGetAvailablePackagesStatus(t *testing.T) { - { - name: "returns without error if repo object does not contain spec url", - repo: newRepo("test", "default", -- &sourcev1beta2.HelmRepositorySpec{}, -- &sourcev1beta2.HelmRepositoryStatus{ -+ &sourcev1.HelmRepositorySpec{}, -+ &sourcev1.HelmRepositoryStatus{ - Conditions: []metav1.Condition{ - { - Type: fluxmeta.ReadyCondition, -@@ -135,11 +135,11 @@ func TestGetAvailablePackagesStatus(t *testing.T) { - { - name: "returns without error if repo object does not contain status url", - repo: newRepo("test", "default", -- &sourcev1beta2.HelmRepositorySpec{ -+ &sourcev1.HelmRepositorySpec{ - URL: "http://example.com", - Interval: metav1.Duration{Duration: 1 * time.Minute}, - }, -- &sourcev1beta2.HelmRepositoryStatus{ -+ &sourcev1.HelmRepositoryStatus{ - Conditions: []metav1.Condition{ - { - Type: fluxmeta.ReadyCondition, -@@ -154,7 +154,7 @@ func TestGetAvailablePackagesStatus(t *testing.T) { - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { -- s, mock, err := newSimpleServerWithRepos(t, []sourcev1beta2.HelmRepository{tc.repo}) -+ s, mock, err := newSimpleServerWithRepos(t, []sourcev1.HelmRepository{tc.repo}) - if err != nil { - t.Fatalf("error instantiating the server: %v", err) - } -@@ -204,11 +204,11 @@ type testSpecChartWithUrl struct { - numRetries int - } - --func newSimpleServerWithRepos(t *testing.T, repos []sourcev1beta2.HelmRepository) (*Server, redismock.ClientMock, error) { -+func newSimpleServerWithRepos(t *testing.T, repos []sourcev1.HelmRepository) (*Server, redismock.ClientMock, error) { - return newServerWithRepos(t, repos, nil, nil) - } - --func newServerWithRepos(t *testing.T, repos []sourcev1beta2.HelmRepository, charts []testSpecChartWithUrl, secrets []runtime.Object) (*Server, redismock.ClientMock, error) { -+func newServerWithRepos(t *testing.T, repos []sourcev1.HelmRepository, charts []testSpecChartWithUrl, secrets []runtime.Object) (*Server, redismock.ClientMock, error) { - typedClient := typfake.NewSimpleClientset(secrets...) - - // ref https://stackoverflow.com/questions/68794562/kubernetes-fake-client-doesnt-handle-generatename-in-objectmeta/68794563#68794563 -@@ -243,7 +243,7 @@ func newServerWithRepos(t *testing.T, repos []sourcev1beta2.HelmRepository, char - return newServer(t, clientGetter, nil, repos, charts) - } - --func newServerWithChartsAndReleases(t *testing.T, actionConfig *action.Configuration, charts []sourcev1beta2.HelmChart, releases []helmv2beta2.HelmRelease) (*Server, redismock.ClientMock, error) { -+func newServerWithChartsAndReleases(t *testing.T, actionConfig *action.Configuration, charts []sourcev1.HelmChart, releases []helmv2.HelmRelease) (*Server, redismock.ClientMock, error) { - typedClient := typfake.NewSimpleClientset() - // Creating an authorized clientGetter - typedClient.PrependReactor("create", "selfsubjectaccessreviews", func(action k8stesting.Action) (handled bool, ret runtime.Object, err error) { -@@ -316,7 +316,7 @@ func newHelmActionConfig(t *testing.T, namespace string, rels []helmReleaseStub) - func newServer(t *testing.T, - clientGetter clientgetter.ClientProviderInterface, - actionConfig *action.Configuration, -- repos []sourcev1beta2.HelmRepository, -+ repos []sourcev1.HelmRepository, - charts []testSpecChartWithUrl) (*Server, redismock.ClientMock, error) { - - stopCh := make(chan struct{}) -@@ -360,11 +360,11 @@ func newServer(t *testing.T, - OnGetFunc: sink.onGetRepo, - OnDeleteFunc: sink.onDeleteRepo, - OnResyncFunc: sink.onResync, -- NewObjFunc: func() ctrlclient.Object { return &sourcev1beta2.HelmRepository{} }, -- NewListFunc: func() ctrlclient.ObjectList { return &sourcev1beta2.HelmRepositoryList{} }, -+ NewObjFunc: func() ctrlclient.Object { return &sourcev1.HelmRepository{} }, -+ NewListFunc: func() ctrlclient.ObjectList { return &sourcev1.HelmRepositoryList{} }, - ListItemsFunc: func(ol ctrlclient.ObjectList) []ctrlclient.Object { -- if hl, ok := ol.(*sourcev1beta2.HelmRepositoryList); !ok { -- t.Fatalf("Expected: *sourcev1beta2.HelmRepositoryList, got: %T", ol) -+ if hl, ok := ol.(*sourcev1.HelmRepositoryList); !ok { -+ t.Fatalf("Expected: *sourcev1.HelmRepositoryList, got: %T", ol) - return nil - } else { - ret := make([]ctrlclient.Object, len(hl.Items)) -@@ -410,8 +410,8 @@ func newServer(t *testing.T, - func seedRepoCacheWithRepos(t *testing.T, - mock redismock.ClientMock, - sink repoEventSink, -- repos []sourcev1beta2.HelmRepository) map[string]sourcev1beta2.HelmRepository { -- okRepos := make(map[string]sourcev1beta2.HelmRepository) -+ repos []sourcev1.HelmRepository) map[string]sourcev1.HelmRepository { -+ okRepos := make(map[string]sourcev1.HelmRepository) - for _, r := range repos { - key, err := redisKeyForRepo(r) - if err != nil { -@@ -441,7 +441,7 @@ func seedChartCacheWithCharts(t *testing.T, - mock redismock.ClientMock, - sink repoEventSink, - stopCh <-chan struct{}, -- repos map[string]sourcev1beta2.HelmRepository, -+ repos map[string]sourcev1.HelmRepository, - charts []testSpecChartWithUrl) (*cache.ChartCache, func(), error) { - t.Logf("+seedChartCacheWithCharts(%v)", charts) - -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/test_util_test.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/test_util_test.go -index dfbcb10c8..8109f3f2f 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/test_util_test.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/test_util_test.go -@@ -19,8 +19,8 @@ import ( - - k8stesting "k8s.io/client-go/testing" - -- helmv2beta2 "github.com/fluxcd/helm-controller/api/v2beta2" -- sourcev1beta2 "github.com/fluxcd/source-controller/api/v1beta2" -+ helmv2 "github.com/fluxcd/helm-controller/api/v2" -+ sourcev1 "github.com/fluxcd/source-controller/api/v1" - "github.com/google/go-cmp/cmp" - "github.com/google/go-cmp/cmp/cmpopts" - corev1 "github.com/vmware-tanzu/kubeapps/cmd/kubeapps-apis/gen/core/packages/v1alpha1" -@@ -305,8 +305,8 @@ func setSecretOwnerRef(repoName string, secret *apiv1.Secret) *apiv1.Secret { - tRue := true - secret.OwnerReferences = []metav1.OwnerReference{ - { -- APIVersion: sourcev1beta2.GroupVersion.String(), -- Kind: sourcev1beta2.HelmRepositoryKind, -+ APIVersion: sourcev1.GroupVersion.String(), -+ Kind: sourcev1.HelmRepositoryKind, - Name: repoName, - Controller: &tRue, - BlockOwnerDeletion: &tRue, -@@ -353,45 +353,45 @@ func repoRef(id, namespace string) *corev1.PackageRepositoryReference { - } - } - --func newCtrlClient(repos []sourcev1beta2.HelmRepository, charts []sourcev1beta2.HelmChart, releases []helmv2beta2.HelmRelease) withWatchWrapper { -+func newCtrlClient(repos []sourcev1.HelmRepository, charts []sourcev1.HelmChart, releases []helmv2.HelmRelease) withWatchWrapper { - // register the flux GitOps Toolkit schema definitions - scheme := runtime.NewScheme() -- err := sourcev1beta2.AddToScheme(scheme) -+ err := sourcev1.AddToScheme(scheme) - if err != nil { - log.Fatal(err) - } -- err = helmv2beta2.AddToScheme(scheme) -+ err = helmv2.AddToScheme(scheme) - if err != nil { - log.Fatal(err) - } - -- rm := apimeta.NewDefaultRESTMapper([]schema.GroupVersion{sourcev1beta2.GroupVersion, helmv2beta2.GroupVersion}) -+ rm := apimeta.NewDefaultRESTMapper([]schema.GroupVersion{sourcev1.GroupVersion, helmv2.GroupVersion}) - rm.Add(schema.GroupVersionKind{ -- Group: sourcev1beta2.GroupVersion.Group, -- Version: sourcev1beta2.GroupVersion.Version, -- Kind: sourcev1beta2.HelmRepositoryKind}, -+ Group: sourcev1.GroupVersion.Group, -+ Version: sourcev1.GroupVersion.Version, -+ Kind: sourcev1.HelmRepositoryKind}, - apimeta.RESTScopeNamespace) - rm.Add(schema.GroupVersionKind{ -- Group: sourcev1beta2.GroupVersion.Group, -- Version: sourcev1beta2.GroupVersion.Version, -- Kind: sourcev1beta2.HelmChartKind}, -+ Group: sourcev1.GroupVersion.Group, -+ Version: sourcev1.GroupVersion.Version, -+ Kind: sourcev1.HelmChartKind}, - apimeta.RESTScopeNamespace) - rm.Add(schema.GroupVersionKind{ -- Group: helmv2beta2.GroupVersion.Group, -- Version: helmv2beta2.GroupVersion.Version, -- Kind: helmv2beta2.HelmReleaseKind}, -+ Group: helmv2.GroupVersion.Group, -+ Version: helmv2.GroupVersion.Version, -+ Kind: helmv2.HelmReleaseKind}, - apimeta.RESTScopeNamespace) - - ctrlClientBuilder := ctrlfake.NewClientBuilder().WithScheme(scheme).WithRESTMapper(rm) - initLists := []client.ObjectList{} - if len(repos) > 0 { -- initLists = append(initLists, &sourcev1beta2.HelmRepositoryList{Items: repos}) -+ initLists = append(initLists, &sourcev1.HelmRepositoryList{Items: repos}) - } - if len(charts) > 0 { -- initLists = append(initLists, &sourcev1beta2.HelmChartList{Items: charts}) -+ initLists = append(initLists, &sourcev1.HelmChartList{Items: charts}) - } - if len(releases) > 0 { -- initLists = append(initLists, &helmv2beta2.HelmReleaseList{Items: releases}) -+ initLists = append(initLists, &helmv2.HelmReleaseList{Items: releases}) - } - if len(initLists) > 0 { - ctrlClientBuilder = ctrlClientBuilder.WithLists(initLists...) -diff --git a/go.mod b/go.mod -index 652ae22be..e957c536e 100644 ---- a/go.mod -+++ b/go.mod -@@ -18,11 +18,11 @@ require ( - github.com/disintegration/imaging v1.6.2 - github.com/distribution/reference v0.6.0 - github.com/docker/cli v27.3.1+incompatible -- github.com/fluxcd/helm-controller/api v0.37.4 -- github.com/fluxcd/pkg/apis/meta v1.4.0 -+ github.com/fluxcd/helm-controller/api v1.1.0 -+ github.com/fluxcd/pkg/apis/meta v1.6.1 - github.com/fluxcd/pkg/oci v0.36.0 - github.com/fluxcd/pkg/version v0.3.0 -- github.com/fluxcd/source-controller/api v1.2.5 -+ github.com/fluxcd/source-controller/api v1.4.1 - github.com/go-redis/redis/v8 v8.11.5 - github.com/go-redis/redismock/v8 v8.11.5 - github.com/google/go-cmp v0.6.0 -@@ -51,18 +51,18 @@ require ( - google.golang.org/protobuf v1.35.1 - gopkg.in/yaml.v3 v3.0.1 - helm.sh/helm/v3 v3.14.4 -- k8s.io/api v0.29.3 -- k8s.io/apiextensions-apiserver v0.29.3 -- k8s.io/apimachinery v0.29.3 -- k8s.io/apiserver v0.29.3 -+ k8s.io/api v0.31.1 -+ k8s.io/apiextensions-apiserver v0.31.1 -+ k8s.io/apimachinery v0.31.1 -+ k8s.io/apiserver v0.31.1 - k8s.io/cli-runtime v0.29.3 -- k8s.io/client-go v0.29.3 -+ k8s.io/client-go v0.31.1 - k8s.io/klog/v2 v2.130.1 - k8s.io/kubectl v0.29.3 -- k8s.io/utils v0.0.0-20240310230437-4693a0247e57 -+ k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 - oras.land/oras-go v1.2.5 - oras.land/oras-go/v2 v2.5.0 -- sigs.k8s.io/controller-runtime v0.17.3 -+ sigs.k8s.io/controller-runtime v0.19.0 - sigs.k8s.io/yaml v1.4.0 - ) - -@@ -113,18 +113,19 @@ require ( - github.com/docker/go-metrics v0.0.1 // indirect - github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/evanphx/json-patch v5.7.0+incompatible // indirect -- github.com/evanphx/json-patch/v5 v5.8.0 // indirect -+ github.com/evanphx/json-patch/v5 v5.9.0 // indirect - github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect - github.com/fatih/camelcase v1.0.0 // indirect - github.com/fatih/color v1.15.0 // indirect - github.com/felixge/httpsnoop v1.0.4 // indirect -- github.com/fluxcd/pkg/apis/acl v0.1.0 // indirect -- github.com/fluxcd/pkg/apis/kustomize v1.3.0 // indirect -+ github.com/fluxcd/pkg/apis/acl v0.3.0 // indirect -+ github.com/fluxcd/pkg/apis/kustomize v1.6.1 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/fvbommel/sortorder v1.1.0 // indirect -+ github.com/fxamacker/cbor/v2 v2.7.0 // indirect - github.com/go-errors/errors v1.4.2 // indirect - github.com/go-gorp/gorp/v3 v3.1.0 // indirect -- github.com/go-logr/logr v1.4.1 // indirect -+ github.com/go-logr/logr v1.4.2 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/jsonpointer v0.20.0 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect -@@ -169,13 +170,12 @@ require ( - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.15 // indirect -- github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect - github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/go-wordwrap v1.0.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/moby/locker v1.0.1 // indirect -- github.com/moby/spdystream v0.2.0 // indirect -+ github.com/moby/spdystream v0.4.0 // indirect - github.com/moby/term v0.5.0 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect -@@ -188,10 +188,10 @@ require ( - github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect -- github.com/prometheus/client_golang v1.18.0 // indirect -- github.com/prometheus/client_model v0.5.0 // indirect -- github.com/prometheus/common v0.45.0 // indirect -- github.com/prometheus/procfs v0.12.0 // indirect -+ github.com/prometheus/client_golang v1.19.1 // indirect -+ github.com/prometheus/client_model v0.6.1 // indirect -+ github.com/prometheus/common v0.55.0 // indirect -+ github.com/prometheus/procfs v0.15.1 // indirect - github.com/rivo/uniseg v0.4.7 // indirect - github.com/rubenv/sql-migrate v1.5.2 // indirect - github.com/russross/blackfriday/v2 v2.1.0 // indirect -@@ -204,14 +204,15 @@ require ( - github.com/spf13/cast v1.6.0 // indirect - github.com/subosito/gotenv v1.6.0 // indirect - github.com/vito/go-interact v1.0.1 // indirect -+ github.com/x448/float16 v0.8.4 // indirect - github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect - github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect - github.com/xeipuuv/gojsonschema v1.2.0 // indirect - github.com/xlab/treeprint v1.2.0 // indirect -- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect -- go.opentelemetry.io/otel v1.24.0 // indirect -- go.opentelemetry.io/otel/metric v1.24.0 // indirect -- go.opentelemetry.io/otel/trace v1.24.0 // indirect -+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect -+ go.opentelemetry.io/otel v1.28.0 // indirect -+ go.opentelemetry.io/otel/metric v1.28.0 // indirect -+ go.opentelemetry.io/otel/trace v1.28.0 // indirect - go.starlark.net v0.0.0-20230726094710-7dadff395006 // indirect - go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.28.0 // indirect -@@ -224,11 +225,12 @@ require ( - golang.org/x/time v0.5.0 // indirect - gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect -+ gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect -- k8s.io/component-base v0.29.3 // indirect -- k8s.io/kube-openapi v0.0.0-20231113174909-778a5567bc1e // indirect -+ k8s.io/component-base v0.31.1 // indirect -+ k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 // indirect - sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 // indirect -diff --git a/go.sum b/go.sum -index 26c9b632a..e022117c1 100644 ---- a/go.sum -+++ b/go.sum -@@ -143,8 +143,8 @@ github.com/bufbuild/connect-grpchealth-go v1.1.1 h1:ldceS3m7+Qvl3GI4yzB4oCg3uOdD - github.com/bufbuild/connect-grpchealth-go v1.1.1/go.mod h1:9KbkogLoUIxOTPKyWDv5evkawr1IYXaHax4XoUHCgoQ= - github.com/carvel-dev/semver/v4 v4.0.1-0.20240402203627-beb83fbf25e4 h1:F4rZiMGZyC66j9VB7doVOE4tFHF1yNEihQlOuht4jmM= - github.com/carvel-dev/semver/v4 v4.0.1-0.20240402203627-beb83fbf25e4/go.mod h1:4cFTBLAr/U11ykiEEQMccu4uJ1i0GS+atJmeETHCFtI= --github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= --github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -+github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -+github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= - github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= - github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= - github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -@@ -245,8 +245,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 - github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= - github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= - github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= --github.com/evanphx/json-patch/v5 v5.8.0 h1:lRj6N9Nci7MvzrXuX6HFzU8XjmhPiXPlsKEy1u0KQro= --github.com/evanphx/json-patch/v5 v5.8.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= -+github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= -+github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= - github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4= - github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc= - github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= -@@ -258,20 +258,20 @@ github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= - github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= - github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= - github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= --github.com/fluxcd/helm-controller/api v0.37.4 h1:rkBMqYXexyf1s5BS8QpxGi691DsCi+yugIFCM5fNKLU= --github.com/fluxcd/helm-controller/api v0.37.4/go.mod h1:KFdP5Lbrc4Vv+Jt4xRj6UUo3qiwdBqBPl1xiiAnBe9c= --github.com/fluxcd/pkg/apis/acl v0.1.0 h1:EoAl377hDQYL3WqanWCdifauXqXbMyFuK82NnX6pH4Q= --github.com/fluxcd/pkg/apis/acl v0.1.0/go.mod h1:zfEZzz169Oap034EsDhmCAGgnWlcWmIObZjYMusoXS8= --github.com/fluxcd/pkg/apis/kustomize v1.3.0 h1:qvB46CfaOWcL1SyR2RiVWN/j7/035D0OtB1ltLN7rgI= --github.com/fluxcd/pkg/apis/kustomize v1.3.0/go.mod h1:PCXf5kktTzNav0aH2Ns3jsowqwmA9xTcsrEOoPzx/K8= --github.com/fluxcd/pkg/apis/meta v1.4.0 h1:nNdgB6FFHP3cubxZCViaCFDUVlAbpq9+hvKEIveOGMg= --github.com/fluxcd/pkg/apis/meta v1.4.0/go.mod h1:81sZ01ShTuLc1C3M1dFJNkINareBysvmrO1b8zJFFKs= -+github.com/fluxcd/helm-controller/api v1.1.0 h1:NS5Wm3U6Kv4w7Cw2sDOV++vf2ecGfFV00x1+2Y3QcOY= -+github.com/fluxcd/helm-controller/api v1.1.0/go.mod h1:BgHMgMY6CWynzl4KIbHpd6Wpn3FN9BqgkwmvoKCp6iE= -+github.com/fluxcd/pkg/apis/acl v0.3.0 h1:UOrKkBTOJK+OlZX7n8rWt2rdBmDCoTK+f5TY2LcZi8A= -+github.com/fluxcd/pkg/apis/acl v0.3.0/go.mod h1:WVF9XjSMVBZuU+HTTiSebGAWMgM7IYexFLyVWbK9bNY= -+github.com/fluxcd/pkg/apis/kustomize v1.6.1 h1:22FJc69Mq4i8aCxnKPlddHhSMyI4UPkQkqiAdWFcqe0= -+github.com/fluxcd/pkg/apis/kustomize v1.6.1/go.mod h1:5dvQ4IZwz0hMGmuj8tTWGtarsuxW0rWsxJOwC6i+0V8= -+github.com/fluxcd/pkg/apis/meta v1.6.1 h1:maLhcRJ3P/70ArLCY/LF/YovkxXbX+6sTWZwZQBeNq0= -+github.com/fluxcd/pkg/apis/meta v1.6.1/go.mod h1:YndB/gxgGZmKfqpAfFxyCDNFJFP0ikpeJzs66jwq280= - github.com/fluxcd/pkg/oci v0.36.0 h1:bC+Qkm6p8rN72McArNwYFjI9bt7M2vn6mnt7i/vOWv0= - github.com/fluxcd/pkg/oci v0.36.0/go.mod h1:ocWsg1tjhjlIpdpdw0xZz7q9YQH8YzcrN1wi+Az0t7E= - github.com/fluxcd/pkg/version v0.3.0 h1:+GSU3QKQK66Y09+cQMAEoyh7j4S0ZimXF6MyGgJwZB4= - github.com/fluxcd/pkg/version v0.3.0/go.mod h1:NO3/EuKNn9g6aw9NN85Hdrz+5CVx90KZC6rPsOmgvVI= --github.com/fluxcd/source-controller/api v1.2.5 h1:MgGrOfPh7Grhl40GUM9lEs+lmgTx3hLAwI0MVqaJkQ8= --github.com/fluxcd/source-controller/api v1.2.5/go.mod h1:j3QSHpIPBP5sjaGIkVtsgWCx8JcOmcsutRmdJmRMOZg= -+github.com/fluxcd/source-controller/api v1.4.1 h1:zV01D7xzHOXWbYXr36lXHWWYS7POARsjLt61Nbh3kVY= -+github.com/fluxcd/source-controller/api v1.4.1/go.mod h1:gSjg57T+IG66SsBR0aquv+DFrm4YyBNpKIJVDnu3Ya8= - github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= - github.com/foxcpp/go-mockdns v1.0.0/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= - github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= -@@ -283,6 +283,8 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos - github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= - github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= - github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= -+github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -+github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= - github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= - github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= - github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= -@@ -298,8 +300,8 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 - github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= - github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= - github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= --github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= --github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -+github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -+github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= - github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= - github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= - github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= -@@ -321,7 +323,8 @@ github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LB - github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= - github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= - github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= --github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -+github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= -+github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= - github.com/gobuffalo/logger v1.0.6 h1:nnZNpxYo0zx+Aj9RfMPBm+x9zAU2OayFh/xrAWi34HU= - github.com/gobuffalo/logger v1.0.6/go.mod h1:J31TBEHR1QLV2683OXTAItYIg8pv2JMHnF/quuAbMjs= - github.com/gobuffalo/packd v1.0.1 h1:U2wXfRr4E9DH8IdsDLlRFwTZTK7hLfq9qT/QHXGVe/0= -@@ -415,8 +418,9 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe - github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= - github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= - github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= --github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= - github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -+github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af h1:kmjWCqn2qkEml422C2Rrd27c3VGxi6a/6HNq8QmHRKM= -+github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= - github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= - github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= - github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -@@ -432,7 +436,6 @@ github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH - github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= - github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= - github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= --github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= - github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= - github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= - github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= -@@ -597,8 +600,6 @@ github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A - github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= - github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= - github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= --github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= --github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= - github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= - github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= - github.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY= -@@ -622,8 +623,8 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx - github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= - github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= - github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= --github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= --github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -+github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8= -+github.com/moby/spdystream v0.4.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= - github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= - github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= - github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= -@@ -654,14 +655,14 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv - github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= - github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= - github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= --github.com/onsi/ginkgo/v2 v2.14.0 h1:vSmGj2Z5YPb9JwCWT6z6ihcUvDhuXLc3sJiqd3jMKAY= --github.com/onsi/ginkgo/v2 v2.14.0/go.mod h1:JkUdW7JkN0V6rFvsHcJ478egV3XH9NxpD27Hal/PhZw= -+github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= -+github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= - github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= - github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= - github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= - github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= --github.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk= --github.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg= -+github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= -+github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= - github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= - github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= - github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= -@@ -694,25 +695,25 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP - github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= - github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= - github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= --github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= --github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= -+github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -+github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= - github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= - github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= - github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= - github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= --github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= --github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -+github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -+github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= - github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= - github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= - github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= --github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= --github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= -+github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -+github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= - github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= - github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= - github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= - github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= --github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= --github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -+github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -+github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= - github.com/redis/go-redis/extra/rediscmd/v9 v9.0.5 h1:EaDatTxkdHG+U3Bk4EUr+DZ7fOGwTfezUiUJMaIcaho= - github.com/redis/go-redis/extra/rediscmd/v9 v9.0.5/go.mod h1:fyalQWdtzDBECAQFBJuQe5bzQ02jGd5Qcbgb97Flm7U= - github.com/redis/go-redis/extra/redisotel/v9 v9.0.5 h1:EfpWLLCyXw8PSM2/XNJLjI3Pb27yVE+gIAfeqp8LUCc= -@@ -803,6 +804,8 @@ github.com/vmware-tanzu/carvel-kapp v0.61.0 h1:BBRtZNoGFar0O2lIfofcidAerrOln8tcA - github.com/vmware-tanzu/carvel-kapp v0.61.0/go.mod h1:mJBWyXmRiill2rBLrj9JAMDYFkEFYX/wMRy/7vw+V8E= - github.com/vmware-tanzu/carvel-kapp-controller v0.51.0 h1:lCCHy9n/AzWPtq5gqbINJHgmF32RCUkh9DbVQgx6HAs= - github.com/vmware-tanzu/carvel-kapp-controller v0.51.0/go.mod h1:go1MQz1D2kVgjaE2ZHtuHGECFk8EDLeXMpjmDNDzuJM= -+github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= -+github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= - github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= - github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= - github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -@@ -832,18 +835,18 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= - go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= - go.opentelemetry.io/contrib/exporters/autoexport v0.46.1 h1:ysCfPZB9AjUlMa1UHYup3c9dAOCMQX/6sxSfPBUoxHw= - go.opentelemetry.io/contrib/exporters/autoexport v0.46.1/go.mod h1:ha0aiYm+DOPsLHjh0zoQ8W8sLT+LJ58J3j47lGpSLrU= --go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= --go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= --go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= --go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= -+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= -+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= -+go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= -+go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0 h1:jd0+5t/YynESZqsSyPz+7PAFdEop0dlN0+PkyHYo8oI= - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0/go.mod h1:U707O40ee1FpQGyhvqnzmCJm1Wh6OX6GGBVn0E6Uyyk= - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0 h1:bflGWrfYyuulcdxf14V6n9+CoQcu5SAAdHmDPAJnlps= - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0/go.mod h1:qcTO4xHAxZLaLxPd60TdE88rxtItPHgHWqOhOGRr0as= --go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= --go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= --go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= --go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= -+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= -+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= -+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0 h1:qFffATk0X+HD+f1Z8lswGiOQYKHRlzfmdJm0wEaVrFA= -+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0/go.mod h1:MOiCmryaYtc+V0Ei+Tx9o5S1ZjA7kzLucuVuyzBZloQ= - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 h1:digkEZCJWobwBqMwC0cwCq8/wkkRy/OowZg5OArWZrM= - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0/go.mod h1:/OpE/y70qVkndM0TrxT4KBoN3RsFZP0QaofcfYrj76I= - go.opentelemetry.io/otel/exporters/prometheus v0.44.0 h1:08qeJgaPC0YEBu2PQMbqU3rogTlyzpjhCI2b58Yn00w= -@@ -852,17 +855,17 @@ go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.44.0 h1:dEZWPjVN22urgY - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.44.0/go.mod h1:sTt30Evb7hJB/gEk27qLb1+l9n4Tb8HvHkR0Wx3S6CU= - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.21.0 h1:VhlEQAPp9R1ktYfrPk5SOryw1e9LDDTZCbIPFrho0ec= - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.21.0/go.mod h1:kB3ufRbfU+CQ4MlUcqtW8Z7YEOBeK2DJ6CmR5rYYF3E= --go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= --go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= --go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= --go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -+go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= -+go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= -+go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= -+go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= - go.opentelemetry.io/otel/sdk/metric v1.21.0 h1:smhI5oD714d6jHE6Tie36fPx4WDFIg+Y6RfAY4ICcR0= - go.opentelemetry.io/otel/sdk/metric v1.21.0/go.mod h1:FJ8RAsoPGv/wYMgBdUJXOm+6pzFY3YdljnXtv1SBE8Q= --go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= --go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= -+go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= -+go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= - go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= --go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= --go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= -+go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= -+go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= - go.starlark.net v0.0.0-20230726094710-7dadff395006 h1:hGOLDtPfO4cy1P66VUXt++umv2lWLXtt+qgc2uxr1Ss= - go.starlark.net v0.0.0-20230726094710-7dadff395006/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= - go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -@@ -1350,6 +1353,8 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= - gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -+gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= -+gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= - gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= - gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= - gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -@@ -1382,28 +1387,28 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh - honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= - honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= - honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= --k8s.io/api v0.29.3 h1:2ORfZ7+bGC3YJqGpV0KSDDEVf8hdGQ6A03/50vj8pmw= --k8s.io/api v0.29.3/go.mod h1:y2yg2NTyHUUkIoTC+phinTnEa3KFM6RZ3szxt014a80= --k8s.io/apiextensions-apiserver v0.29.3 h1:9HF+EtZaVpFjStakF4yVufnXGPRppWFEQ87qnO91YeI= --k8s.io/apiextensions-apiserver v0.29.3/go.mod h1:po0XiY5scnpJfFizNGo6puNU6Fq6D70UJY2Cb2KwAVc= --k8s.io/apimachinery v0.29.3 h1:2tbx+5L7RNvqJjn7RIuIKu9XTsIZ9Z5wX2G22XAa5EU= --k8s.io/apimachinery v0.29.3/go.mod h1:hx/S4V2PNW4OMg3WizRrHutyB5la0iCUbZym+W0EQIU= --k8s.io/apiserver v0.29.3 h1:xR7ELlJ/BZSr2n4CnD3lfA4gzFivh0wwfNfz9L0WZcE= --k8s.io/apiserver v0.29.3/go.mod h1:hrvXlwfRulbMbBgmWRQlFru2b/JySDpmzvQwwk4GUOs= -+k8s.io/api v0.31.1 h1:Xe1hX/fPW3PXYYv8BlozYqw63ytA92snr96zMW9gWTU= -+k8s.io/api v0.31.1/go.mod h1:sbN1g6eY6XVLeqNsZGLnI5FwVseTrZX7Fv3O26rhAaI= -+k8s.io/apiextensions-apiserver v0.31.1 h1:L+hwULvXx+nvTYX/MKM3kKMZyei+UiSXQWciX/N6E40= -+k8s.io/apiextensions-apiserver v0.31.1/go.mod h1:tWMPR3sgW+jsl2xm9v7lAyRF1rYEK71i9G5dRtkknoQ= -+k8s.io/apimachinery v0.31.1 h1:mhcUBbj7KUjaVhyXILglcVjuS4nYXiwC+KKFBgIVy7U= -+k8s.io/apimachinery v0.31.1/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= -+k8s.io/apiserver v0.31.1 h1:Sars5ejQDCRBY5f7R3QFHdqN3s61nhkpaX8/k1iEw1c= -+k8s.io/apiserver v0.31.1/go.mod h1:lzDhpeToamVZJmmFlaLwdYZwd7zB+WYRYIboqA1kGxM= - k8s.io/cli-runtime v0.29.3 h1:r68rephmmytoywkw2MyJ+CxjpasJDQY7AGc3XY2iv1k= - k8s.io/cli-runtime v0.29.3/go.mod h1:aqVUsk86/RhaGJwDhHXH0jcdqBrgdF3bZWk4Z9D4mkM= --k8s.io/client-go v0.29.3 h1:R/zaZbEAxqComZ9FHeQwOh3Y1ZUs7FaHKZdQtIc2WZg= --k8s.io/client-go v0.29.3/go.mod h1:tkDisCvgPfiRpxGnOORfkljmS+UrW+WtXAy2fTvXJB0= --k8s.io/component-base v0.29.3 h1:Oq9/nddUxlnrCuuR2K/jp6aflVvc0uDvxMzAWxnGzAo= --k8s.io/component-base v0.29.3/go.mod h1:Yuj33XXjuOk2BAaHsIGHhCKZQAgYKhqIxIjIr2UXYio= -+k8s.io/client-go v0.31.1 h1:f0ugtWSbWpxHR7sjVpQwuvw9a3ZKLXX0u0itkFXufb0= -+k8s.io/client-go v0.31.1/go.mod h1:sKI8871MJN2OyeqRlmA4W4KM9KBdBUpDLu/43eGemCg= -+k8s.io/component-base v0.31.1 h1:UpOepcrX3rQ3ab5NB6g5iP0tvsgJWzxTyAo20sgYSy8= -+k8s.io/component-base v0.31.1/go.mod h1:WGeaw7t/kTsqpVTaCoVEtillbqAhF2/JgvO0LDOMa0w= - k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= - k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= --k8s.io/kube-openapi v0.0.0-20231113174909-778a5567bc1e h1:snPmy96t93RredGRjKfMFt+gvxuVAncqSAyBveJtr4Q= --k8s.io/kube-openapi v0.0.0-20231113174909-778a5567bc1e/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= -+k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= -+k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= - k8s.io/kubectl v0.29.3 h1:RuwyyIU42MAISRIePaa8Q7A3U74Q9P4MoJbDFz9o3us= - k8s.io/kubectl v0.29.3/go.mod h1:yCxfY1dbwgVdEt2zkJ6d5NNLOhhWgTyrqACIoFhpdd4= --k8s.io/utils v0.0.0-20240310230437-4693a0247e57 h1:gbqbevonBh57eILzModw6mrkbwM0gQBEuevE/AaBsHY= --k8s.io/utils v0.0.0-20240310230437-4693a0247e57/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -+k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= -+k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= - oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= - oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= - oras.land/oras-go/v2 v2.5.0 h1:o8Me9kLY74Vp5uw07QXPiitjsw7qNXi8Twd+19Zf02c= -@@ -1411,8 +1416,8 @@ oras.land/oras-go/v2 v2.5.0/go.mod h1:z4eisnLP530vwIOUOJeBIj0aGI0L1C3d53atvCBqZH - rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= - rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= - rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= --sigs.k8s.io/controller-runtime v0.17.3 h1:65QmN7r3FWgTxDMz9fvGnO1kbf2nu+acg9p2R9oYYYk= --sigs.k8s.io/controller-runtime v0.17.3/go.mod h1:N0jpP5Lo7lMTF9aL56Z/B2oWBJjey6StQM0jRbKQXtY= -+sigs.k8s.io/controller-runtime v0.19.0 h1:nWVM7aq+Il2ABxwiCizrVDSlmDcshi9llbaFbC0ji/Q= -+sigs.k8s.io/controller-runtime v0.19.0/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4= - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= - sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKUdc5jW3t5jwY7Bo7dcRm+tFxT+NfgY0= diff --git a/packages/system/dashboard/images/kubeapps-apis/labels.diff b/packages/system/dashboard/images/kubeapps-apis/labels.diff deleted file mode 100644 index 98ee6c33..00000000 --- a/packages/system/dashboard/images/kubeapps-apis/labels.diff +++ /dev/null @@ -1,69 +0,0 @@ -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go -index 37593c166..bc58a05ef 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go -@@ -29,8 +29,10 @@ import ( - "k8s.io/apimachinery/pkg/api/errors" - "k8s.io/apimachinery/pkg/api/meta" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -+ "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/types" - log "k8s.io/klog/v2" -+ ctrlclient "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/yaml" - ) - -@@ -54,7 +56,10 @@ func (s *Server) listReleasesInCluster(ctx context.Context, headers http.Header, - // see any results created/updated/deleted after the first request is issued - // To fix this, we must make use of resourceVersion := relList.GetResourceVersion() - var relList helmv2.HelmReleaseList -- if err = client.List(ctx, &relList); err != nil { -+ listOptions := ctrlclient.ListOptions{ -+ LabelSelector: labels.SelectorFromSet(labels.Set{"cozystack.io/ui": "true"}), -+ } -+ if err = client.List(ctx, &relList, &listOptions); err != nil { - return nil, connecterror.FromK8sError("list", "HelmRelease", namespace+"/*", err) - } else { - return relList.Items, nil -@@ -508,6 +513,9 @@ func (s *Server) newFluxHelmRelease(chart *models.Chart, targetName types.Namesp - ObjectMeta: metav1.ObjectMeta{ - Name: targetName.Name, - Namespace: targetName.Namespace, -+ Labels: map[string]string{ -+ "cozystack.io/ui": "true", -+ }, - }, - Spec: helmv2.HelmReleaseSpec{ - Chart: &helmv2.HelmChartTemplate{ -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo.go -index 5154ed7f7..fe80fdf4f 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/repo.go -@@ -32,6 +32,7 @@ import ( - apiv1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/meta" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -+ "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/sets" - log "k8s.io/klog/v2" -@@ -64,7 +65,8 @@ func (s *Server) listReposInNamespace(ctx context.Context, headers http.Header, - - var repoList sourcev1.HelmRepositoryList - listOptions := ctrlclient.ListOptions{ -- Namespace: ns, -+ Namespace: ns, -+ LabelSelector: labels.SelectorFromSet(labels.Set{"cozystack.io/ui": "true"}), - } - if err := client.List(backgroundCtx, &repoList, &listOptions); err != nil { - return nil, connecterror.FromK8sError("list", "HelmRepository", "", err) -@@ -927,6 +929,9 @@ func newFluxHelmRepo( - ObjectMeta: metav1.ObjectMeta{ - Name: targetName.Name, - Namespace: targetName.Namespace, -+ Labels: map[string]string{ -+ "cozystack.io/ui": "true", -+ }, - }, - Spec: sourcev1.HelmRepositorySpec{ - URL: url, diff --git a/packages/system/dashboard/images/kubeapps-apis/reconcile-strategy.diff b/packages/system/dashboard/images/kubeapps-apis/reconcile-strategy.diff deleted file mode 100644 index f9bb84a6..00000000 --- a/packages/system/dashboard/images/kubeapps-apis/reconcile-strategy.diff +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go -index bc58a05ef..895a4024f 100644 ---- a/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go -+++ b/cmd/kubeapps-apis/plugins/fluxv2/packages/v1alpha1/release.go -@@ -526,6 +526,7 @@ func (s *Server) newFluxHelmRelease(chart *models.Chart, targetName types.Namesp - Kind: sourcev1.HelmRepositoryKind, - Namespace: chart.Repo.Namespace, - }, -+ ReconcileStrategy: "Revision", - }, - }, - }, diff --git a/packages/system/dashboard/values.yaml b/packages/system/dashboard/values.yaml index 8be0af4a..19a94b5b 100644 --- a/packages/system/dashboard/values.yaml +++ b/packages/system/dashboard/values.yaml @@ -41,10 +41,309 @@ kubeapps: registry: ghcr.io/aenix-io/cozystack repository: dashboard tag: latest - digest: "sha256:c0a3122652cdceb06d73777126cb3fb11334a5da758eaa690bfed2fcec08b839" + digest: "sha256:4cef715f4398299c4405e3a7ca5c66d175564314b8e0ea681fd8da9b0a847c2a" kubeappsapis: image: registry: ghcr.io/aenix-io/cozystack repository: kubeapps-apis tag: latest - digest: "sha256:c20941e09628e625951558fe850310c4cf00aee2c26749a870108ea96ab881fd" + digest: "sha256:f279dbf3392c6d0fc08fe6a5f4581fc43855b9a26ecf43bff65d68423f2626b4" + pluginConfig: + flux: + packages: + v1alpha1: + resources: + - application: + kind: Bucket + singular: bucket + plural: buckets + release: + prefix: bucket- + labels: + cozystack.io/ui: "true" + chart: + name: bucket + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: ClickHouse + singular: clickhouse + plural: clickhouses + release: + prefix: clickhouse- + labels: + cozystack.io/ui: "true" + chart: + name: clickhouse + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: HTTPCache + singular: httpcache + plural: httpcaches + release: + prefix: http-cache- + labels: + cozystack.io/ui: "true" + chart: + name: http-cache + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: NATS + singular: nats + plural: natses + release: + prefix: nats- + labels: + cozystack.io/ui: "true" + chart: + name: nats + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: TCPBalancer + singular: tcpbalancer + plural: tcpbalancers + release: + prefix: tcp-balancer- + labels: + cozystack.io/ui: "true" + chart: + name: http-cache + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: VirtualMachine + singular: virtualmachine + plural: virtualmachines + release: + prefix: virtual-machine- + labels: + cozystack.io/ui: "true" + chart: + name: virtual-machine + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: VPN + singular: vpn + plural: vpns + release: + prefix: vpn- + labels: + cozystack.io/ui: "true" + chart: + name: vpn + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: MySQL + singular: mysql + plural: mysqls + release: + prefix: mysql- + labels: + cozystack.io/ui: "true" + chart: + name: mysql + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: Tenant + singular: tenant + plural: tenants + release: + prefix: tenant- + labels: + cozystack.io/ui: "true" + chart: + name: tenant + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: Kubernetes + singular: kubernetes + plural: kuberneteses + release: + prefix: kubernetes- + labels: + cozystack.io/ui: "true" + chart: + name: kubernetes + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: Redis + singular: redis + plural: redises + release: + prefix: redis- + labels: + cozystack.io/ui: "true" + chart: + name: redis + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: RabbitMQ + singular: rabbitmq + plural: rabbitmqs + release: + prefix: rabbitmq- + labels: + cozystack.io/ui: "true" + chart: + name: rabbitmq + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: Postgres + singular: postgres + plural: postgreses + release: + prefix: postgres- + labels: + cozystack.io/ui: "true" + chart: + name: postgres + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: FerretDB + singular: ferretdb + plural: ferretdb + release: + prefix: ferretdb- + labels: + cozystack.io/ui: "true" + chart: + name: ferretdb + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: Kafka + singular: kafka + plural: kafkas + release: + prefix: ferretdb- + labels: + cozystack.io/ui: "true" + chart: + name: kafka + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: VMDisk + plural: vmdisks + singular: vmdisk + release: + prefix: vm-disk- + labels: + cozystack.io/ui: "true" + chart: + name: vm-disk + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: VMInstance + plural: vminstances + singular: vminstance + release: + prefix: vm-instance- + labels: + cozystack.io/ui: "true" + chart: + name: vm-instance + sourceRef: + kind: HelmRepository + name: cozystack-apps + namespace: cozy-public + - application: + kind: Monitoring + plural: monitorings + singular: monitoring + release: + prefix: "" + labels: + cozystack.io/ui: "true" + chart: + name: monitoring + sourceRef: + kind: HelmRepository + name: cozystack-extra + namespace: cozy-public + - application: + kind: Etcd + plural: etcds + singular: etcd + release: + prefix: "" + labels: + cozystack.io/ui: "true" + chart: + name: etcd + sourceRef: + kind: HelmRepository + name: cozystack-extra + namespace: cozy-public + - application: + kind: Ingress + plural: ingresses + singular: ingress + release: + prefix: "" + labels: + cozystack.io/ui: "true" + chart: + name: ingress + sourceRef: + kind: HelmRepository + name: cozystack-extra + namespace: cozy-public + - application: + kind: SeaweedFS + plural: seaweedfses + singular: seaweedfs + release: + prefix: "" + labels: + cozystack.io/ui: "true" + chart: + name: seaweedfs + sourceRef: + kind: HelmRepository + name: cozystack-extra + namespace: cozy-public From 36c80acb4f3444bad01cd761e992ae14640f41e3 Mon Sep 17 00:00:00 2001 From: klinch0 <68821526+klinch0@users.noreply.github.com> Date: Mon, 23 Dec 2024 20:09:33 +0300 Subject: [PATCH 2/4] fix (#540) --- packages/apps/tenant/Chart.yaml | 2 +- packages/apps/tenant/templates/tenant.yaml | 43 +++++++--------------- packages/apps/versions_map | 3 +- 3 files changed, 16 insertions(+), 32 deletions(-) diff --git a/packages/apps/tenant/Chart.yaml b/packages/apps/tenant/Chart.yaml index e5737dda..b73af878 100644 --- a/packages/apps/tenant/Chart.yaml +++ b/packages/apps/tenant/Chart.yaml @@ -4,4 +4,4 @@ description: Separated tenant namespace icon: /logos/tenant.svg type: application -version: 1.6.3 +version: 1.6.4 diff --git a/packages/apps/tenant/templates/tenant.yaml b/packages/apps/tenant/templates/tenant.yaml index f6c6dfc1..caf4ca31 100644 --- a/packages/apps/tenant/templates/tenant.yaml +++ b/packages/apps/tenant/templates/tenant.yaml @@ -31,9 +31,7 @@ rules: - apiGroups: ["rbac.authorization.k8s.io"] resources: ["roles"] verbs: ["get"] -- apiGroups: ["helm.toolkit.fluxcd.io"] - resources: ["helmreleases"] - verbs: ["*"] + --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding @@ -86,14 +84,6 @@ rules: - get - list - watch - - apiGroups: - - helm.toolkit.fluxcd.io - resources: - - helmreleases - verbs: - - get - - list - - watch - apiGroups: - "" resources: @@ -122,6 +112,9 @@ subjects: name: tenant-root-view apiGroup: rbac.authorization.k8s.io {{- end }} +- kind: Group + name: {{ include "tenant.name" . }}-view + apiGroup: rbac.authorization.k8s.io {{- if hasPrefix "tenant-" .Release.Namespace }} {{- $parts := splitList "-" .Release.Namespace }} {{- range $i, $v := $parts }} @@ -158,13 +151,6 @@ rules: - get - list - watch - - apiGroups: ["helm.toolkit.fluxcd.io"] - resources: - - helmreleases - verbs: - - get - - list - - watch - apiGroups: [""] resources: - "*" @@ -198,6 +184,9 @@ subjects: name: tenant-root-use apiGroup: rbac.authorization.k8s.io {{- end }} +- kind: Group + name: {{ include "tenant.name" . }}-use + apiGroup: rbac.authorization.k8s.io {{- if hasPrefix "tenant-" .Release.Namespace }} {{- $parts := splitList "-" .Release.Namespace }} {{- range $i, $v := $parts }} @@ -234,13 +223,6 @@ rules: - list - watch - delete - - apiGroups: ["helm.toolkit.fluxcd.io"] - resources: - - helmreleases - verbs: - - get - - list - - watch - apiGroups: ["kubevirt.io"] resources: - virtualmachines @@ -293,6 +275,9 @@ subjects: name: tenant-root-admin apiGroup: rbac.authorization.k8s.io {{- end }} +- kind: Group + name: {{ include "tenant.name" . }}-admin + apiGroup: rbac.authorization.k8s.io {{- if hasPrefix "tenant-" .Release.Namespace }} {{- $parts := splitList "-" .Release.Namespace }} {{- range $i, $v := $parts }} @@ -329,11 +314,6 @@ rules: - list - watch - delete - - apiGroups: ["helm.toolkit.fluxcd.io"] - resources: - - helmreleases - verbs: - - '*' - apiGroups: ["kubevirt.io"] resources: - virtualmachines @@ -363,6 +343,9 @@ subjects: name: tenant-root-super-admin apiGroup: rbac.authorization.k8s.io {{- end }} +- kind: Group + name: {{ include "tenant.name" . }}-super-admin + apiGroup: rbac.authorization.k8s.io {{- if hasPrefix "tenant-" .Release.Namespace }} {{- $parts := splitList "-" .Release.Namespace }} {{- range $i, $v := $parts }} diff --git a/packages/apps/versions_map b/packages/apps/versions_map index 96728827..9c92aa88 100644 --- a/packages/apps/versions_map +++ b/packages/apps/versions_map @@ -93,7 +93,8 @@ tenant 1.5.0 48128743 tenant 1.6.0 df448b99 tenant 1.6.1 edbbb9be tenant 1.6.2 ccedc5fe -tenant 1.6.3 HEAD +tenant 1.6.3 2057bb96 +tenant 1.6.4 HEAD virtual-machine 0.1.4 f2015d6 virtual-machine 0.1.5 7cd7de7 virtual-machine 0.2.0 5ca8823 From 7afa0d592a5869e6e4f8c3d159370d8908afa234 Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Tue, 24 Dec 2024 14:02:35 +0100 Subject: [PATCH 3/4] Fix configmap Signed-off-by: Andrei Kvapil --- packages/system/cozystack-api/templates/configmap.yaml | 4 ++-- packages/system/dashboard/values.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/system/cozystack-api/templates/configmap.yaml b/packages/system/cozystack-api/templates/configmap.yaml index 1d13acdd..b7789236 100644 --- a/packages/system/cozystack-api/templates/configmap.yaml +++ b/packages/system/cozystack-api/templates/configmap.yaml @@ -71,7 +71,7 @@ data: labels: cozystack.io/ui: "true" chart: - name: http-cache + name: tcp-balancer sourceRef: kind: HelmRepository name: cozystack-apps @@ -207,7 +207,7 @@ data: singular: kafka plural: kafkas release: - prefix: ferretdb- + prefix: kafka- labels: cozystack.io/ui: "true" chart: diff --git a/packages/system/dashboard/values.yaml b/packages/system/dashboard/values.yaml index 19a94b5b..0b1f78b5 100644 --- a/packages/system/dashboard/values.yaml +++ b/packages/system/dashboard/values.yaml @@ -118,7 +118,7 @@ kubeapps: labels: cozystack.io/ui: "true" chart: - name: http-cache + name: tcp-balancer sourceRef: kind: HelmRepository name: cozystack-apps @@ -254,7 +254,7 @@ kubeapps: singular: kafka plural: kafkas release: - prefix: ferretdb- + prefix: kafka- labels: cozystack.io/ui: "true" chart: From 17dbf8b8a69b012eacc02d00cc4c1d42952783cd Mon Sep 17 00:00:00 2001 From: Andrei Kvapil Date: Fri, 27 Dec 2024 11:21:36 +0100 Subject: [PATCH 4/4] Fix dashboard issues Signed-off-by: Andrei Kvapil --- packages/apps/tenant/templates/tenant.yaml | 6 ++ packages/system/dashboard/Makefile | 7 +- .../templates/dashboard/configmap.yaml | 2 +- .../dashboard/images/dashboard/Dockerfile | 4 ++ .../images/dashboard/documentation.diff | 13 ++++ .../dashboard/remove-manage-repositories.diff | 66 +++++++++++++++++++ .../dashboard/images/kubeapps-apis/Dockerfile | 2 +- packages/system/dashboard/values.yaml | 4 +- 8 files changed, 98 insertions(+), 6 deletions(-) create mode 100644 packages/system/dashboard/images/dashboard/documentation.diff create mode 100644 packages/system/dashboard/images/dashboard/remove-manage-repositories.diff diff --git a/packages/apps/tenant/templates/tenant.yaml b/packages/apps/tenant/templates/tenant.yaml index caf4ca31..8d1bcbd4 100644 --- a/packages/apps/tenant/templates/tenant.yaml +++ b/packages/apps/tenant/templates/tenant.yaml @@ -388,6 +388,12 @@ subjects: - kind: Group name: {{ include "tenant.name" . }}-admin apiGroup: rbac.authorization.k8s.io +- kind: Group + name: {{ include "tenant.name" . }}-use + apiGroup: rbac.authorization.k8s.io +- kind: Group + name: {{ include "tenant.name" . }}-view + apiGroup: rbac.authorization.k8s.io - kind: ServiceAccount name: {{ include "tenant.name" . }} namespace: {{ include "tenant.name" . }} diff --git a/packages/system/dashboard/Makefile b/packages/system/dashboard/Makefile index e62c39f9..b385c9bd 100644 --- a/packages/system/dashboard/Makefile +++ b/packages/system/dashboard/Makefile @@ -25,7 +25,7 @@ update-dockerfiles: version=$$(echo "$$tag" | sed 's/^v//') && \ sed -i "s/ARG VERSION=.*/ARG VERSION=$${version}/" images/dashboard/Dockerfile -image-dashboard: +image-dashboard: update-version docker buildx build images/dashboard \ --provenance false \ --tag $(REGISTRY)/dashboard:$(call settag,$(TAG)) \ @@ -44,7 +44,7 @@ image-dashboard: yq -i '.kubeapps.dashboard.image.digest = strenv(DIGEST)' values.yaml rm -f images/dashboard.json -image-kubeapps-apis: +image-kubeapps-apis: update-version docker buildx build images/kubeapps-apis \ --provenance false \ --tag $(REGISTRY)/kubeapps-apis:$(call settag,$(TAG)) \ @@ -62,3 +62,6 @@ image-kubeapps-apis: DIGEST=$$(yq e '."containerimage.digest"' images/kubeapps-apis.json -o json -r) \ yq -i '.kubeapps.kubeappsapis.image.digest = strenv(DIGEST)' values.yaml rm -f images/kubeapps-apis.json + +update-version: + sed -i "s|\(\"appVersion\":\).*|\1 \"$(TAG)\",|g" ./charts/kubeapps/templates/dashboard/configmap.yaml diff --git a/packages/system/dashboard/charts/kubeapps/templates/dashboard/configmap.yaml b/packages/system/dashboard/charts/kubeapps/templates/dashboard/configmap.yaml index 5391285f..b1f1891b 100644 --- a/packages/system/dashboard/charts/kubeapps/templates/dashboard/configmap.yaml +++ b/packages/system/dashboard/charts/kubeapps/templates/dashboard/configmap.yaml @@ -76,7 +76,7 @@ data: "kubeappsNamespace": {{ .Release.Namespace | quote }}, "helmGlobalNamespace": {{ include "kubeapps.helmGlobalPackagingNamespace" . | quote }}, "carvelGlobalNamespace": {{ .Values.kubeappsapis.pluginConfig.kappController.packages.v1alpha1.globalPackagingNamespace | quote }}, - "appVersion": {{ printf "v%s" .Chart.AppVersion | quote }}, + "appVersion": "latest", "authProxyEnabled": {{ .Values.authProxy.enabled }}, "oauthLoginURI": {{ .Values.authProxy.oauthLoginURI | quote }}, "oauthLogoutURI": {{ .Values.authProxy.oauthLogoutURI | quote }}, diff --git a/packages/system/dashboard/images/dashboard/Dockerfile b/packages/system/dashboard/images/dashboard/Dockerfile index a7ad1953..43bad8ce 100644 --- a/packages/system/dashboard/images/dashboard/Dockerfile +++ b/packages/system/dashboard/images/dashboard/Dockerfile @@ -10,7 +10,11 @@ RUN wget -O- https://github.com/vmware-tanzu/kubeapps/archive/refs/tags/v${VERSI COPY apple-touch-icon.png favicon-16x16.png favicon-32x32.png favicon.ico mstile-144x144.png mstile-150x150.png mstile-310x150.png mstile-310x310.png mstile-70x70.png safari-pinned-tab.svg public/ COPY release-url.diff /patches/release-url.diff +COPY remove-manage-repositories.diff /patches/remove-manage-repositories.diff +COPY documentation.diff /patches/documentation.diff RUN patch -p2 < /patches/release-url.diff +RUN patch -p2 < /patches/remove-manage-repositories.diff +RUN patch -p2 < /patches/documentation.diff RUN sed -i 's/opacity: 0.05;/display: none;/g' src/components/InfoCard/InfoCard.scss RUN sed -i 's/"Kubeapps",/"Cozystack",/' lang/en.json diff --git a/packages/system/dashboard/images/dashboard/documentation.diff b/packages/system/dashboard/images/dashboard/documentation.diff new file mode 100644 index 00000000..2a6e9d2a --- /dev/null +++ b/packages/system/dashboard/images/dashboard/documentation.diff @@ -0,0 +1,13 @@ +diff --git a/dashboard/src/components/AppList/AppListGrid.tsx b/dashboard/src/components/AppList/AppListGrid.tsx +index d3261e459..597512e62 100644 +--- a/dashboard/src/components/AppList/AppListGrid.tsx ++++ b/dashboard/src/components/AppList/AppListGrid.tsx +@@ -42,7 +42,7 @@ function AppListGrid(props: IAppListProps) { + Start browsing your favourite apps{" "} + or check the{" "} + diff --git a/packages/system/dashboard/images/dashboard/remove-manage-repositories.diff b/packages/system/dashboard/images/dashboard/remove-manage-repositories.diff new file mode 100644 index 00000000..a2212160 --- /dev/null +++ b/packages/system/dashboard/images/dashboard/remove-manage-repositories.diff @@ -0,0 +1,66 @@ +diff --git a/dashboard/src/components/Catalog/Catalog.tsx b/dashboard/src/components/Catalog/Catalog.tsx +index 5f2d2a1c5..093cb598d 100644 +--- a/dashboard/src/components/Catalog/Catalog.tsx ++++ b/dashboard/src/components/Catalog/Catalog.tsx +@@ -15,7 +15,6 @@ import qs from "qs"; + import React, { useEffect } from "react"; + import { useDispatch, useSelector } from "react-redux"; + import * as ReactRouter from "react-router-dom"; +-import { Link } from "react-router-dom"; + import { IClusterServiceVersion, IStoreState } from "shared/types"; + import { app } from "shared/url"; + import { escapeRegExp, getPluginPackageName } from "shared/utils"; +@@ -85,7 +84,6 @@ export default function Catalog() { + operators, + repos: { reposSummaries: repos }, + config: { +- appVersion, + kubeappsCluster, + helmGlobalNamespace, + carvelGlobalNamespace, +@@ -420,24 +418,6 @@ export default function Catalog() { + + ) : ( + +diff --git a/dashboard/src/components/Header/Menu.tsx b/dashboard/src/components/Header/Menu.tsx +index c8ec1da8c..e59f90190 100644 +--- a/dashboard/src/components/Header/Menu.tsx ++++ b/dashboard/src/components/Header/Menu.tsx +@@ -78,16 +78,6 @@ function Menu({ clusters, appVersion, logout }: IContextSelectorProps) { +