diff --git a/src/fireedge/src/client/components/Forms/Provider/CreateForm/Steps/Template/index.js b/src/fireedge/src/client/components/Forms/Provider/CreateForm/Steps/Template/index.js index 69a93f9095..2a0e181f4f 100644 --- a/src/fireedge/src/client/components/Forms/Provider/CreateForm/Steps/Template/index.js +++ b/src/fireedge/src/client/components/Forms/Provider/CreateForm/Steps/Template/index.js @@ -27,7 +27,7 @@ import { useProvisionTemplate } from 'client/features/One' import { ListCards } from 'client/components/List' import { ProvisionTemplateCard } from 'client/components/Cards' import { sanitize, deepmerge } from 'client/utils' -import { isValidProviderTemplate, getProvisionTypeFromTemplate } from 'client/models/ProviderTemplate' +import { isValidProviderTemplate } from 'client/models/ProviderTemplate' import { T } from 'client/constants' import { STEP_FORM_SCHEMA } from 'client/components/Forms/Provider/CreateForm/Steps/Template/schema' @@ -58,12 +58,9 @@ const Content = ({ data, setFormData }) => { ) ], []) - const provisionTypeSelected = useMemo(() => ( - getProvisionTypeFromTemplate(provisionTemplates, templateSelected) - ), []) - - const [provisionSelected, setProvision] = useState(() => provisionTypeSelected ?? provisionTypes[0]) const [providerSelected, setProvider] = useState(() => templateSelected?.provider) + const [provisionSelected, setProvision] = + useState(() => templateSelected?.plain?.provision_type ?? provisionTypes[0]) const [templatesByProvisionSelected, providerTypes, description] = useMemo(() => { const templates = Object.values(provisionTemplates[provisionSelected]?.providers).flat() diff --git a/src/fireedge/src/client/components/Forms/Provision/CreateForm/Steps/Provider/index.js b/src/fireedge/src/client/components/Forms/Provision/CreateForm/Steps/Provider/index.js index 98574dea56..096542284c 100644 --- a/src/fireedge/src/client/components/Forms/Provision/CreateForm/Steps/Provider/index.js +++ b/src/fireedge/src/client/components/Forms/Provision/CreateForm/Steps/Provider/index.js @@ -19,10 +19,9 @@ import { useWatch } from 'react-hook-form' import { useListForm } from 'client/hooks' import { useAuth } from 'client/features/Auth' -import { useProvider, useProvisionTemplate } from 'client/features/One' +import { useProvider } from 'client/features/One' import { ListCards } from 'client/components/List' import { EmptyCard, ProvisionCard } from 'client/components/Cards' -import { getProvisionTypeFromTemplate } from 'client/models/ProvisionTemplate' import { T } from 'client/constants' import { STEP_ID as INPUTS_ID } from 'client/components/Forms/Provision/CreateForm/Steps/Inputs' @@ -37,24 +36,19 @@ const Provider = () => ({ resolver: () => STEP_FORM_SCHEMA, content: useCallback(({ data, setFormData }) => { const providers = useProvider() - const provisionTemplates = useProvisionTemplate() const { providerConfig } = useAuth() const provisionTemplateSelected = useWatch({ name: TEMPLATE_ID })?.[0] ?? {} - const providersAvailable = useMemo(() => { - const templateProvisionType = - getProvisionTypeFromTemplate(provisionTemplates, provisionTemplateSelected) - - return providers.filter(provider => { + const providersAvailable = useMemo(() => + providers.filter(provider => { const { TEMPLATE: { PLAIN = {} } } = provider ?? {} return ( PLAIN.provider === provisionTemplateSelected.provider && - PLAIN.provision_type === templateProvisionType + PLAIN.provision_type === provisionTemplateSelected.provision_type ) - }) - }, []) + }), []) const { handleSelect, diff --git a/src/fireedge/src/client/components/Forms/Provision/CreateForm/Steps/Template/index.js b/src/fireedge/src/client/components/Forms/Provision/CreateForm/Steps/Template/index.js index daf2d996f2..57d534cd65 100644 --- a/src/fireedge/src/client/components/Forms/Provision/CreateForm/Steps/Template/index.js +++ b/src/fireedge/src/client/components/Forms/Provision/CreateForm/Steps/Template/index.js @@ -25,7 +25,7 @@ import { useProvider, useProvisionTemplate } from 'client/features/One' import { ListCards } from 'client/components/List' import { ProvisionTemplateCard } from 'client/components/Cards' import { sanitize } from 'client/utils' -import { isValidProvisionTemplate, getProvisionTypeFromTemplate } from 'client/models/ProvisionTemplate' +import { isValidProvisionTemplate } from 'client/models/ProvisionTemplate' import { T } from 'client/constants' import { STEP_ID as PROVIDER_ID } from 'client/components/Forms/Provision/CreateForm/Steps/Provider' @@ -61,12 +61,9 @@ const Template = () => ({ ) ], []) - const provisionTypeSelected = useMemo(() => ( - getProvisionTypeFromTemplate(provisionTemplates, templateSelected) - ), []) - - const [provisionSelected, setProvision] = useState(() => provisionTypeSelected ?? provisionTypes[0]) const [providerSelected, setProvider] = useState(() => templateSelected?.provider) + const [provisionSelected, setProvision] = + useState(() => templateSelected?.provision_type ?? provisionTypes[0]) const [templatesByProvisionSelected, providerTypes, description] = useMemo(() => { const templates = Object.values(provisionTemplates[provisionSelected]?.provisions).flat() @@ -122,7 +119,7 @@ const Template = () => ({ isSelected ? handleUnselect(name, item => item.name === name) - : handleSelect(template) + : handleSelect({ ...template, provision_type: provisionSelected }) } const RenderDescription = ({ description = '' }) => { diff --git a/src/fireedge/src/client/models/ProviderTemplate.js b/src/fireedge/src/client/models/ProviderTemplate.js index a83615d21f..364ec78a48 100644 --- a/src/fireedge/src/client/models/ProviderTemplate.js +++ b/src/fireedge/src/client/models/ProviderTemplate.js @@ -107,23 +107,3 @@ export const getConnectionEditable = (template = {}, providerConfig) => { ...(!keys?.includes(name) && { [name]: value }) }), {}) } - -/** - * Returns the provision type from a provider template. - * - * @param {object} provisionTemplates - List of provision templates, from: /provision/defaults - * @param {object} template - Provider template - * @param {string} template.name - Name - * @param {string} template.provider - Provider type - * @returns {string} - Provision type. eg: 'onprem' - */ -export const getProvisionTypeFromTemplate = (provisionTemplates, template) => { - const { name, provider } = template ?? {} - - return Object.entries(provisionTemplates) - .find(([_, { providers = {} } = {}]) => - Object.values(providers) - .flat() - .some(prov => prov.name === name && prov.provider === provider) - )?.[0] -} diff --git a/src/fireedge/src/client/models/ProvisionTemplate.js b/src/fireedge/src/client/models/ProvisionTemplate.js index 61f935de56..7230866a89 100644 --- a/src/fireedge/src/client/models/ProvisionTemplate.js +++ b/src/fireedge/src/client/models/ProvisionTemplate.js @@ -56,23 +56,3 @@ export const isValidProvisionTemplate = template => { [name, provider].includes(undefined) ) } - -/** - * Returns the provision type from a provider template. - * - * @param {object} provisionTemplates - List of provision templates, from: /provision/defaults - * @param {object} template - Provision template - * @param {string} template.name - Name - * @param {string} template.playbook - Provider type - * @returns {string} - Provision type. eg: 'onprem' - */ -export const getProvisionTypeFromTemplate = (provisionTemplates, template) => { - const { provider } = template ?? {} - - return Object.entries(provisionTemplates) - .find(([_, { provisions = {} } = {}]) => - Object.values(provisions) - .flat() - .some(prov => prov.provider === provider) - )?.[0] -}