try again, with puppetforge modules, correctly included now
[mirror/dsa-puppet.git] / 3rdparty / modules / vswitch / lib / puppet / provider / vs_bridge / ovs.rb
1 require 'puppet'
2
3 Puppet::Type.type(:vs_bridge).provide(:ovs) do
4   commands :vsctl => 'ovs-vsctl'
5   commands :ip    => 'ip'
6
7   def exists?
8     vsctl("br-exists", @resource[:name])
9   rescue Puppet::ExecutionFailure
10     return false
11   end
12
13   def create
14     vsctl('add-br', @resource[:name])
15     ip('link', 'set', @resource[:name], 'up')
16     external_ids = @resource[:external_ids] if @resource[:external_ids]
17   end
18
19   def destroy
20     ip('link', 'set', @resource[:name], 'down')
21     vsctl('del-br', @resource[:name])
22   end
23
24   def _split(string, splitter=',')
25     return Hash[string.split(splitter).map{|i| i.split('=')}]
26   end
27
28   def external_ids
29     result = vsctl('br-get-external-id', @resource[:name])
30     return result.split("\n").join(',')
31   end
32
33   def external_ids=(value)
34     old_ids = _split(external_ids)
35     new_ids = _split(value)
36
37     new_ids.each_pair do |k,v|
38       unless old_ids.has_key?(k)
39         vsctl('br-set-external-id', @resource[:name], k, v)
40       end
41     end
42   end
43 end