Index: virt-manager-0.8.4/src/virtManager/addhardware.py =================================================================== --- virt-manager-0.8.4.orig/src/virtManager/addhardware.py +++ virt-manager-0.8.4/src/virtManager/addhardware.py @@ -1010,6 +1010,18 @@ class vmmAddHardware(gobject.GObject): self._dev.get_xml_config() logging.debug("Adding device:\n" + self._dev.get_xml_config()) + # If vm is active, Try to hotplug the device and modify persistent + # config in one go + if self.vm.is_active(): + try: + self.vm.attach_device_flags(self._dev, 3) + return (False, None) + except Exception, e: + logging.debug("Could not hotplug device and modify persistent " + "config at the same time: %s" % str(e)) + logging.debug("Trying the operations seperately ...") + + # Try hotplug then modify persistent config # Hotplug device attach_err = False try: Index: virt-manager-0.8.4/src/virtManager/details.py =================================================================== --- virt-manager-0.8.4.orig/src/virtManager/details.py +++ virt-manager-0.8.4/src/virtManager/details.py @@ -1414,6 +1414,17 @@ class vmmDetails(gobject.GObject): return self.config.set_confirm_removedev(not skip_prompt) + # If vm is running, try to hot remove the device and modify + # persistent config in one go + if self.vm.is_active(): + try: + self.vm.detach_device_flags(dev_type, dev_id_info, 3) + return + except Exception, e: + logging.debug("Could not hot remove device and modify " + "persistent config at the same time: %s" % str(e)) + logging.debug("Trying the operations seperately ...") + # Define the change try: self.vm.remove_device(dev_type, dev_id_info) Index: virt-manager-0.8.4/src/virtManager/domain.py =================================================================== --- virt-manager-0.8.4.orig/src/virtManager/domain.py +++ virt-manager-0.8.4/src/virtManager/domain.py @@ -1370,6 +1370,10 @@ class vmmDomain(vmmDomainBase): self._backend.attachDevice(devxml) + def attach_device_flags(self, devobj, flags): + xml = devobj.get_xml_config() + self._backend.attachDeviceFlags(xml, flags) + def detach_device(self, devtype, dev_id_info): """ Hotunplug device from running guest @@ -1378,6 +1382,10 @@ class vmmDomain(vmmDomainBase): if self.is_active(): self._backend.detachDevice(xml) + def detach_device_flags(self, devtype, dev_id_info, flags): + xml = self._get_device_xml(devtype, dev_id_info) + self._backend.detachDeviceFlags(xml, flags) + def hotplug_vcpus(self, vcpus): vcpus = int(vcpus) if vcpus != self.vcpu_count():