Skip to content

Commit

Permalink
Fix IPs read/writing
Browse files Browse the repository at this point in the history
  • Loading branch information
imobachgs committed Jul 31, 2019
1 parent 2a181d1 commit 04eb764
Show file tree
Hide file tree
Showing 7 changed files with 102 additions and 86 deletions.
4 changes: 2 additions & 2 deletions src/lib/y2network/sysconfig/connection_config_readers/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,10 @@ def update_connection_config(_conn)
# @return [Array<Y2Network::ConnectionConfig::IPAdress>] IP addresses configuration
# @see Y2Network::ConnectionConfig::IPConfig
def all_ips
@all_ips ||= file.ipaddrs.map do |id, ip|
@all_ips ||= file.ipaddrs.each_with_object([]) do |(id, ip), all|
next unless ip.is_a?(Y2Network::IPAddress)
ip_address = build_ip(ip, file.prefixlens[id], file.netmasks[id])
Y2Network::ConnectionConfig::IPConfig.new(
all << Y2Network::ConnectionConfig::IPConfig.new(
ip_address,
id: id,
label: file.labels[id],
Expand Down
28 changes: 18 additions & 10 deletions src/lib/y2network/sysconfig/connection_config_writers/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def write(conn)
file.name = conn.description
file.startmode = conn.startmode.to_s
file.ifplugd_priority = conn.startmode.priority if conn.startmode.name == "ifplugd"
write_all_ips(conn.all_ips)
add_ips(conn)
update_file(conn)
end

Expand All @@ -59,16 +59,24 @@ def update_file(_conn)
raise NotImplementedError
end

# Write IP configuration
# Adds IP addresses
#
# @param all_ips [Array<Y2Network::ConnectionConfig::IPConfig>] IPs configuration
def write_all_ips(all_ips)
all_ips.each do |ip_config|
file.ipaddrs[ip_config.id] = ip_config.address
file.labels[ip_config.id] = ip_config.label
file.remote_ipaddrs[ip_config.id] = ip_config.remote_address
file.broadcasts.merge!(ip_config.id => ip_config.broadcast)
end
# @param conn [Y2Network::ConnectionConfig::Base] Connection to take settings from
def add_ips(conn)
file.ipaddrs.clear
ips_to_add = conn.ip_aliases.clone
ips_to_add << conn.ip if conn.ip && !conn.bootproto.dhcp?
ips_to_add.each { |i| add_ip(i) }
end

# Adds a single IP to the file
#
# @param ip [Y2Network::IPAddress] IP address to add
def add_ip(ip)
file.ipaddrs[ip.id] = ip.address
file.labels[ip.id] = ip.label
file.remote_ipaddrs[ip.id] = ip.remote_address
file.broadcasts[ip.id] = ip.broadcast
end
end
end
Expand Down
17 changes: 8 additions & 9 deletions test/y2network/sysconfig/connection_config_writers/dummy_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,14 @@
end

let(:conn) do
instance_double(
Y2Network::ConnectionConfig::Dummy,
name: "dummy1",
interface: "dummy1",
description: "",
bootproto: Y2Network::BootProtocol::STATIC,
all_ips: [ip],
startmode: Y2Network::Startmode.create("auto")
)
Y2Network::ConnectionConfig::Dummy.new.tap do |c|
c.name = "dummy1"
c.interface = "dummy1"
c.description = ""
c.ip = ip
c.bootproto = Y2Network::BootProtocol::STATIC
c.startmode = Y2Network::Startmode.create("auto")
end
end

let(:file) { Y2Network::Sysconfig::InterfaceFile.new(conn.name) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,15 @@
let(:all_ips) { [ip, ip_alias] }

let(:conn) do
instance_double(
Y2Network::ConnectionConfig::Ethernet,
name: "eth0",
interface: "eth0",
description: "Ethernet Card 0",
bootproto: Y2Network::BootProtocol::STATIC,
all_ips: all_ips,
startmode: Y2Network::Startmode.create("auto")
)
Y2Network::ConnectionConfig::Ethernet.new.tap do |c|
c.name = "eth0"
c.interface = "eth0"
c.description = "Ethernet Card 0"
c.bootproto = Y2Network::BootProtocol::STATIC
c.ip = ip
c.ip_aliases = [ip_alias]
c.startmode = Y2Network::Startmode.create("auto")
end
end

let(:file) { Y2Network::Sysconfig::InterfaceFile.find(conn.interface) }
Expand All @@ -89,5 +89,17 @@
labels: { "" => nil, "_0" => "my-label" }
)
end

context "when using dhcp" do
before do
conn.bootproto = Y2Network::BootProtocol::DHCP
end

it "only writes ip aliases" do
handler.write(conn)
expect(file.ipaddrs[""]).to be_nil
expect(file.ipaddrs["_0"]).to eq(ip_alias.address)
end
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -45,16 +45,15 @@
end

let(:conn) do
instance_double(
Y2Network::ConnectionConfig::Infiniband,
name: "ib0",
interface: "ib0",
description: "",
ipoib_mode: Y2Network::IpoibMode::CONNECTED,
all_ips: [ip],
startmode: Y2Network::Startmode.create("auto"),
bootproto: Y2Network::BootProtocol::STATIC
)
Y2Network::ConnectionConfig::Infiniband.new.tap do |c|
c.name = "ib0"
c.interface = "ib0"
c.description = ""
c.ipoib_mode = Y2Network::IpoibMode::CONNECTED
c.ip = ip
c.startmode = Y2Network::Startmode.create("auto")
c.bootproto = Y2Network::BootProtocol::STATIC
end
end

let(:file) { Y2Network::Sysconfig::InterfaceFile.new(conn.name) }
Expand Down
20 changes: 9 additions & 11 deletions test/y2network/sysconfig/connection_config_writers/vlan_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,15 @@
subject(:handler) { described_class.new(file) }

let(:conn) do
instance_double(
Y2Network::ConnectionConfig::Vlan,
name: "eth0.100",
interface: "eth0.100",
description: "",
parent_device: "eth0",
vlan_id: 100,
all_ips: [],
startmode: Y2Network::Startmode.create("auto"),
bootproto: Y2Network::BootProtocol::DHCP
)
Y2Network::ConnectionConfig::Vlan.new.tap do |c|
c.name = "eth0.100"
c.interface = "eth0.100"
c.description = ""
c.parent_device = "eth0"
c.vlan_id = 100
c.startmode = Y2Network::Startmode.create("auto")
c.bootproto = Y2Network::BootProtocol::DHCP
end
end

let(:file) { Y2Network::Sysconfig::InterfaceFile.new(conn.name) }
Expand Down
70 changes: 35 additions & 35 deletions test/y2network/sysconfig/connection_config_writers/wireless_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,18 @@
let(:file) { Y2Network::Sysconfig::InterfaceFile.new("wlan0") }

let(:conn) do
Y2Network::ConnectionConfig::Wireless.new.tap do |conn|
conn.interface = "wlan0"
conn.description = "Wireless Card 0"
conn.startmode = Y2Network::Startmode.create("auto")
conn.bootproto = Y2Network::BootProtocol::STATIC
conn.ip = ip
conn.ip_aliases = [ip_alias]
conn.mode = "managed"
conn.essid = "example_essid"
conn.auth_mode = :open
conn.ap = "00:11:22:33:44:55"
conn.ap_scanmode = "1"
Y2Network::ConnectionConfig::Wireless.new.tap do |c|
c.interface = "wlan0"
c.description = "Wireless Card 0"
c.startmode = Y2Network::Startmode.create("auto")
c.bootproto = Y2Network::BootProtocol::STATIC
c.ip = ip
c.ip_aliases = [ip_alias]
c.mode = "managed"
c.essid = "example_essid"
c.auth_mode = :open
c.ap = "00:11:22:33:44:55"
c.ap_scanmode = "1"
end
end

Expand Down Expand Up @@ -84,15 +84,15 @@

context "WPA-EAP network configuration" do
let(:conn) do
Y2Network::ConnectionConfig::Wireless.new.tap do |conn|
conn.startmode = Y2Network::Startmode.create("auto")
conn.bootproto = Y2Network::BootProtocol::STATIC
conn.mode = "managed"
conn.essid = "example_essid"
conn.auth_mode = "eap"
conn.eap_mode = "PEAP"
conn.essid = "example_essid"
conn.wpa_password = "example_passwd"
Y2Network::ConnectionConfig::Wireless.new.tap do |c|
c.startmode = Y2Network::Startmode.create("auto")
c.bootproto = Y2Network::BootProtocol::STATIC
c.mode = "managed"
c.essid = "example_essid"
c.auth_mode = "eap"
c.eap_mode = "PEAP"
c.essid = "example_essid"
c.wpa_password = "example_passwd"
end
end

Expand All @@ -109,12 +109,12 @@

context "WPA-PSK network configuration" do
let(:conn) do
Y2Network::ConnectionConfig::Wireless.new.tap do |conn|
conn.startmode = Y2Network::Startmode.create("auto")
conn.bootproto = Y2Network::BootProtocol::STATIC
conn.mode = "managed"
conn.auth_mode = "psk"
conn.wpa_psk = "example_psk"
Y2Network::ConnectionConfig::Wireless.new.tap do |c|
c.startmode = Y2Network::Startmode.create("auto")
c.bootproto = Y2Network::BootProtocol::STATIC
c.mode = "managed"
c.auth_mode = "psk"
c.wpa_psk = "example_psk"
end
end

Expand All @@ -129,14 +129,14 @@

context "WEP network configuration" do
let(:conn) do
Y2Network::ConnectionConfig::Wireless.new.tap do |conn|
conn.startmode = Y2Network::Startmode.create("auto")
conn.bootproto = Y2Network::BootProtocol::STATIC
conn.mode = "managed"
conn.auth_mode = "shared"
conn.keys = ["123456", "abcdef"]
conn.key_length = 128
conn.default_key = 1
Y2Network::ConnectionConfig::Wireless.new.tap do |c|
c.startmode = Y2Network::Startmode.create("auto")
c.bootproto = Y2Network::BootProtocol::STATIC
c.mode = "managed"
c.auth_mode = "shared"
c.keys = ["123456", "abcdef"]
c.key_length = 128
c.default_key = 1
end
end

Expand Down

0 comments on commit 04eb764

Please sign in to comment.