[03/12] domain: add implicit controllers from post parse

Message ID 6311e6c2b3e4e0f40ee61d87383c9165cd240f0d.1452224621.git.crobinso@redhat.com
State New
Headers show

Commit Message

Cole Robinson Jan. 8, 2016, 3:49 a.m.
Seems like the natural fit, since we are already adding other XML bits
in the PostParse routine.

Previously AddImplicitControllers was only called at the end of XML
parsing, meaning code that builds a DomainDef by hand had to manually
call it. Adding it for those sites causes some test suite churn.
---
 src/conf/domain_conf.c                                   | 7 +++----
 tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml            | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-empty-kernel.xml        | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-force-hpet.xml          | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-force-nohpet.xml        | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml           | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-net-netfront.xml        | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-parallel-tcp.xml        | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-serial-dev-2-ports.xml  | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-serial-dev-2nd-port.xml | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-serial-file.xml         | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-serial-null.xml         | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-serial-pipe.xml         | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-serial-pty.xml          | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-serial-stdio.xml        | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp-telnet.xml   | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp.xml          | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-serial-udp.xml          | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-serial-unix.xml         | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml           | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-sound.xml               | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml            | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml           | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-utc.xml                 | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv-v2.xml                  | 1 +
 tests/sexpr2xmldata/sexpr2xml-fv.xml                     | 1 +
 tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml        | 1 +
 tests/xlconfigdata/test-fullvirt-direct-kernel-boot.xml  | 1 +
 tests/xlconfigdata/test-fullvirt-multiusb.xml            | 1 +
 tests/xlconfigdata/test-new-disk.xml                     | 1 +
 tests/xlconfigdata/test-spice-features.xml               | 1 +
 tests/xlconfigdata/test-spice.xml                        | 1 +
 tests/xmconfigdata/test-escape-paths.xml                 | 1 +
 tests/xmconfigdata/test-fullvirt-default-feature.xml     | 1 +
 tests/xmconfigdata/test-fullvirt-force-hpet.xml          | 1 +
 tests/xmconfigdata/test-fullvirt-force-nohpet.xml        | 1 +
 tests/xmconfigdata/test-fullvirt-localtime.xml           | 1 +
 tests/xmconfigdata/test-fullvirt-net-netfront.xml        | 1 +
 tests/xmconfigdata/test-fullvirt-new-cdrom.xml           | 1 +
 tests/xmconfigdata/test-fullvirt-parallel-tcp.xml        | 1 +
 tests/xmconfigdata/test-fullvirt-serial-dev-2-ports.xml  | 1 +
 tests/xmconfigdata/test-fullvirt-serial-dev-2nd-port.xml | 1 +
 tests/xmconfigdata/test-fullvirt-serial-file.xml         | 1 +
 tests/xmconfigdata/test-fullvirt-serial-null.xml         | 1 +
 tests/xmconfigdata/test-fullvirt-serial-pipe.xml         | 1 +
 tests/xmconfigdata/test-fullvirt-serial-pty.xml          | 1 +
 tests/xmconfigdata/test-fullvirt-serial-stdio.xml        | 1 +
 tests/xmconfigdata/test-fullvirt-serial-tcp-telnet.xml   | 1 +
 tests/xmconfigdata/test-fullvirt-serial-tcp.xml          | 1 +
 tests/xmconfigdata/test-fullvirt-serial-udp.xml          | 1 +
 tests/xmconfigdata/test-fullvirt-serial-unix.xml         | 1 +
 tests/xmconfigdata/test-fullvirt-sound.xml               | 1 +
 tests/xmconfigdata/test-fullvirt-usbmouse.xml            | 1 +
 tests/xmconfigdata/test-fullvirt-usbtablet.xml           | 1 +
 tests/xmconfigdata/test-fullvirt-utc.xml                 | 1 +
 tests/xmconfigdata/test-no-source-cdrom.xml              | 1 +
 tests/xmconfigdata/test-pci-devs.xml                     | 1 +
 57 files changed, 59 insertions(+), 4 deletions(-)

-- 
2.5.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Comments

Cole Robinson Jan. 8, 2016, 3:42 p.m. | #1
On 01/08/2016 07:05 AM, Peter Krempa wrote:
> On Thu, Jan 07, 2016 at 22:49:57 -0500, Cole Robinson wrote:

>> Seems like the natural fit, since we are already adding other XML bits

>> in the PostParse routine.

>>

>> Previously AddImplicitControllers was only called at the end of XML

>> parsing, meaning code that builds a DomainDef by hand had to manually

>> call it. Adding it for those sites causes some test suite churn.

>> ---

> 

> [...]

> 

>>  57 files changed, 59 insertions(+), 4 deletions(-)

>>

>> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c

>> index 2570f94..5b9dab9 100644

>> --- a/src/conf/domain_conf.c

>> +++ b/src/conf/domain_conf.c

>> @@ -3854,6 +3854,9 @@ virDomainDefPostParseInternal(virDomainDefPtr def,

>>      if (virDomainDefPostParseTimer(def) < 0)

>>          return -1;

>>  

>> +    if (virDomainDefAddImplicitControllers(def) < 0)

>> +        return -1;

>> +

> 

> Moving it here makes this called twice in case you use

> qemuParseCommandLine or virVMXParseConfig.

> 


Right, the calling twice should be fine since this operation needs to be
idempotent as it's called every time we read the XML off disk for example.

Probably an opportunity for me cleanup but dropping some call sites causes
test suite churn that I didn't feel like dealing with at this point.

>>      /* clean up possibly duplicated metadata entries */

>>      virDomainDefMetadataSanitize(def);

>>  

> 

> The changes to the test suite look good to me but a more XEN

> knowledgeable person could comment on this fact possibly so that we are

> sure.

> 


ccing jfehlig

To expand a bit, I think the changes should be safe, it's only adding bits to
the output XML that xl/xm/sexpr code already needs to handle, since they will
show up in any XML defined by the user.

Thanks,
Cole

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Patch

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 2570f94..5b9dab9 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -3854,6 +3854,9 @@  virDomainDefPostParseInternal(virDomainDefPtr def,
     if (virDomainDefPostParseTimer(def) < 0)
         return -1;
 
+    if (virDomainDefAddImplicitControllers(def) < 0)
+        return -1;
+
     /* clean up possibly duplicated metadata entries */
     virDomainDefMetadataSanitize(def);
 
@@ -16396,10 +16399,6 @@  virDomainDefParseXML(xmlDocPtr xml,
     if (virDomainDefPostParse(def, caps, flags, xmlopt) < 0)
         goto error;
 
-    /* Auto-add any implied controllers which aren't present */
-    if (virDomainDefAddImplicitControllers(def) < 0)
-        goto error;
-
     virHashFree(bootHash);
 
     return def;
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml b/tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml
index d68782d..17522f1 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:e8:18'/>
       <source bridge='e1000g0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-empty-kernel.xml b/tests/sexpr2xmldata/sexpr2xml-fv-empty-kernel.xml
index dbfd603..00907fe 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-empty-kernel.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-empty-kernel.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-force-hpet.xml b/tests/sexpr2xmldata/sexpr2xml-fv-force-hpet.xml
index 8aa3250..7e014dc 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-force-hpet.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-force-hpet.xml
@@ -35,6 +35,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-force-nohpet.xml b/tests/sexpr2xmldata/sexpr2xml-fv-force-nohpet.xml
index fbf155c..1fa8c14 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-force-nohpet.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-force-nohpet.xml
@@ -35,6 +35,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml b/tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml
index 1d41979..d82ca38 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-net-netfront.xml b/tests/sexpr2xmldata/sexpr2xml-fv-net-netfront.xml
index c0a78e1..d5479dc 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-net-netfront.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-net-netfront.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-parallel-tcp.xml b/tests/sexpr2xmldata/sexpr2xml-fv-parallel-tcp.xml
index 1268416..91afcc1 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-parallel-tcp.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-parallel-tcp.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-serial-dev-2-ports.xml b/tests/sexpr2xmldata/sexpr2xml-fv-serial-dev-2-ports.xml
index 4c1c5ce..b5bdf5c 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-serial-dev-2-ports.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-serial-dev-2-ports.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-serial-dev-2nd-port.xml b/tests/sexpr2xmldata/sexpr2xml-fv-serial-dev-2nd-port.xml
index 8cd0f69..aca8f15 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-serial-dev-2nd-port.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-serial-dev-2nd-port.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-serial-file.xml b/tests/sexpr2xmldata/sexpr2xml-fv-serial-file.xml
index 1b7ab29..ac754a2 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-serial-file.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-serial-file.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-serial-null.xml b/tests/sexpr2xmldata/sexpr2xml-fv-serial-null.xml
index 73361d6..3ed8c77 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-serial-null.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-serial-null.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-serial-pipe.xml b/tests/sexpr2xmldata/sexpr2xml-fv-serial-pipe.xml
index c96df26..649b5e6 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-serial-pipe.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-serial-pipe.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-serial-pty.xml b/tests/sexpr2xmldata/sexpr2xml-fv-serial-pty.xml
index af788fe..ef84402 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-serial-pty.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-serial-pty.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-serial-stdio.xml b/tests/sexpr2xmldata/sexpr2xml-fv-serial-stdio.xml
index 6a21390..07bd1fa 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-serial-stdio.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-serial-stdio.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp-telnet.xml b/tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp-telnet.xml
index 3033685..cd3031b 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp-telnet.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp-telnet.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp.xml b/tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp.xml
index 78fbe97..ab23196 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-serial-udp.xml b/tests/sexpr2xmldata/sexpr2xml-fv-serial-udp.xml
index f7497f6..fe89b9a 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-serial-udp.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-serial-udp.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-serial-unix.xml b/tests/sexpr2xmldata/sexpr2xml-fv-serial-unix.xml
index 3728609..344ea42 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-serial-unix.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-serial-unix.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml b/tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml
index 823e402..caa856f 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-sound.xml b/tests/sexpr2xmldata/sexpr2xml-fv-sound.xml
index 823e402..caa856f 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-sound.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-sound.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml b/tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml
index 446b4ac..bf710ec 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml b/tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml
index c2671f6..8e9fd80 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-utc.xml b/tests/sexpr2xmldata/sexpr2xml-fv-utc.xml
index 3073806..1d81991 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-utc.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-utc.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-v2.xml b/tests/sexpr2xmldata/sexpr2xml-fv-v2.xml
index 3073806..1d81991 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv-v2.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv-v2.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-fv.xml b/tests/sexpr2xmldata/sexpr2xml-fv.xml
index 3073806..1d81991 100644
--- a/tests/sexpr2xmldata/sexpr2xml-fv.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-fv.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
diff --git a/tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml b/tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml
index ede6e27..310279d 100644
--- a/tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml
+++ b/tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:0a:7b:39'/>
       <source bridge='xenbr0'/>
diff --git a/tests/xlconfigdata/test-fullvirt-direct-kernel-boot.xml b/tests/xlconfigdata/test-fullvirt-direct-kernel-boot.xml
index f750e02..1a27be6 100644
--- a/tests/xlconfigdata/test-fullvirt-direct-kernel-boot.xml
+++ b/tests/xlconfigdata/test-fullvirt-direct-kernel-boot.xml
@@ -36,6 +36,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xlconfigdata/test-fullvirt-multiusb.xml b/tests/xlconfigdata/test-fullvirt-multiusb.xml
index 9e5cad9..1686807 100644
--- a/tests/xlconfigdata/test-fullvirt-multiusb.xml
+++ b/tests/xlconfigdata/test-fullvirt-multiusb.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xlconfigdata/test-new-disk.xml b/tests/xlconfigdata/test-new-disk.xml
index 49f6dbe..7fd1899 100644
--- a/tests/xlconfigdata/test-new-disk.xml
+++ b/tests/xlconfigdata/test-new-disk.xml
@@ -39,6 +39,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xlconfigdata/test-spice-features.xml b/tests/xlconfigdata/test-spice-features.xml
index d40a671..0f81f3d 100644
--- a/tests/xlconfigdata/test-spice-features.xml
+++ b/tests/xlconfigdata/test-spice-features.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xlconfigdata/test-spice.xml b/tests/xlconfigdata/test-spice.xml
index d15557e..e997654 100644
--- a/tests/xlconfigdata/test-spice.xml
+++ b/tests/xlconfigdata/test-spice.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-escape-paths.xml b/tests/xmconfigdata/test-escape-paths.xml
index db01910..6aae9c7 100644
--- a/tests/xmconfigdata/test-escape-paths.xml
+++ b/tests/xmconfigdata/test-escape-paths.xml
@@ -39,6 +39,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-default-feature.xml b/tests/xmconfigdata/test-fullvirt-default-feature.xml
index 231aea6..2eacbd9 100644
--- a/tests/xmconfigdata/test-fullvirt-default-feature.xml
+++ b/tests/xmconfigdata/test-fullvirt-default-feature.xml
@@ -35,6 +35,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-force-hpet.xml b/tests/xmconfigdata/test-fullvirt-force-hpet.xml
index 231aea6..2eacbd9 100644
--- a/tests/xmconfigdata/test-fullvirt-force-hpet.xml
+++ b/tests/xmconfigdata/test-fullvirt-force-hpet.xml
@@ -35,6 +35,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-force-nohpet.xml b/tests/xmconfigdata/test-fullvirt-force-nohpet.xml
index ef216c3..987096d 100644
--- a/tests/xmconfigdata/test-fullvirt-force-nohpet.xml
+++ b/tests/xmconfigdata/test-fullvirt-force-nohpet.xml
@@ -35,6 +35,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-localtime.xml b/tests/xmconfigdata/test-fullvirt-localtime.xml
index 0162246..29fcd56 100644
--- a/tests/xmconfigdata/test-fullvirt-localtime.xml
+++ b/tests/xmconfigdata/test-fullvirt-localtime.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-net-netfront.xml b/tests/xmconfigdata/test-fullvirt-net-netfront.xml
index 172a530..621955d 100644
--- a/tests/xmconfigdata/test-fullvirt-net-netfront.xml
+++ b/tests/xmconfigdata/test-fullvirt-net-netfront.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-new-cdrom.xml b/tests/xmconfigdata/test-fullvirt-new-cdrom.xml
index 6544cb3..bc9865b 100644
--- a/tests/xmconfigdata/test-fullvirt-new-cdrom.xml
+++ b/tests/xmconfigdata/test-fullvirt-new-cdrom.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-parallel-tcp.xml b/tests/xmconfigdata/test-fullvirt-parallel-tcp.xml
index 5aef2de..081ad74 100644
--- a/tests/xmconfigdata/test-fullvirt-parallel-tcp.xml
+++ b/tests/xmconfigdata/test-fullvirt-parallel-tcp.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-serial-dev-2-ports.xml b/tests/xmconfigdata/test-fullvirt-serial-dev-2-ports.xml
index a9e68b5..074cbcb 100644
--- a/tests/xmconfigdata/test-fullvirt-serial-dev-2-ports.xml
+++ b/tests/xmconfigdata/test-fullvirt-serial-dev-2-ports.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-serial-dev-2nd-port.xml b/tests/xmconfigdata/test-fullvirt-serial-dev-2nd-port.xml
index 5564fa8..88a0293 100644
--- a/tests/xmconfigdata/test-fullvirt-serial-dev-2nd-port.xml
+++ b/tests/xmconfigdata/test-fullvirt-serial-dev-2nd-port.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-serial-file.xml b/tests/xmconfigdata/test-fullvirt-serial-file.xml
index f592d44..7ac994f 100644
--- a/tests/xmconfigdata/test-fullvirt-serial-file.xml
+++ b/tests/xmconfigdata/test-fullvirt-serial-file.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-serial-null.xml b/tests/xmconfigdata/test-fullvirt-serial-null.xml
index 78142a7..bc47c4b 100644
--- a/tests/xmconfigdata/test-fullvirt-serial-null.xml
+++ b/tests/xmconfigdata/test-fullvirt-serial-null.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-serial-pipe.xml b/tests/xmconfigdata/test-fullvirt-serial-pipe.xml
index d3f0653..afaa64f 100644
--- a/tests/xmconfigdata/test-fullvirt-serial-pipe.xml
+++ b/tests/xmconfigdata/test-fullvirt-serial-pipe.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-serial-pty.xml b/tests/xmconfigdata/test-fullvirt-serial-pty.xml
index bc8e182..ac68710 100644
--- a/tests/xmconfigdata/test-fullvirt-serial-pty.xml
+++ b/tests/xmconfigdata/test-fullvirt-serial-pty.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-serial-stdio.xml b/tests/xmconfigdata/test-fullvirt-serial-stdio.xml
index 9244a7c..cf30786 100644
--- a/tests/xmconfigdata/test-fullvirt-serial-stdio.xml
+++ b/tests/xmconfigdata/test-fullvirt-serial-stdio.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-serial-tcp-telnet.xml b/tests/xmconfigdata/test-fullvirt-serial-tcp-telnet.xml
index 2ffdc8a..4e943c1 100644
--- a/tests/xmconfigdata/test-fullvirt-serial-tcp-telnet.xml
+++ b/tests/xmconfigdata/test-fullvirt-serial-tcp-telnet.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-serial-tcp.xml b/tests/xmconfigdata/test-fullvirt-serial-tcp.xml
index ff7ec9b..f752be8 100644
--- a/tests/xmconfigdata/test-fullvirt-serial-tcp.xml
+++ b/tests/xmconfigdata/test-fullvirt-serial-tcp.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-serial-udp.xml b/tests/xmconfigdata/test-fullvirt-serial-udp.xml
index f2f2b1f..d70c5d8 100644
--- a/tests/xmconfigdata/test-fullvirt-serial-udp.xml
+++ b/tests/xmconfigdata/test-fullvirt-serial-udp.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-serial-unix.xml b/tests/xmconfigdata/test-fullvirt-serial-unix.xml
index eaa484b..9900179 100644
--- a/tests/xmconfigdata/test-fullvirt-serial-unix.xml
+++ b/tests/xmconfigdata/test-fullvirt-serial-unix.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-sound.xml b/tests/xmconfigdata/test-fullvirt-sound.xml
index 6ee3dfd..abbe8df 100644
--- a/tests/xmconfigdata/test-fullvirt-sound.xml
+++ b/tests/xmconfigdata/test-fullvirt-sound.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-usbmouse.xml b/tests/xmconfigdata/test-fullvirt-usbmouse.xml
index 5d739f1..460ecc7 100644
--- a/tests/xmconfigdata/test-fullvirt-usbmouse.xml
+++ b/tests/xmconfigdata/test-fullvirt-usbmouse.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-usbtablet.xml b/tests/xmconfigdata/test-fullvirt-usbtablet.xml
index 9933ef7..e6e807a 100644
--- a/tests/xmconfigdata/test-fullvirt-usbtablet.xml
+++ b/tests/xmconfigdata/test-fullvirt-usbtablet.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-fullvirt-utc.xml b/tests/xmconfigdata/test-fullvirt-utc.xml
index 6544cb3..bc9865b 100644
--- a/tests/xmconfigdata/test-fullvirt-utc.xml
+++ b/tests/xmconfigdata/test-fullvirt-utc.xml
@@ -33,6 +33,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:66:92:9c'/>
       <source bridge='xenbr1'/>
diff --git a/tests/xmconfigdata/test-no-source-cdrom.xml b/tests/xmconfigdata/test-no-source-cdrom.xml
index 08ee701..7600085 100644
--- a/tests/xmconfigdata/test-no-source-cdrom.xml
+++ b/tests/xmconfigdata/test-no-source-cdrom.xml
@@ -32,6 +32,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:0a:7b:39'/>
       <source bridge='xenbr0'/>
diff --git a/tests/xmconfigdata/test-pci-devs.xml b/tests/xmconfigdata/test-pci-devs.xml
index 31db26f..74f17b0 100644
--- a/tests/xmconfigdata/test-pci-devs.xml
+++ b/tests/xmconfigdata/test-pci-devs.xml
@@ -32,6 +32,7 @@ 
       <readonly/>
       <address type='drive' controller='0' bus='1' target='0' unit='0'/>
     </disk>
+    <controller type='ide' index='0'/>
     <interface type='bridge'>
       <mac address='00:16:3e:0a:7b:39'/>
       <source bridge='xenbr0'/>