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
|
begin
basedir = File.expand_path(File.join(__FILE__, '..', '..', '..', '..', '..'))
openstacklib_lib = File.join(basedir, 'openstacklib', 'lib')
$LOAD_PATH.unshift(openstacklib_lib) unless $LOAD_PATH.include?(openstacklib_lib)
rescue => e
Puppet.warning("Failed to set $LOAD_PATH for openstacklib: #{e.message}")
end
require 'puppet/util/inifile'
require 'puppet/provider/openstack'
require 'puppet/provider/openstack/auth'
require 'puppet/provider/openstack/credentials'
class Puppet::Provider::Tempest < Puppet::Provider::Openstack
extend Puppet::Provider::Openstack::Auth
def self.tempest_file
return @tempest_file if @tempest_file
@tempest_file = Puppet::Util::IniConfig::File.new
@tempest_file.read(@file_path)
@tempest_file
end
def self.request(service, action, properties=[], file_path)
@file_path = file_path
begin
super(service, action, properties)
rescue Puppet::Error::OpenstackAuthInputError => error
tempest_request(service, action, error, properties)
end
end
def self.tempest_request(service, action, error, properties=nil)
@credentials.username = tempest_credentials['admin_user']
@credentials.password = tempest_credentials['admin_password']
@credentials.project_name = tempest_credentials['admin_project_name']
@credentials.auth_url = tempest_credentials['auth_endpoint']
if @credentials.version == '3'
@credentials.user_domain_name = tempest_credentials['admin_domain_name']
@credentials.project_domain_name = tempest_credentials['admin_domain_name']
@credentials.auth_url = tempest_credentials['auth_endpoint_v3']
end
raise error unless @credentials.set?
Puppet::Provider::Openstack.request(service, action, properties, @credentials)
end
def self.tempest_credentials
t = {}
t['admin_user'] = tempest_file['auth']['admin_username']
t['admin_password'] = tempest_file['auth']['admin_password']
t['admin_project_name'] = tempest_file['auth']['admin_project_name']
t['auth_endpoint'] = tempest_file['identity']['uri']
t['auth_endpoint_v3'] = tempest_file['identity']['uri_v3']
t['admin_domain_name'] = tempest_file['auth']['admin_domain_name']
return t
end
end
|