Class: Puppet::Provider::Keystone
- Inherits:
-
Openstack
- Object
- Openstack
- Puppet::Provider::Keystone
- Extended by:
- Openstack::Auth
- Defined in:
- lib/puppet/provider/keystone.rb
Constant Summary collapse
- DEFAULT_DOMAIN =
'Default'
- @@default_domain_id =
nil
Class Method Summary collapse
- .auth_endpoint ⇒ Object
- .default_domain ⇒ Object
- .default_domain_changed ⇒ Object
- .default_domain_deprecation_message ⇒ Object
- .default_domain_from_ini_file ⇒ Object
- .default_domain_id ⇒ Object
- .domain_id_from_name(name) ⇒ Object
- .domain_name_from_id(id) ⇒ Object
- .fetch_project(name, domain) ⇒ Object
- .fetch_user(name, domain) ⇒ Object
- .get_auth_endpoint ⇒ Object
- .get_auth_url ⇒ Object
-
.make_full_name(name) ⇒ Object
Prefix with default domain if missing from the name.
- .name_to_resource(name) ⇒ Object
- .project_id_from_name_and_domain_name(name, domain_name) ⇒ Object
- .project_request(service, action, properties = nil, options = {}) ⇒ Object
- .resource_to_name(domain, name, check_for_default = true) ⇒ Object
- .set_domain_for_name(name, domain_name) ⇒ Object
- .system_request(service, action, properties = nil, options = {}) ⇒ Object
- .user_id_from_name_and_domain_name(name, domain_name) ⇒ Object
Instance Method Summary collapse
-
#bool_to_sym(bool) ⇒ Object
Helper functions to use on the pre-validated enabled field.
- #sym_to_bool(sym) ⇒ Object
Class Method Details
.auth_endpoint ⇒ Object
22 23 24 |
# File 'lib/puppet/provider/keystone.rb', line 22 def self.auth_endpoint @auth_endpoint ||= get_auth_endpoint end |
.default_domain ⇒ Object
61 62 63 |
# File 'lib/puppet/provider/keystone.rb', line 61 def self.default_domain DEFAULT_DOMAIN end |
.default_domain_changed ⇒ Object
49 50 51 |
# File 'lib/puppet/provider/keystone.rb', line 49 def self.default_domain_changed default_domain_id != 'default' end |
.default_domain_deprecation_message ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/puppet/provider/keystone.rb', line 53 def self. 'Support for a resource without the domain ' \ 'set is deprecated in Liberty cycle. ' \ 'It will be dropped in the M-cycle. ' \ "Currently using '#{default_domain}' as default domain name " \ "while the default domain id is '#{default_domain_id}'." end |
.default_domain_from_ini_file ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/puppet/provider/keystone.rb', line 26 def self.default_domain_from_ini_file default_domain_from_conf = Puppet::Resource.indirection .find('Keystone_config/identity/default_domain_id') if default_domain_from_conf[:ensure] == :present # get from ini file default_domain_from_conf[:value][0] else nil end rescue nil end |
.default_domain_id ⇒ Object
39 40 41 42 43 44 45 46 47 |
# File 'lib/puppet/provider/keystone.rb', line 39 def self.default_domain_id if @@default_domain_id # cached @@default_domain_id else @@default_domain_id = default_domain_from_ini_file end @@default_domain_id = @@default_domain_id.nil? ? 'default' : @@default_domain_id end |
.domain_id_from_name(name) ⇒ Object
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/puppet/provider/keystone.rb', line 139 def self.domain_id_from_name(name) unless @domain_hash_name list = system_request('domain', 'list') @domain_hash_name = Hash[list.collect{|domain| [domain[:name], domain[:id]]}] end unless @domain_hash_name.include?(name) domain = system_request('domain', 'show', name) if domain && domain.key?(:id) @domain_hash_name[name] = domain[:id] else err("Could not find domain with name [#{name}]") end end @domain_hash_name[name] end |
.domain_name_from_id(id) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/puppet/provider/keystone.rb', line 119 def self.domain_name_from_id(id) unless @domain_hash list = system_request('domain', 'list') if list.nil? err("Could not list domains") else @domain_hash = Hash[list.collect{|domain| [domain[:id], domain[:name]]}] end end unless @domain_hash.include?(id) domain = system_request('domain', 'show', id) if domain && domain.key?(:name) @domain_hash[id] = domain[:name] else err("Could not find domain with id [#{id}]") end end @domain_hash[id] end |
.fetch_project(name, domain) ⇒ Object
155 156 157 158 159 160 161 162 |
# File 'lib/puppet/provider/keystone.rb', line 155 def self.fetch_project(name, domain) domain ||= default_domain system_request('project', 'show', [name, '--domain', domain], {:no_retry_exception_msgs => /No project with a name or ID/}) rescue Puppet::ExecutionFailure => e raise e unless e. =~ /No project with a name or ID/ end |
.fetch_user(name, domain) ⇒ Object
164 165 166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/puppet/provider/keystone.rb', line 164 def self.fetch_user(name, domain) domain ||= default_domain user = system_request('user', 'show', [name, '--domain', domain], {:no_retry_exception_msgs => /No user with a name or ID/}) # The description key is only set if it exists if user and user.key?(:id) and !user.key?(:description) user[:description] = '' end user rescue Puppet::ExecutionFailure => e raise e unless e. =~ /No user with a name or ID/ end |
.get_auth_endpoint ⇒ Object
15 16 17 18 19 20 |
# File 'lib/puppet/provider/keystone.rb', line 15 def self.get_auth_endpoint configs = self.request('configuration', 'show') "#{configs[:'auth.auth_url']}" rescue Puppet::Error::OpenstackAuthInputError nil end |
.get_auth_url ⇒ Object
178 179 180 181 182 183 184 185 186 187 |
# File 'lib/puppet/provider/keystone.rb', line 178 def self.get_auth_url auth_url = nil if ENV['OS_AUTH_URL'] auth_url = ENV['OS_AUTH_URL'].dup elsif auth_url = get_os_vars_from_rcfile(rc_filename)['OS_AUTH_URL'] else auth_url = auth_endpoint end return auth_url end |
.make_full_name(name) ⇒ Object
Prefix with default domain if missing from the name.
87 88 89 |
# File 'lib/puppet/provider/keystone.rb', line 87 def self.make_full_name(name) resource_to_name(*name_to_resource(name), false) end |
.name_to_resource(name) ⇒ Object
76 77 78 79 80 81 82 83 84 |
# File 'lib/puppet/provider/keystone.rb', line 76 def self.name_to_resource(name) uniq = name.split('::') if uniq.count == 1 uniq.insert(0, default_domain) else uniq.reverse! end uniq end |
.project_id_from_name_and_domain_name(name, domain_name) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/puppet/provider/keystone.rb', line 105 def self.project_id_from_name_and_domain_name(name, domain_name) @projects_name ||= {} id_str = "#{name}_#{domain_name}" unless @projects_name.keys.include?(id_str) project = fetch_project(name, domain_name) if project && project.key?(:id) @projects_name[id_str] = project[:id] else err("Could not find project with name [#{name}] and domain [#{domain_name}]") end end @projects_name[id_str] end |
.project_request(service, action, properties = nil, options = {}) ⇒ Object
189 190 191 |
# File 'lib/puppet/provider/keystone.rb', line 189 def self.project_request(service, action, properties=nil, ={}) self.request(service, action, properties, , 'project') end |
.resource_to_name(domain, name, check_for_default = true) ⇒ Object
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/puppet/provider/keystone.rb', line 65 def self.resource_to_name(domain, name, check_for_default = true) raise Puppet::Error, "Domain cannot be nil for project '#{name}'. " \ 'Please report a bug.' if domain.nil? join_str = '::' name_display = [name] unless check_for_default && domain == default_domain name_display << domain end name_display.join(join_str) end |
.set_domain_for_name(name, domain_name) ⇒ Object
197 198 199 200 201 202 203 204 205 206 207 208 209 210 |
# File 'lib/puppet/provider/keystone.rb', line 197 def self.set_domain_for_name(name, domain_name) if domain_name.nil? || domain_name.empty? raise(Puppet::Error, "Missing domain name for resource #{name}") end domain_id = self.domain_id_from_name(domain_name) case domain_id when default_domain_id name when nil name else name << "::#{domain_name}" end end |
.system_request(service, action, properties = nil, options = {}) ⇒ Object
193 194 195 |
# File 'lib/puppet/provider/keystone.rb', line 193 def self.system_request(service, action, properties=nil, ={}) self.request(service, action, properties, , 'system') end |
.user_id_from_name_and_domain_name(name, domain_name) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/puppet/provider/keystone.rb', line 91 def self.user_id_from_name_and_domain_name(name, domain_name) @users_name ||= {} id_str = "#{name}_#{domain_name}" unless @users_name.keys.include?(id_str) user = fetch_user(name, domain_name) if user && user.key?(:id) @users_name[id_str] = user[:id] else err("Could not find user with name [#{name}] and domain [#{domain_name}]") end end @users_name[id_str] end |
Instance Method Details
#bool_to_sym(bool) ⇒ Object
Helper functions to use on the pre-validated enabled field
213 214 215 |
# File 'lib/puppet/provider/keystone.rb', line 213 def bool_to_sym(bool) bool == true ? :true : :false end |
#sym_to_bool(sym) ⇒ Object
217 218 219 |
# File 'lib/puppet/provider/keystone.rb', line 217 def sym_to_bool(sym) sym == :true ? true : false end |