4d92141aa3
Previously, only DEVICE was set in ifcfg-* files. This works fine for the traditional network service under CentOS/RHEL/Fedora, but for NetworkManager we need to have NAME. Fixing the redhat provider to add it as well. Change-Id: Ic29ce07a461913a3b70067ce642b1a03109f164b Resolves: rhbz#1167326
84 lines
1.6 KiB
Ruby
84 lines
1.6 KiB
Ruby
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
|