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 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
Puppet::Type.type(:vs_ssl).provide(:ovs) do
commands :vsctl => 'ovs-vsctl'
bootstrap_ca_cert = '/etc/openvswitch/cacert.pem'
def singleton_check
if not @resource[:name].eql? 'system'
raise Puppet::Error, "OVS ssl provider only supports singleton instance with name 'system'"
end
end
def parse_ssl_output(filter=false)
output = vsctl('get=ssl').split("\n")
if output.empty?
return false
end
if filter == false
return output
end
output.each do |line|
key, value = line.split(': ').map(&:strip)
if key.eql? filter
return value
end
end
raise Puppet::Error, "Unable to parse ssl output for filter: #{filter} in ssl output: #{output}"
end
def create
singleton_check
unless File.file?(@resource[:key_file])
raise Puppet::Error, "Key file not found: #{@resource[:key_file]}"
end
unless File.file?(@resource[:cert_file])
raise Puppet::Error, "Certificate file not found: #{@resource[:cert_file]}"
end
if @resource[:bootstrap]
vsctl('--', '--bootstrap', 'set-ssl', @resource[:key_file], @resource[:cert_file], bootstrap_ca_cert)
else
unless File.file?(@resource[:ca_file])
raise Puppet::Error, "CA Certificate file not found: #{@resource[:ca_file]}"
end
vsctl('--', 'set-ssl', @resource[:key_file], @resource[:cert_file], @resource[:ca_file])
end
end
def destroy
vsctl('del-ssl')
end
def exists?
singleton_check
output = vsctl('get-ssl')
if output.empty?
return false
else
return true
end
end
def key_file
return parse_ssl_output('Private key')
end
def key_file=(key_file)
destroy
create
end
def cert_file
return parse_ssl_output('Certificate')
end
def cert_file=(cert_file)
destroy
create
end
def ca_file
return parse_ssl_output('CA Certificate')
end
def ca_file=(ca_file)
destroy
create
end
def bootstrap
return parse_ssl_output('Bootstrap')
end
def bootstrap=(bootstrap)
destroy
create
end
end
|