mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-25 18:55:27 -06:00
virt-install: Warn if mem less than OS recommended
And if mem is abnormally low, like it appears user tried to specify GiB not MiB
This commit is contained in:
parent
c37d6a7260
commit
fbe388b26a
@ -795,7 +795,8 @@ c.add_invalid("--features smm=on --machine pc") # smm=on doesn't work for machi
|
|||||||
|
|
||||||
c = vinst.add_category("nodisk-install", "--nographics --noautoconsole --nodisks")
|
c = vinst.add_category("nodisk-install", "--nographics --noautoconsole --nodisks")
|
||||||
c.add_valid("--hvm --cdrom %(EXISTIMG1)s") # Simple cdrom install
|
c.add_valid("--hvm --cdrom %(EXISTIMG1)s") # Simple cdrom install
|
||||||
c.add_valid("--os-variant winxp --cdrom %(EXISTIMG1)s") # Windows (2 stage) install
|
c.add_valid("--pxe --ram 16", grep="Requested memory 16 MiB is abnormally low") # catch low memory error
|
||||||
|
c.add_valid("--os-variant winxp --ram 32 --cdrom %(EXISTIMG1)s", grep="32 MiB is less than the recommended 64 MiB") # Windows. Catch memory warning
|
||||||
c.add_valid("--pxe --virt-type test") # Explicit virt-type
|
c.add_valid("--pxe --virt-type test") # Explicit virt-type
|
||||||
c.add_valid("--arch i686 --pxe") # Explicitly fullvirt + arch
|
c.add_valid("--arch i686 --pxe") # Explicitly fullvirt + arch
|
||||||
c.add_valid("--location location=%(TREEDIR)s") # Directory tree URL install
|
c.add_valid("--location location=%(TREEDIR)s") # Directory tree URL install
|
||||||
|
18
virt-install
18
virt-install
@ -339,6 +339,23 @@ def _show_nographics_warnings(options, guest, installer):
|
|||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def _show_memory_warnings(guest):
|
||||||
|
if not guest.currentMemory:
|
||||||
|
return
|
||||||
|
|
||||||
|
res = guest.osinfo.get_recommended_resources()
|
||||||
|
rammb = guest.currentMemory // 1024
|
||||||
|
minram = (res.get_minimum_ram(guest.os.arch) or 0)
|
||||||
|
if minram:
|
||||||
|
if (minram // 1024) > guest.currentMemory:
|
||||||
|
logging.warning(_("Requested memory %s MiB is less than the "
|
||||||
|
"recommended %s MiB for OS %s"), rammb,
|
||||||
|
minram // (1024 * 1024), guest.osinfo.name)
|
||||||
|
elif rammb < 17:
|
||||||
|
logging.warning(_("Requested memory %s MiB is abnormally low. "
|
||||||
|
"Were you trying to specify GiB?"), rammb)
|
||||||
|
|
||||||
|
|
||||||
def show_warnings(options, guest, installer, osdata):
|
def show_warnings(options, guest, installer, osdata):
|
||||||
if options.pxe and not supports_pxe(guest):
|
if options.pxe and not supports_pxe(guest):
|
||||||
logging.warning(_("The guest's network configuration does not support "
|
logging.warning(_("The guest's network configuration does not support "
|
||||||
@ -353,6 +370,7 @@ def show_warnings(options, guest, installer, osdata):
|
|||||||
logging.warning(_("No operating system detected, VM performance may "
|
logging.warning(_("No operating system detected, VM performance may "
|
||||||
"suffer. Specify an OS with --os-variant for optimal results."))
|
"suffer. Specify an OS with --os-variant for optimal results."))
|
||||||
|
|
||||||
|
_show_memory_warnings(guest)
|
||||||
_show_nographics_warnings(options, guest, installer)
|
_show_nographics_warnings(options, guest, installer)
|
||||||
|
|
||||||
|
|
||||||
|
@ -307,6 +307,11 @@ class _OsResources:
|
|||||||
if checkarch in resources and key in resources[checkarch]:
|
if checkarch in resources and key in resources[checkarch]:
|
||||||
return resources[checkarch][key]
|
return resources[checkarch][key]
|
||||||
|
|
||||||
|
def _get_minimum_key(self, key, arch):
|
||||||
|
val = self._get_key(self._minimum, key, arch)
|
||||||
|
if val and val > 0:
|
||||||
|
return val
|
||||||
|
|
||||||
def _get_recommended_key(self, key, arch):
|
def _get_recommended_key(self, key, arch):
|
||||||
val = self._get_key(self._recommended, key, arch)
|
val = self._get_key(self._recommended, key, arch)
|
||||||
if val and val > 0:
|
if val and val > 0:
|
||||||
@ -314,11 +319,16 @@ class _OsResources:
|
|||||||
# If we are looking for a recommended value, but the OS
|
# If we are looking for a recommended value, but the OS
|
||||||
# DB only has minimum resources tracked, double the minimum
|
# DB only has minimum resources tracked, double the minimum
|
||||||
# value as an approximation at a 'recommended' value
|
# value as an approximation at a 'recommended' value
|
||||||
val = self._get_key(self._minimum, key, arch)
|
val = self._get_minimum_key(key, arch)
|
||||||
if val and val > 0:
|
if val:
|
||||||
|
logging.debug("No recommended value found for key='%s', "
|
||||||
|
"using minimum=%s * 2", key, val)
|
||||||
return val * 2
|
return val * 2
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def get_minimum_ram(self, arch):
|
||||||
|
return self._get_minimum_key("ram", arch)
|
||||||
|
|
||||||
def get_recommended_ram(self, arch):
|
def get_recommended_ram(self, arch):
|
||||||
return self._get_recommended_key("ram", arch)
|
return self._get_recommended_key("ram", arch)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user