qemu: domain: Regenerate alias for the TLS x509 credential object

When restarting libvirt would previously lose the alias of the x509
certificate object. Upon unplug we would then not delete the
corresponding objects.

Restore the alias if we know it should be there.

Luckily for disks we don't support encrypted TLS environment, so there's
no need to regenerate the 'secret' alias for decryption.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2018-05-30 12:18:37 +02:00
parent 1f1aa21cb9
commit 3b5181b731
3 changed files with 32 additions and 0 deletions

View File

@ -5982,6 +5982,13 @@ qemuDomainDeviceDiskDefPostParse(virDomainDiskDefPtr disk,
parseFlags) < 0)
return -1;
/* regenerate TLS alias for old status XMLs */
if (parseFlags & VIR_DOMAIN_DEF_PARSE_STATUS &&
disk->src->haveTLS == VIR_TRISTATE_BOOL_YES &&
!disk->src->tlsAlias &&
!(disk->src->tlsAlias = qemuAliasTLSObjFromSrcAlias(disk->info.alias)))
return -1;
return 0;
}

View File

@ -387,6 +387,16 @@
<alias name='virtio-disk5'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0f' function='0x0'/>
</disk>
<disk type='network' device='disk'>
<driver name='qemu' type='raw'/>
<source protocol='vxhs' name='rbdpool/rbdimg' tls='yes' tlsFromConfig='0'>
<host name='example.org'/>
</source>
<backingStore/>
<target dev='vdg' bus='virtio'/>
<alias name='virtio-disk6'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<alias name='usb'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>

View File

@ -403,6 +403,21 @@
<alias name='virtio-disk5'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0f' function='0x0'/>
</disk>
<disk type='network' device='disk'>
<driver name='qemu' type='raw'/>
<source protocol='vxhs' name='rbdpool/rbdimg' tls='yes' tlsFromConfig='0'>
<host name='example.org' port='9999'/>
<privateData>
<objects>
<TLSx509 alias='objvirtio-disk6_tls0'/>
</objects>
</privateData>
</source>
<backingStore/>
<target dev='vdg' bus='virtio'/>
<alias name='virtio-disk6'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x10' function='0x0'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<alias name='usb'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/>