From 9f191da5c5d3789d57f81ad22eab3e82c72be65a Mon Sep 17 00:00:00 2001 From: Pavel Hrdina Date: Tue, 5 Sep 2017 09:38:39 +0200 Subject: [PATCH] devicepanic: add all models supported by libvirt Signed-off-by: Pavel Hrdina --- .../virt-install-panic-pseries-default.xml | 18 ++++++++++++ .../virt-install-panic-s390x-default.xml | 20 +++++++++++++ tests/clitest.py | 6 ++++ virtManager/addhardware.py | 5 ++-- virtinst/devicepanic.py | 28 ++++++++++++++++++- virtinst/guest.py | 7 +++++ 6 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 tests/cli-test-xml/compare/virt-install-panic-pseries-default.xml create mode 100644 tests/cli-test-xml/compare/virt-install-panic-s390x-default.xml diff --git a/tests/cli-test-xml/compare/virt-install-panic-pseries-default.xml b/tests/cli-test-xml/compare/virt-install-panic-pseries-default.xml new file mode 100644 index 000000000..9d647e82f --- /dev/null +++ b/tests/cli-test-xml/compare/virt-install-panic-pseries-default.xml @@ -0,0 +1,18 @@ + + foobar + 00000000-1111-2222-3333-444444444444 + 65536 + 65536 + 1 + + hvm + + + + + /usr/libexec/qemu-kvm + + + + + diff --git a/tests/cli-test-xml/compare/virt-install-panic-s390x-default.xml b/tests/cli-test-xml/compare/virt-install-panic-s390x-default.xml new file mode 100644 index 000000000..f2a4621f5 --- /dev/null +++ b/tests/cli-test-xml/compare/virt-install-panic-s390x-default.xml @@ -0,0 +1,20 @@ + + foobar + 00000000-1111-2222-3333-444444444444 + 65536 + 65536 + 1 + + hvm + + + + + /usr/bin/qemu-system-s390x + + + + + + + diff --git a/tests/clitest.py b/tests/clitest.py index 147c615c2..8ced1208c 100644 --- a/tests/clitest.py +++ b/tests/clitest.py @@ -654,6 +654,12 @@ c.add_compare("--panic default", "panic-default") c.add_compare("--panic isa", "panic-isa") c.add_compare("--panic isa,iobase=0x505", "panic-isa-iobase") +c = vinst.add_category("panic", "--connect %(URI-KVM-PPC64LE)s --noautoconsole --import --disk none --graphics none --controller usb,model=none --network none") +c.add_compare("--panic default", "panic-pseries-default") + +c = vinst.add_category("panic", "--connect %(URI-KVM-S390X)s --noautoconsole --import --disk none --graphics none --controller usb,model=none --network none") +c.add_compare("--panic default", "panic-s390x-default") + ################################################ # Invalid devices that hit virtinst code paths # diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py index e14e6bdf4..b2d29f371 100644 --- a/virtManager/addhardware.py +++ b/virtManager/addhardware.py @@ -978,11 +978,12 @@ class vmmAddHardware(vmmGObjectUI): def _build_panic_models(self, combo): models = [] - for m in virtinst.VirtualPanicDevice.MODELS: + for m in virtinst.VirtualPanicDevice.get_models(self.vm.get_xmlobj().os): models.append([m, virtinst.VirtualPanicDevice.get_pretty_model(m)]) self._build_combo_with_values(combo, models, - virtinst.VirtualPanicDevice.MODEL_ISA) + virtinst.VirtualPanicDevice.get_default_model( + self.vm.get_xmlobj().os)) ######################### diff --git a/virtinst/devicepanic.py b/virtinst/devicepanic.py index 2463b0113..63a88f717 100644 --- a/virtinst/devicepanic.py +++ b/virtinst/devicepanic.py @@ -27,7 +27,10 @@ class VirtualPanicDevice(VirtualDevice): MODEL_DEFAULT = "default" MODEL_ISA = "isa" - MODELS = [MODEL_ISA] + MODEL_PSERIES = "pseries" + MODEL_HYPERV = "hyperv" + MODEL_S390 = "s390" + MODELS = [MODEL_ISA, MODEL_PSERIES, MODEL_HYPERV, MODEL_S390] ISA_ADDRESS_TYPE = "isa" @@ -35,8 +38,31 @@ class VirtualPanicDevice(VirtualDevice): def get_pretty_model(panic_model): if panic_model == VirtualPanicDevice.MODEL_ISA: return _("ISA") + elif panic_model == VirtualPanicDevice.MODEL_PSERIES: + return _("pSeries") + elif panic_model == VirtualPanicDevice.MODEL_HYPERV: + return _("Hyper-V") + elif panic_model == VirtualPanicDevice.MODEL_S390: + return _("s390") return panic_model + @staticmethod + def get_models(os): + if os.is_x86(): + return [VirtualPanicDevice.MODEL_ISA, VirtualPanicDevice.MODEL_HYPERV] + elif os.is_pseries(): + return [VirtualPanicDevice.MODEL_PSERIES] + elif os.is_s390x(): + return [VirtualPanicDevice.MODEL_S390] + return None + + @staticmethod + def get_default_model(os): + models = VirtualPanicDevice.get_models(os) + if models: + return models[0] + return None + def _get_default_address_type(self): if self.iobase: return VirtualPanicDevice.ISA_ADDRESS_TYPE diff --git a/virtinst/guest.py b/virtinst/guest.py index 529286f42..143a36f28 100644 --- a/virtinst/guest.py +++ b/virtinst/guest.py @@ -38,6 +38,7 @@ from .devicecontroller import VirtualController from .devicedisk import VirtualDisk from .devicegraphics import VirtualGraphics from .deviceinput import VirtualInputDevice +from .devicepanic import VirtualPanicDevice from .deviceredirdev import VirtualRedirDevice from .devicerng import VirtualRNGDevice from .devicevideo import VirtualVideoDevice @@ -796,6 +797,7 @@ class Guest(XMLBuilder): self._set_net_defaults() self._set_video_defaults() self._set_sound_defaults() + self._set_panic_defaults() def _is_full_os_container(self): if not self.os.is_container(): @@ -1246,3 +1248,8 @@ class Guest(XMLBuilder): video.model = video_model if video.model == 'virtio' and self.has_gl(): video.accel3d = True + + def _set_panic_defaults(self): + for panic in self.get_devices("panic"): + if panic.model == VirtualPanicDevice.MODEL_DEFAULT: + panic.model = VirtualPanicDevice.get_default_model(self.os)