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