[virt-tools-list] [PATCH virt-manager] panic notifier: display default value if not set

Cole Robinson crobinso at redhat.com
Mon Jan 13 23:59:13 UTC 2014


On 01/13/2014 03:32 AM, Chen Hanxiao wrote:
> From: Chen Hanxiao <chenhanxiao at cn.fujitsu.com>
> 
> If we didn't set values for @type and @iobase in
> XML, libvirt will use the default value.
> Currently, virt-manager will display "-" if we don't
> set any values.
> This patch will use default values for display.
> And add a test case to cover this scenario.
> 
> Signed-off-by: Chen Hanxiao <chenhanxiao at cn.fujitsu.com>
> ---
>  .../change-panic-device-default-in.xml             | 61 +++++++++++++++++++++
>  .../change-panic-device-default-out.xml            | 62 ++++++++++++++++++++++
>  tests/xmlparse.py                                  | 10 ++++
>  virtManager/details.py                             |  3 ++
>  virtinst/devicepanic.py                            |  1 +
>  5 files changed, 137 insertions(+)
>  create mode 100644 tests/xmlparse-xml/change-panic-device-default-in.xml
>  create mode 100644 tests/xmlparse-xml/change-panic-device-default-out.xml
> 
> diff --git a/tests/xmlparse-xml/change-panic-device-default-in.xml b/tests/xmlparse-xml/change-panic-device-default-in.xml
> new file mode 100644
> index 0000000..3094267
> --- /dev/null
> +++ b/tests/xmlparse-xml/change-panic-device-default-in.xml
> @@ -0,0 +1,61 @@
> +<domain type='kvm'>
> +  <name>Ftest</name>
> +  <uuid>9d544d2e-e001-a6b2-4aa7-7768796353ea</uuid>
> +  <memory unit='KiB'>1048576</memory>
> +  <currentMemory unit='KiB'>1048576</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='i686' machine='pc-i440fx-1.4'>hvm</type>
> +    <boot dev='hd'/>
> +  </os>
> +  <features>
> +    <acpi/>
> +    <apic/>
> +    <pae/>
> +  </features>
> +  <clock offset='utc'/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>restart</on_crash>
> +  <devices>
> +    <emulator>/usr/local/bin/qemu-system-x86_64</emulator>
> +    <disk type='file' device='disk'>
> +      <driver name='qemu' type='raw'/>
> +      <source file='/home/IMG/F19_test.img'/>
> +      <target dev='hda' bus='ide'/>
> +    </disk>
> +    <controller type='usb' index='0'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
> +    </controller>
> +    <controller type='pci' index='0' model='pci-root'/>
> +    <controller type='ide' index='0'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
> +    </controller>
> +    <controller type='virtio-serial' index='0'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
> +    </controller>
> +    <interface type='network'>
> +      <mac address='52:54:00:93:45:ce'/>
> +      <source network='default'/>
> +      <model type='rtl8139'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
> +    </interface>
> +    <serial type='pty'>
> +      <target port='0'/>
> +    </serial>
> +    <console type='pty'>
> +      <target type='serial' port='0'/>
> +    </console>
> +    <input type='mouse' bus='ps2'/>
> +    <graphics type='vnc' port='-1' autoport='yes'/>
> +    <video>
> +      <model type='vga' vram='9216' heads='1'/>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
> +    </video>
> +    <memballoon model='virtio'>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
> +    </memballoon>
> +    <panic>
> +    </panic>
> +  </devices>
> +</domain>
> diff --git a/tests/xmlparse-xml/change-panic-device-default-out.xml b/tests/xmlparse-xml/change-panic-device-default-out.xml
> new file mode 100644
> index 0000000..7aa732c
> --- /dev/null
> +++ b/tests/xmlparse-xml/change-panic-device-default-out.xml
> @@ -0,0 +1,62 @@
> +<domain type="kvm">
> +  <name>Ftest</name>
> +  <uuid>9d544d2e-e001-a6b2-4aa7-7768796353ea</uuid>
> +  <memory unit="KiB">1048576</memory>
> +  <currentMemory unit="KiB">1048576</currentMemory>
> +  <vcpu placement="static">1</vcpu>
> +  <os>
> +    <type arch="i686" machine="pc-i440fx-1.4">hvm</type>
> +    <boot dev="hd"/>
> +  </os>
> +  <features>
> +    <acpi/>
> +    <apic/>
> +    <pae/>
> +  </features>
> +  <clock offset="utc"/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>restart</on_crash>
> +  <devices>
> +    <emulator>/usr/local/bin/qemu-system-x86_64</emulator>
> +    <disk type="file" device="disk">
> +      <driver name="qemu" type="raw"/>
> +      <source file="/home/IMG/F19_test.img"/>
> +      <target dev="hda" bus="ide"/>
> +    </disk>
> +    <controller type="usb" index="0">
> +      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
> +    </controller>
> +    <controller type="pci" index="0" model="pci-root"/>
> +    <controller type="ide" index="0">
> +      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1"/>
> +    </controller>
> +    <controller type="virtio-serial" index="0">
> +      <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/>
> +    </controller>
> +    <interface type="network">
> +      <mac address="52:54:00:93:45:ce"/>
> +      <source network="default"/>
> +      <model type="rtl8139"/>
> +      <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
> +    </interface>
> +    <serial type="pty">
> +      <target port="0"/>
> +    </serial>
> +    <console type="pty">
> +      <target type="serial" port="0"/>
> +    </console>
> +    <input type="mouse" bus="ps2"/>
> +    <graphics type="vnc" port="-1" autoport="yes"/>
> +    <video>
> +      <model type="vga" vram="9216" heads="1"/>
> +      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0"/>
> +    </video>
> +    <memballoon model="virtio">
> +      <address type="pci" domain="0x0000" bus="0x00" slot="0x05" function="0x0"/>
> +    </memballoon>
> +    <panic>
> +      <address type="isa" iobase="0x506"/>
> +    </panic>
> +  </devices>
> +</domain>
> diff --git a/tests/xmlparse.py b/tests/xmlparse.py
> index 4567bb8..dfe196a 100644
> --- a/tests/xmlparse.py
> +++ b/tests/xmlparse.py
> @@ -791,6 +791,16 @@ class XMLParseTest(unittest.TestCase):
>          check("iobase", "0x505", "0x506")
>          self._alter_compare(guest.get_xml_config(), outfile)
>  
> +    def testPanicDeviceDefault(self):
> +        guest, outfile = self._get_test_content("change-panic-device-default")
> +
> +        dev1 = guest.get_devices("panic")[0]
> +
> +        check = self._make_checker(dev1)
> +        check("type", None, "isa")
> +        check("iobase", None, "0x506")
> +        self._alter_compare(guest.get_xml_config(), outfile)
> +
>      def testAddRemoveDevices(self):
>          guest, outfile = self._get_test_content("add-devices")
>  


