feat(xo-web/new-vm): warning on high resource consumption (#4127)
Fixes #4044
This commit is contained in:
parent
a08d098265
commit
41ca853e03
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
### Enhancements
|
### Enhancements
|
||||||
|
|
||||||
|
- [Self/New VM] Display confirmation modal when user will use a large amount of resources [#4044](https://github.com/vatesfr/xen-orchestra/issues/4044) (PR [#4127](https://github.com/vatesfr/xen-orchestra/pull/4127))
|
||||||
|
|
||||||
### Bug fixes
|
### Bug fixes
|
||||||
|
|
||||||
- [Self/New VM] Fix missing templates when refreshing page [#3265](https://github.com/vatesfr/xen-orchestra/issues/3265) (PR [#3565](https://github.com/vatesfr/xen-orchestra/pull/3565))
|
- [Self/New VM] Fix missing templates when refreshing page [#3265](https://github.com/vatesfr/xen-orchestra/issues/3265) (PR [#3565](https://github.com/vatesfr/xen-orchestra/pull/3565))
|
||||||
|
@ -1285,6 +1285,9 @@ const messages = {
|
|||||||
spaceLeftTooltip: '{used}% used ({free} left)',
|
spaceLeftTooltip: '{used}% used ({free} left)',
|
||||||
|
|
||||||
// ----- New VM -----
|
// ----- New VM -----
|
||||||
|
createVmModalTitle: 'Create VM',
|
||||||
|
createVmModalWarningMessage:
|
||||||
|
"You're about to use a large amount of resources available on the resource set. Are you sure you want to continue?",
|
||||||
newVmCreateNewVmOn: 'Create a new VM on {select}',
|
newVmCreateNewVmOn: 'Create a new VM on {select}',
|
||||||
newVmCreateNewVmNoPermission: 'You have no permission to create a VM',
|
newVmCreateNewVmNoPermission: 'You have no permission to create a VM',
|
||||||
newVmInfoPanel: 'Infos',
|
newVmInfoPanel: 'Infos',
|
||||||
|
@ -18,6 +18,7 @@ import {
|
|||||||
AvailableTemplateVars,
|
AvailableTemplateVars,
|
||||||
DEFAULT_CLOUD_CONFIG_TEMPLATE,
|
DEFAULT_CLOUD_CONFIG_TEMPLATE,
|
||||||
} from 'cloud-config'
|
} from 'cloud-config'
|
||||||
|
import { confirm } from 'modal'
|
||||||
import { Container, Row, Col } from 'grid'
|
import { Container, Row, Col } from 'grid'
|
||||||
import { injectIntl } from 'react-intl'
|
import { injectIntl } from 'react-intl'
|
||||||
import {
|
import {
|
||||||
@ -93,6 +94,7 @@ import {
|
|||||||
|
|
||||||
import styles from './index.css'
|
import styles from './index.css'
|
||||||
|
|
||||||
|
const MULTIPLICAND = 2
|
||||||
const NB_VMS_MIN = 2
|
const NB_VMS_MIN = 2
|
||||||
const NB_VMS_MAX = 100
|
const NB_VMS_MAX = 100
|
||||||
|
|
||||||
@ -344,6 +346,29 @@ export default class NewVm extends BaseComponent {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_selfCreate = () => {
|
||||||
|
const {
|
||||||
|
CPUs,
|
||||||
|
VDIs,
|
||||||
|
existingDisks,
|
||||||
|
memoryDynamicMax,
|
||||||
|
template,
|
||||||
|
} = this.state.state
|
||||||
|
const disksSize = sumBy(VDIs, 'size') + sumBy(existingDisks, 'size')
|
||||||
|
const templateDisksSize = sumBy(template.template_info.disks, 'size')
|
||||||
|
const templateMemoryDynamicMax = template.memory.dynamic[1]
|
||||||
|
const templateVcpusMax = template.CPUs.max
|
||||||
|
|
||||||
|
return CPUs > MULTIPLICAND * templateVcpusMax ||
|
||||||
|
memoryDynamicMax > MULTIPLICAND * templateMemoryDynamicMax ||
|
||||||
|
disksSize > MULTIPLICAND * templateDisksSize
|
||||||
|
? confirm({
|
||||||
|
title: _('createVmModalTitle'),
|
||||||
|
body: _('createVmModalWarningMessage'),
|
||||||
|
}).then(this._create)
|
||||||
|
: this._create()
|
||||||
|
}
|
||||||
|
|
||||||
_create = () => {
|
_create = () => {
|
||||||
const { state } = this.state
|
const { state } = this.state
|
||||||
let installation
|
let installation
|
||||||
@ -935,7 +960,7 @@ export default class NewVm extends BaseComponent {
|
|||||||
) || !this._availableResources()
|
) || !this._availableResources()
|
||||||
}
|
}
|
||||||
form='vmCreation'
|
form='vmCreation'
|
||||||
handler={this._create}
|
handler={pool === undefined ? this._selfCreate : this._create}
|
||||||
icon='new-vm-create'
|
icon='new-vm-create'
|
||||||
redirectOnSuccess={this._getRedirectionUrl}
|
redirectOnSuccess={this._getRedirectionUrl}
|
||||||
>
|
>
|
||||||
|
Loading…
Reference in New Issue
Block a user