Skip to content

Commit

Permalink
Merge 0db1fe5 into 5fb4d36
Browse files Browse the repository at this point in the history
  • Loading branch information
teclator committed Sep 7, 2021
2 parents 5fb4d36 + 0db1fe5 commit 077b256
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 31 deletions.
7 changes: 7 additions & 0 deletions package/yast2-network.changes
@@ -1,3 +1,10 @@
-------------------------------------------------------------------
Tue Sep 7 07:41:52 UTC 2021 - Knut Anderssen <kanderssen@suse.com>

- 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 <kanderssen@suse.com>

Expand Down
2 changes: 1 addition & 1 deletion package/yast2-network.spec
Expand Up @@ -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
Expand Down
16 changes: 15 additions & 1 deletion src/lib/y2network/ntp_server.rb
Expand Up @@ -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
Expand All @@ -53,6 +54,10 @@ class << self
# @param products [Array<Hash>] List of base products
# @return [Array<NtpServer>] 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 =
Expand All @@ -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

Expand Down
81 changes: 52 additions & 29 deletions test/y2network/ntp_server_test.rb
Expand Up @@ -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
Expand Down

0 comments on commit 077b256

Please sign in to comment.