This test case is kinda redundant. In the existing panic test case, you can
just do:

check("iobase", "0x505", None, "0x506")

to verify we are correctly reading and setting None.

> diff --git a/virtManager/details.py b/virtManager/details.py
> index 51573f6..d8481dd 100644
> --- a/virtManager/details.py
> +++ b/virtManager/details.py
> @@ -3110,6 +3110,9 @@ class vmmDetails(vmmGObjectUI):
>              widgetname = "panic-" + param.replace("_", "-")
>              if not val:
>                  val = getattr(dev, param)
> +                if not val:
> +                    propername = param.upper() + "_DEFAULT"
> +                    val = (eval("virtinst.VirtualPanicDevice." + propername)).upper()
>  

I don't like eval() here. You can do

getattr(virtinst.VirtualPanicDevice, propername, "-").upper()

>              uihelpers.set_grid_row_visible(self.widget(widgetname), True)
>              self.widget(widgetname).set_text(val or "-")
> diff --git a/virtinst/devicepanic.py b/virtinst/devicepanic.py
> index 5f7cbd8..a41af94 100644
> --- a/virtinst/devicepanic.py
> +++ b/virtinst/devicepanic.py
> @@ -26,6 +26,7 @@ class VirtualPanicDevice(VirtualDevice):
>  
>      virtual_device_type = VirtualDevice.VIRTUAL_DEV_PANIC
>      ADDRESS_TYPE_ISA = "isa"
> +    TYPE_DEFAULT = ADDRESS_TYPE_ISA
>      TYPES = [ADDRESS_TYPE_ISA]
>      IOBASE_DEFAULT = "0x505"
>  
> 

Otherwise looks fine.

Thanks,
Cole




More information about the virt-tools-list mailing list