
Reviewed-by: Royce Lv<lvroyce@linux.vnet.ibm.com> On 2014年03月20日 05:04, Rodrigo Trujillo wrote:
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@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: