Script 'mail_helper' called by ro Hello packager, This is just FYI. Your package was checked in in distribution "sle12" by autobuild-member: ro. Here comes the log... ---------------------------%<------------------------------ Hi, here is the log from ci_new_pac /mounts/work_src_done/SLE12/yast2-network -> sle12 ## BNC# 862378 : "Different names for same ethernet devices" (ASSIGNED/) Changes: -------- --- /work/SRC/SUSE:SLE-12:GA/yast2-network/yast2-network.changes 2014-02-17 17:58:41.000000000 +0100 +++ /mounts/work_src_done/SLE12/yast2-network/yast2-network.changes 2014-02-18 13:13:21.000000000 +0100 @@ -1,0 +2,8 @@ +Mon Feb 17 08:01:21 UTC 2014 - mfilka@suse.com + +- bnc#862378 + - improved earlier fix. It handles virtual devices without + configuration better now. +- 3.1.21 + +------------------------------------------------------------------- calling whatdependson for sle12-i586 Packages directly triggered for rebuild: - yast2-network - at least 14 other packages ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/SUSE:SLE-12:GA/yast2-network (Old) and /mounts/work_src_done/SLE12/yast2-network (BS:build ID:32971 MAIL:yast-commit@opensuse.org) (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "yast2-network", Maintainer is "yast-commit@opensuse.org" Old: ---- yast2-network-3.1.20.tar.bz2 New: ---- yast2-network-3.1.21.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-network.spec ++++++ --- /var/tmp/diff_new_pack.ndNASi/_old 2014-02-18 13:21:10.000000000 +0100 +++ /var/tmp/diff_new_pack.ndNASi/_new 2014-02-18 13:21:10.000000000 +0100 @@ -17,7 +17,7 @@ Name: yast2-network -Version: 3.1.20 +Version: 3.1.21 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build ++++++ yast2-network-3.1.20.tar.bz2 -> yast2-network-3.1.21.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-3.1.20/package/yast2-network.changes new/yast2-network-3.1.21/package/yast2-network.changes --- old/yast2-network-3.1.20/package/yast2-network.changes 2014-02-17 14:13:05.000000000 +0100 +++ new/yast2-network-3.1.21/package/yast2-network.changes 2014-02-18 13:10:16.000000000 +0100 @@ -1,4 +1,12 @@ ------------------------------------------------------------------- +Mon Feb 17 08:01:21 UTC 2014 - mfilka@suse.com + +- bnc#862378 + - improved earlier fix. It handles virtual devices without + configuration better now. +- 3.1.21 + +------------------------------------------------------------------- Fri Feb 14 09:56:48 UTC 2014 - mfilka@suse.com - bnc#863952 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-3.1.20/package/yast2-network.spec new/yast2-network-3.1.21/package/yast2-network.spec --- old/yast2-network-3.1.20/package/yast2-network.spec 2014-02-17 14:13:05.000000000 +0100 +++ new/yast2-network-3.1.21/package/yast2-network.spec 2014-02-18 13:10:16.000000000 +0100 @@ -17,7 +17,7 @@ Name: yast2-network -Version: 3.1.20 +Version: 3.1.21 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-3.1.20/src/modules/LanItems.rb new/yast2-network-3.1.21/src/modules/LanItems.rb --- old/yast2-network-3.1.20/src/modules/LanItems.rb 2014-02-17 14:13:06.000000000 +0100 +++ new/yast2-network-3.1.21/src/modules/LanItems.rb 2014-02-18 13:10:16.000000000 +0100 @@ -1172,9 +1172,7 @@ deep_copy(index) end - def BuildLanOverview - overview = [] - links = [] + def startmode_overview startmode_descrs = { # summary description of STARTMODE=auto "auto" => _( @@ -1202,6 +1200,48 @@ ) } + startmode_descr = startmode_descrs[NetworkInterfaces.Current["STARTMODE"].to_s] || _("Started manually") + + return [startmode_descr] + end + + def ip_overview(ip) + bullets = [] + + case ip + when "NONE", "" + # do nothing + when /DHCP/ + bullets << ("%s %s") % [_("IP address assigned using"), ip] + else + prefixlen = NetworkInterfaces.Current["PREFIXLEN"] + if prefixlen + bullets << _("IP address: %s/%s") % [ip, prefixlen] + else + subnetmask = NetworkInterfaces.Current["NETMASK"] + bullets << _("IP address: %s, subnet mask %s") % [ip, subnetmask] + end + end + + # build aliases overview + item_aliases = NetworkInterfaces.Current["_aliases"] || {} + if !item_aliases.empty? && !NetworkService.is_network_manager + item_aliases.each do |key2, desc| + parameters = "%s/%s" % [desc["IPADDR"], desc["PREFIXLEN"]] + bullets << ("%s (%s)") % [desc["LABEL"], parameters] + end + end + + return bullets + end + + # FIXME: + # - side effect: sets @type. No reason for that. It should only build item + # overview. Check and remove. + def BuildLanOverview + overview = [] + links = [] + Builtins.foreach( Convert.convert( Map.Keys(@Items), @@ -1211,22 +1251,21 @@ ) do |key| rich = "" ip = _("Not configured") - descr = Ops.get_string(@Items, [key, "hwinfo", "name"], "") - dev = "" + + item_hwinfo = @Items[key]["hwinfo"] || {} + descr = item_hwinfo["name"] || "" + note = "" - @type = Ops.get_string(@Items, [key, "hwinfo", "type"], "") - descr = CheckEmptyName(@type, descr) bullets = [] - if IsNotEmpty(Ops.get_string(@Items, [key, "ifcfg"], "")) - NetworkInterfaces.Select(Ops.get_string(@Items, [key, "ifcfg"], "")) - if IsEmpty(@type) - @type = NetworkInterfaces.GetType( - Ops.get_string(@Items, [key, "ifcfg"], "") - ) - end + ifcfg_name = @Items[key]["ifcfg"] || "" + + @type = NetworkInterfaces.GetType(ifcfg_name) + if !ifcfg_name.empty? + NetworkInterfaces.Select(ifcfg_name) + ifcfg_desc = GetDeviceMap(key)["NAME"] descr = ifcfg_desc if !ifcfg_desc.nil? && !ifcfg_desc.empty? - dev = NetworkInterfaces.Name + descr = CheckEmptyName(@type, descr) ip = DeviceProtocol(NetworkInterfaces.Current) status = DeviceStatus( @type, @@ -1234,207 +1273,95 @@ NetworkInterfaces.Current ) - startmode_descr = Ops.get_locale( - startmode_descrs, - Ops.get_string(NetworkInterfaces.Current, "STARTMODE", ""), - _("Started manually") - ) - - bullets = [ - Builtins.sformat(_("Device Name: %1"), dev), - startmode_descr - ] - - if Ops.get_string(NetworkInterfaces.Current, "STARTMODE", "") != "managed" - if ip != "NONE" - prefixlen = Ops.get_string( - NetworkInterfaces.Current, - "PREFIXLEN", - "" - ) - if Ops.greater_than(Builtins.size(ip), 0) - descr2 = Builtins.sformat( - "%1 %2", - _("IP address assigned using"), - ip - ) - if !Builtins.issubstring(ip, "DHCP") - descr2 = Ops.greater_than(Builtins.size(prefixlen), 0) ? - Builtins.sformat(_("IP address: %1/%2"), ip, prefixlen) : - Builtins.sformat( - _("IP address: %1, subnet mask %2"), - ip, - Ops.get_string(NetworkInterfaces.Current, "NETMASK", "") - ) - end - bullets = Ops.add(bullets, [descr2]) - end - end - # build aliases overview - if Ops.greater_than( - Builtins.size( - Ops.get_map(NetworkInterfaces.Current, "_aliases", {}) - ), - 0 - ) && - !NetworkService.is_network_manager - Builtins.foreach( - Ops.get_map(NetworkInterfaces.Current, "_aliases", {}) - ) do |key2, desc| - parameters = Builtins.sformat( - "%1/%2", - Ops.get_string(desc, "IPADDR", ""), - Ops.get_string(desc, "PREFIXLEN", "") - ) - bullets = Builtins.add( - bullets, - Builtins.sformat( - "%1 (%2)", - Ops.get_string(desc, "LABEL", ""), - parameters - ) - ) - end - end - end + bullets << _("Device Name: %s") % ifcfg_name + bullets = bullets + startmode_overview + bullets = bullets + ip_overview(ip) if NetworkInterfaces.Current["STARTMODE"] != "managed" if @type == "wlan" && - !(Ops.get_string( - NetworkInterfaces.Current, - "WIRELESS_AUTH_MODE", - "" - ) != "open") && - IsEmpty( - Ops.get_string(NetworkInterfaces.Current, "WIRELESS_KEY_0", "") - ) + NetworkInterfaces.Current["WIRELESS_AUTH_MODE"] == "open" && + IsEmpty(NetworkInterfaces.Current["WIRELESS_KEY_0"]) + # avoid colons - dev = Builtins.mergestring(Builtins.splitstring(dev, ":"), "/") - href = Ops.add("lan--wifi-encryption-", dev) + ifcfg_name.tr!(":", "/") + href = "lan--wifi-encryption-" + ifcfg_name # interface summary: WiFi without encryption warning = HTML.Colorize(_("Warning: no encryption is used."), "red") - status = Ops.add( - Ops.add(Ops.add(Ops.add(status, " "), warning), " "), - # Hyperlink: Change the configuration of an interface - Hyperlink(href, _("Change.")) - ) - links = Builtins.add(links, href) + # Hyperlink: Change the configuration of an interface + status << " " << warning << " " << Hyperlink(href, _("Change.")) + links << href end if @type == "bond" - bullets = Builtins.add( - bullets, - Builtins.sformat( - "%1: %2", - _("Bonding slaves"), - Builtins.mergestring(GetBondSlaves(dev), " ") - ) - ) + bond_slaves_desc = ("%s: %s") % [ + _("Bonding slaves"), + GetBondSlaves(ifcfg_name).join(" ") + ] + bullets << bond_slaves_desc end bond_index = BuildBondIndex() bond_master = Ops.get( bond_index, - Ops.get_string(@Items, [key, "ifcfg"], ""), + ifcfg_name, "" ) - if Ops.greater_than(Builtins.size(bond_master), 0) - note = Builtins.sformat(_("enslaved in %1"), bond_master) - bullets = Builtins.add( - bullets, - Builtins.sformat("%1: %2", _("Bonding master"), bond_master) - ) + if !bond_master.empty? + note = _("enslaved in %s") % bond_master + bond_master_desc = ("%s: %s") % [_("Bonding master"), bond_master] + bullets << bond_master_desc end - overview = Builtins.add(overview, Summary.Device(descr, status)) + overview << Summary.Device(descr, status) else - overview = Builtins.add( - overview, - Summary.Device(descr, Summary.NotConfigured) - ) + descr = CheckEmptyName(@type, descr) + overview << Summary.Device(descr, Summary.NotConfigured) end - conn = HTML.Bold( - Ops.get_boolean(@Items, [key, "hwinfo", "link"], false) == true ? - "" : - Builtins.sformat("(%1)", _("Not connected")) - ) - if Builtins.size(Ops.get_map(@Items, [key, "hwinfo"], {})) == 0 - conn = HTML.Bold(Builtins.sformat("(%1)", _("No hwinfo"))) + conn = "" + conn = HTML.Bold("(%s)" % _("Not connected")) if !item_hwinfo["link"] + + if item_hwinfo.empty? + conn = HTML.Bold("(%s)" % _("No hwinfo")) end - mac_dev = Ops.add( - Ops.add( - HTML.Bold("MAC : "), - Ops.get_string(@Items, [key, "hwinfo", "mac"], "") - ), - "<br>" - ) - bus_id = Ops.add( - Ops.add( - HTML.Bold("BusID : "), - Ops.get_string(@Items, [key, "hwinfo", "busid"], "") - ), - "<br>" - ) - if IsNotEmpty(Ops.get_string(@Items, [key, "hwinfo", "mac"], "")) - rich = Ops.add(Ops.add(Ops.add(rich, " "), conn), "<br>") - rich = Ops.add(rich, mac_dev) + + mac_dev = HTML.Bold("MAC : ") + item_hwinfo["mac"].to_s + "<br>" + bus_id = HTML.Bold("BusID : ") + item_hwinfo["busid"].to_s + "<br>" + + if IsNotEmpty(item_hwinfo["mac"]) + rich << " " << conn << "<br>" << mac_dev end - if IsNotEmpty(Ops.get_string(@Items, [key, "hwinfo", "busid"], "")) - rich = Ops.add(rich, bus_id) + if IsNotEmpty(item_hwinfo["busid"]) + rich << bus_id end - # display it only if we need it, don't duplicate "dev" above - if IsNotEmpty(Ops.get_string(@Items, [key, "hwinfo", "dev_name"], "")) && - IsEmpty(Ops.get_string(@Items, [key, "ifcfg"], "")) - dev_name = Builtins.sformat( - _("Device Name: %1"), - Ops.get_string(@Items, [key, "hwinfo", "dev_name"], "") - ) - dev_name_r = Ops.add(HTML.Bold(dev_name), "<br>") - rich = Ops.add(rich, dev_name_r) + # display it only if we need it, don't duplicate "ifcfg_name" above + if IsNotEmpty(item_hwinfo["dev_name"]) && ifcfg_name.empty? + dev_name = _("Device Name: %s") % item_hwinfo["dev_name"] + rich << HTML.Bold(dev_name) << "<br>" end - rich = Ops.add(HTML.Bold(descr), rich) - if IsEmpty(Ops.get_string(@Items, [key, "hwinfo", "dev_name"], "")) && - Ops.greater_than( - Builtins.size(Ops.get_map(@Items, [key, "hwinfo"], {})), - 0 - ) && - !Arch.s390 - rich = Ops.add( - rich, - _( - "<p>Unable to configure the network card because the kernel device (eth0, wlan0) is not present. This is mostly caused by missing firmware (for wlan devices). See dmesg output for details.</p>" - ) - ) - elsif IsNotEmpty(Ops.get_string(@Items, [key, "ifcfg"], "")) - rich = Ops.add(rich, HTML.List(bullets)) + rich = HTML.Bold(descr) + rich + if IsEmpty(item_hwinfo["dev_name"]) && !item_hwinfo.empty? && !Arch.s390 + rich << "<p>" + rich << _("Unable to configure the network card because the kernel device (eth0, wlan0) is not present. This is mostly caused by missing firmware (for wlan devices). See dmesg output for details.") + rich << "</p>" + elsif !ifcfg_name.empty? + rich << HTML.List(bullets) else - rich = Ops.add( - rich, - _( - "<p>The device is not configured. Press <b>Edit</b>\nto configure.</p>\n" - ) - ) + rich << "<p>" + rich << _("The device is not configured. Press <b>Edit</b>\nto configure.\n") + rich << "</p>" curr = @current @current = key if needFirmwareCurrentItem fw = GetFirmwareForCurrentItem() - rich = Ops.add( - rich, - Builtins.sformat( - "%1 : %2", - _("Needed firmware"), - fw != "" ? fw : _("unknown") - ) - ) + rich << ("%s : %s") % [_("Needed firmware"), !fw.empty? ? fw : _("unknown")] end @current = curr end - Ops.set( - @Items, - [key, "table_descr"], - { "rich_descr" => rich, "table_descr" => [descr, ip, dev, note] } - ) + @Items[key]["table_descr"] = { + "rich_descr" => rich, + "table_descr" => [descr, ip, ifcfg_name, note] + } end [Summary.DevicesList(overview), links] end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-3.1.20/test/netcard_test.rb new/yast2-network-3.1.21/test/netcard_test.rb --- old/yast2-network-3.1.20/test/netcard_test.rb 2014-02-17 14:13:06.000000000 +0100 +++ new/yast2-network-3.1.21/test/netcard_test.rb 2014-02-18 13:10:16.000000000 +0100 @@ -56,7 +56,7 @@ 2 => {"ifcfg" => "eth1"}, 3 => {"ifcfg" => "br0"}, 4 => {"ifcfg" => "tun0"}, - 5 => {"ifcfg" => "tap0"} + 5 => {"ifcfg" => "tap0"}, } require "yast" @@ -99,18 +99,18 @@ it "returns expected name when querying oldfashioned mac based id" do expect(HardwareName([@hwinfo], "id-#{HWINFO_DEVICE_MAC}")) - .to be_eql @expected_desc + .to eql @expected_desc end it "returns expected name when querying oldfashioned bus based id" do busid = "bus-#{HWINFO_DEVICE_BUS}-#{HWINFO_DEVICE_BUSID}" expect(HardwareName([@hwinfo], busid)) - .to be_eql @expected_desc + .to eql @expected_desc end it "returns expected name when querying by device name" do expect(HardwareName([@hwinfo], HWINFO_DEVICE_NAME)) - .to be_eql @expected_desc + .to eql @expected_desc end it "returns empty string when id is not given" do @@ -127,3 +127,47 @@ expect(HardwareName(@hwinfo, "unknown")).to be_empty end end + +describe "LanItemsClass#BuildLanOverview" do + before(:each) do + @lan_items = Yast::LanItems + @lan_items.main + @lan_items.Items = MOCKED_ITEMS + end + + it "returns description and uses custom name if present" do + @lan_items.stub(:GetDeviceMap) { { "NAME" => "Custom name" } } + + @lan_items.BuildLanOverview + @lan_items.Items.each_pair do |key, value| + # it is not issue, really same index two times + desc = value["table_descr"]["table_descr"].first + + if value["ifcfg"] + expect(desc).to eql "Custom name" + else + expect(desc).not_to be_empty + end + end + end + + it "returns description and uses type based name if hwinfo is not present" do + @lan_items.stub(:GetDeviceMap) { { "NAME" => "" } } + + @lan_items.BuildLanOverview + @lan_items.Items.each_pair do |key, value| + desc = value["table_descr"]["table_descr"].first + + if !value["hwinfo"] + dev_name = value["ifcfg"].to_s + dev_type = Yast::NetworkInterfaces.GetType(dev_name) + expected_dev_desc = Yast::NetworkInterfaces.GetDevTypeDescription(dev_type, true) + else + expected_dev_desc = value["hwinfo"]["name"] + end + + expect(desc).not_to be_empty + expect(desc).to eql expected_dev_desc + end + end +end continue with "q"... Checked in at Tue Feb 18 13:21:49 CET 2014 by ro Remember to have fun... -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org