[PATCH 01/16] conf: Drop support for 'sheepdog' disks

Peter Krempa posted 16 patches 2 days, 3 hours ago
Only 9 patches received!
[PATCH 01/16] conf: Drop support for 'sheepdog' disks
Posted by Peter Krempa 2 days, 3 hours ago
In upcoming patches we'll update minimum supported qemu version to
qemu-6.2 which no longer supports 'sheepdog'. This was the only
hypervisor driver that supported it.

Reject any config containing sheepdog disks when validating the XML,
remove the positive test cases in qemu and replace them by a negative
test case. This will still excercise the XML schema, but will prepare
for removal of the internal code.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
---
 src/conf/domain_validate.c                    |  7 +++
 tests/qemusecuritytest.c                      |  1 -
 .../disk-network-sheepdog.x86_64-6.0.0.args   | 39 ----------------
 .../disk-network-sheepdog.x86_64-6.0.0.xml    | 46 -------------------
 .../disk-network-sheepdog.x86_64-latest.err   |  1 +
 tests/qemuxmlconftest.c                       |  3 +-
 6 files changed, 9 insertions(+), 88 deletions(-)
 delete mode 100644 tests/qemuxmlconfdata/disk-network-sheepdog.x86_64-6.0.0.args
 delete mode 100644 tests/qemuxmlconfdata/disk-network-sheepdog.x86_64-6.0.0.xml
 create mode 100644 tests/qemuxmlconfdata/disk-network-sheepdog.x86_64-latest.err

diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c
index ad3d17f0fd..5e2bbb1d9f 100644
--- a/src/conf/domain_validate.c
+++ b/src/conf/domain_validate.c
@@ -476,6 +476,13 @@ virDomainDiskDefValidateSourceChainOne(const virStorageSource *src)
 {
     virStorageType actualType = virStorageSourceGetActualType(src);

+    if (virStorageSourceGetActualType(src) == VIR_STORAGE_TYPE_NETWORK &&
+        src->protocol == VIR_STORAGE_NET_PROTOCOL_SHEEPDOG) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                       _("'sheepdog' protocol is no longer supported by any hypervisor driver"));
+        return -1;
+    }
+
     if (src->type == VIR_STORAGE_TYPE_NETWORK && src->auth) {
         virStorageAuthDef *authdef = src->auth;
         int actUsage;
diff --git a/tests/qemusecuritytest.c b/tests/qemusecuritytest.c
index 27eb101f8c..88c8617d69 100644
--- a/tests/qemusecuritytest.c
+++ b/tests/qemusecuritytest.c
@@ -219,7 +219,6 @@ mymain(void)
     DO_TEST_DOMAIN("disk-network-iscsi");
     DO_TEST_DOMAIN("disk-network-nbd");
     DO_TEST_DOMAIN("disk-network-rbd");
-    DO_TEST_DOMAIN("disk-network-sheepdog");
     DO_TEST_DOMAIN("disk-network-source-auth");
     DO_TEST_DOMAIN("disk-network-tlsx509-nbd");
     DO_TEST_DOMAIN("disk-readonly-disk");
diff --git a/tests/qemuxmlconfdata/disk-network-sheepdog.x86_64-6.0.0.args b/tests/qemuxmlconfdata/disk-network-sheepdog.x86_64-6.0.0.args
deleted file mode 100644
index 664c47acf7..0000000000
--- a/tests/qemuxmlconfdata/disk-network-sheepdog.x86_64-6.0.0.args
+++ /dev/null
@@ -1,39 +0,0 @@
-LC_ALL=C \
-PATH=/bin \
-HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \
-USER=test \
-LOGNAME=test \
-XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \
-XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \
-XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \
-/usr/bin/qemu-system-x86_64 \
--name guest=QEMUGuest1,debug-threads=on \
--S \
--object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \
--machine pc-i440fx-6.0,usb=off,dump-guest-core=off,memory-backend=pc.ram \
--accel tcg \
--cpu qemu64 \
--m size=219136k \
--object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
--overcommit mem-lock=off \
--smp 1,sockets=1,cores=1,threads=1 \
--uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
--display none \
--no-user-config \
--nodefaults \
--chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
--mon chardev=charmonitor,id=monitor,mode=control \
--rtc base=utc \
--no-shutdown \
--no-acpi \
--boot strict=on \
--device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
--blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMU,Guest,,1","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}' \
--blockdev '{"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"}' \
--device ide-hd,bus=ide.0,unit=0,drive=libvirt-2-format,id=ide0-0-0,bootindex=1 \
--blockdev '{"driver":"sheepdog","server":{"type":"inet","host":"example.org","port":"6000"},"vdi":"image,with,commas","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}' \
--blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \
--device virtio-blk-pci,bus=pci.0,addr=0x2,drive=libvirt-1-format,id=virtio-disk0 \
--audiodev '{"id":"audio1","driver":"none"}' \
--sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
--msg timestamp=on
diff --git a/tests/qemuxmlconfdata/disk-network-sheepdog.x86_64-6.0.0.xml b/tests/qemuxmlconfdata/disk-network-sheepdog.x86_64-6.0.0.xml
deleted file mode 100644
index 3421293663..0000000000
--- a/tests/qemuxmlconfdata/disk-network-sheepdog.x86_64-6.0.0.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<domain type='qemu'>
-  <name>QEMUGuest1</name>
-  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
-  <memory unit='KiB'>219136</memory>
-  <currentMemory unit='KiB'>219136</currentMemory>
-  <vcpu placement='static'>1</vcpu>
-  <os>
-    <type arch='x86_64' machine='pc-i440fx-6.0'>hvm</type>
-    <boot dev='hd'/>
-  </os>
-  <cpu mode='custom' match='exact' check='none'>
-    <model fallback='forbid'>qemu64</model>
-  </cpu>
-  <clock offset='utc'/>
-  <on_poweroff>destroy</on_poweroff>
-  <on_reboot>restart</on_reboot>
-  <on_crash>destroy</on_crash>
-  <devices>
-    <emulator>/usr/bin/qemu-system-x86_64</emulator>
-    <disk type='block' device='disk'>
-      <driver name='qemu' type='raw'/>
-      <source dev='/dev/HostVG/QEMU,Guest,,1'/>
-      <target dev='hda' bus='ide'/>
-      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
-    </disk>
-    <disk type='network' device='disk'>
-      <driver name='qemu' type='raw'/>
-      <source protocol='sheepdog' name='image,with,commas'>
-        <host name='example.org' port='6000'/>
-      </source>
-      <target dev='vda' bus='virtio'/>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
-    </disk>
-    <controller type='usb' index='0' model='piix3-uhci'>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
-    </controller>
-    <controller type='ide' index='0'>
-      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
-    </controller>
-    <controller type='pci' index='0' model='pci-root'/>
-    <input type='mouse' bus='ps2'/>
-    <input type='keyboard' bus='ps2'/>
-    <audio id='1' type='none'/>
-    <memballoon model='none'/>
-  </devices>
-</domain>
diff --git a/tests/qemuxmlconfdata/disk-network-sheepdog.x86_64-latest.err b/tests/qemuxmlconfdata/disk-network-sheepdog.x86_64-latest.err
new file mode 100644
index 0000000000..401ff58d83
--- /dev/null
+++ b/tests/qemuxmlconfdata/disk-network-sheepdog.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: 'sheepdog' protocol is no longer supported by any hypervisor driver
diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c
index e7f7e35f46..c6f89d46e6 100644
--- a/tests/qemuxmlconftest.c
+++ b/tests/qemuxmlconftest.c
@@ -1591,8 +1591,7 @@ mymain(void)
     DO_TEST_CAPS_LATEST("disk-network-rbd-encryption-luks-any");
     DO_TEST_CAPS_LATEST_PARSE_ERROR("disk-encryption-wrong");
     DO_TEST_CAPS_LATEST("disk-network-rbd-no-colon");
-    /* qemu-6.0 is the last qemu version supporting sheepdog */
-    DO_TEST_CAPS_VER("disk-network-sheepdog", "6.0.0");
+    DO_TEST_CAPS_LATEST_PARSE_ERROR("disk-network-sheepdog");
     DO_TEST_CAPS_LATEST("disk-network-source-auth");
     DO_TEST_CAPS_LATEST("disk-network-source-curl");
     DO_TEST_CAPS_LATEST("disk-network-nfs");
-- 
2.48.1