mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-03 15:43:51 +00:00
Fix indentation for storage conf XML
* virStorageEncryptionFormat is called from both virDomainDiskDefFormat and virStorageVolTargetDefFormat. The proper indentation in the generated XML depends on the caller. My earlier patch to fix the incorrect indentation for the domain XML broke the indentation for the storage XML. This patch adopts Laine's suggestion of requring the caller of virStorageEncryptionFormat to provide an unsigned int with the number of spaces the output should be indented. The patch modifies both callers to provide the additional argument. * Add a regression test for the domain XML * src/conf/domain_conf.c src/conf/storage_conf.c src/conf/storage_encryption_conf.c src/conf/storage_encryption_conf.h: change the indentation code * tests/qemuxml2xmltest.c tests/qemuxml2argvdata/qemuxml2argv-encrypted-disk.args tests/qemuxml2argvdata/qemuxml2argv-encrypted-disk.xml: add a regression test
This commit is contained in:
parent
6b3ce82d98
commit
1b9347b5f1
@ -4958,7 +4958,7 @@ virDomainDiskDefFormat(virBufferPtr buf,
|
||||
virBufferEscapeString(buf, " <serial>%s</serial>\n",
|
||||
def->serial);
|
||||
if (def->encryption != NULL &&
|
||||
virStorageEncryptionFormat(buf, def->encryption) < 0)
|
||||
virStorageEncryptionFormat(buf, def->encryption, 6) < 0)
|
||||
return -1;
|
||||
|
||||
if (virDomainDeviceInfoFormat(buf, &def->info, flags) < 0)
|
||||
|
@ -1169,7 +1169,7 @@ virStorageVolTargetDefFormat(virStorageVolOptionsPtr options,
|
||||
virBufferAddLit(buf," </permissions>\n");
|
||||
|
||||
if (def->encryption != NULL &&
|
||||
virStorageEncryptionFormat(buf, def->encryption) < 0)
|
||||
virStorageEncryptionFormat(buf, def->encryption, 4) < 0)
|
||||
return -1;
|
||||
|
||||
virBufferVSprintf(buf, " </%s>\n", type);
|
||||
|
@ -215,7 +215,8 @@ virStorageEncryptionParseNode(xmlDocPtr xml, xmlNodePtr root)
|
||||
|
||||
static int
|
||||
virStorageEncryptionSecretFormat(virBufferPtr buf,
|
||||
virStorageEncryptionSecretPtr secret)
|
||||
virStorageEncryptionSecretPtr secret,
|
||||
unsigned int indent)
|
||||
{
|
||||
const char *type;
|
||||
char uuidstr[VIR_UUID_STRING_BUFLEN];
|
||||
@ -228,13 +229,15 @@ virStorageEncryptionSecretFormat(virBufferPtr buf,
|
||||
}
|
||||
|
||||
virUUIDFormat(secret->uuid, uuidstr);
|
||||
virBufferVSprintf(buf, " <secret type='%s' uuid='%s'/>\n", type, uuidstr);
|
||||
virBufferVSprintf(buf, "%*s<secret type='%s' uuid='%s'/>\n",
|
||||
indent, "", type, uuidstr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
virStorageEncryptionFormat(virBufferPtr buf,
|
||||
virStorageEncryptionPtr enc)
|
||||
virStorageEncryptionPtr enc,
|
||||
unsigned int indent)
|
||||
{
|
||||
const char *format;
|
||||
size_t i;
|
||||
@ -245,14 +248,15 @@ virStorageEncryptionFormat(virBufferPtr buf,
|
||||
"%s", _("unexpected encryption format"));
|
||||
return -1;
|
||||
}
|
||||
virBufferVSprintf(buf, " <encryption format='%s'>\n", format);
|
||||
virBufferVSprintf(buf, "%*s<encryption format='%s'>\n",
|
||||
indent, "", format);
|
||||
|
||||
for (i = 0; i < enc->nsecrets; i++) {
|
||||
if (virStorageEncryptionSecretFormat(buf, enc->secrets[i]) < 0)
|
||||
if (virStorageEncryptionSecretFormat(buf, enc->secrets[i], indent + 2) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
virBufferAddLit(buf, " </encryption>\n");
|
||||
virBufferVSprintf(buf, "%*s</encryption>\n", indent, "");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -67,7 +67,8 @@ void virStorageEncryptionFree(virStorageEncryptionPtr enc);
|
||||
virStorageEncryptionPtr virStorageEncryptionParseNode(xmlDocPtr xml,
|
||||
xmlNodePtr root);
|
||||
int virStorageEncryptionFormat(virBufferPtr buf,
|
||||
virStorageEncryptionPtr enc);
|
||||
virStorageEncryptionPtr enc,
|
||||
unsigned int indent);
|
||||
|
||||
/* A helper for VIR_STORAGE_ENCRYPTION_FORMAT_QCOW */
|
||||
enum {
|
||||
|
1
tests/qemuxml2argvdata/qemuxml2argv-encrypted-disk.args
Normal file
1
tests/qemuxml2argvdata/qemuxml2argv-encrypted-disk.args
Normal file
@ -0,0 +1 @@
|
||||
LC_ALL=C PATH=/sbin:/usr/sbin:/bin:/usr/bin HOME=/root USER=root LOGNAME=root /usr/bin/qemu -S -M fedora-13 -m 1024 -smp 1,sockets=1,cores=1,threads=1 -name encryptdisk -uuid 496898a6-e6ff-f7c8-5dc2-3cf410945ee9 -nographic -nodefaults -chardev socket,id=monitor,path=//var/lib/libvirt/qemu/encryptdisk.monitor,server,nowait -mon chardev=monitor,mode=readline -rtc base=utc -no-acpi -boot c -drive file=/storage/guest_disks/encryptdisk,if=none,id=drive-virtio-disk0,boot=on,format=qcow2 -device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0 -usb -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
|
27
tests/qemuxml2argvdata/qemuxml2argv-encrypted-disk.xml
Normal file
27
tests/qemuxml2argvdata/qemuxml2argv-encrypted-disk.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<domain type='kvm'>
|
||||
<name>encryptdisk</name>
|
||||
<uuid>496898a6-e6ff-f7c8-5dc2-3cf410945ee9</uuid>
|
||||
<memory>1048576</memory>
|
||||
<currentMemory>524288</currentMemory>
|
||||
<vcpu>1</vcpu>
|
||||
<os>
|
||||
<type arch='i686' machine='fedora-13'>hvm</type>
|
||||
<boot dev='hd'/>
|
||||
</os>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu</emulator>
|
||||
<disk type='file' device='disk'>
|
||||
<driver name='qemu' type='qcow2'/>
|
||||
<source file='/storage/guest_disks/encryptdisk'/>
|
||||
<target dev='vda' bus='virtio'/>
|
||||
<encryption format='qcow'>
|
||||
<secret type='passphrase' uuid='0a81f5b2-8403-7b23-c8d6-21ccc2f80d6f'/>
|
||||
</encryption>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
|
||||
</disk>
|
||||
</devices>
|
||||
</domain>
|
@ -138,6 +138,8 @@ mymain(int argc, char **argv)
|
||||
DO_TEST("hostdev-usb-address");
|
||||
DO_TEST("hostdev-pci-address");
|
||||
|
||||
DO_TEST("encrypted-disk");
|
||||
|
||||
virCapabilitiesFree(driver.caps);
|
||||
|
||||
return (ret==0 ? EXIT_SUCCESS : EXIT_FAILURE);
|
||||
|
Loading…
x
Reference in New Issue
Block a user