File: ifcfg.rb

package info (click to toggle)
puppet-module-vswitch 21.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 596 kB
  • sloc: ruby: 2,189; python: 38; sh: 10; makefile: 10
file content (83 lines) | stat: -rw-r--r-- 1,628 bytes parent folder | download | duplicates (5)
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