1 require 'puppet/provider/openstack/credentials'
3 module Puppet::Provider::Openstack::Auth
5 RCFILENAME = "#{ENV['HOME']}/openrc"
7 def get_os_vars_from_env
9 ENV.each { |k,v| env.merge!(k => v) if k =~ /^OS_/ }
13 def get_os_vars_from_rcfile(filename)
15 if File.exists?(filename)
16 File.open(filename).readlines.delete_if{|l| l=~ /^#|^$/ }.each do |line|
17 key, value = line.split('=')
18 key = key.split(' ').last
19 value = value.chomp.gsub(/'/, '')
20 env.merge!(key => value) if key =~ /OS_/
30 def request(service, action, properties=nil)
32 set_credentials(@credentials, get_os_vars_from_env)
33 unless @credentials.set?
35 set_credentials(@credentials, get_os_vars_from_rcfile(rc_filename))
37 unless @credentials.set?
38 raise(Puppet::Error::OpenstackAuthInputError, 'Insufficient credentials to authenticate')
40 super(service, action, properties, @credentials)
43 def set_credentials(creds, env)
44 env.each do |key, val|
45 var = key.sub(/^OS_/,'').downcase