From f53562a5e9f3c833751311f6e00259d1b1e5488a Mon Sep 17 00:00:00 2001 From: Knut Anderssen Date: Mon, 6 Sep 2021 17:28:42 +0100 Subject: [PATCH 1/2] Read default ntp servers from control file --- src/lib/y2network/ntp_server.rb | 16 +++++- test/y2network/ntp_server_test.rb | 81 ++++++++++++++++++++----------- 2 files changed, 67 insertions(+), 30 deletions(-) diff --git a/src/lib/y2network/ntp_server.rb b/src/lib/y2network/ntp_server.rb index c4a23a85ff..30ca152fe1 100644 --- a/src/lib/y2network/ntp_server.rb +++ b/src/lib/y2network/ntp_server.rb @@ -30,6 +30,7 @@ module Y2Network # in the future as needed. class NtpServer include Yast2::Equatable + include Yast::Logger # @return [String] Server's hostname attr_reader :hostname @@ -53,6 +54,10 @@ class << self # @param products [Array] List of base products # @return [Array] Default NTP servers def default_servers(products = nil) + (control_servers || product_servers(products)).map { |s| new(s) } + end + + def product_servers(products) base_products = products || Yast::Product.FindBaseProducts host = @@ -62,7 +67,16 @@ def default_servers(products = nil) "suse" end - (0..DEFAULT_SERVERS - 1).map { |i| new("#{i}.#{host}.#{DEFAULT_SUBDOMAIN}") } + log.info "Using ntp product servers (#{host})" + + (0..DEFAULT_SERVERS - 1).map { |i| "#{i}.#{host}.#{DEFAULT_SUBDOMAIN}" } + end + + def control_servers + Yast.import "ProductFeatures" + servers = Yast::ProductFeatures.GetSection("globals")["default_ntp_servers"] + log.info "Using the servers defined in the control file: #{servers.inspect}" + servers end end diff --git a/test/y2network/ntp_server_test.rb b/test/y2network/ntp_server_test.rb index f461caa108..ab66eea69e 100644 --- a/test/y2network/ntp_server_test.rb +++ b/test/y2network/ntp_server_test.rb @@ -23,49 +23,72 @@ describe Y2Network::NtpServer do describe ".default_servers" do + let(:servers) { nil } + let(:globals) { { "default_ntp_servers" => servers } } + before do - allow(Yast::Product).to receive(:FindBaseProducts) - .and_return(products) + allow(Yast::ProductFeatures).to receive(:GetSection).with("globals").and_return(globals) end - context "when running in an openSUSE system" do - let(:products) do - [{ "name" => "openSUSE" }] + context "when defined a list of servers in the control file" do + let(:servers) { ["1.suse.pool.ntp.org", "2.suse.pool.ntp.org"] } + + it "returns the list of defined servers" do + expect(described_class.default_servers.map(&:hostname)).to eql(servers) end - it "returns a set of opensuse.pool.ntp.org servers" do - domain = "opensuse.pool.ntp.org" - expect(described_class.default_servers.map(&:hostname)).to eq( - ["0.#{domain}", "1.#{domain}", "2.#{domain}", "3.#{domain}"] - ) + context "and the list of servers is empty" do + it "returns an empty list" do + expect(described_class.default_servers.map(&:hostname)).to eql(servers) + end end end - context "when not running in an openSUSE system" do - let(:products) do - [{ "name" => "SLES" }] + context "when no defined a list of servers in the control file" do + before do + allow(Yast::Product).to receive(:FindBaseProducts) + .and_return(products) end - it "returns a set of suse.pool.ntp.org servers" do - domain = "suse.pool.ntp.org" - expect(described_class.default_servers.map(&:hostname)).to eq( - ["0.#{domain}", "1.#{domain}", "2.#{domain}", "3.#{domain}"] - ) + context "when running in an openSUSE system" do + let(:products) do + [{ "name" => "openSUSE" }] + end + + it "returns a set of opensuse.pool.ntp.org servers" do + domain = "opensuse.pool.ntp.org" + expect(described_class.default_servers.map(&:hostname)).to eq( + ["0.#{domain}", "1.#{domain}", "2.#{domain}", "3.#{domain}"] + ) + end end - end - context "when a list of base product is given" do - let(:products) do - [{ "name" => "openSUSE" }] + context "when not running in an openSUSE system" do + let(:products) do + [{ "name" => "SLES" }] + end + + it "returns a set of suse.pool.ntp.org servers" do + domain = "suse.pool.ntp.org" + expect(described_class.default_servers.map(&:hostname)).to eq( + ["0.#{domain}", "1.#{domain}", "2.#{domain}", "3.#{domain}"] + ) + end end - it "returns the set of servers for that product" do - domain = "opensuse.pool.ntp.org" - expect(Yast::Product).to_not receive(:FindBaseProducts) - servers = described_class.default_servers(products) - expect(servers.map(&:hostname)).to eq( - ["0.#{domain}", "1.#{domain}", "2.#{domain}", "3.#{domain}"] - ) + context "when a list of base product is given" do + let(:products) do + [{ "name" => "openSUSE" }] + end + + it "returns the set of servers for that product" do + domain = "opensuse.pool.ntp.org" + expect(Yast::Product).to_not receive(:FindBaseProducts) + servers = described_class.default_servers(products) + expect(servers.map(&:hostname)).to eq( + ["0.#{domain}", "1.#{domain}", "2.#{domain}", "3.#{domain}"] + ) + end end end end From 0db1fe53a7f36ba9eeab1b6359eb2b698c8471f8 Mon Sep 17 00:00:00 2001 From: Knut Anderssen Date: Tue, 7 Sep 2021 08:44:35 +0100 Subject: [PATCH 2/2] Bump version & changelog --- package/yast2-network.changes | 7 +++++++ package/yast2-network.spec | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/package/yast2-network.changes b/package/yast2-network.changes index 62c0da2c93..d8ec2df0a2 100644 --- a/package/yast2-network.changes +++ b/package/yast2-network.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Tue Sep 7 07:41:52 UTC 2021 - Knut Anderssen + +- Add support for reading the default NTP servers from the control + file in case of defined (bsc#1180699) +- 4.4.23 + ------------------------------------------------------------------- Fri Jul 30 08:07:09 UTC 2021 - Knut Anderssen diff --git a/package/yast2-network.spec b/package/yast2-network.spec index d71be5c154..910f9441a6 100644 --- a/package/yast2-network.spec +++ b/package/yast2-network.spec @@ -17,7 +17,7 @@ Name: yast2-network -Version: 4.4.22 +Version: 4.4.23 Release: 0 Summary: YaST2 - Network Configuration License: GPL-2.0-only