[Libguestfs] [PATCH 8/8] Converter: Remove obsolete xen-specific configuration

Matthew Booth mbooth at redhat.com
Mon Feb 1 17:23:36 UTC 2010


Don't update /domain/@type just for xen as it's always set explicitly to kvm.
Don't update /domain/devices/input/@bus as it's replaced by a default device.
---
 lib/Sys/VirtV2V/Converter.pm |   69 ++++++++----------------------------------
 1 files changed, 13 insertions(+), 56 deletions(-)

diff --git a/lib/Sys/VirtV2V/Converter.pm b/lib/Sys/VirtV2V/Converter.pm
index a53dd92..736de8c 100644
--- a/lib/Sys/VirtV2V/Converter.pm
+++ b/lib/Sys/VirtV2V/Converter.pm
@@ -197,17 +197,6 @@ sub _convert_metadata
     _configure_os($dom, $default_dom, $arch);
 }
 
-sub _unconfigure_hvs
-{
-    my ($dom, $default_dom) = @_;
-    die("unconfigure_hvs called without dom argument")
-        unless defined($dom);
-    die("unconfigure_hvs called without default_dom argument")
-        unless defined($default_dom);
-
-    _unconfigure_xen_metadata($dom, $default_dom);
-}
-
 sub _configure_os
 {
     my ($dom, $default_dom, $arch) = @_;
@@ -431,32 +420,20 @@ sub _configure_drivers
     }
 }
 
-sub _replace_with_default_metadata
+sub _unconfigure_hvs
 {
-    my ($node, $xpath, $default_dom) = @_;
-
-    # Look for a replacement in the defaults
-    my ($default) = $default_dom->findnodes($xpath);
-    if(defined($default)) {
-        if($node->isa('XML::DOM::Attr')) {
-            $node->setNodeValue($default->getNodeValue());
-        } else {
-            my $replacement = $default->cloneNode(1);
-            $replacement->setOwnerDocument($node->getOwnerDocument());
-
-            $node->getParentNode()->replaceChild($replacement, $node);
-        }
-    }
-
-    else {
-        # Warn if no replacement was found
-        print STDERR user_message
-            (__x("WARNING: No replacement found for {xpath} in ".
-                 "domain XML. The node was removed.",
-                 xpath => $xpath));
+    my ($dom, $default_dom) = @_;
+    die("unconfigure_hvs called without dom argument")
+        unless defined($dom);
+    die("unconfigure_hvs called without default_dom argument")
+        unless defined($default_dom);
 
-        $node->getParentNode()->removeChild($node);
+    # Remove emulator if it is defined
+    foreach my $emulator ($dom->findnodes('/domain/devices/emulator')) {
+        $emulator->getParent()->removeChild($emulator);
     }
+
+    _unconfigure_xen_metadata($dom, $default_dom);
 }
 
 sub _unconfigure_xen_metadata
@@ -466,23 +443,6 @@ sub _unconfigure_xen_metadata
     # The list of target xen-specific nodes is mostly taken from inspection of
     # domain.rng
 
-    # Nodes which should be replaced with a default if they are present
-    foreach my $hv_node (
-        [ '/domain/@type', 'xen' ],
-        [ '/domain/devices/input/@bus', 'xen' ]
-    ) {
-        my $xpath = $hv_node->[0];
-        my $pattern = $hv_node->[1];
-
-        foreach my $node ($dom->findnodes($xpath)) {
-            if(defined($pattern)) {
-                next unless($node->getNodeValue() =~ m{$pattern});
-            }
-
-            _replace_with_default_metadata($node, $xpath, $default_dom);
-        }
-    }
-
     # Remove machine if it has a xen-specific value
     # We could replace it with the generic 'pc', but 'pc' is a moving target
     # across QEMU releases. By removing it entirely, libvirt will automatically
@@ -495,11 +455,6 @@ sub _unconfigure_xen_metadata
         }
     }
 
-    # Remove emulator if it is defined
-    foreach my $emulator ($dom->findnodes('/domain/devices/emulator')) {
-        $emulator->getParent()->removeChild($emulator);
-    }
-
     # Remove the script element if its path attribute is 'vif-bridge'
     foreach my $script ($dom->findnodes('/domain/devices/interface/script[@path = "vif-bridge"]'))
     {
@@ -507,6 +462,8 @@ sub _unconfigure_xen_metadata
     }
 
     # Other Xen related metadata is handled separately
+    # /domain/@type
+    # /domain/devices/input/@bus = xen
     # /domain/devices/disk/target/@bus = 'xen'
     # /domain/os/loader = 'xen'
     # /domain/bootloader
-- 
1.6.6




More information about the Libguestfs mailing list