Class: Iface::ConfigFile
- Inherits:
-
Object
- Object
- Iface::ConfigFile
- Defined in:
- lib/iface/config_file.rb
Overview
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`).
Direct Known Subclasses
Instance Attribute Summary collapse
-
#device ⇒ Object
readonly
Returns the value of attribute device.
-
#filename ⇒ Object
readonly
Returns the value of attribute filename.
-
#vars ⇒ Object
readonly
Returns the value of attribute vars.
Class Method Summary collapse
- .create(filename, io) ⇒ Object
- .file_type_name ⇒ Object
- .parse_filename(filename) ⇒ Object
- .recognize?(_device, _range_num, _clone_num) ⇒ Boolean
Instance Method Summary collapse
- #include?(_ip) ⇒ Boolean
-
#initialize(filename, device, _range_num, _clone_num, io) ⇒ ConfigFile
constructor
A new instance of ConfigFile.
- #static? ⇒ Boolean
- #to_s ⇒ Object
- #value_set_class ⇒ Object
Constructor Details
#initialize(filename, device, _range_num, _clone_num, io) ⇒ ConfigFile
Returns a new instance of ConfigFile.
50 51 52 53 54 |
# 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 |
Instance Attribute Details
#device ⇒ Object (readonly)
Returns the value of attribute device.
20 21 22 |
# File 'lib/iface/config_file.rb', line 20 def device @device end |
#filename ⇒ Object (readonly)
Returns the value of attribute filename.
20 21 22 |
# File 'lib/iface/config_file.rb', line 20 def filename @filename end |
#vars ⇒ Object (readonly)
Returns the value of attribute vars.
20 21 22 |
# File 'lib/iface/config_file.rb', line 20 def vars @vars end |
Class Method Details
.create(filename, io) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 |
# 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 ⇒ Object
46 47 48 |
# 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 |
.parse_filename(filename) ⇒ Object
35 36 37 38 39 40 |
# 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) ⇒ Boolean
42 43 44 |
# File 'lib/iface/config_file.rb', line 42 def self.recognize?(_device, _range_num, _clone_num) false end |
Instance Method Details
#include?(_ip) ⇒ Boolean
60 61 62 |
# File 'lib/iface/config_file.rb', line 60 def include?(_ip) raise NotImplementedError end |
#static? ⇒ Boolean
56 57 58 |
# File 'lib/iface/config_file.rb', line 56 def static? raise NotImplementedError end |
#to_s ⇒ Object
68 69 70 |
# File 'lib/iface/config_file.rb', line 68 def to_s @vars.to_s end |
#value_set_class ⇒ Object
64 65 66 |
# File 'lib/iface/config_file.rb', line 64 def value_set_class ValueSet end |