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