# File lib/iface/config.rb, line 50 def primary result = @files[:primary].select do |file| if !file.static? true elsif file.ip_address.nil? false else ipaddr = IPAddr.new(file.ip_address) Reserved_IP_Ranges.none? { |range| range.include?(ipaddr) } end end case result.size when 0 nil when 1 result.first else raise "Expected 0 or 1 primary files; found #{result.size}" end end
class Iface::Config
Represents a set of ConfigFiles for network interface configuration
Constants
- Reserved_IP_Ranges
Public Class Methods
discover(pattern)
click to toggle source
# File lib/iface/config.rb, line 11 def self.discover(pattern) new.tap do |config| Dir.glob(pattern) do |fullname| File.open(fullname) { |io| config.add(fullname, io) } end end end
new()
click to toggle source
# File lib/iface/config.rb, line 19 def initialize @files = {} @devices = {} end
Public Instance Methods
[](device)
click to toggle source
Returns the `PrimaryFile` for `device`
# File lib/iface/config.rb, line 43 def [](device) @devices[device] end
add(filename, io)
click to toggle source
Adds the given `filename` and `io` and returns self
# File lib/iface/config.rb, line 25 def add(filename, io) file = ConfigFile.create(filename, io) # add to files by type file_type = file.class.file_type_name if @files.key?(file_type) @files[file_type] << file else @files[file_type] = [file] end # add PrimaryFile to devices by device name @devices[file.device] = file if file.is_a?(PrimaryFile) self end
primary()
click to toggle source
Returns the `PrimaryFile` for the primary interface
There should be 0 or 1 of these; else it's an error.