Hello community,

here is the log from the commit of package virt-manager for openSUSE:Factory 
checked in at 2017-10-13 14:18:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/virt-manager (Old)
 and      /work/SRC/openSUSE:Factory/.virt-manager.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "virt-manager"

Fri Oct 13 14:18:49 2017 rev:157 rq:533484 version:1.4.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/virt-manager/virt-manager.changes        
2017-09-21 12:36:41.835627052 +0200
+++ /work/SRC/openSUSE:Factory/.virt-manager.new/virt-manager.changes   
2017-10-13 14:18:52.360881320 +0200
@@ -1,0 +2,12 @@
+Wed Oct 11 13:58:55 MDT 2017 - carn...@suse.com
+
+- Upstream bug fixes (bsc#1027942)
+  3b769643-dont-add-URI-into-params-for-tunneled-migration.patch
+  6dfc4de1-add-support-for-parsing-formatting-SR-IOV-VFs.patch
+  083dfcc8-Show-details-about-the-network-of-SR-IOV-VF-pool.patch
+- Add Recommends: python3-virt-bootstrap
+  Change 'Requires: libvirt-python' to 'Requires: python-libvirt-python'
+  virt-manager.spec
+- Add corrections to sle15 detection (bsc#1054986)
+
+-------------------------------------------------------------------

New:
----
  083dfcc8-Show-details-about-the-network-of-SR-IOV-VF-pool.patch
  3b769643-dont-add-URI-into-params-for-tunneled-migration.patch
  6dfc4de1-add-support-for-parsing-formatting-SR-IOV-VFs.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ virt-manager.spec ++++++
--- /var/tmp/diff_new_pack.ZVchke/_old  2017-10-13 14:18:53.820817129 +0200
+++ /var/tmp/diff_new_pack.ZVchke/_new  2017-10-13 14:18:53.824816953 +0200
@@ -38,6 +38,9 @@
 Source2:        virt-install.desktop
 Source3:        virt-manager-supportconfig
 # Upstream Patches
+Patch1:         3b769643-dont-add-URI-into-params-for-tunneled-migration.patch
+Patch2:         6dfc4de1-add-support-for-parsing-formatting-SR-IOV-VFs.patch
+Patch3:         083dfcc8-Show-details-about-the-network-of-SR-IOV-VF-pool.patch
 # SUSE Only
 Patch70:        virtman-desktop.patch
 Patch71:        virtman-kvm.patch
@@ -124,11 +127,12 @@
 # This version not strictly required: virt-manager should work with older,
 # however varying amounts of functionality will not be enabled.
 Requires:       libosinfo >= 0.2.10
-Requires:       libvirt-python >= 0.7.0
 Requires:       python-ipaddr
+Requires:       python-libvirt-python >= 0.7.0
 Requires:       python-libxml2
 Requires:       python-urlgrabber
 Requires:       typelib(LibvirtGLib)
+Recommends:     python3-virt-bootstrap
 BuildRequires:  gobject-introspection
 # No AppIndicator package on SLE
 %if 0%{?is_opensuse} == 0
@@ -162,6 +166,9 @@
 %prep
 %setup -q
 # Upstream Patches
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
 # SUSE Only
 %patch70 -p1
 %patch71 -p1

++++++ 083dfcc8-Show-details-about-the-network-of-SR-IOV-VF-pool.patch ++++++
Subject: host: Show details about the network of SR-IOV VF pool
From: Lin Ma l...@suse.com Fri Sep 22 19:39:10 2017 +0800
Date: Mon Oct 9 10:22:48 2017 +0200:
Git: 083dfcc8ec9e684052c999b79bb3508a5e9d3c03

Signed-off-by: Lin Ma <l...@suse.com>
Signed-off-by: Pavel Hrdina <phrd...@redhat.com>

diff --git a/ui/host.ui b/ui/host.ui
index 2e5ea496..f5ea3905 100644
--- a/ui/host.ui
+++ b/ui/host.ui
@@ -1117,6 +1117,108 @@
                                     <property name="position">3</property>
                                   </packing>
                                 </child>
+                                <child>
+                                  <object class="GtkExpander" 
id="net-sriov-expander">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <child>
+                                      <object class="GtkBox" 
id="net-sriov-box">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property 
name="orientation">vertical</property>
+                                        <property name="spacing">3</property>
+                                        <child>
+                                          <object class="GtkGrid" 
id="pf-table">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property 
name="row_spacing">5</property>
+                                            <property 
name="column_spacing">6</property>
+                                            <child>
+                                              <object class="GtkLabel" 
id="pf-name">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">False</property>
+                                                <property 
name="halign">start</property>
+                                                <property 
name="label">label</property>
+                                                <property 
name="selectable">True</property>
+                                              </object>
+                                              <packing>
+                                                <property 
name="left_attach">1</property>
+                                                <property 
name="top_attach">0</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <object class="GtkLabel" 
id="pf-name-label">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">False</property>
+                                                <property 
name="halign">start</property>
+                                                <property name="label" 
translatable="yes">Physical Function:</property>
+                                              </object>
+                                              <packing>
+                                                <property 
name="left_attach">0</property>
+                                                <property 
name="top_attach">0</property>
+                                              </packing>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">True</property>
+                                            <property 
name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkLabel" 
id="vf-scroll-label">
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">False</property>
+                                            <property 
name="halign">start</property>
+                                            <property name="label" 
translatable="yes">Virtual Functions:</property>
+                                            <property 
name="use_markup">True</property>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">False</property>
+                                            <property 
name="fill">True</property>
+                                            <property 
name="position">1</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <object class="GtkScrolledWindow" 
id="vf-scroll">
+                                            <property 
name="height_request">144</property>
+                                            <property 
name="visible">True</property>
+                                            <property 
name="can_focus">True</property>
+                                            <property 
name="shadow_type">in</property>
+                                            <child>
+                                              <object class="GtkTreeView" 
id="vf-list">
+                                                <property 
name="visible">True</property>
+                                                <property 
name="can_focus">True</property>
+                                                <child 
internal-child="selection">
+                                                  <object 
class="GtkTreeSelection" id="vf-selection"/>
+                                                </child>
+                                              </object>
+                                            </child>
+                                          </object>
+                                          <packing>
+                                            <property 
name="expand">True</property>
+                                            <property 
name="fill">True</property>
+                                            <property 
name="position">2</property>
+                                          </packing>
+                                        </child>
+                                      </object>
+                                    </child>
+                                    <child type="label">
+                                      <object class="GtkLabel" 
id="net-sriov-expander-label">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="can_focus">False</property>
+                                        <property name="label" 
translatable="yes">&lt;b&gt;_SR-IOV information&lt;/b&gt;</property>
+                                        <property 
name="use_markup">True</property>
+                                        <property 
name="use_underline">True</property>
+                                      </object>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">True</property>
+                                    <property name="fill">True</property>
+                                    <property name="position">4</property>
+                                  </packing>
+                                </child>
                               </object>
                             </child>
                           </object>
diff --git a/virtManager/host.py b/virtManager/host.py
index 84e8865c..560bc0a6 100644
--- a/virtManager/host.py
+++ b/virtManager/host.py
@@ -24,6 +24,7 @@ from gi.repository import GObject
 from gi.repository import Gtk
 
 from virtinst import Interface
+from virtinst import NodeDevice
 from virtinst import util
 
 from . import uiutil
@@ -167,6 +168,20 @@ class vmmHost(vmmGObjectUI):
         self.widget("net-list").append_column(netCol)
         netListModel.set_sort_column_id(1, Gtk.SortType.ASCENDING)
 
+        # Virtual Function list
+        # [vf-name]
+        vf_list = self.widget("vf-list")
+        vf_list_model = Gtk.ListStore(str)
+        vf_list.set_model(vf_list_model)
+        vf_list.set_headers_visible(False)
+
+        vfTextCol = Gtk.TreeViewColumn()
+        vf_txt = Gtk.CellRendererText()
+        vfTextCol.pack_start(vf_txt, True)
+        vfTextCol.add_attribute(vf_txt, 'text', 0)
+        vf_list.append_column(vfTextCol)
+
+
     def init_storage_state(self):
         self.storagelist = vmmStorageList(self.conn, self.builder, self.topwin)
         self.widget("storage-align").add(self.storagelist.top_box)
@@ -398,6 +413,7 @@ class vmmHost(vmmGObjectUI):
             return
 
         logging.debug("Stopping network '%s'", net.get_name())
+        self.widget("vf-list").get_model().clear()
         vmmAsyncJob.simple_async_noshow(net.stop, [], self,
                             _("Error stopping network '%s'") % net.get_name())
 
@@ -613,6 +629,35 @@ class vmmHost(vmmGObjectUI):
         self.widget("qos-outbound-peak").set_text(qos.outbound_peak or "")
         self.widget("qos-outbound-burst").set_text(qos.outbound_burst or "")
 
+    def _populate_sriov_state(self, net):
+        (is_vf_pool, pf_name, vfs) = net.get_sriov_vf_networks()
+
+        self.widget("net-sriov-expander").set_visible(is_vf_pool)
+        if not pf_name:
+            self.widget("pf-name").set_text("N/A")
+            return
+
+        self.widget("pf-name").set_text(pf_name)
+
+        vf_list_model = self.widget("vf-list").get_model()
+        vf_list_model.clear()
+        for vf in vfs:
+            addrStr = "%x:%x:%x.%x" % (vf.domain, vf.bus, vf.slot, vf.function)
+            pcidev = 
NodeDevice.lookupNodedevFromString(self.conn.get_backend(),
+                                                        addrStr)
+
+            vf_name = None
+
+            netdevs = self.conn.filter_nodedevs("net")
+            for netdev in netdevs:
+                logging.debug(netdev.xmlobj.parent)
+                if pcidev.name == netdev.xmlobj.parent:
+                    vf_name = netdev.xmlobj.interface
+                    break
+
+            vf_list_model.append([vf_name or addrStr])
+
+
     def populate_net_state(self, net):
         active = net.is_active()
 
@@ -642,6 +687,7 @@ class vmmHost(vmmGObjectUI):
         self._populate_net_ipv4_state(net)
         self._populate_net_ipv6_state(net)
         self._populate_qos_state(net)
+        self._populate_sriov_state(net)
 
 
     def reset_net_state(self):
diff --git a/virtManager/network.py b/virtManager/network.py
index cb260497..4c937e0e 100644
--- a/virtManager/network.py
+++ b/virtManager/network.py
@@ -182,3 +182,15 @@ class vmmNetwork(vmmLibvirtObject):
     def get_ipv6_network(self):
         ret = self._get_network("ipv6")
         return ret + [self._get_static_route("ipv6")]
+
+    def get_sriov_vf_networks(self):
+        xmlobj = self.get_xmlobj()
+        pf_name = None
+        vfs = None
+        ret = False
+        if xmlobj.forward.mode == "hostdev":
+            ret = True
+            if xmlobj.forward.pf:
+                pf_name = xmlobj.forward.pf[0].dev
+                vfs = xmlobj.forward.vfs
+        return (ret, pf_name, vfs)
++++++ 3b769643-dont-add-URI-into-params-for-tunneled-migration.patch ++++++
Subject: domain: don't add URI into params for tunneled migration
From: Pavel Hrdina phrd...@redhat.com Tue Oct 3 12:24:39 2017 +0200
Date: Tue Oct 3 12:24:39 2017 +0200:
Git: 3b769643657f906dc2b53c568d7fe748155d9b2b

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1456185

Signed-off-by: Pavel Hrdina <phrd...@redhat.com>

diff --git a/virtManager/domain.py b/virtManager/domain.py
index 6fb54bc..724f83f 100644
--- a/virtManager/domain.py
+++ b/virtManager/domain.py
@@ -1596,7 +1596,7 @@ class vmmDomain(vmmLibvirtObject):
             start_job_progress_thread(self, meter, _("Migrating domain"))
 
         params = {}
-        if dest_uri:
+        if dest_uri and not tunnel:
             params[libvirt.VIR_MIGRATE_PARAM_URI] = dest_uri
 
         if tunnel:
++++++ 6dfc4de1-add-support-for-parsing-formatting-SR-IOV-VFs.patch ++++++
Subject: network: add support for parsing/formatting SR-IOV VFs
From: Lin Ma l...@suse.com Fri Sep 22 19:39:09 2017 +0800
Date: Mon Oct 9 10:22:48 2017 +0200:
Git: 6dfc4de125022c43cb6e60e2f9e0c395ece159d6

Signed-off-by: Lin Ma <l...@suse.com>
Signed-off-by: Pavel Hrdina <phrd...@redhat.com>

diff --git a/tests/xmlparse-xml/network-vf-pool-in.xml 
b/tests/xmlparse-xml/network-vf-pool-in.xml
index 821aa075..542757de 100644
--- a/tests/xmlparse-xml/network-vf-pool-in.xml
+++ b/tests/xmlparse-xml/network-vf-pool-in.xml
@@ -1,5 +1,7 @@
 <network>
   <name>passthrough</name>
     <forward mode="hostdev" managed="yes">
+      <pf dev="eth3"/>
+      <address type="pci" domain="0x0000" bus="0x03" slot="0x10" 
function="0x0"/>
     </forward>
 </network>
diff --git a/tests/xmlparse-xml/network-vf-pool-out.xml 
b/tests/xmlparse-xml/network-vf-pool-out.xml
index 62a73050..83644118 100644
--- a/tests/xmlparse-xml/network-vf-pool-out.xml
+++ b/tests/xmlparse-xml/network-vf-pool-out.xml
@@ -2,5 +2,6 @@
   <name>new-foo</name>
     <forward mode="hostdev" managed="yes">
       <pf dev="eth3"/>
+      <address type="pci" domain="0x0000" bus="0x03" slot="0x10" 
function="0x0"/>
     </forward>
 </network>
diff --git a/tests/xmlparse.py b/tests/xmlparse.py
index cc29eadc..1cceebce 100644
--- a/tests/xmlparse.py
+++ b/tests/xmlparse.py
@@ -1332,11 +1332,16 @@ class XMLParseTest(unittest.TestCase):
         check("mode", "hostdev")
         check("managed", "yes")
 
-        r = net.forward.add_pf()
-        r.dev = "eth3"
-        check = self._make_checker(r)
+        check = self._make_checker(net.forward.pf[0])
         check("dev", "eth3")
 
+        check = self._make_checker(net.forward.vfs[0])
+        check("type", "pci")
+        check("domain", 0x0000)
+        check("bus", 0x03)
+        check("slot", 0x10)
+        check("function", 0x0)
+
         utils.diff_compare(net.get_xml_config(), outfile)
         utils.test_create(conn, net.get_xml_config(), "networkDefineXML")
 
diff --git a/virtinst/network.py b/virtinst/network.py
index 183b0e3a..1cc71118 100644
--- a/virtinst/network.py
+++ b/virtinst/network.py
@@ -77,6 +77,15 @@ class _NetworkForwardPf(XMLBuilder):
     dev = XMLProperty("./@dev")
 
 
+class _NetworkForwardAddress(XMLBuilder):
+    _XML_ROOT_NAME = "address"
+    type = XMLProperty("./@type")
+    domain = XMLProperty("./@domain", is_int=True)
+    bus = XMLProperty("./@bus", is_int=True)
+    slot = XMLProperty("./@slot", is_int=True)
+    function = XMLProperty("./@function", is_int=True)
+
+
 class _NetworkForward(XMLBuilder):
     _XML_ROOT_NAME = "forward"
 
@@ -84,6 +93,7 @@ class _NetworkForward(XMLBuilder):
     dev = XMLProperty("./@dev")
     managed = XMLProperty("./@managed")
     pf = XMLChildProperty(_NetworkForwardPf)
+    vfs = XMLChildProperty(_NetworkForwardAddress)
 
     def add_pf(self):
         r = _NetworkForwardPf(self.conn)
++++++ virtinst-add-sle15-detection-support.patch ++++++
--- /var/tmp/diff_new_pack.ZVchke/_old  2017-10-13 14:18:53.972810446 +0200
+++ /var/tmp/diff_new_pack.ZVchke/_new  2017-10-13 14:18:53.972810446 +0200
@@ -21,7 +21,7 @@
 +            pbuf = fetcher.acquireFileContent("media.1/products").strip()
 +            pbuf = pbuf.split(' ', 1)[1].strip()
 +            # The media.1/products file naming convention changed between 
SLE11 and SLE12
-+            if pbuf.startswith('SLE') or pbuf.startswith('leanos'):
++            if pbuf.startswith('SLE'):
 +                pbuf = pbuf.split(' ')[0]
 +                pbuf = " ".join(re.split('(\d+)', pbuf, 1))
 +            cbuf = "\nDISTRO ," + pbuf.replace('-', ' ')
@@ -35,17 +35,16 @@
  
      distribution = None
      distro_version = None
-@@ -465,7 +481,8 @@ def _distroFromSUSEContent(fetcher, arch
+@@ -465,7 +481,7 @@ def _distroFromSUSEContent(fetcher, arch
      dclass = GenericDistro
      if distribution:
          if re.match(".*SUSE Linux Enterprise Server*", distribution[1]) or \
 -            re.match(".*SUSE SLES*", distribution[1]):
-+            re.match(".*SUSE SLES*", distribution[1]) or re.match("SLES*", 
distribution[1]) or \
-+            re.match("leanos*", distribution[1]):
++            re.match(".*SUSE SLES*", distribution[1]) or re.match("SLES*", 
distribution[1]):
              dclass = SLESDistro
              if distro_version is None:
                  distro_version = _parse_sle_distribution(distribution)
-@@ -481,7 +498,7 @@ def _distroFromSUSEContent(fetcher, arch
+@@ -481,7 +497,7 @@ def _distroFromSUSEContent(fetcher, arch
              dclass = CAASPDistro
              if distro_version is None:
                  distro_version = ['VERSION', distribution[1].strip().rsplit(' 
')[6]]
@@ -54,7 +53,7 @@
              dclass = OpensuseDistro
              if distro_version is None:
                  distro_version = ['VERSION', 
distribution[0].strip().rsplit(':')[4]]
-@@ -1003,6 +1020,7 @@ class SLDistro(RHELDistro):
+@@ -1003,6 +1019,7 @@ class SLDistro(RHELDistro):
  
  class SuseDistro(Distro):
      name = "SUSE"
@@ -62,7 +61,7 @@
  
      _boot_iso_paths   = ["boot/boot.iso"]
  
-@@ -1040,8 +1058,11 @@ class SuseDistro(Distro):
+@@ -1040,8 +1057,11 @@ class SuseDistro(Distro):
                  self._xen_kernel_paths = [("boot/%s/vmlinuz-xenpae" % 
self.arch,
                                              "boot/%s/initrd-xenpae" % 
self.arch)]
              else:
@@ -76,7 +75,7 @@
  
      def _variantFromVersion(self):
          distro_version = self.version_from_content[1].strip()
-@@ -1053,7 +1074,7 @@ class SuseDistro(Distro):
+@@ -1053,7 +1073,7 @@ class SuseDistro(Distro):
              if len(distro_version.split('.', 1)) == 2:
                  sp_version = 'sp' + distro_version.split('.', 1)[1].strip()
              self.os_variant += version
@@ -85,7 +84,7 @@
                  self.os_variant += sp_version
          elif self.os_variant.startswith("opensuse"):
              if len(version) == 8:
-@@ -1077,6 +1098,24 @@ class SuseDistro(Distro):
+@@ -1077,6 +1097,24 @@ class SuseDistro(Distro):
              self.os_variant += "9"
  
      def isValidStore(self):
@@ -110,7 +109,7 @@
          # self.version_from_content is the VERSION line from the contents file
          if (not self.version_from_content or
              self.version_from_content[1] is None):
-@@ -1128,8 +1167,6 @@ class OESDistro(SuseDistro):
+@@ -1128,8 +1166,6 @@ class OESDistro(SuseDistro):
      urldistro = "oes"
  
  


Reply via email to