Hello community,

here is the log from the commit of package yast2-network for openSUSE:Factory 
checked in at 2016-08-10 19:54:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-network (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-network.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-network"

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-network/yast2-network.changes      
2016-07-16 22:12:35.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-network.new/yast2-network.changes 
2016-08-10 19:54:21.000000000 +0200
@@ -1,0 +2,30 @@
+Wed Aug 10 16:07:26 UTC 2016 - [email protected]
+
+- bnc#991486
+  - Do not allow creating device with oversized configuration name.
+- 3.1.163
+
+-------------------------------------------------------------------
+Tue Aug  9 12:29:35 UTC 2016 - [email protected]
+
+- Added entry "s390-devices" to the AutoYaST schema file.
+  Bug similar bnc#954412.
+- 3.1.162
+
+-------------------------------------------------------------------
+Tue Aug  9 12:25:01 UTC 2016 - [email protected]
+
+- bnc#991920
+  - do not crash with internal error when renaming unconfigured
+    device
+- 3.1.161 
+
+-------------------------------------------------------------------
+Tue Aug  2 12:40:53 UTC 2016 - [email protected]
+
+- bnc#991382
+  - Do not crash with internal error when using "On Cable
+    Connection" device activation mode.
+- 3.1.160
+
+-------------------------------------------------------------------

Old:
----
  yast2-network-3.1.159.tar.bz2

New:
----
  yast2-network-3.1.163.tar.bz2

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

Other differences:
------------------
++++++ yast2-network.spec ++++++
--- /var/tmp/diff_new_pack.w3rBNs/_old  2016-08-10 19:54:23.000000000 +0200
+++ /var/tmp/diff_new_pack.w3rBNs/_new  2016-08-10 19:54:23.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-network
-Version:        3.1.159
+Version:        3.1.163
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ yast2-network-3.1.159.tar.bz2 -> yast2-network-3.1.163.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-network-3.1.159/package/yast2-network.changes 
new/yast2-network-3.1.163/package/yast2-network.changes
--- old/yast2-network-3.1.159/package/yast2-network.changes     2016-07-15 
10:26:35.000000000 +0200
+++ new/yast2-network-3.1.163/package/yast2-network.changes     2016-08-09 
18:43:38.000000000 +0200
@@ -1,4 +1,34 @@
 -------------------------------------------------------------------
+Wed Aug 10 16:07:26 UTC 2016 - [email protected]
+
+- bnc#991486
+  - Do not allow creating device with oversized configuration name.
+- 3.1.163
+
+-------------------------------------------------------------------
+Tue Aug  9 12:29:35 UTC 2016 - [email protected]
+
+- Added entry "s390-devices" to the AutoYaST schema file.
+  Bug similar bnc#954412.
+- 3.1.162
+
+-------------------------------------------------------------------
+Tue Aug  9 12:25:01 UTC 2016 - [email protected]
+
+- bnc#991920
+  - do not crash with internal error when renaming unconfigured
+    device
+- 3.1.161 
+
+-------------------------------------------------------------------
+Tue Aug  2 12:40:53 UTC 2016 - [email protected]
+
+- bnc#991382
+  - Do not crash with internal error when using "On Cable
+    Connection" device activation mode.
+- 3.1.160
+
+-------------------------------------------------------------------
 Tue Jul 12 10:41:58 CEST 2016 - [email protected]
 
 - Added entry "dhclient_set_hostname" to the AutoYaST schema file.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-network-3.1.159/package/yast2-network.spec 
new/yast2-network-3.1.163/package/yast2-network.spec
--- old/yast2-network-3.1.159/package/yast2-network.spec        2016-07-15 
10:26:35.000000000 +0200
+++ new/yast2-network-3.1.163/package/yast2-network.spec        2016-08-09 
18:43:38.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-network
-Version:        3.1.159
+Version:        3.1.163
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-network-3.1.159/src/autoyast-rnc/networking.rnc 
new/yast2-network-3.1.163/src/autoyast-rnc/networking.rnc
--- old/yast2-network-3.1.159/src/autoyast-rnc/networking.rnc   2016-07-15 
10:26:35.000000000 +0200
+++ new/yast2-network-3.1.163/src/autoyast-rnc/networking.rnc   2016-08-09 
18:43:38.000000000 +0200
@@ -15,6 +15,7 @@
     dhcp_options? &
     routing? &
     dns? &
+    s390-devices? &
     net-udev?
   }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-network-3.1.159/src/include/network/lan/hardware.rb 
