It was deprecated 3 years ago when we introduced the logic to use
clouds.yaml [1].
[1] 08bf393ee4
Depends-on: https://review.opendev.org/966472
Change-Id: I4d9a97a58791889bee06143ebb63469d7a5fa8be
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
63 lines
1.7 KiB
Ruby
63 lines
1.7 KiB
Ruby
#require 'puppet/provider/openstack/credentials'
|
|
require File.join(File.dirname(__FILE__), '..','..','..', 'puppet/provider/openstack/credentials')
|
|
|
|
module Puppet::Provider::Openstack::Auth
|
|
|
|
CLOUDSFILENAMES = [
|
|
# This allows overrides by users
|
|
"/etc/openstack/puppet/clouds.yaml",
|
|
# This is created by puppet-keystone
|
|
"/etc/openstack/puppet/admin-clouds.yaml",
|
|
]
|
|
|
|
def get_os_vars_from_env
|
|
env = {}
|
|
ENV.each { |k,v| env.merge!(k => v) if k =~ /^OS_/ }
|
|
return env
|
|
end
|
|
|
|
def get_os_vars_from_cloudsfile(scope)
|
|
cloudsfile = clouds_filenames.detect { |f| File.exist? f}
|
|
unless cloudsfile.nil?
|
|
{
|
|
'OS_CLOUD' => scope,
|
|
'OS_CLIENT_CONFIG_FILE' => cloudsfile
|
|
}
|
|
else
|
|
{}
|
|
end
|
|
end
|
|
|
|
def clouds_filenames
|
|
CLOUDSFILENAMES
|
|
end
|
|
|
|
def request(service, action, properties=nil, options={}, scope='project')
|
|
properties ||= []
|
|
|
|
# First, check environments
|
|
set_credentials(@credentials, get_os_vars_from_env)
|
|
|
|
unless @credentials.set? and (!@credentials.scope_set? or @credentials.scope == scope)
|
|
# Then look for clouds.yaml
|
|
@credentials.unset
|
|
clouds_env = get_os_vars_from_cloudsfile(scope)
|
|
if ! clouds_env.empty?
|
|
set_credentials(@credentials, clouds_env)
|
|
end
|
|
end
|
|
|
|
unless @credentials.set? and (!@credentials.scope_set? or @credentials.scope == scope)
|
|
raise(Puppet::Error::OpenstackAuthInputError, 'Insufficient credentials to authenticate')
|
|
end
|
|
super(service, action, properties, @credentials, options)
|
|
end
|
|
|
|
def set_credentials(creds, env)
|
|
env.each do |key, val|
|
|
var = key.sub(/^OS_/,'').downcase
|
|
creds.set(var, val)
|
|
end
|
|
end
|
|
end
|