mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-09 11:46:49 +00:00
- A named CPU model is written without check='none' and with fallback='forbid': libvirt checks before the start that the host runs it, and it is not swapped for another model. - Mode maximum is written as that mode; it was written as a model named maximum. - Model names up to 64 characters: the -noTSX and -IBRS models, the ones a mixed set of hosts needs, were refused at 20. - The mode or model is checked against the host's capabilities when the VM is defined, from the page and the API alike; no CPU element (QEMU's oldest default CPU) is no longer offered. - The default CPU mode setting offers the modes the new VM dialog has; no-model and custom, which matched none of them, become host-model.
25 lines
877 B
Python
25 lines
877 B
Python
from django.db import migrations
|
|
|
|
CHOICES = "host-model,host-passthrough,maximum"
|
|
|
|
|
|
def fix_cpu_mode(apps, schema_editor):
|
|
"""The CPU modes a new VM can have: no-model and custom matched no choice
|
|
of the new VM dialog, which then showed another one. Not undone on the way
|
|
back, as nothing needs the old choices."""
|
|
AppSettings = apps.get_model("appsettings", "AppSettings")
|
|
for setting in AppSettings.objects.using(schema_editor.connection.alias).filter(key="INSTANCE_CPU_DEFAULT_MODE"):
|
|
setting.choices = CHOICES
|
|
if setting.value not in CHOICES.split(","):
|
|
setting.value = "host-model"
|
|
setting.save()
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
dependencies = [
|
|
("appsettings", "0021_setting_descriptions"),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(fix_cpu_mode, migrations.RunPython.noop),
|
|
]
|