new/yast2-network-3.1.163/src/include/network/lan/hardware.rb
--- old/yast2-network-3.1.159/src/include/network/lan/hardware.rb       
2016-07-15 10:26:35.000000000 +0200
+++ new/yast2-network-3.1.163/src/include/network/lan/hardware.rb       
2016-08-09 18:43:38.000000000 +0200
@@ -29,6 +29,8 @@
 
 require "network/edit_nic_name"
 
+include Yast::UIShortcuts
+
 module Yast
   module NetworkLanHardwareInclude
     def initialize_network_lan_hardware(include_target)
@@ -790,21 +792,25 @@
     def validate_hw(_key, _event)
       nm = devname_from_hw_dialog
 
-      if UsedNicName(nm)
+      ret = if UsedNicName(nm)
         Popup.Error(
-          Builtins.sformat(
-            _(
-              "Configuration name %1 already exists.\nChoose a different one."
-            ),
-            nm
-          )
+          format(_("Configuration name %s already exists.\nChoose a different 
one."), nm)
         )
-        UI.SetFocus(Id(:ifcfg_name))
 
-        return false
+        false
+      elsif !ValidNicName(nm)
+        Popup.Error(
+          format(_("Configuration name %s is invalid.\nChoose a different 
one."), nm)
+        )
+
+        false
+      else
+        true
       end
 
-      true
+      UI.SetFocus(Id(:ifcfg_name)) if !ret
+
+      ret
     end
 
     VLAN_SIZE = 4 # size of vlanN prefix without number
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-network-3.1.159/src/include/network/lan/udev.rb 
new/yast2-network-3.1.163/src/include/network/lan/udev.rb
--- old/yast2-network-3.1.159/src/include/network/lan/udev.rb   2016-07-15 
10:26:35.000000000 +0200
+++ new/yast2-network-3.1.163/src/include/network/lan/udev.rb   2016-08-09 
18:43:38.000000000 +0200
@@ -45,6 +45,25 @@
       rule
     end
 
+    # Returns a value of the particular key in the rule
+    #
+    # @param rule [array] an udev rule represented as a list of strings
+    # @param key  [string] a key name which is asked for value
+    # @return     [string] value corresponding to the key or empty string
+    def udev_key_value(rule, key)
+      raise ArgumentError, "Rule must not be nil when querying a key value" if 
rule.nil?
+
+      rule.each do |tuple|
+        # note that when using =~ then named capture groups (?<name>...) 
currently
+        # cannot be used together with interpolation (#{})
+        # see 
http://stackoverflow.com/questions/15890729/why-does-capturing-named-groups-in-ruby-result-in-undefined-local-variable-or-m
+        matches = tuple.match(/#{key}={1,2}"?(?<value>[^[:space:]"]*)/)
+        return matches[:value] if matches
+      end
+
+      ""
+    end
+
     # Writes new persistent udev net rules and tells udevd to update its 
configuration
     def write_update_udevd(udev_rules)
       SCR.Write(path(".udev_persistent.rules"), udev_rules)
@@ -67,7 +86,7 @@
         path(".target.bash"),
         "udevadm trigger --subsystem-match=net --action=add"
       )
-      ret == 0
+      ret.zero?
     end
 
     # Removes (key,operator,value) tripplet from given udev rule.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-network-3.1.159/src/include/network/lan/virtual.rb 
new/yast2-network-3.1.163/src/include/network/lan/virtual.rb
--- old/yast2-network-3.1.159/src/include/network/lan/virtual.rb        
2016-07-15 10:26:35.000000000 +0200
+++ new/yast2-network-3.1.163/src/include/network/lan/virtual.rb        
2016-08-09 18:43:38.000000000 +0200
@@ -185,9 +185,6 @@
       nil
     end
 
-    # max length of device / interface filename lenght supported by kernel
-    IFACE_LABEL_MAX = 16
-
     # Open a dialog to edit a name-ipaddr-netmask triple.
     # @param id    [Integer]    an id for the table item to be returned
     # @param entry [Yast::Term] an existing entry to be edited, or term(:empty)
@@ -239,7 +236,7 @@
         host = Item(Id(id))
         val = UI.QueryWidget(Id(:name), :Value)
 
-        if LanItems.device.size + val.size + 1 > IFACE_LABEL_MAX
+        if !ValidNicName("#{LanItems.device}.#{val}")
           # Popup::Error text
           Popup.Error(_("Label is too long."))
           UI.SetFocus(Id(:name))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-network-3.1.159/src/modules/LanItems.rb 
new/yast2-network-3.1.163/src/modules/LanItems.rb
--- old/yast2-network-3.1.159/src/modules/LanItems.rb   2016-07-15 
10:26:35.000000000 +0200
+++ new/yast2-network-3.1.163/src/modules/LanItems.rb   2016-08-09 
18:43:38.000000000 +0200
@@ -405,26 +405,9 @@
       deep_copy(udev_rules)
     end
 
+    # It returns a value for the particular key of udev rule belonging to the 
current item.
     def GetItemUdev(key)
-      value = ""
-
-      Builtins.foreach(getUdevFallback) do |row|
-        if Builtins.issubstring(row, key)
-          items = Builtins.filter(Builtins.splitstring(row, "=")) do |s|
-            Ops.greater_than(Builtins.size(s), 0)
-          end
-          if Builtins.size(items) == 2 && Ops.get_string(items, 0, "") == key
-            value = Builtins.deletechars(Ops.get_string(items, 1, ""), "\"")
-          else
-            Builtins.y2warning(
-              "udev items %1 doesn't match the key %2",
-              items,
-              key
-            )
-          end
-        end
-      end
-      value
+      udev_key_value(getUdevFallback, key)
     end
 
     # It replaces a tuple identified by replace_key in current item's udev rule
@@ -432,38 +415,33 @@
     # Note that the tuple is identified by key only. However modification flag 
is
     # set only if value was changed (in case when replace_key == new_key)
     #
+    # It also contain a logic on tuple operators. When the new_key is "NAME"
+    # then assignment operator (=) is used. Otherwise equality operator (==) 
is used.
+    # Thats bcs this function is currently used for touching "NAME", "KERNELS" 
and
+    # "ATTR{address}" keys only
+    #
     # @param replace_key [string] udev key which identifies tuple to be 
replaced
     # @param new_key     [string] new key to by used
     # @param new_val     [string] value for new key
     # @return updated rule when replace_key is found, current rule otherwise
     def ReplaceItemUdev(replace_key, new_key, new_val)
-      new_rule = []
-      # udev syntax distinguishes among others:
       # =    for assignment
       # ==   for equality checks
       operator = new_key == "NAME" ? "=" : "=="
       current_rule = getUdevFallback
+      rule = RemoveKeyFromUdevRule(getUdevFallback, replace_key)
+      new_rule = AddToUdevRule(rule, "#{new_key}#{operator}\"#{new_val}\"")
 
-      return current_rule if !new_key || new_key.empty?
-      return current_rule if !new_val || new_val.empty?
+      log.info("ReplaceItemUdev: new udev rule = #{new_rule}")
 
-      i = current_rule.find_index { |tuple| tuple =~ /#{replace_key}/ }
-      if i
-        # deep_copy is most probably not neccessary because getUdevFallback 
does
-        # deep_copy on return value. However, getUdevFallback will be subect 
of refactoring
-        # so caution is must. Moreover new_rule is also return value so it 
should be
-        # copied anyway
-        new_rule = deep_copy(current_rule)
-        new_rule[i] = "#{new_key}#{operator}\"#{new_val}\""
+      if current_rule.sort != new_rule.sort
+        SetModified()
 
-        SetModified() if current_rule != new_rule
+        Items()[@current]["udev"] = { "net" => {} } if 
!Items()[@current]["udev"]
+        Items()[@current]["udev"]["net"] = new_rule
       end
 
-      log.info("LanItems#ReplaceItemUdev: #{current_rule} -> #{new_rule}")
-
-      Items()[@current]["udev"]["net"] = new_rule
-
-      new_rule
+      deep_copy(new_rule)
     end
 
     # Updates device name.
@@ -1830,7 +1808,7 @@
       devmap["MTU"] = @mtu
       devmap["ETHTOOL_OPTIONS"] = @ethtool_options
       devmap["STARTMODE"] = @startmode
-      devmap["IFPLUGD_PRIORITY"] = @ifplugd_priority.to_i if @startmode == 
"ifplugd"
+      devmap["IFPLUGD_PRIORITY"] = @ifplugd_priority if @startmode == "ifplugd"
       devmap["BOOTPROTO"] = @bootproto
       devmap["_aliases"] = @aliases if @aliases && [email protected]?
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-network-3.1.159/test/Makefile.am 
new/yast2-network-3.1.163/test/Makefile.am
--- old/yast2-network-3.1.159/test/Makefile.am  2016-07-15 10:26:35.000000000 
+0200
+++ new/yast2-network-3.1.163/test/Makefile.am  2016-08-09 18:43:38.000000000 
+0200
@@ -9,6 +9,7 @@
   dns_test.rb \
   edit_nic_name_test.rb \
   firewall_stage1_proposal_test.rb \
+  hardware_test.rb \
   host_test.rb \
   ifroute_test.rb \
   install_inf_convertor_test.rb \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-network-3.1.159/test/hardware_test.rb 
new/yast2-network-3.1.163/test/hardware_test.rb
--- old/yast2-network-3.1.159/test/hardware_test.rb     1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-network-3.1.163/test/hardware_test.rb     2016-08-09 
18:43:38.000000000 +0200
@@ -0,0 +1,44 @@
+#! /usr/bin/env rspec
+
+require_relative "test_helper"
+
+require "yast"
+
+Yast.import "NetworkInterfaces"
+
+class HardwareTestClass < Yast::Module
+  def initialize
+    Yast.include self, "network/lan/hardware.rb"
+  end
+end
+
+describe "#validate_hw" do
+  subject { HardwareTestClass.new }
+
+  let(:valid_name) { "eth0" }
+  let(:long_name) { "verylongcustomnicname123" }
+
+  it "passes for valid names only" do
+    allow(subject).to receive(:devname_from_hw_dialog).and_return valid_name
+
+    expect(subject).to receive(:UsedNicName).and_return false
+    expect(subject.validate_hw(nil, nil)).to be true
+  end
+
+  # bnc#991486
+  it "fails for long names" do
+    allow(subject).to receive(:devname_from_hw_dialog).and_return long_name
+
+    expect(Yast::UI).to receive(:SetFocus)
+    expect(subject).to receive(:UsedNicName).and_return false
+    expect(subject.validate_hw(nil, nil)).to be false
+  end
+
+  it "fails for already used names" do
+    allow(subject).to receive(:devname_from_hw_dialog).and_return valid_name
+    allow(Yast::NetworkInterfaces).to receive(:List).and_return [valid_name]
+
+    expect(Yast::UI).to receive(:SetFocus)
+    expect(subject.validate_hw(nil, nil)).to be false
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-network-3.1.159/test/lan_items_helpers_test.rb 
new/yast2-network-3.1.163/test/lan_items_helpers_test.rb
--- old/yast2-network-3.1.159/test/lan_items_helpers_test.rb    2016-07-15 
10:26:35.000000000 +0200
+++ new/yast2-network-3.1.163/test/lan_items_helpers_test.rb    2016-08-09 
18:43:38.000000000 +0200
@@ -27,14 +27,12 @@
 end
 
 describe "LanItemsClass#delete_dev" do
-  MOCKED_ITEMS_DEL = {
-    0 => {
-      "ifcfg" => "enp0s3"
-    }
-  }.freeze
-
   before(:each) do
-    Yast::LanItems.Items = MOCKED_ITEMS_DEL.dup
+    Yast::LanItems.Items = {
+      0 => {
+        "ifcfg" => "enp0s3"
+      }
+    }
   end
 
   it "removes device config when found" do
@@ -126,3 +124,45 @@
     expect(Yast::LanItems.send(:s390_correct_lladdr, "0a:00:27:00:00:00")).to 
be true
   end
 end
+
+describe "LanItems#GetItemUdev" do
+  def check_GetItemUdev(key, expected_value)
+    expect(Yast::LanItems.GetItemUdev(key)).to eql expected_value
+  end
+
+  context "when current item has an udev rule associated" do
+    BUSID = "0000:00:00.0".freeze
+
+    before(:each) do
+      allow(Yast::LanItems)
+        .to receive(:getCurrentItem)
+        .and_return("udev" => { "net" => ["KERNELS==\"#{BUSID}\""] })
+    end
+
+    it "returns proper value when key exists" do
+      check_GetItemUdev("KERNELS", BUSID)
+    end
+
+    it "returns an empty string when key doesn't exist" do
+      check_GetItemUdev("NAME", "")
+    end
+  end
+
+  context "when current item doesn't have an udev rule associated" do
+    MAC = "00:11:22:33:44:55".freeze
+
+    before(:each) do
+      allow(Yast::LanItems)
+        .to receive(:GetLanItem)
+        .and_return("hwinfo" => { "mac" => MAC }, "ifcfg" => "eth0")
+    end
+
+    it "returns proper value when key exists" do
+      check_GetItemUdev("ATTR{address}", MAC)
+    end
+
+    it "returns an empty string when key doesn't exist" do
+      check_GetItemUdev("KERNELS", "")
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-network-3.1.159/test/udev_test.rb 
new/yast2-network-3.1.163/test/udev_test.rb
--- old/yast2-network-3.1.159/test/udev_test.rb 2016-07-15 10:26:35.000000000 
+0200
+++ new/yast2-network-3.1.163/test/udev_test.rb 2016-08-09 18:43:38.000000000 
+0200
@@ -53,6 +53,23 @@
   end
 end
 
+describe "#udev_rule_key" do
+  let(:rule) { ["KERNELS=\"invalid\"", "KERNEL=\"eth*\"", "NAME=\"eth1\""] }
+
+  it "raises ArgumentError if given rule is empty" do
+    expect { Yast::LanItems.udev_key_value(nil, "KERNEL") }
+      .to raise_error(ArgumentError, "Rule must not be nil when querying a key 
value")
+  end
+
+  it "returns value of the first attribute which matches given key" do
+    expect(Yast::LanItems.udev_key_value(rule, "KERNEL")).to eql("eth*")
+  end
+
+  it "returns an empty string if no rule matches" do
+    expect(Yast::LanItems.udev_key_value(rule, "ATTR{address}")).to eql("")
+  end
+end
+
 describe "NetworkLanUdevInclude#AddToUdevRule" do
   subject(:udev) { NetworkLanComplexUdev.new }
 
@@ -90,6 +107,9 @@
 
   it "replaces triplet in the rule as requested" do
     allow(Yast::LanItems)
+      .to receive(:Items)
+      .and_return(0 => {})
+    allow(Yast::LanItems)
       .to receive(:getUdevFallback)
       .and_return(
         [
@@ -101,12 +121,16 @@
 
     expect(Yast::LanItems).to receive(:SetModified)
 
+    # internally used in ReplaceItemUdev, needed to be able to mock its usage
+    Yast::LanItems.current = 0
+
     updated_rule = Yast::LanItems.ReplaceItemUdev(
       "KERNELS",
       "ATTR{address}",
       "xx:01:02:03:04:05"
     )
     expect(updated_rule).to include "ATTR{address}==\"xx:01:02:03:04:05\""
+    expect(updated_rule).not_to include "KERNELS"
   end
 
   it "do not set modification flag in case of no change" do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-network-3.1.159/test/yapi_network_test.rb 
new/yast2-network-3.1.163/test/yapi_network_test.rb
--- old/yast2-network-3.1.159/test/yapi_network_test.rb 2016-07-15 
10:26:35.000000000 +0200
+++ new/yast2-network-3.1.163/test/yapi_network_test.rb 2016-08-09 
18:43:38.000000000 +0200
@@ -274,6 +274,7 @@
       end
 
       it "returns the correct hash" do
+        allow(lan_items).to receive(:Items).with(no_args).and_return({})
         expect(subject.Read).to eql(config)
       end
     end


Reply via email to