1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
module IFCFG
class OVS
attr_reader :ifcfg
def self.exists?(name)
File.exist?(BASE + name)
end
def self.remove(name)
File.delete(BASE + name)
rescue Errno::ENOENT
end
def initialize(name, seed=nil)
@name = name
@ifcfg = {}
set(seed)
set_key('DEVICE', @name)
set_key('NAME', @name)
set_key('DEVICETYPE', 'ovs')
replace_key('BOOTPROTO', 'OVSBOOTPROTO') if self.class == IFCFG::Bridge
end
def del_key(key)
@ifcfg.delete(key)
end
def key?(key)
@ifcfg.has_key?(key)
end
def key(key)
@ifcfg.has_key?(key)
end
def replace_key(key, new_key)
value = @ifcfg[key]
@ifcfg.delete(key)
set_key(new_key, value)
end
def set(list)
if list != nil && list.class == Hash
list.each { |key, value| set_key(key, value) }
end
end
def set_key(key, value)
@ifcfg.delete_if { |k, v| k == key } if self.key?(key)
@ifcfg.merge!({key => value })
end
def to_s
str = ''
@ifcfg.each { |x, y|
str << "#{x}=#{y}\n"
}
str
end
def save(filename)
File.open(filename, 'w') { |file| file << self.to_s }
end
end
class Bridge < OVS
def initialize(name, template=nil)
super(name, template)
set_key('TYPE', 'OVSBridge')
del_key('HWADDR')
end
end
class Port < OVS
def initialize(name, bridge)
super(name)
set_key('TYPE', 'OVSPort')
set_key('OVS_BRIDGE', bridge)
set_key('ONBOOT', 'yes')
set_key('BOOTPROTO', 'none')
end
end
end
|