class Iface::ConfigFile
Base class for a network interface config file
When reading from an existing file, use `.create`. When creating a config programatically for writing to a file, instantiate one of the subclasses (e.g. `PrimaryFile.new`).
Attributes
device[R]
filename[R]
vars[R]
Public Class Methods
create(filename, io)
click to toggle source
# File lib/iface/config_file.rb, line 22 def self.create(filename, io) fname = File.split(filename).last device, range_num, clone_num = parse_filename(fname) FILE_TYPES.each do |klass| if klass.recognize?(device, range_num, clone_num) return klass.new(filename, device, range_num, clone_num, io) end end raise ArgumentError, "Input not recognized from file #{fname}: #{[device, range_num, clone_num, vars].inspect}" end
file_type_name()
click to toggle source
# File lib/iface/config_file.rb, line 46 def self.file_type_name name.split('::').last[0..-5].decamelize.to_sym if name.match(/File\Z/) end
new(filename, device, _range_num, _clone_num, io)
click to toggle source
# File lib/iface/config_file.rb, line 50 def initialize(filename, device, _range_num, _clone_num, io) @filename = filename @device = device @vars = value_set_class.new(io) end
parse_filename(filename)
click to toggle source
# File lib/iface/config_file.rb, line 35 def self.parse_filename(filename) match = filename.match(/\Aifcfg-(\w+)((-range(\d+))|(:(\d+)))?\Z/) return unless match device, _skip0, _skip1, range_num, _skip2, clone_num = match.captures [device, range_num&.to_i, clone_num&.to_i] end
recognize?(_device, _range_num, _clone_num)
click to toggle source
# File lib/iface/config_file.rb, line 42 def self.recognize?(_device, _range_num, _clone_num) false end
Public Instance Methods
include?(_ip)
click to toggle source
# File lib/iface/config_file.rb, line 60 def include?(_ip) raise NotImplementedError end
static?()
click to toggle source
# File lib/iface/config_file.rb, line 56 def static? raise NotImplementedError end
to_s()
click to toggle source
# File lib/iface/config_file.rb, line 68 def to_s @vars.to_s end
value_set_class()
click to toggle source
# File lib/iface/config_file.rb, line 64 def value_set_class ValueSet end