virtinst: Remove only auto-generated channel source path

In attempt to fix https://bugzilla.redhat.com/show_bug.cgi?id=1270696
this code was introduced but it removes the path for all channel
devices.  We need to limit it only to the devices that have
auto-generated source path.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1591670

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
Pavel Hrdina 2018-06-28 16:18:43 +02:00
parent 3a4cf07a28
commit 931936a328
4 changed files with 76 additions and 1 deletions

View File

@ -0,0 +1,35 @@
<domain type='kvm'>
<name>clone-orig</name>
<uuid>aaa3ae22-fed2-bfbd-ac02-3bea3bcfad82</uuid>
<memory>262144</memory>
<currentMemory>262144</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch='i686' machine='pc'>hvm</type>
<boot dev='cdrom'/>
</os>
<features>
<acpi/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-kvm</emulator>
<channel type='unix'>
<source mode='bind' path='/tmp/guestfwd'/>
<target type='guestfwd' address='10.0.0.1' port='1234'/>
</channel>
<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-2-generic/org.qemu.guest_agent.0'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
<channel type='unix'>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
<channel type='unix'>
<target type='virtio'/>
</channel>
</devices>
</domain>

View File

@ -0,0 +1,35 @@
<domain type="kvm">
<name>clone-new</name>
<uuid>12345678-1234-1234-1234-123456789012</uuid>
<memory>262144</memory>
<currentMemory>262144</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch="i686" machine="pc">hvm</type>
<boot dev="cdrom"/>
</os>
<features>
<acpi/>
</features>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-kvm</emulator>
<channel type="unix">
<source mode="bind" path="/tmp/guestfwd"/>
<target type="guestfwd" address="10.0.0.1" port="1234"/>
</channel>
<channel type="unix">
<source mode="bind"/>
<target type="virtio" name="org.qemu.guest_agent.0"/>
</channel>
<channel type="unix">
<target type="virtio" name="org.qemu.guest_agent.0"/>
</channel>
<channel type="unix">
<target type="virtio"/>
</channel>
</devices>
</domain>

View File

@ -164,3 +164,6 @@ class TestClone(unittest.TestCase):
def testCloneGraphicsPassword(self):
self._clone("graphics-password")
def testCloneChannelSource(self):
self._clone("channel-source")

View File

@ -427,7 +427,9 @@ class Cloner(object):
# For guest agent channel, remove a path to generate a new one with
# new guest name
for channel in self._guest.devices.channel:
if channel.type == DeviceChannel.TYPE_UNIX:
if (channel.type == DeviceChannel.TYPE_UNIX and
channel.target_name and channel.source_path and
channel.target_name in channel.source_path):
channel.source_path = None
if self._guest.os.nvram: