[Kimchi-devel] [PATCH] Fix iso streaming functions and feature tests

Rodrigo Trujillo rodrigo.trujillo at linux.vnet.ibm.com
Wed Mar 19 21:04:43 UTC 2014


The qemu dns test function was using IP instead of full hostname. This
makes the function always return True. Also, changed the streaming
protocols checking function supported by libvirt.

Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo at linux.vnet.ibm.com>
---
 src/kimchi/featuretests.py |  3 ++-
 src/kimchi/model/vms.py    | 12 ++++--------
 src/kimchi/vmtemplate.py   | 13 ++++++++-----
 3 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/src/kimchi/featuretests.py b/src/kimchi/featuretests.py
index 045f72b..a6a28fa 100644
--- a/src/kimchi/featuretests.py
+++ b/src/kimchi/featuretests.py
@@ -21,6 +21,7 @@ import cherrypy
 import libvirt
 import lxml.etree as ET
 import os
+import socket
 import subprocess
 import threading
 
@@ -140,7 +141,7 @@ class FeatureTests(object):
 
     @staticmethod
     def qemu_iso_stream_dns():
-        host = cherrypy.server.socket_host
+        host = socket.getfqdn(cherrypy.server.socket_host)
         port = cherrypy.server.socket_port
         cmd = ["qemu-io", "-r", "http://%s:%d/images/icon-fedora.png" %
                (host, port), "-c", "'read -v 0 512'"]
diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py
index 79b335c..d29b811 100644
--- a/src/kimchi/model/vms.py
+++ b/src/kimchi/model/vms.py
@@ -202,16 +202,12 @@ class VMsModel(object):
             with self.objstore as session:
                 session.store('vm', vm_uuid, {'icon': icon})
 
-        libvirt_stream = False
-        if len(self.caps.libvirt_stream_protocols) == 0:
-            libvirt_stream = True
-
         graphics = params.get('graphics')
         xml = t.to_vm_xml(name, vm_uuid,
-                          libvirt_stream=libvirt_stream,
-                          qemu_stream_dns=self.caps.qemu_stream_dns,
-                          graphics=graphics,
-                          volumes=vol_list)
+                   libvirt_stream_protocols=self.caps.libvirt_stream_protocols,
+                   qemu_stream_dns=self.caps.qemu_stream_dns,
+                   graphics=graphics,
+                   volumes=vol_list)
 
         try:
             conn.defineXML(xml.encode('utf-8'))
diff --git a/src/kimchi/vmtemplate.py b/src/kimchi/vmtemplate.py
index 003e524..f810df6 100644
--- a/src/kimchi/vmtemplate.py
+++ b/src/kimchi/vmtemplate.py
@@ -81,7 +81,7 @@ class VMTemplate(object):
         except IsoFormatError:
             raise InvalidParameter("KCHISO0001E", {'filename': iso})
 
-    def _get_cdrom_xml(self, libvirt_stream, qemu_stream_dns):
+    def _get_cdrom_xml(self, libvirt_stream_protocols, qemu_stream_dns):
         bus = self.info['cdrom_bus']
         dev = "%s%s" % (self._bus_to_dev[bus],
                         string.lowercase[self.info['cdrom_index']])
@@ -133,7 +133,7 @@ class VMTemplate(object):
             hostname = socket.gethostbyname(hostname)
             url = protocol + "://" + hostname + ":" + str(port) + url_path
 
-        if not libvirt_stream:
+        if protocol not in libvirt_stream_protocols:
             return qemu_stream_cmdline % {'url': url, 'bus': bus}
 
         params = {'protocol': protocol, 'url_path': url_path,
@@ -281,9 +281,12 @@ class VMTemplate(object):
             params['disks'] = self._get_disks_xml(vm_uuid)
 
         qemu_stream_dns = kwargs.get('qemu_stream_dns', False)
-        libvirt_stream = kwargs.get('libvirt_stream', False)
-        cdrom_xml = self._get_cdrom_xml(libvirt_stream, qemu_stream_dns)
-        if not libvirt_stream and params.get('iso_stream', False):
+        libvirt_stream_protocols = kwargs.get('libvirt_stream_protocols', [])
+        cdrom_xml = self._get_cdrom_xml(libvirt_stream_protocols,
+                                        qemu_stream_dns)
+
+        if not urlparse.urlparse(self.info['cdrom']).scheme in \
+            libvirt_stream_protocols and params.get('iso_stream', False):
             params['qemu-namespace'] = QEMU_NAMESPACE
             params['qemu-stream-cmdline'] = cdrom_xml
         else:
-- 
1.8.5.3




More information about the Kimchi-devel mailing list