diff --git a/src/fireedge/src/client/containers/Hosts/Create.js b/src/fireedge/src/client/containers/Hosts/Create.js index f3b884ad6d..b2b0ea6885 100644 --- a/src/fireedge/src/client/containers/Hosts/Create.js +++ b/src/fireedge/src/client/containers/Hosts/Create.js @@ -14,13 +14,10 @@ * limitations under the License. * * ------------------------------------------------------------------------- */ import { ReactElement } from 'react' -import { useHistory, useLocation } from 'react-router' +import { useHistory } from 'react-router' import { useGeneralApi } from 'client/features/General' -import { - useUpdateHostMutation, - useAllocateHostMutation, -} from 'client/features/OneApi/host' +import { useAllocateHostMutation } from 'client/features/OneApi/host' import { DefaultFormStepper, @@ -36,23 +33,15 @@ import { PATH } from 'client/apps/sunstone/routesOne' */ function CreateHost() { const history = useHistory() - const { state: { ID: id, NAME } = {} } = useLocation() const { enqueueSuccess } = useGeneralApi() - const [update] = useUpdateHostMutation() const [allocate] = useAllocateHostMutation() const onSubmit = async (props) => { try { - if (!id) { - const newHostId = await allocate(props).unwrap() - history.push(PATH.INFRASTRUCTURE.HOSTS.LIST) - enqueueSuccess(`Host created - #${newHostId}`) - } else { - await update({ id, ...props }) - history.push(PATH.INFRASTRUCTURE.HOSTS.LIST) - enqueueSuccess(`Host updated - #${id} ${NAME}`) - } + const newHostId = await allocate(props).unwrap() + history.push(PATH.INFRASTRUCTURE.HOSTS.LIST) + enqueueSuccess(`Host created - #${newHostId}`) } catch {} } diff --git a/src/fireedge/src/client/containers/VmTemplates/Create.js b/src/fireedge/src/client/containers/VmTemplates/Create.js index 50102852d0..a5226668bc 100644 --- a/src/fireedge/src/client/containers/VmTemplates/Create.js +++ b/src/fireedge/src/client/containers/VmTemplates/Create.js @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * * limitations under the License. * * ------------------------------------------------------------------------- */ -import { useEffect, ReactElement } from 'react' +import { ReactElement } from 'react' import { useHistory, useLocation } from 'react-router' import { useGeneralApi } from 'client/features/General' import { useUpdateTemplateMutation, useAllocateTemplateMutation, - useLazyGetTemplateQuery, + useGetTemplateQuery, } from 'client/features/OneApi/vmTemplate' import { useGetVMGroupsQuery } from 'client/features/OneApi/vmGroup' import { useGetHostsQuery } from 'client/features/OneApi/host' @@ -48,14 +48,17 @@ function CreateVmTemplate() { const [update] = useUpdateTemplateMutation() const [allocate] = useAllocateTemplateMutation() + const { data } = useGetTemplateQuery( + { id: templateId, extended: true }, + { skip: templateId === undefined } + ) + useGetVMGroupsQuery(undefined, { refetchOnMountOrArgChange: false }) useGetHostsQuery(undefined, { refetchOnMountOrArgChange: false }) useGetImagesQuery(undefined, { refetchOnMountOrArgChange: false }) useGetUsersQuery(undefined, { refetchOnMountOrArgChange: false }) useGetDatastoresQuery(undefined, { refetchOnMountOrArgChange: false }) - const [getTemplate, { data }] = useLazyGetTemplateQuery() - const onSubmit = async (xmlTemplate) => { try { if (!templateId) { @@ -63,17 +66,13 @@ function CreateVmTemplate() { history.push(PATH.TEMPLATE.VMS.LIST) enqueueSuccess(`VM Template created - #${newTemplateId}`) } else { - await update({ id: templateId, template: xmlTemplate }) + await update({ id: templateId, template: xmlTemplate }).unwrap() history.push(PATH.TEMPLATE.VMS.LIST) enqueueSuccess(`VM Template updated - #${templateId} ${NAME}`) } } catch {} } - useEffect(() => { - templateId && getTemplate({ id: templateId, extended: true }) - }, []) - return templateId && !data ? ( ) : ( diff --git a/src/fireedge/src/client/containers/VmTemplates/Instantiate.js b/src/fireedge/src/client/containers/VmTemplates/Instantiate.js index 72df8759e0..2250457374 100644 --- a/src/fireedge/src/client/containers/VmTemplates/Instantiate.js +++ b/src/fireedge/src/client/containers/VmTemplates/Instantiate.js @@ -43,20 +43,20 @@ function InstantiateVmTemplate() { const { enqueueInfo } = useGeneralApi() const [instantiate] = useInstantiateTemplateMutation() - useGetUsersQuery(undefined, { refetchOnMountOrArgChange: false }) - useGetGroupsQuery(undefined, { refetchOnMountOrArgChange: false }) - const { data, isError } = useGetTemplateQuery( { id: templateId, extended: true }, - { refetchOnMountOrArgChange: false } + { skip: templateId === undefined, refetchOnMountOrArgChange: false } ) + useGetUsersQuery(undefined, { refetchOnMountOrArgChange: false }) + useGetGroupsQuery(undefined, { refetchOnMountOrArgChange: false }) + const onSubmit = async ([templateSelected, templates]) => { try { const { ID, NAME } = templateSelected const templatesWithId = templates.map((t) => ({ id: ID, ...t })) - await Promise.all(templatesWithId.map(instantiate)) + await Promise.all(templatesWithId.map((t) => instantiate(t).unwrap())) history.push(PATH.INSTANCE.VMS.LIST) diff --git a/src/fireedge/src/client/features/OneApi/group.js b/src/fireedge/src/client/features/OneApi/group.js index 9ae68f2cac..c712b73381 100644 --- a/src/fireedge/src/client/features/OneApi/group.js +++ b/src/fireedge/src/client/features/OneApi/group.js @@ -64,7 +64,7 @@ const groupApi = oneApi.injectEndpoints({ return { params: { id }, command } }, transformResponse: (data) => data?.GROUP ?? {}, - invalidatesTags: (_, __, id) => [{ type: GROUP, id }], + invalidatesTags: (_, __, { id }) => [{ type: GROUP, id }], }), allocateGroup: builder.mutation({ /** diff --git a/src/fireedge/src/client/features/OneApi/image.js b/src/fireedge/src/client/features/OneApi/image.js index 4512d033e1..6ae16bcdc9 100644 --- a/src/fireedge/src/client/features/OneApi/image.js +++ b/src/fireedge/src/client/features/OneApi/image.js @@ -186,7 +186,7 @@ const imageApi = oneApi.injectEndpoints({ return { params, command } }, - invalidatesTags: (_, __, id) => [{ type: IMAGE, id }, IMAGE_POOL], + invalidatesTags: (_, __, { id }) => [{ type: IMAGE, id }, IMAGE_POOL], }), changeImageType: builder.mutation({ /** @@ -222,7 +222,7 @@ const imageApi = oneApi.injectEndpoints({ return { params, command } }, - invalidatesTags: (_, __, id) => [{ type: IMAGE, id }], + invalidatesTags: (_, __, { id }) => [{ type: IMAGE, id }], }), changeImagePermissions: builder.mutation({ /** @@ -380,7 +380,7 @@ const imageApi = oneApi.injectEndpoints({ return { params, command } }, - invalidatesTags: (_, __, id) => [{ type: IMAGE, id }, IMAGE_POOL], + invalidatesTags: (_, __, { id }) => [{ type: IMAGE, id }, IMAGE_POOL], }), }), }) diff --git a/src/fireedge/src/client/features/OneApi/marketplace.js b/src/fireedge/src/client/features/OneApi/marketplace.js index 3a259a8416..93f64989ca 100644 --- a/src/fireedge/src/client/features/OneApi/marketplace.js +++ b/src/fireedge/src/client/features/OneApi/marketplace.js @@ -213,7 +213,7 @@ const marketplaceApi = oneApi.injectEndpoints({ return { params: { id, enable: true }, command } }, - invalidatesTags: (_, __, id) => [ + invalidatesTags: (_, __, { id }) => [ { type: MARKETPLACE, id }, MARKETPLACE_POOL, ], @@ -233,7 +233,7 @@ const marketplaceApi = oneApi.injectEndpoints({ return { params: { id, enable: false }, command } }, - invalidatesTags: (_, __, id) => [ + invalidatesTags: (_, __, { id }) => [ { type: MARKETPLACE, id }, MARKETPLACE_POOL, ], diff --git a/src/fireedge/src/client/features/OneApi/user.js b/src/fireedge/src/client/features/OneApi/user.js index e0d2204cba..d4c28ddd85 100644 --- a/src/fireedge/src/client/features/OneApi/user.js +++ b/src/fireedge/src/client/features/OneApi/user.js @@ -65,7 +65,7 @@ const userApi = oneApi.injectEndpoints({ return { params: { id }, command } }, transformResponse: (data) => data?.USER ?? {}, - providesTags: (_, __, id) => [{ type: USER, id }], + providesTags: (_, __, { id }) => [{ type: USER, id }], }), allocateUser: builder.mutation({ /** diff --git a/src/fireedge/src/client/features/OneApi/vm.js b/src/fireedge/src/client/features/OneApi/vm.js index b14881b36a..9654409806 100644 --- a/src/fireedge/src/client/features/OneApi/vm.js +++ b/src/fireedge/src/client/features/OneApi/vm.js @@ -107,7 +107,7 @@ const vmApi = oneApi.injectEndpoints({ return { params, command } }, transformResponse: (data) => data?.VM ?? {}, - providesTags: (_, __, id) => [{ type: VM, id }], + providesTags: (_, __, { id }) => [{ type: VM, id }], async onQueryStarted(id, { dispatch, queryFulfilled }) { try { const { data: resourceFromQuery } = await queryFulfilled @@ -267,7 +267,6 @@ const vmApi = oneApi.injectEndpoints({ return { params, command } }, - invalidatesTags: [VM_POOL], }), saveAsTemplate: builder.mutation({ /** @@ -338,7 +337,7 @@ const vmApi = oneApi.injectEndpoints({ return { params, command } }, - invalidatesTags: (_, __, { id }) => [{ type: VM, id }], + invalidatesTags: (_, __, { id }) => [{ type: VM, id }, VM_POOL], }), migrate: builder.mutation({ /** @@ -363,7 +362,7 @@ const vmApi = oneApi.injectEndpoints({ return { params, command } }, - invalidatesTags: (_, __, { id }) => [{ type: VM, id }], + invalidatesTags: (_, __, { id }) => [{ type: VM, id }, VM_POOL], }), saveAsDisk: builder.mutation({ /** @@ -931,7 +930,7 @@ const vmApi = oneApi.injectEndpoints({ return { params, command } }, - invalidatesTags: (_, __, id) => [{ type: VM, id }], + invalidatesTags: (_, __, { id }) => [{ type: VM, id }], async onQueryStarted(params, { dispatch, queryFulfilled }) { try { const patchVm = dispatch( diff --git a/src/fireedge/src/client/features/OneApi/vmTemplate.js b/src/fireedge/src/client/features/OneApi/vmTemplate.js index f27b2bcb8a..7c1b5762c6 100644 --- a/src/fireedge/src/client/features/OneApi/vmTemplate.js +++ b/src/fireedge/src/client/features/OneApi/vmTemplate.js @@ -33,7 +33,7 @@ import { import { LockLevel, FilterFlag, Permission, VmTemplate } from 'client/constants' const { TEMPLATE } = ONE_RESOURCES -const { TEMPLATE_POOL, VM_POOL, IMAGE_POOL } = ONE_RESOURCES_POOL +const { TEMPLATE_POOL } = ONE_RESOURCES_POOL const vmTemplateApi = oneApi.injectEndpoints({ endpoints: (builder) => ({ @@ -124,7 +124,6 @@ const vmTemplateApi = oneApi.injectEndpoints({ return { params, command } }, - invalidatesTags: [TEMPLATE_POOL], }), cloneTemplate: builder.mutation({ /** @@ -163,11 +162,7 @@ const vmTemplateApi = oneApi.injectEndpoints({ return { params, command } }, - invalidatesTags: (_, __, { id, image }) => [ - TEMPLATE_POOL, - { type: TEMPLATE, id }, - ...(image ? [IMAGE_POOL] : []), - ], + invalidatesTags: [TEMPLATE_POOL], }), instantiateTemplate: builder.mutation({ /** @@ -188,7 +183,6 @@ const vmTemplateApi = oneApi.injectEndpoints({ return { params, command } }, - invalidatesTags: [VM_POOL], }), updateTemplate: builder.mutation({ /** @@ -432,7 +426,7 @@ const vmTemplateApi = oneApi.injectEndpoints({ return { params, command } }, - invalidatesTags: (_, __, id) => [{ type: TEMPLATE, id }], + invalidatesTags: (_, __, { id }) => [{ type: TEMPLATE, id }], async onQueryStarted(params, { dispatch, queryFulfilled }) { try { const patchVmTemplate = dispatch(