From 0ddf84638f98f881cf837d8231ab6f962e43bdff Mon Sep 17 00:00:00 2001 From: Dakota Walsh <101994734+dakota-portainer@users.noreply.github.com> Date: Fri, 15 Dec 2023 09:04:08 +1300 Subject: [PATCH] fix(kubernetes): deprecate old configurations api EE-5571 (#10837) * fix(kubernetes): deprecate old configurations api EE-5571 * fix doc variable type --- .../kubernetes/configmaps_and_secrets.go | 16 ++++++ app/react/kubernetes/configs/queries.ts | 49 ------------------- .../CreateIngressView/CreateIngressView.tsx | 20 ++++---- 3 files changed, 26 insertions(+), 59 deletions(-) delete mode 100644 app/react/kubernetes/configs/queries.ts diff --git a/api/http/handler/kubernetes/configmaps_and_secrets.go b/api/http/handler/kubernetes/configmaps_and_secrets.go index 881e1235d..0b6341b8b 100644 --- a/api/http/handler/kubernetes/configmaps_and_secrets.go +++ b/api/http/handler/kubernetes/configmaps_and_secrets.go @@ -8,6 +8,22 @@ import ( "github.com/portainer/portainer/pkg/libhttp/response" ) +// @id getKubernetesConfigMapsAndSecrets +// @summary Get ConfigMaps and Secrets +// @description Get all ConfigMaps and Secrets for a given namespace +// @description **Access policy**: authenticated +// @tags kubernetes +// @security ApiKeyAuth +// @security jwt +// @accept json +// @produce json +// @param id path int true "Environment (Endpoint) identifier" +// @param namespace path string true "Namespace name" +// @success 200 {array} []kubernetes.K8sConfigMapOrSecret "Success" +// @failure 400 "Invalid request" +// @failure 500 "Server error" +// @deprecated +// @router /kubernetes/{id}/namespaces/{namespace}/configuration [get] func (handler *Handler) getKubernetesConfigMapsAndSecrets(w http.ResponseWriter, r *http.Request) *httperror.HandlerError { namespace, err := request.RetrieveRouteVariableValue(r, "namespace") if err != nil { diff --git a/app/react/kubernetes/configs/queries.ts b/app/react/kubernetes/configs/queries.ts deleted file mode 100644 index 965597b1c..000000000 --- a/app/react/kubernetes/configs/queries.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { useQuery } from 'react-query'; - -import { EnvironmentId } from '@/react/portainer/environments/types'; -import { error as notifyError } from '@/portainer/services/notifications'; -import { withError } from '@/react-tools/react-query'; - -import { getConfigurations, getConfigMapsForCluster } from './service'; - -// returns a usequery hook for the formatted list of configmaps and secrets -export function useConfigurations( - environmentId: EnvironmentId, - namespace?: string -) { - return useQuery( - [ - 'environments', - environmentId, - 'kubernetes', - 'namespaces', - namespace, - 'configurations', - ], - () => (namespace ? getConfigurations(environmentId, namespace) : []), - { - onError: (err) => { - notifyError( - 'Failure', - err as Error, - `Unable to get configurations for namespace ${namespace}` - ); - }, - enabled: !!namespace, - } - ); -} - -export function useConfigurationsForCluster( - environemtId: EnvironmentId, - namespaces?: string[] -) { - return useQuery( - ['environments', environemtId, 'kubernetes', 'configurations'], - () => namespaces && getConfigMapsForCluster(environemtId, namespaces), - { - ...withError('Unable to retrieve configurations for cluster'), - enabled: !!namespaces, - } - ); -} diff --git a/app/react/kubernetes/ingresses/CreateIngressView/CreateIngressView.tsx b/app/react/kubernetes/ingresses/CreateIngressView/CreateIngressView.tsx index 0d686b807..b3e82942a 100644 --- a/app/react/kubernetes/ingresses/CreateIngressView/CreateIngressView.tsx +++ b/app/react/kubernetes/ingresses/CreateIngressView/CreateIngressView.tsx @@ -4,7 +4,7 @@ import { v4 as uuidv4 } from 'uuid'; import { debounce } from 'lodash'; import { useEnvironmentId } from '@/react/hooks/useEnvironmentId'; -import { useConfigurations } from '@/react/kubernetes/configs/queries'; +import { useSecrets } from '@/react/kubernetes/configs/secret.service'; import { useNamespaceServices } from '@/react/kubernetes/networks/services/queries'; import { notifyError, notifySuccess } from '@/portainer/services/notifications'; import { useAuthorizations } from '@/react/hooks/useUser'; @@ -68,7 +68,7 @@ export function CreateIngressView() { useNamespacesQuery(environmentId); const { data: allServices } = useNamespaceServices(environmentId, namespace); - const configResults = useConfigurations(environmentId, namespace); + const secretsResults = useSecrets(environmentId, namespace); const ingressesResults = useIngresses( environmentId, namespaces ? Object.keys(namespaces || {}) : [] @@ -266,20 +266,20 @@ export function CreateIngressView() { ingressRule.IngressClassName, ]); - const matchedConfigs = configResults?.data?.filter( + const secrets = secretsResults?.data?.filter( (config) => - config.SecretType === 'kubernetes.io/tls' && - config.Namespace === namespace + config.type === 'kubernetes.io/tls' && + config.metadata?.namespace === namespace ); const tlsOptions: Option[] = useMemo( () => [ { label: 'No TLS', value: '' }, - ...(matchedConfigs?.map((config) => ({ - label: config.Name, - value: config.Name, + ...(secrets?.map((config) => ({ + label: config.metadata?.name as string, + value: config.metadata?.name as string, })) || []), ], - [matchedConfigs] + [secrets] ); useEffect(() => { @@ -811,7 +811,7 @@ export function CreateIngressView() { } function reloadTLSCerts() { - configResults.refetch(); + secretsResults.refetch(); } function handleCreateIngressRules() {