47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
|
|
import { withError } from '@/react-tools/react-query';
|
|
import axios, { parseAxiosError } from '@/portainer/services/axios/axios';
|
|
import { EnvironmentId } from '@/react/portainer/environments/types';
|
|
|
|
import { queryKeys } from './query-keys';
|
|
|
|
type Payload = {
|
|
environmentId: EnvironmentId;
|
|
namespace: string;
|
|
name: string;
|
|
secretNames: string[];
|
|
};
|
|
|
|
export function useUpdateServiceAccountImagePullSecretsMutation(
|
|
environmentId: EnvironmentId
|
|
) {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: updateServiceAccountImagePullSecrets,
|
|
onSuccess: (_data, { namespace, name }) => {
|
|
queryClient.invalidateQueries(
|
|
queryKeys.detail(environmentId, namespace, name)
|
|
);
|
|
queryClient.invalidateQueries(queryKeys.base(environmentId));
|
|
},
|
|
...withError('Unable to update image pull secrets'),
|
|
});
|
|
}
|
|
|
|
async function updateServiceAccountImagePullSecrets({
|
|
environmentId,
|
|
namespace,
|
|
name,
|
|
secretNames,
|
|
}: Payload) {
|
|
try {
|
|
await axios.put(
|
|
`kubernetes/${environmentId}/namespaces/${namespace}/service_accounts/${name}/image_pull_secrets`,
|
|
{ secretNames }
|
|
);
|
|
} catch (e) {
|
|
throw parseAxiosError(e, 'Unable to update image pull secrets');
|
|
}
|
|
}
|