X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fkeystone%2Flib%2Fpuppet%2Fprovider%2Fkeystone.rb;h=849868bcb4c00772379813147044a0c977d0853a;hb=2dc39f2a756f82040d82cba324b21f44fad8ef3f;hp=4e7815abf75f3c595201620fb3affc219740541c;hpb=d4b6110c989169c702f039a4c7dc1b309685bba3;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/keystone/lib/puppet/provider/keystone.rb b/3rdparty/modules/keystone/lib/puppet/provider/keystone.rb index 4e7815abf..849868bcb 100644 --- a/3rdparty/modules/keystone/lib/puppet/provider/keystone.rb +++ b/3rdparty/modules/keystone/lib/puppet/provider/keystone.rb @@ -2,6 +2,7 @@ require 'puppet/util/inifile' require 'puppet/provider/openstack' require 'puppet/provider/openstack/auth' require 'puppet/provider/openstack/credentials' +require 'puppet/provider/keystone/util' class Puppet::Provider::Keystone < Puppet::Provider::Openstack @@ -30,6 +31,31 @@ class Puppet::Provider::Keystone < Puppet::Provider::Openstack @admin_endpoint ||= get_admin_endpoint end + # use the domain in this order: + # 1 - the domain name specified in the resource definition - resource[:domain] + # 2 - the domain name part of the resource name/title e.g. user_name::user_domain + # if passed in by name_and_domain above + # 3 - use the specified default_domain_name + # 4 - lookup the default domain + # 5 - use 'Default' - the "default" default domain if no other one is configured + # Usage: name_and_domain(resource[:name], resource[:domain], default_domain_name) + def self.name_and_domain(namedomstr, domain_from_resource=nil, default_domain_name=nil) + name, domain = Util.split_domain(namedomstr) + ret = [name] + if domain_from_resource + ret << domain_from_resource + elsif domain + ret << domain + elsif default_domain_name + ret << default_domain_name + elsif default_domain + ret << default_domain + else + ret << 'Default' + end + ret + end + def self.admin_token @admin_token ||= get_admin_token end @@ -80,8 +106,8 @@ class Puppet::Provider::Keystone < Puppet::Provider::Openstack def self.request(service, action, properties=nil) super - rescue Puppet::Error::OpenstackAuthInputError => error - request_by_service_token(service, action, error, properties) + rescue Puppet::Error::OpenstackAuthInputError => error + request_by_service_token(service, action, error, properties) end def self.request_by_service_token(service, action, error, properties=nil) @@ -96,6 +122,31 @@ class Puppet::Provider::Keystone < Puppet::Provider::Openstack INI_FILENAME end + def self.default_domain + domain_hash[default_domain_id] + end + + def self.domain_hash + return @domain_hash if @domain_hash + list = request('domain', 'list') + @domain_hash = Hash[list.collect{|domain| [domain[:id], domain[:name]]}] + @domain_hash + end + + def self.domain_name_from_id(id) + domain_hash[id] + end + + def self.default_domain_id + return @default_domain_id if @default_domain_id + if keystone_file and keystone_file['identity'] and keystone_file['identity']['default_domain_id'] + @default_domain_id = "#{keystone_file['identity']['default_domain_id'].strip}" + else + @default_domain_id = 'default' + end + @default_domain_id + end + def self.keystone_file return @keystone_file if @keystone_file if File.exists?(ini_filename)