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, _vars) ⇒ Boolean
Instance Method Summary collapse
- #include?(_ip) ⇒ Boolean
-
#initialize(filename, device, _range_num, _clone_num, vars) ⇒ ConfigFile
constructor
A new instance of ConfigFile.
- #static? ⇒ Boolean
Constructor Details
#initialize(filename, device, _range_num, _clone_num, vars) ⇒ ConfigFile
Returns a new instance of ConfigFile.
51 52 53 54 55 |
# File 'lib/iface/config_file.rb', line 51 def initialize(filename, device, _range_num, _clone_num, vars) @filename = filename @device = device @vars = vars 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 34 |
# 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) vars = ValueSet.new(io) FILE_TYPES.each do |klass| if klass.recognize?(device, range_num, clone_num, vars) return klass.new(filename, device, range_num, clone_num, vars) end end raise ArgumentError, "Input not recognized from file #{fname}: #{[device, range_num, clone_num, vars].inspect}" end |
.file_type_name ⇒ Object
47 48 49 |
# File 'lib/iface/config_file.rb', line 47 def self.file_type_name name.split('::').last[0..-5].decamelize.to_sym if name.match?(/File\Z/) end |
.parse_filename(filename) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/iface/config_file.rb', line 36 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, _vars) ⇒ Boolean
43 44 45 |
# File 'lib/iface/config_file.rb', line 43 def self.recognize?(_device, _range_num, _clone_num, _vars) false end |
Instance Method Details
#include?(_ip) ⇒ Boolean
61 62 63 |
# File 'lib/iface/config_file.rb', line 61 def include?(_ip) raise NotImplementedError end |
#static? ⇒ Boolean
57 58 59 |
# File 'lib/iface/config_file.rb', line 57 def static? raise NotImplementedError end |