mirror of
https://github.com/OpenNebula/one.git
synced 2025-03-21 14:50:08 +03:00
parent
606f0dbf82
commit
47b8fe5411
@ -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()
|
||||
|
@ -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,
|
||||
|
@ -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 = '' }) => {
|
||||
|
@ -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]
|
||||
}
|
||||
|
@ -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]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user