From ac4b129195d794223e538b65bd2bd23d9141eb39 Mon Sep 17 00:00:00 2001 From: LP B Date: Mon, 8 Jul 2024 17:31:18 +0200 Subject: [PATCH] fix(docker/network): send target nodeName when removing a network on swarm (#12001) --- app/react-tools/react-query.ts | 4 +++- app/react/docker/networks/ItemView/ItemView.tsx | 2 +- .../networks/queries/useDeleteNetworkMutation.ts | 13 +++++++++---- package.json | 3 ++- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/app/react-tools/react-query.ts b/app/react-tools/react-query.ts index 8ab6d611d..52c00eeec 100644 --- a/app/react-tools/react-query.ts +++ b/app/react-tools/react-query.ts @@ -37,7 +37,9 @@ export function withInvalidate( return { onSuccess() { const promise = Promise.all( - queryKeysToInvalidate.map((keys) => queryClient.invalidateQueries(keys)) + queryKeysToInvalidate.map((keys) => + queryClient.invalidateQueries(keys, { refetchType: 'none' }) + ) ); return skipRefresh ? undefined // don't wait for queries to refresh before setting state to success diff --git a/app/react/docker/networks/ItemView/ItemView.tsx b/app/react/docker/networks/ItemView/ItemView.tsx index 3a05b7c4d..c32386871 100644 --- a/app/react/docker/networks/ItemView/ItemView.tsx +++ b/app/react/docker/networks/ItemView/ItemView.tsx @@ -94,7 +94,7 @@ export function ItemView() { async function onRemoveNetworkClicked() { deleteNetworkMutation.mutate( - { networkId }, + { networkId, nodeName }, { onSuccess: () => { notifySuccess('Network successfully removed', networkId); diff --git a/app/react/docker/networks/queries/useDeleteNetworkMutation.ts b/app/react/docker/networks/queries/useDeleteNetworkMutation.ts index cc83d1441..c7abd664f 100644 --- a/app/react/docker/networks/queries/useDeleteNetworkMutation.ts +++ b/app/react/docker/networks/queries/useDeleteNetworkMutation.ts @@ -9,6 +9,7 @@ import { EnvironmentId } from '@/react/portainer/environments/types'; import axios, { parseAxiosError } from '@/portainer/services/axios'; import { buildDockerProxyUrl } from '../../proxy/queries/buildDockerProxyUrl'; +import { withAgentTargetHeader } from '../../proxy/queries/utils'; import { NetworkId } from '../types'; import { queryKeys } from './queryKeys'; @@ -17,8 +18,8 @@ export function useDeleteNetwork(environmentId: EnvironmentId) { const queryClient = useQueryClient(); return useMutation( - ({ networkId }: { networkId: NetworkId }) => - deleteNetwork(environmentId, networkId), + ({ networkId, nodeName }: { networkId: NetworkId; nodeName?: string }) => + deleteNetwork(environmentId, networkId, { nodeName }), mutationOptions( withInvalidate(queryClient, [queryKeys.base(environmentId)]), withError('Unable to remove network') @@ -34,11 +35,15 @@ export function useDeleteNetwork(environmentId: EnvironmentId) { */ export async function deleteNetwork( environmentId: EnvironmentId, - networkId: NetworkId + networkId: NetworkId, + { nodeName }: { nodeName?: string } = {} ) { try { await axios.delete( - buildDockerProxyUrl(environmentId, 'networks', networkId) + buildDockerProxyUrl(environmentId, 'networks', networkId), + { + headers: { ...withAgentTargetHeader(nodeName) }, + } ); return networkId; } catch (err) { diff --git a/package.json b/package.json index e256e2189..ad227a8d7 100644 --- a/package.json +++ b/package.json @@ -238,5 +238,6 @@ "browserslist": "last 2 versions", "msw": { "workerDirectory": ".storybook/public" - } + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" }