Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package yast2-network for openSUSE:Factory checked in at 2021-06-01 10:33:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-network (Old)
and /work/SRC/openSUSE:Factory/.yast2-network.new.1898 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-network"
Tue Jun 1 10:33:46 2021 rev:454 rq:896337 version:4.4.12
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-network/yast2-network.changes 2021-05-15 23:17:00.164545081 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-network.new.1898/yast2-network.changes 2021-06-01 10:33:59.316458259 +0200
@@ -1,0 +2,14 @@
+Fri May 28 13:51:57 UTC 2021 - Knut Anderssen
+
+- Allow to modify the network IP forwarding configuration defining
+ the defaults in the control file (bsc#1186280)
+- 4.4.12
+
+-------------------------------------------------------------------
+Mon May 24 10:47:46 UTC 2021 - Knut Anderssen
+
+- Fix error when determining the removed interfaces in order to
+ remove their associated routes too (bsc#1186082)
+- 4.4.11
+
+-------------------------------------------------------------------
Old:
----
yast2-network-4.4.10.tar.bz2
New:
----
yast2-network-4.4.12.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-network.spec ++++++
--- /var/tmp/diff_new_pack.XVqhlE/_old 2021-06-01 10:33:59.848459165 +0200
+++ /var/tmp/diff_new_pack.XVqhlE/_new 2021-06-01 10:33:59.852459172 +0200
@@ -17,7 +17,7 @@
Name: yast2-network
-Version: 4.4.10
+Version: 4.4.12
Release: 0
Summary: YaST2 - Network Configuration
License: GPL-2.0-only
++++++ yast2-network-4.4.10.tar.bz2 -> yast2-network-4.4.12.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/package/yast2-network.changes new/yast2-network-4.4.12/package/yast2-network.changes
--- old/yast2-network-4.4.10/package/yast2-network.changes 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/package/yast2-network.changes 2021-05-31 12:26:49.000000000 +0200
@@ -1,4 +1,18 @@
-------------------------------------------------------------------
+Fri May 28 13:51:57 UTC 2021 - Knut Anderssen
+
+- Allow to modify the network IP forwarding configuration defining
+ the defaults in the control file (bsc#1186280)
+- 4.4.12
+
+-------------------------------------------------------------------
+Mon May 24 10:47:46 UTC 2021 - Knut Anderssen
+
+- Fix error when determining the removed interfaces in order to
+ remove their associated routes too (bsc#1186082)
+- 4.4.11
+
+-------------------------------------------------------------------
Wed May 12 16:46:00 UTC 2021 - Knut Anderssen
- Write IP addresses in order preventing an alias to set the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/package/yast2-network.spec new/yast2-network-4.4.12/package/yast2-network.spec
--- old/yast2-network-4.4.10/package/yast2-network.spec 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/package/yast2-network.spec 2021-05-31 12:26:49.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2-network
-Version: 4.4.10
+Version: 4.4.12
Release: 0
Summary: YaST2 - Network Configuration
License: GPL-2.0-only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/src/lib/network/clients/network_proposal.rb new/yast2-network-4.4.12/src/lib/network/clients/network_proposal.rb
--- old/yast2-network-4.4.10/src/lib/network/clients/network_proposal.rb 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/src/lib/network/clients/network_proposal.rb 2021-05-31 12:26:49.000000000 +0200
@@ -46,6 +46,7 @@
textdomain "installation"
settings.refresh_packages
+ settings.apply_defaults
end
def description
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/src/lib/network/clients/save_network.rb new/yast2-network-4.4.12/src/lib/network/clients/save_network.rb
--- old/yast2-network-4.4.10/src/lib/network/clients/save_network.rb 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/src/lib/network/clients/save_network.rb 2021-05-31 12:26:49.000000000 +0200
@@ -296,6 +296,7 @@
if !Mode.autoinst
NetworkAutoconfiguration.instance.configure_dns
+ NetworkAutoconfiguration.instance.configure_routing
configure_network_manager
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/src/lib/network/network_autoconfiguration.rb new/yast2-network-4.4.12/src/lib/network/network_autoconfiguration.rb
--- old/yast2-network-4.4.10/src/lib/network/network_autoconfiguration.rb 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/src/lib/network/network_autoconfiguration.rb 2021-05-31 12:26:49.000000000 +0200
@@ -147,6 +147,12 @@
Host.Write
end
+ def configure_routing
+ return if config.routing == Lan.system_config.routing
+
+ Lan.write_config(only: [:routing])
+ end
+
private
# Makes DHCP setup persistent
@@ -175,7 +181,7 @@
# @param devnames [Array] list of device names
# @return true when changes were successfully applied
def activate_changes(devnames)
- Lan.write_config
+ Lan.write_config(only: [:connections])
reload_config(devnames)
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/src/lib/y2network/autoinst_profile/routing_section.rb new/yast2-network-4.4.12/src/lib/y2network/autoinst_profile/routing_section.rb
--- old/yast2-network-4.4.10/src/lib/y2network/autoinst_profile/routing_section.rb 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/src/lib/y2network/autoinst_profile/routing_section.rb 2021-05-31 12:26:49.000000000 +0200
@@ -82,8 +82,8 @@
def init_from_hashes(hash)
super
ip_forward = hash["ip_forward"]
- @ipv4_forward = hash["ipv4_forward"] || ip_forward
- @ipv6_forward = hash["ipv6_forward"] || ip_forward
+ @ipv4_forward = hash.fetch("ipv4_forward", ip_forward)
+ @ipv6_forward = hash.fetch("ipv6_forward", ip_forward)
@routes = routes_from_hash(hash)
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/src/lib/y2network/interface.rb new/yast2-network-4.4.12/src/lib/y2network/interface.rb
--- old/yast2-network-4.4.10/src/lib/y2network/interface.rb 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/src/lib/y2network/interface.rb 2021-05-31 12:26:49.000000000 +0200
@@ -95,6 +95,11 @@
# https://ruby-doc.org/core-2.3.3/Object.html#method-i-eql-3F
alias_method :eql?, :==
+ # Used by Array or Hash in order to compare equality of elements (bsc#1186082)
+ def hash
+ name.hash
+ end
+
# Complete configuration of the interface
#
# @return [Hash] option, value hash map
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/src/lib/y2network/interfaces_collection.rb new/yast2-network-4.4.12/src/lib/y2network/interfaces_collection.rb
--- old/yast2-network-4.4.10/src/lib/y2network/interfaces_collection.rb 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/src/lib/y2network/interfaces_collection.rb 2021-05-31 12:26:49.000000000 +0200
@@ -150,5 +150,13 @@
def +(other)
self.class.new(to_a + other.to_a)
end
+
+ # Returns a new collection including only the elements that are not in the given collection
+ #
+ # @param other [InterfacesCollection] Other interfaces collection
+ # @return [InterfacesCollection] New interfaces collection
+ def -(other)
+ self.class.new(to_a - other.to_a)
+ end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/src/lib/y2network/proposal_settings.rb new/yast2-network-4.4.12/src/lib/y2network/proposal_settings.rb
--- old/yast2-network-4.4.10/src/lib/y2network/proposal_settings.rb 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/src/lib/y2network/proposal_settings.rb 2021-05-31 12:26:49.000000000 +0200
@@ -33,6 +33,11 @@
# @return [Boolean] network service to be used after the installation
attr_accessor :selected_backend
attr_accessor :virt_bridge_proposal
+ attr_accessor :ipv4_forward
+ attr_accessor :ipv6_forward
+ attr_accessor :defaults_applied
+
+ DEFAULTS = [:ipv4_forward, :ipv6_forward].freeze
# Constructor
def initialize
@@ -45,6 +50,27 @@
@selected_backend = autoinst_backend
@virt_bridge_proposal = autoinst_disabled_proposal? ? false : true
+ @defaults_applied = false
+ end
+
+ # Modifies the proposal according to the given settings
+ #
+ # @param settings [Hash] network default settings to be loaded
+ def modify_defaults(settings = network_section)
+ load_features(settings)
+ @defaults_applied = false
+ end
+
+ # Modifies the current network configuration according to the proposal. It does not touch the
+ # network configuration if the proposal settings were already applied
+ def apply_defaults
+ return if defaults_applied
+ return @defaults_applied = true if DEFAULTS.all? { |o| public_send(o).nil? }
+
+ Yast::Lan.read_config(report: false) unless yast_config
+ yast_config.routing.forward_ipv4 = ipv4_forward unless ipv4_forward.nil?
+ yast_config.routing.forward_ipv6 = ipv6_forward unless ipv6_forward.nil?
+ @defaults_applied = true
end
def current_backend
@@ -164,6 +190,36 @@
private
+ # Convenience method to load some features from a installation control file section
+ #
+ # @param source [Hash] network section to be loaded
+ def load_features(source = network_section)
+ return unless source.is_a?(Hash)
+
+ source.keys.each { |k| load_feature(k, k, source: source) }
+ end
+
+ # Reads a feature from a given hash and assign it to the corresponding object attribute
+ #
+ # @param feature [String, Symbol] feature name to be read
+ # @param to [String, Symbol] attribute name where to store the feature value
+ # @param source [Hash] from where to read the feature
+ def load_feature(feature, to, source: network_section)
+ return unless respond_to?("#{to}=")
+
+ value = source[feature.to_s]
+ public_send("#{to}=", value)
+ end
+
+ # Convenience method to read the control file network section
+ def network_section
+ Yast::ProductFeatures.GetSection("network")
+ end
+
+ def yast_config
+ Yast::Lan.yast_config
+ end
+
def autoinst_backend
auto_config = Yast::Lan.autoinst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/src/lib/y2network/wicked/config_writer.rb new/yast2-network-4.4.12/src/lib/y2network/wicked/config_writer.rb
--- old/yast2-network-4.4.10/src/lib/y2network/wicked/config_writer.rb 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/src/lib/y2network/wicked/config_writer.rb 2021-05-31 12:26:49.000000000 +0200
@@ -73,7 +73,7 @@
end
# Actions needed for removed interfaces
- removed_ifaces = old_config ? old_config.interfaces.to_a - config.interfaces.to_a : []
+ removed_ifaces = old_config ? old_config.interfaces - config.interfaces : []
removed_ifaces.each do |iface|
file = routes_file_for(iface)
file.remove
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/test/save_network_test.rb new/yast2-network-4.4.12/test/save_network_test.rb
--- old/yast2-network-4.4.10/test/save_network_test.rb 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/test/save_network_test.rb 2021-05-31 12:26:49.000000000 +0200
@@ -60,6 +60,7 @@
.and_return(propose_bridge)
allow(Yast::NetworkAutoconfiguration.instance).to receive(:configure_dns)
allow(Yast::NetworkAutoconfiguration.instance).to receive(:configure_hosts)
+ allow(Yast::NetworkAutoconfiguration.instance).to receive(:configure_routing)
allow(Yast::Lan).to receive(:yast_config).and_return(yast_config)
allow(Yast::Lan).to receive(:system_config).and_return(system_config)
allow(Yast::Lan).to receive(:write_config)
@@ -170,12 +171,21 @@
context "if the hosts are not configured by AutoYaST" do
it "configures the /etc/hosts automatically" do
allow(Yast::NetworkAutoYast.instance).to receive(:configure_hosts).and_return(false)
- expect(Yast::NetworkAutoconfiguration.instance).to_not receive(:configure_dns)
+ expect(Yast::NetworkAutoconfiguration.instance).to receive(:configure_hosts)
subject.main
end
end
end
+ context "in case of not written previously" do
+ it "configures dns, hosts and routing according to the proposal" do
+ expect(Yast::NetworkAutoconfiguration.instance).to receive(:configure_dns)
+ expect(Yast::NetworkAutoconfiguration.instance).to receive(:configure_routing)
+ expect(Yast::NetworkAutoconfiguration.instance).to receive(:configure_hosts)
+ subject.main
+ end
+ end
+
context "when the backend is network manager" do
let(:selected_backend) { :network_manager }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/test/y2network/interfaces_collection_test.rb new/yast2-network-4.4.12/test/y2network/interfaces_collection_test.rb
--- old/yast2-network-4.4.10/test/y2network/interfaces_collection_test.rb 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/test/y2network/interfaces_collection_test.rb 2021-05-31 12:26:49.000000000 +0200
@@ -158,4 +158,24 @@
expect(new_collection.to_a).to eq([eth0, br0])
end
end
+
+ describe "#-" do
+ let(:fake_interfaces) { 24.times.map { |i| Y2Network::PhysicalInterface.new("iface#{i}") } }
+ let(:interfaces) do
+ fake_interfaces + [br0, wlan0]
+ end
+
+ let(:other) { Y2Network::InterfacesCollection.new(fake_interfaces[0..18] + [br0]) }
+ let(:other2) { Y2Network::InterfacesCollection.new(fake_interfaces) }
+
+ it "returns a new collection with the interfaces which are only present in the object" do
+ new_collection = collection - other
+ # Using hash comparison
+ expect(new_collection.to_a).to eq(fake_interfaces[19..23] + [wlan0])
+
+ # Usin eql? comparison
+ new_collection -= other2
+ expect(new_collection.to_a).to eq([wlan0])
+ end
+ end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.4.10/test/y2network/proposal_settings_test.rb new/yast2-network-4.4.12/test/y2network/proposal_settings_test.rb
--- old/yast2-network-4.4.10/test/y2network/proposal_settings_test.rb 2021-05-13 11:44:11.000000000 +0200
+++ new/yast2-network-4.4.12/test/y2network/proposal_settings_test.rb 2021-05-31 12:26:49.000000000 +0200
@@ -425,4 +425,70 @@
end
end
end
+
+ describe "#modify_defaults" do
+ let(:settings) { described_class.create_instance }
+ let(:feature) { { "network" => { "ipv4_forward" => true } } }
+
+ context "in case of defined IP forwarding features in the control file" do
+ context "and no specific section is given" do
+ it "uses the profile network section" do
+ expect(settings).to receive(:load_features).with(feature["network"])
+ settings.modify_defaults
+ end
+ end
+
+ it "sets the IPv4 forwarding settings according to the feature value" do
+ settings.modify_defaults
+ expect(settings.ipv4_forward).to eql(true)
+ expect(settings.ipv6_forward).to eql(nil)
+ end
+
+ it "sets the IPv6 forwarding settings according to the feature value" do
+ role_feature = { "network" => { "ipv6_forward" => true } }
+ settings.modify_defaults(role_feature["network"])
+ expect(settings.ipv6_forward).to eql(true)
+ end
+
+ it "sets the modified defaults as not applied" do
+ settings.defaults_applied = true
+ settings.modify_defaults
+ expect(settings.defaults_applied).to eql(false)
+ end
+ end
+ end
+
+ describe "#apply_defaults" do
+ let(:settings) { described_class.create_instance }
+ let(:config) { Y2Network::Config.new(source: "test", routing: routing) }
+ let(:routing) { Y2Network::Routing.new(forward_ipv4: false, forward_ipv6: false, tables: []) }
+ let(:feature) { { "network" => { "ipv4_forward" => true } } }
+
+ before do
+ allow(Yast::Lan).to receive(:yast_config).and_return(config)
+ settings.modify_defaults
+ end
+
+ context "when the network defaults were already applied" do
+ it "does not touch any network configuration" do
+ settings.defaults_applied = true
+ expect(Yast::Lan).to_not receive(:yast_config)
+ settings.apply_defaults
+ end
+ end
+
+ context "when the network defaults has not been applied yet" do
+ it "modifies the current network config with the modified defaults" do
+ expect(routing.forward_ipv4).to eql(false)
+ settings.apply_defaults
+ expect(routing.forward_ipv4).to eql(true)
+ end
+
+ it "sets the modified defaults as already applied" do
+ expect(settings.defaults_applied).to eql(false)
+ settings.apply_defaults
+ expect(settings.defaults_applied).to eql(true)
+ end
+ end
+ end
end