From 91ab8dff28a866fa1dcbe4109d631ef4ea9693df Mon Sep 17 00:00:00 2001 From: Josef Reidinger Date: Mon, 15 Jul 2019 15:53:00 +0200 Subject: [PATCH 1/2] make type for interface config builder mandatory --- src/include/network/lan/complex.rb | 6 +----- src/include/network/lan/wizards.rb | 5 ++--- src/lib/y2network/interface_config_builder.rb | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/include/network/lan/complex.rb b/src/include/network/lan/complex.rb index 8d550e2da..0f1fc2acd 100644 --- a/src/include/network/lan/complex.rb +++ b/src/include/network/lan/complex.rb @@ -535,9 +535,7 @@ def input_done?(ret) true end - def MainDialog(init_tab, builder:) - @builder = builder - + def MainDialog(init_tab) caption = _("Network Settings") widget_descr = { "tab" => CWMTab.CreateWidget( @@ -588,8 +586,6 @@ def MainDialog(init_tab, builder:) break if input_done?(ret) end - @builder = nil - ret end diff --git a/src/include/network/lan/wizards.rb b/src/include/network/lan/wizards.rb index a3fa97181..90be78697 100644 --- a/src/include/network/lan/wizards.rb +++ b/src/include/network/lan/wizards.rb @@ -119,10 +119,9 @@ def LanAutoSequence(mode) end def MainSequence(mode) - iface_builder = Y2Network::InterfaceConfigBuilder.new aliases = { - "global" => -> { MainDialog("global", builder: iface_builder) }, - "overview" => -> { MainDialog("overview", builder: iface_builder) } + "global" => -> { MainDialog("global") }, + "overview" => -> { MainDialog("overview") } } start = "overview" diff --git a/src/lib/y2network/interface_config_builder.rb b/src/lib/y2network/interface_config_builder.rb index 0edc04d70..55a233c8e 100644 --- a/src/lib/y2network/interface_config_builder.rb +++ b/src/lib/y2network/interface_config_builder.rb @@ -51,7 +51,7 @@ def self.for(type) # Constructor # # Load with reasonable defaults - def initialize(type: nil) + def initialize(type:) @type = type @config = init_device_config({}) @s390_config = init_device_s390_config({}) From 432a8bec22780c27a46d81ed67a76c88e1611e8a Mon Sep 17 00:00:00 2001 From: Josef Reidinger Date: Mon, 15 Jul 2019 16:32:16 +0200 Subject: [PATCH 2/2] use new type everywhere --- src/lib/y2network/dialogs/add_interface.rb | 2 +- src/lib/y2network/interface.rb | 2 +- src/lib/y2network/interface_config_builder.rb | 29 +++++++----- .../{bond.rb => bonding.rb} | 4 +- .../{br.rb => bridge.rb} | 15 ++++--- .../interface_config_builders/dummy.rb | 2 +- .../{ib.rb => infiniband.rb} | 4 +- .../interface_config_builders/vlan.rb | 2 +- src/lib/y2network/interface_type.rb | 44 ++++++++++++------- .../sysconfig/connection_config_reader.rb | 14 ++++-- .../{eth.rb => ethernet.rb} | 2 +- .../{wlan.rb => wireless.rb} | 2 +- src/lib/y2network/sysconfig/interface_file.rb | 4 +- .../y2network/sysconfig/interfaces_reader.rb | 9 +++- src/lib/y2network/widgets/boot_protocol.rb | 4 +- test/bond_test.rb | 2 +- test/bridge_test.rb | 2 +- test/cmdline_test.rb | 1 + test/default_route_test.rb | 4 +- test/y2network/dialogs/edit_interface_test.rb | 2 +- .../interface_config_builder_test.rb | 11 +++-- .../{bond_test.rb => bonding_test.rb} | 10 ++--- .../{br_test.rb => bridge_test.rb} | 10 ++--- .../{ib_test.rb => infiniband_test.rb} | 10 ++--- .../interface_config_builders/vlan_test.rb | 5 ++- test/y2network/sequences/interface_test.rb | 4 +- .../connection_config_reader_test.rb | 18 ++++---- .../{eth_test.rb => ethernet_test.rb} | 4 +- .../{wlan_test.rb => wireless_test.rb} | 4 +- .../widgets/additional_addresses_test.rb | 2 +- test/y2network/widgets/address_tab_test.rb | 2 +- .../y2network/widgets/bond_slaves_tab_test.rb | 2 +- test/y2network/widgets/bridge_ports_test.rb | 4 +- .../widgets/bridge_slaves_tab_test.rb | 2 +- test/y2network/widgets/firewall_zone_test.rb | 3 +- test/y2network/widgets/general_tab_test.rb | 3 +- test/y2network/widgets/hardware_tab_test.rb | 2 +- .../widgets/ifplugd_priority_test.rb | 3 +- test/y2network/widgets/interface_name_test.rb | 6 +-- test/y2network/widgets/kernel_module_test.rb | 4 +- 40 files changed, 143 insertions(+), 116 deletions(-) rename src/lib/y2network/interface_config_builders/{bond.rb => bonding.rb} (96%) rename src/lib/y2network/interface_config_builders/{br.rb => bridge.rb} (86%) rename src/lib/y2network/interface_config_builders/{ib.rb => infiniband.rb} (90%) rename src/lib/y2network/sysconfig/connection_config_readers/{eth.rb => ethernet.rb} (98%) rename src/lib/y2network/sysconfig/connection_config_readers/{wlan.rb => wireless.rb} (99%) rename test/y2network/interface_config_builders/{bond_test.rb => bonding_test.rb} (64%) rename test/y2network/interface_config_builders/{br_test.rb => bridge_test.rb} (73%) rename test/y2network/interface_config_builders/{ib_test.rb => infiniband_test.rb} (76%) rename test/y2network/sysconfig/connection_config_readers/{eth_test.rb => ethernet_test.rb} (91%) rename test/y2network/sysconfig/connection_config_readers/{wlan_test.rb => wireless_test.rb} (97%) diff --git a/src/lib/y2network/dialogs/add_interface.rb b/src/lib/y2network/dialogs/add_interface.rb index 7de237c8f..48625e60e 100644 --- a/src/lib/y2network/dialogs/add_interface.rb +++ b/src/lib/y2network/dialogs/add_interface.rb @@ -53,7 +53,7 @@ def run end # TODO: use factory to get proper builder - builder = InterfaceConfigBuilder.for(@type_widget.result) + builder = InterfaceConfigBuilder.for(InterfaceType.from_short_name(@type_widget.result)) proposed_name = Yast::LanItems.new_type_devices(@type_widget.result, 1).first builder.name = proposed_name Yast::NetworkInterfaces.Name = proposed_name diff --git a/src/lib/y2network/interface.rb b/src/lib/y2network/interface.rb index 6a0f6af0f..c19a96f80 100644 --- a/src/lib/y2network/interface.rb +++ b/src/lib/y2network/interface.rb @@ -27,7 +27,7 @@ class Interface attr_accessor :name # @return [String] Interface description attr_accessor :description - # @return [Symbol] Interface type + # @return [InterfaceType] Interface type attr_accessor :type attr_reader :configured attr_reader :hardware diff --git a/src/lib/y2network/interface_config_builder.rb b/src/lib/y2network/interface_config_builder.rb index 55a233c8e..f269a45ea 100644 --- a/src/lib/y2network/interface_config_builder.rb +++ b/src/lib/y2network/interface_config_builder.rb @@ -33,11 +33,13 @@ class InterfaceConfigBuilder # Load fresh instance of interface config builder for given type. # It can be specialized type or generic, depending if specialized is needed. - # @param type [String] type of device - # TODO: it would be nice to have type of device as Enum and not pure string + # @param type [Y2Network::InterfaceType,String] type of device or its short name def self.for(type) - require "y2network/interface_config_builders/#{type}" - InterfaceConfigBuilders.const_get(type.to_s.capitalize).new + if !type.is_a?(InterfaceType) + type = InterfaceType.from_short_name(type) or raise "Unknown type #{type.inspect}" + end + require "y2network/interface_config_builders/#{type.file_name}" + InterfaceConfigBuilders.const_get(type.class_name).new rescue LoadError => e log.info "Specialed builder for #{type} not found. Fallbacking to default. #{e.inspect}" new(type: type) @@ -51,6 +53,7 @@ def self.for(type) # Constructor # # Load with reasonable defaults + # @param type [Y2Network::InterfaceType] type of device def initialize(type:) @type = type @config = init_device_config({}) @@ -95,7 +98,7 @@ def save # do not modify anything # @return [Array] def proposed_names - Yast::LanItems.new_type_devices(type, NEW_DEVICES_COUNT) + Yast::LanItems.new_type_devices(type.short_name, NEW_DEVICES_COUNT) end def valid_name?(name) @@ -175,13 +178,15 @@ def device_sysconfig config = @config.dup # filter out options which are not needed - config.delete_if { |k, _| k =~ /WIRELESS.*/ } if type != "wlan" - config.delete_if { |k, _| k =~ /BONDING.*/ } if type != "bond" - config.delete_if { |k, _| k =~ /BRIDGE.*/ } if type != "br" - config.delete_if { |k, _| k =~ /TUNNEL.*/ } if !["tun", "tap"].include?(type) - config.delete_if { |k, _| k == "VLAN_ID" || k == "ETHERDEVICE" } if type != "vlan" - config.delete_if { |k, _| k == "IPOIB_MODE" } if type != "ib" - config.delete_if { |k, _| k == "INTERFACE" } if type != "dummy" + config.delete_if { |k, _| k =~ /WIRELESS.*/ } if type != InterfaceType::WIRELESS + config.delete_if { |k, _| k =~ /BONDING.*/ } if type != InterfaceType::BONDING + config.delete_if { |k, _| k =~ /BRIDGE.*/ } if type != InterfaceType::BRIDGE + if ![InterfaceType::TUN, InterfaceType::TAP].include?(type) + config.delete_if { |k, _| k =~ /TUNNEL.*/ } + end + config.delete_if { |k, _| k == "VLAN_ID" || k == "ETHERDEVICE" } if type != InterfaceType::VLAN + config.delete_if { |k, _| k == "IPOIB_MODE" } if type != InterfaceType::INFINIBAND + config.delete_if { |k, _| k == "INTERFACE" } if type != InterfaceType::DUMMY config.delete_if { |k, _| k == "IFPLUGD_PRIORITY" } if config["STARTMODE"] != "ifplugd" config.merge("_aliases" => lan_items_format_aliases) diff --git a/src/lib/y2network/interface_config_builders/bond.rb b/src/lib/y2network/interface_config_builders/bonding.rb similarity index 96% rename from src/lib/y2network/interface_config_builders/bond.rb rename to src/lib/y2network/interface_config_builders/bonding.rb index 4adf13fa2..fdbb50641 100644 --- a/src/lib/y2network/interface_config_builders/bond.rb +++ b/src/lib/y2network/interface_config_builders/bonding.rb @@ -4,11 +4,11 @@ module Y2Network module InterfaceConfigBuilders - class Bond < InterfaceConfigBuilder + class Bonding < InterfaceConfigBuilder include Yast::Logger def initialize - super(type: "bond") + super(type: InterfaceType::BONDING) # fill mandatory bond option @config["BOND_SLAVES"] = [] diff --git a/src/lib/y2network/interface_config_builders/br.rb b/src/lib/y2network/interface_config_builders/bridge.rb similarity index 86% rename from src/lib/y2network/interface_config_builders/br.rb rename to src/lib/y2network/interface_config_builders/bridge.rb index 955297cd0..cb2f01bd7 100644 --- a/src/lib/y2network/interface_config_builders/br.rb +++ b/src/lib/y2network/interface_config_builders/bridge.rb @@ -6,11 +6,11 @@ module Y2Network module InterfaceConfigBuilders - class Br < InterfaceConfigBuilder + class Bridge < InterfaceConfigBuilder include Yast::Logger def initialize - super(type: "br") + super(type: InterfaceType::BRIDGE) end def already_configured?(devices) @@ -31,7 +31,12 @@ def interfaces Config.find(:yast).interfaces end - NONBRIDGEABLE_TYPES = ["br", "tun", "usb", "wlan"].freeze + NONBRIDGEABLE_TYPES = [ + InterfaceType::BRIDGE, + InterfaceType::TUN, + InterfaceType::USB, + InterfaceType::WIRELESS + ].freeze NONBRIDGEABLE_STARTMODE = ["nfsroot", "ifplugd"].freeze # Checks whether an interface can be bridged in particular bridge @@ -56,8 +61,8 @@ def bridgeable?(iface) end # exclude interfaces of type unusable for bridge - if NONBRIDGEABLE_TYPES.include?(iface.type.short_name) - log.debug("Excluding (#{iface.name}) - is #{iface.type.short_name}") + if NONBRIDGEABLE_TYPES.include?(iface.type) + log.debug("Excluding (#{iface.name}) - is #{iface.type.name}") return false end diff --git a/src/lib/y2network/interface_config_builders/dummy.rb b/src/lib/y2network/interface_config_builders/dummy.rb index 964c228b9..d197aa90e 100644 --- a/src/lib/y2network/interface_config_builders/dummy.rb +++ b/src/lib/y2network/interface_config_builders/dummy.rb @@ -5,7 +5,7 @@ module Y2Network module InterfaceConfigBuilders class Dummy < InterfaceConfigBuilder def initialize - super(type: "dummy") + super(type: InterfaceType::DUMMY) end # It does all operations needed for sucessfull configuration export. diff --git a/src/lib/y2network/interface_config_builders/ib.rb b/src/lib/y2network/interface_config_builders/infiniband.rb similarity index 90% rename from src/lib/y2network/interface_config_builders/ib.rb rename to src/lib/y2network/interface_config_builders/infiniband.rb index 34d3a3829..0ce048773 100644 --- a/src/lib/y2network/interface_config_builders/ib.rb +++ b/src/lib/y2network/interface_config_builders/infiniband.rb @@ -5,9 +5,9 @@ module Y2Network module InterfaceConfigBuilders - class Ib < InterfaceConfigBuilder + class Infiniband < InterfaceConfigBuilder def initialize - super(type: "ib") + super(type: InterfaceType::INFINIBAND) end attr_writer :ipoib_mode diff --git a/src/lib/y2network/interface_config_builders/vlan.rb b/src/lib/y2network/interface_config_builders/vlan.rb index 60f8c317a..529d0dfab 100644 --- a/src/lib/y2network/interface_config_builders/vlan.rb +++ b/src/lib/y2network/interface_config_builders/vlan.rb @@ -8,7 +8,7 @@ module Y2Network module InterfaceConfigBuilders class Vlan < InterfaceConfigBuilder def initialize - super(type: "vlan") + super(type: InterfaceType::VLAN) end def etherdevice diff --git a/src/lib/y2network/interface_type.rb b/src/lib/y2network/interface_type.rb index e024b9a0f..6d4f1dba3 100644 --- a/src/lib/y2network/interface_type.rb +++ b/src/lib/y2network/interface_type.rb @@ -28,10 +28,10 @@ class InterfaceType include Yast::I18n class << self - # @param const_name [String] Constant name # @param name [String] Type name ("Ethernet", "Wireless", etc.) # @param short_name [String] Short name used in legacy code - def define_type(const_name, name, short_name) + def define_type(name, short_name) + const_name = name.upcase const_set(const_name, new(name, short_name)) all << const_get(const_name) end @@ -73,21 +73,33 @@ def to_human_string _(name) end + # Returns name for specialized class for this type e.g. for reader, write or builder + # @return [String] + def class_name + name.capitalize + end + + # Returns name for file without suffix for this type e.g. for reader, write or builder + # @return [String] + def file_name + name.downcase + end + # Define types constants - define_type "ETHERNET", N_("Ethernet"), "eth" - define_type "WIRELESS", N_("Wireless"), "wlan" - define_type "INFINIBAND", N_("Infiniband"), "ib" - define_type "BONDING", N_("Bonding"), "bond" - define_type "BRIDGE", N_("Bridge"), "br" - define_type "DUMMY", N_("Dummy"), "dummy" - define_type "VLAN", N_("VLAN"), "vlan" - define_type "TUN", N_("TUN"), "tun" - define_type "TAP", N_("TAP"), "tap" - define_type "USB", N_("USB"), "usb" + define_type N_("Ethernet"), "eth" + define_type N_("Wireless"), "wlan" + define_type N_("Infiniband"), "ib" + define_type N_("Bonding"), "bond" + define_type N_("Bridge"), "br" + define_type N_("Dummy"), "dummy" + define_type N_("VLAN"), "vlan" + define_type N_("TUN"), "tun" + define_type N_("TAP"), "tap" + define_type N_("USB"), "usb" # s390 - define_type "QETH", N_("QETH"), "qeth" - define_type "LCS", N_("LCS"), "lcs" - define_type "HIPERSOCKETS", N_("HiperSockets"), "hsi" - define_type "FICON", N_("FICON"), "ficon" + define_type N_("QETH"), "qeth" + define_type N_("LCS"), "lcs" + define_type N_("HiperSockets"), "hsi" + define_type N_("FICON"), "ficon" end end diff --git a/src/lib/y2network/sysconfig/connection_config_reader.rb b/src/lib/y2network/sysconfig/connection_config_reader.rb index 08b57f899..8d0704f31 100644 --- a/src/lib/y2network/sysconfig/connection_config_reader.rb +++ b/src/lib/y2network/sysconfig/connection_config_reader.rb @@ -28,7 +28,7 @@ class ConnectionConfigReader # Constructor # # @param name [String] Interface name - # @param type [Symbol,nil] Interface type (:eth, :wlan, etc.); if the type is unknown, + # @param type [InterfaceType, string, nil] Interface type; if the type is unknown, # `nil` can be used and it will be guessed from the configuration file is possible. # # @return [Y2Network::ConnectionConfig::Base] @@ -43,11 +43,17 @@ def read(name, type) # Returns the class to handle a given interface type # - # @param type [Symbol] + # @param type [String, InterfaceType, nil] interface type or its short name # @return [Class] A class which belongs to the ConnectionConfigReaders module def find_handler_class(type) - require "y2network/sysconfig/connection_config_readers/#{type}" - ConnectionConfigReaders.const_get(type.to_s.capitalize) + return unless type + + if !type.is_a?(InterfaceType) + t = InterfaceType.from_short_name(type) or raise "Unknown type #{type.inspect} #{type.class.inspect}" + type = t + end + require "y2network/sysconfig/connection_config_readers/#{type.file_name}" + ConnectionConfigReaders.const_get(type.class_name) rescue LoadError, NameError => e log.info "Unknown connection type: '#{type}'. " \ "Connection handler could not be loaded: #{e.message}" diff --git a/src/lib/y2network/sysconfig/connection_config_readers/eth.rb b/src/lib/y2network/sysconfig/connection_config_readers/ethernet.rb similarity index 98% rename from src/lib/y2network/sysconfig/connection_config_readers/eth.rb rename to src/lib/y2network/sysconfig/connection_config_readers/ethernet.rb index ca0280947..2162310fe 100644 --- a/src/lib/y2network/sysconfig/connection_config_readers/eth.rb +++ b/src/lib/y2network/sysconfig/connection_config_readers/ethernet.rb @@ -24,7 +24,7 @@ module Sysconfig module ConnectionConfigReaders # This class is able to build a ConnectionConfig::Ethernet object given a # Sysconfig::InterfaceFile object. - class Eth + class Ethernet # @return [Y2Network::Sysconfig::InterfaceFile] attr_reader :file diff --git a/src/lib/y2network/sysconfig/connection_config_readers/wlan.rb b/src/lib/y2network/sysconfig/connection_config_readers/wireless.rb similarity index 99% rename from src/lib/y2network/sysconfig/connection_config_readers/wlan.rb rename to src/lib/y2network/sysconfig/connection_config_readers/wireless.rb index 372e6a41e..7963ad20b 100644 --- a/src/lib/y2network/sysconfig/connection_config_readers/wlan.rb +++ b/src/lib/y2network/sysconfig/connection_config_readers/wireless.rb @@ -24,7 +24,7 @@ module Sysconfig module ConnectionConfigReaders # This class is able to build a ConnectionConfig::Wireless object given a # Sysconfig::InterfaceFile object. - class Wlan + class Wireless # @return [Y2Network::Sysconfig::InterfaceFile] attr_reader :file diff --git a/src/lib/y2network/sysconfig/interface_file.rb b/src/lib/y2network/sysconfig/interface_file.rb index 7427c7e29..cdd1b0b00 100644 --- a/src/lib/y2network/sysconfig/interface_file.rb +++ b/src/lib/y2network/sysconfig/interface_file.rb @@ -158,9 +158,9 @@ def fetch(key) # # @todo Borrow logic from https://github.com/yast/yast-yast2/blob/6f7a789d00cd03adf62e00da34720f326f0e0633/library/network/src/modules/NetworkInterfaces.rb#L291 # - # @return [Symbol] Interface's type depending on the file values + # @return [String] Interface's type depending on the file values def type - :eth + "eth" end private diff --git a/src/lib/y2network/sysconfig/interfaces_reader.rb b/src/lib/y2network/sysconfig/interfaces_reader.rb index 5f79593cd..4dfde7f8a 100644 --- a/src/lib/y2network/sysconfig/interfaces_reader.rb +++ b/src/lib/y2network/sysconfig/interfaces_reader.rb @@ -19,6 +19,7 @@ require "yast" require "y2network/interface" +require "y2network/interface_type" require "y2network/virtual_interface" require "y2network/physical_interface" require "y2network/fake_interface" @@ -108,7 +109,13 @@ def build_physical_interface(data) Y2Network::PhysicalInterface.new(data["dev_name"]).tap do |iface| iface.description = data["name"] type = data["type"] || Yast::NetworkInterfaces.GetTypeFromSysfs(iface.name) - iface.type = type.nil? ? :eth : type.to_sym + iface.type = case type + when nil then InterfaceType::ETHERNET + when ::String then InterfaceType.from_short_name(type) + when InterfaceType then type + else + raise "Unexpected value in interface type #{type.class.inspect}:#{type.inspect}" + end end end diff --git a/src/lib/y2network/widgets/boot_protocol.rb b/src/lib/y2network/widgets/boot_protocol.rb index 486879609..f7a948eab 100644 --- a/src/lib/y2network/widgets/boot_protocol.rb +++ b/src/lib/y2network/widgets/boot_protocol.rb @@ -1,6 +1,8 @@ require "yast" require "cwm/custom_widget" +require "y2network/interface_type" + Yast.import "DNS" Yast.import "Hostname" Yast.import "IP" @@ -87,7 +89,7 @@ def contents def ibft_available? # IBFT only for eth, is it correct? - @settings.type == "eth" + @settings.type == Y2Network::InterfaceType::ETHERNET end def init diff --git a/test/bond_test.rb b/test/bond_test.rb index b7672fbf5..05dad7050 100755 --- a/test/bond_test.rb +++ b/test/bond_test.rb @@ -65,7 +65,7 @@ # for selecting bridgable devices but imports interfaces # from LanItems internally let(:config) { Y2Network::Config.new(source: :test) } - let(:builder) { Y2Network::InterfaceConfigBuilder.for("bond") } + let(:builder) { Y2Network::InterfaceConfigBuilder.for(Y2Network::InterfaceType::BONDING) } before do allow(Y2Network::Config) diff --git a/test/bridge_test.rb b/test/bridge_test.rb index ac6579c1e..cc19ba252 100755 --- a/test/bridge_test.rb +++ b/test/bridge_test.rb @@ -103,7 +103,7 @@ # for selecting bridgable devices but imports interfaces # from LanItems internally let(:config) { Y2Network::Config.new(source: :test) } - let(:builder) { Y2Network::InterfaceConfigBuilder.for("br") } + let(:builder) { Y2Network::InterfaceConfigBuilder.for(Y2Network::InterfaceType::BRIDGE) } it "returns list of slave candidates" do allow(Y2Network::Config) diff --git a/test/cmdline_test.rb b/test/cmdline_test.rb index f53f4b3b4..b340e43c0 100644 --- a/test/cmdline_test.rb +++ b/test/cmdline_test.rb @@ -86,6 +86,7 @@ def initialize before do allow(Yast::LanItems).to receive(:Items).and_return(items) + allow(Yast::LanItems).to receive(:GetCurrentType).and_return("eth") richtext = "test
  • item1
" allow(subject).to receive(:getConfigList).and_return(["0" => { "rich_descr" => richtext }]) end diff --git a/test/default_route_test.rb b/test/default_route_test.rb index 284ff224d..4bd239f50 100755 --- a/test/default_route_test.rb +++ b/test/default_route_test.rb @@ -3,6 +3,7 @@ require_relative "test_helper" require "network/install_inf_convertor" +require "y2network/interface_config_builder" describe "Yast::LanItemsClass" do subject { Yast::LanItems } @@ -101,9 +102,8 @@ subject.Read subject.current = 0 - builder = Y2Network::InterfaceConfigBuilder.new + builder = Y2Network::InterfaceConfigBuilder.for("eth") builder.name = subject.GetCurrentName() - builder.type = subject.GetCurrentType() subject.SetItem(builder: builder) subject.Commit(builder) diff --git a/test/y2network/dialogs/edit_interface_test.rb b/test/y2network/dialogs/edit_interface_test.rb index 71d43e2bf..3e65116af 100644 --- a/test/y2network/dialogs/edit_interface_test.rb +++ b/test/y2network/dialogs/edit_interface_test.rb @@ -23,7 +23,7 @@ require "y2network/dialogs/edit_interface" describe Y2Network::Dialogs::EditInterface do - subject { described_class.new(Y2Network::InterfaceConfigBuilder.new) } + subject { described_class.new(Y2Network::InterfaceConfigBuilder.for("eth")) } include_examples "CWM::Dialog" end diff --git a/test/y2network/interface_config_builder_test.rb b/test/y2network/interface_config_builder_test.rb index 5b1f263dd..fe537ad1c 100644 --- a/test/y2network/interface_config_builder_test.rb +++ b/test/y2network/interface_config_builder_test.rb @@ -7,8 +7,7 @@ describe Y2Network::InterfaceConfigBuilder do subject(:config_builder) do - res = Y2Network::InterfaceConfigBuilder.new - res.type = "eth" + res = Y2Network::InterfaceConfigBuilder.for("eth") res.name = "eth0" res end @@ -16,17 +15,17 @@ describe ".for" do context "specialized class for given type exists" do it "returns new instance of that class" do - expect(described_class.for("ib").class.to_s).to eq "Y2Network::InterfaceConfigBuilders::Ib" + expect(described_class.for("ib").class.to_s).to eq "Y2Network::InterfaceConfigBuilders::Infiniband" end end context "specialized class for given type does NOT exist" do it "returns instance of InterfaceConfigBuilder" do - expect(described_class.for("generic-device").class).to eq described_class + expect(described_class.for("eth").class).to eq described_class end - it "sets type to passed type" do - expect(described_class.for("dummy").type).to eq "dummy" + it "sets type to passed type as InterfaceType" do + expect(described_class.for("dummy").type).to eq Y2Network::InterfaceType::DUMMY end end end diff --git a/test/y2network/interface_config_builders/bond_test.rb b/test/y2network/interface_config_builders/bonding_test.rb similarity index 64% rename from test/y2network/interface_config_builders/bond_test.rb rename to test/y2network/interface_config_builders/bonding_test.rb index 6021ed892..5c8653490 100644 --- a/test/y2network/interface_config_builders/bond_test.rb +++ b/test/y2network/interface_config_builders/bonding_test.rb @@ -3,9 +3,9 @@ require_relative "../../test_helper" require "yast" -require "y2network/interface_config_builders/bond" +require "y2network/interface_config_builders/bonding" -describe Y2Network::InterfaceConfigBuilders::Bond do +describe Y2Network::InterfaceConfigBuilders::Bonding do let(:config) { Y2Network::Config.new(source: :test) } before do @@ -16,14 +16,14 @@ end subject(:config_builder) do - res = Y2Network::InterfaceConfigBuilders::Bond.new + res = Y2Network::InterfaceConfigBuilders::Bonding.new res.name = "bond0" res end describe "#type" do - it "returns 'bond'" do - expect(subject.type).to eq "bond" + it "returns bonding interface type" do + expect(subject.type).to eq Y2Network::InterfaceType::BONDING end end diff --git a/test/y2network/interface_config_builders/br_test.rb b/test/y2network/interface_config_builders/bridge_test.rb similarity index 73% rename from test/y2network/interface_config_builders/br_test.rb rename to test/y2network/interface_config_builders/bridge_test.rb index 71208261e..c04edbf1a 100644 --- a/test/y2network/interface_config_builders/br_test.rb +++ b/test/y2network/interface_config_builders/bridge_test.rb @@ -3,9 +3,9 @@ require_relative "../../test_helper" require "yast" -require "y2network/interface_config_builders/br" +require "y2network/interface_config_builders/bridge" -describe Y2Network::InterfaceConfigBuilders::Br do +describe Y2Network::InterfaceConfigBuilders::Bridge do let(:config) { Y2Network::Config.new(source: :test) } before do @@ -16,14 +16,14 @@ end subject(:config_builder) do - res = Y2Network::InterfaceConfigBuilders::Br.new + res = Y2Network::InterfaceConfigBuilders::Bridge.new res.name = "br0" res end describe "#type" do - it "returns 'br'" do - expect(subject.type).to eq "br" + it "returns bridge type" do + expect(subject.type).to eq Y2Network::InterfaceType::BRIDGE end end diff --git a/test/y2network/interface_config_builders/ib_test.rb b/test/y2network/interface_config_builders/infiniband_test.rb similarity index 76% rename from test/y2network/interface_config_builders/ib_test.rb rename to test/y2network/interface_config_builders/infiniband_test.rb index 062f5493a..9d3f2aa28 100644 --- a/test/y2network/interface_config_builders/ib_test.rb +++ b/test/y2network/interface_config_builders/infiniband_test.rb @@ -3,18 +3,18 @@ require_relative "../../test_helper" require "yast" -require "y2network/interface_config_builders/ib" +require "y2network/interface_config_builders/infiniband" -describe Y2Network::InterfaceConfigBuilders::Ib do +describe Y2Network::InterfaceConfigBuilders::Infiniband do subject(:config_builder) do - res = Y2Network::InterfaceConfigBuilders::Ib.new + res = Y2Network::InterfaceConfigBuilders::Infiniband.new res.name = "ib0" res end describe "#type" do - it "returns 'ib'" do - expect(subject.type).to eq "ib" + it "returns infiniband interface type" do + expect(subject.type).to eq Y2Network::InterfaceType::INFINIBAND end end diff --git a/test/y2network/interface_config_builders/vlan_test.rb b/test/y2network/interface_config_builders/vlan_test.rb index 0f304c538..eb20b1abc 100644 --- a/test/y2network/interface_config_builders/vlan_test.rb +++ b/test/y2network/interface_config_builders/vlan_test.rb @@ -4,6 +4,7 @@ require "yast" require "y2network/interface_config_builders/vlan" +require "y2network/interface_type" describe Y2Network::InterfaceConfigBuilders::Vlan do subject(:config_builder) do @@ -13,8 +14,8 @@ end describe "#type" do - it "returns 'vlan'" do - expect(subject.type).to eq "vlan" + it "returns vlan type" do + expect(subject.type).to eq Y2Network::InterfaceType::VLAN end end diff --git a/test/y2network/sequences/interface_test.rb b/test/y2network/sequences/interface_test.rb index e3a89138a..0067b9436 100644 --- a/test/y2network/sequences/interface_test.rb +++ b/test/y2network/sequences/interface_test.rb @@ -26,9 +26,7 @@ describe Y2Network::Sequences::Interface do let(:builder) do - res = Y2Network::InterfaceConfigBuilder.new - res.type = "eth" - res + Y2Network::InterfaceConfigBuilder.for("eth") end describe "#edit" do diff --git a/test/y2network/sysconfig/connection_config_reader_test.rb b/test/y2network/sysconfig/connection_config_reader_test.rb index c218092c4..17b77c5e5 100644 --- a/test/y2network/sysconfig/connection_config_reader_test.rb +++ b/test/y2network/sysconfig/connection_config_reader_test.rb @@ -20,28 +20,28 @@ require_relative "../../test_helper" require "y2network/sysconfig/connection_config_reader" -require "y2network/sysconfig/connection_config_readers/wlan" +require "y2network/sysconfig/connection_config_readers/wireless" require "y2network/physical_interface" describe Y2Network::Sysconfig::ConnectionConfigReader do subject(:reader) { described_class.new } describe "#read" do - let(:interface) { instance_double(Y2Network::PhysicalInterface, name: "wlan0", type: :wlan) } + let(:interface) { instance_double(Y2Network::PhysicalInterface, name: "wlan0", type: "wlan") } let(:interface_file) do - instance_double(Y2Network::Sysconfig::InterfaceFile, type: :wlan).as_null_object + instance_double(Y2Network::Sysconfig::InterfaceFile, type: "wlan").as_null_object end let(:connection_config) { double("connection_config") } let(:handler) do instance_double( - Y2Network::Sysconfig::ConnectionConfigReaders::Wlan, + Y2Network::Sysconfig::ConnectionConfigReaders::Wireless, connection_config: connection_config ) end before do allow(reader).to receive(:require).and_call_original - allow(Y2Network::Sysconfig::ConnectionConfigReaders::Wlan).to receive(:new) + allow(Y2Network::Sysconfig::ConnectionConfigReaders::Wireless).to receive(:new) .and_return(handler) allow(Y2Network::Sysconfig::InterfaceFile).to receive(:new) .and_return(interface_file) @@ -49,8 +49,8 @@ it "uses the appropiate handler" do expect(reader).to receive(:require) - .with("y2network/sysconfig/connection_config_readers/wlan") - conn = reader.read(interface, :wlan) + .with("y2network/sysconfig/connection_config_readers/wireless") + conn = reader.read(interface, "wlan") expect(conn).to be(connection_config) end @@ -65,8 +65,8 @@ instance_double(Y2Network::Sysconfig::InterfaceFile, type: :foo) end - it "returns nil" do - expect(reader.read(interface, :foo)).to be_nil + it "raise exception" do + expect { reader.read(interface, :null) }.to raise_error(RuntimeError) end end end diff --git a/test/y2network/sysconfig/connection_config_readers/eth_test.rb b/test/y2network/sysconfig/connection_config_readers/ethernet_test.rb similarity index 91% rename from test/y2network/sysconfig/connection_config_readers/eth_test.rb rename to test/y2network/sysconfig/connection_config_readers/ethernet_test.rb index b9eb124bc..85984e241 100644 --- a/test/y2network/sysconfig/connection_config_readers/eth_test.rb +++ b/test/y2network/sysconfig/connection_config_readers/ethernet_test.rb @@ -18,10 +18,10 @@ # find current contact information at www.suse.com. require_relative "../../../test_helper" -require "y2network/sysconfig/connection_config_readers/eth" +require "y2network/sysconfig/connection_config_readers/ethernet" require "y2network/sysconfig/interface_file" -describe Y2Network::Sysconfig::ConnectionConfigReaders::Eth do +describe Y2Network::Sysconfig::ConnectionConfigReaders::Ethernet do subject(:handler) { described_class.new(file) } let(:address) { IPAddr.new("192.168.122.1") } diff --git a/test/y2network/sysconfig/connection_config_readers/wlan_test.rb b/test/y2network/sysconfig/connection_config_readers/wireless_test.rb similarity index 97% rename from test/y2network/sysconfig/connection_config_readers/wlan_test.rb rename to test/y2network/sysconfig/connection_config_readers/wireless_test.rb index 655c49c19..642b23ec4 100644 --- a/test/y2network/sysconfig/connection_config_readers/wlan_test.rb +++ b/test/y2network/sysconfig/connection_config_readers/wireless_test.rb @@ -18,10 +18,10 @@ # find current contact information at www.suse.com. require_relative "../../../test_helper" -require "y2network/sysconfig/connection_config_readers/wlan" +require "y2network/sysconfig/connection_config_readers/wireless" require "y2network/sysconfig/interface_file" -describe Y2Network::Sysconfig::ConnectionConfigReaders::Wlan do +describe Y2Network::Sysconfig::ConnectionConfigReaders::Wireless do subject(:handler) { described_class.new(file) } let(:address) { IPAddr.new("192.168.122.1") } diff --git a/test/y2network/widgets/additional_addresses_test.rb b/test/y2network/widgets/additional_addresses_test.rb index ab3808e56..c34232880 100644 --- a/test/y2network/widgets/additional_addresses_test.rb +++ b/test/y2network/widgets/additional_addresses_test.rb @@ -24,7 +24,7 @@ require "y2network/interface_config_builder" describe Y2Network::Widgets::AdditionalAddresses do - subject { described_class.new(Y2Network::InterfaceConfigBuilder.new) } + subject { described_class.new(Y2Network::InterfaceConfigBuilder.for("eth")) } include_examples "CWM::CustomWidget" diff --git a/test/y2network/widgets/address_tab_test.rb b/test/y2network/widgets/address_tab_test.rb index dc168a108..8749161e0 100644 --- a/test/y2network/widgets/address_tab_test.rb +++ b/test/y2network/widgets/address_tab_test.rb @@ -24,7 +24,7 @@ require "y2network/interface_config_builder" describe Y2Network::Widgets::AddressTab do - subject { described_class.new(Y2Network::InterfaceConfigBuilder.new) } + subject { described_class.new(Y2Network::InterfaceConfigBuilder.for("eth")) } include_examples "CWM::Tab" end diff --git a/test/y2network/widgets/bond_slaves_tab_test.rb b/test/y2network/widgets/bond_slaves_tab_test.rb index a27e7a633..891372443 100644 --- a/test/y2network/widgets/bond_slaves_tab_test.rb +++ b/test/y2network/widgets/bond_slaves_tab_test.rb @@ -24,7 +24,7 @@ require "y2network/interface_config_builder" describe Y2Network::Widgets::BondSlavesTab do - subject { described_class.new(Y2Network::InterfaceConfigBuilder.new) } + subject { described_class.new(Y2Network::InterfaceConfigBuilder.for("bond")) } include_examples "CWM::Tab" end diff --git a/test/y2network/widgets/bridge_ports_test.rb b/test/y2network/widgets/bridge_ports_test.rb index 4dd32a648..6006064e9 100644 --- a/test/y2network/widgets/bridge_ports_test.rb +++ b/test/y2network/widgets/bridge_ports_test.rb @@ -21,10 +21,10 @@ require "cwm/rspec" require "y2network/widgets/bridge_ports" -require "y2network/interface_config_builders/br" +require "y2network/interface_config_builders/bridge" describe Y2Network::Widgets::BridgePorts do - let(:builder) { Y2Network::InterfaceConfigBuilders::Br.new } + let(:builder) { Y2Network::InterfaceConfigBuilders::Bridge.new } subject { described_class.new(builder) } before do diff --git a/test/y2network/widgets/bridge_slaves_tab_test.rb b/test/y2network/widgets/bridge_slaves_tab_test.rb index ea5a3c6a9..27cc819f5 100644 --- a/test/y2network/widgets/bridge_slaves_tab_test.rb +++ b/test/y2network/widgets/bridge_slaves_tab_test.rb @@ -24,7 +24,7 @@ require "y2network/interface_config_builder" describe Y2Network::Widgets::BridgeSlavesTab do - subject { described_class.new(Y2Network::InterfaceConfigBuilder.new) } + subject { described_class.new(Y2Network::InterfaceConfigBuilder.for("br")) } include_examples "CWM::Tab" end diff --git a/test/y2network/widgets/firewall_zone_test.rb b/test/y2network/widgets/firewall_zone_test.rb index 793bee7df..0273e6a2b 100755 --- a/test/y2network/widgets/firewall_zone_test.rb +++ b/test/y2network/widgets/firewall_zone_test.rb @@ -8,8 +8,7 @@ describe Y2Network::Widgets::FirewallZone do let(:builder) do - res = Y2Network::InterfaceConfigBuilder.new - res.type = "eth" + res = Y2Network::InterfaceConfigBuilder.for("eth") res.name = "eth0" res end diff --git a/test/y2network/widgets/general_tab_test.rb b/test/y2network/widgets/general_tab_test.rb index 5e24a43eb..070b62759 100644 --- a/test/y2network/widgets/general_tab_test.rb +++ b/test/y2network/widgets/general_tab_test.rb @@ -25,8 +25,7 @@ describe Y2Network::Widgets::GeneralTab do let(:builder) do - res = Y2Network::InterfaceConfigBuilder.new - res.type = "eth" + res = Y2Network::InterfaceConfigBuilder.for("eth") res.name = "eth0" res end diff --git a/test/y2network/widgets/hardware_tab_test.rb b/test/y2network/widgets/hardware_tab_test.rb index 38d4325e1..906acf523 100644 --- a/test/y2network/widgets/hardware_tab_test.rb +++ b/test/y2network/widgets/hardware_tab_test.rb @@ -24,7 +24,7 @@ require "y2network/interface_config_builder" describe Y2Network::Widgets::HardwareTab do - subject { described_class.new(Y2Network::InterfaceConfigBuilder.new) } + subject { described_class.new(Y2Network::InterfaceConfigBuilder.for("eth")) } include_examples "CWM::Tab" end diff --git a/test/y2network/widgets/ifplugd_priority_test.rb b/test/y2network/widgets/ifplugd_priority_test.rb index 39adb172c..1a1218dff 100644 --- a/test/y2network/widgets/ifplugd_priority_test.rb +++ b/test/y2network/widgets/ifplugd_priority_test.rb @@ -25,8 +25,7 @@ describe Y2Network::Widgets::IfplugdPriority do let(:builder) do - res = Y2Network::InterfaceConfigBuilder.new - res.type = "eth" + res = Y2Network::InterfaceConfigBuilder.for("eth") res["IFPLUGD_PRIORITY"] = "50" res end diff --git a/test/y2network/widgets/interface_name_test.rb b/test/y2network/widgets/interface_name_test.rb index 1b0f8bed5..122726385 100644 --- a/test/y2network/widgets/interface_name_test.rb +++ b/test/y2network/widgets/interface_name_test.rb @@ -24,11 +24,7 @@ require "y2network/interface_config_builder" describe Y2Network::Widgets::InterfaceName do - let(:builder) do - res = Y2Network::InterfaceConfigBuilder.new - res.type = "eth" - res - end + let(:builder) { Y2Network::InterfaceConfigBuilder.for("eth") } subject { described_class.new(builder) } include_examples "CWM::ComboBox" diff --git a/test/y2network/widgets/kernel_module_test.rb b/test/y2network/widgets/kernel_module_test.rb index b47f29aae..b3389aba3 100644 --- a/test/y2network/widgets/kernel_module_test.rb +++ b/test/y2network/widgets/kernel_module_test.rb @@ -25,9 +25,7 @@ describe Y2Network::Widgets::KernelModule do let(:builder) do - res = Y2Network::InterfaceConfigBuilder.new - res.type = "eth" - res + Y2Network::InterfaceConfigBuilder.for("eth") end subject { described_class.new(builder) }