class Yao::Resources::Role
Public Class Methods
find_by_name(name, query={})
click to toggle source
override Yao::Resources::RestfullyAccessible#find_by_name
This is workaround of keystone versioning v2.0/v3. @return [Array<Yao::Resources::Role>]
Calls superclass method
# File lib/yao/resources/role.rb, line 15 def find_by_name(name, query={}) if api_version_v2? list.select{|r| r.name == name} else super end end
grant(role_name, to:, on:)
click to toggle source
@param role_name [String] @param to [String] @param on [String] @return [Faraday::Response]
# File lib/yao/resources/role.rb, line 53 def grant(role_name, to:, on:) role = Yao::Role.get(role_name) user = Yao::User.get(to) tenant = if api_version_v2? Yao::Tenant.get(on) else Yao::Project.get(on) end # response is "204 Not Content" PUT(path_for_role_resource(tenant, user, role)) end
list_for_user(user_name, on:)
click to toggle source
@param user_name [String] @param on [String] @return [Array<Yao::Resources::Role>]
# File lib/yao/resources/role.rb, line 37 def list_for_user(user_name, on:) user = Yao::User.get(user_name) tenant = if api_version_v2? Yao::Tenant.get(on) else Yao::Project.get(on) end res = GET(path_for_role_resource(tenant, user)) resources_from_json(res.body) end
resources_path()
click to toggle source
override Yao::Resources::RestfullyAccessible#resources_path
This is workaround of keystone versioning v2.0/v3. @return [String]
# File lib/yao/resources/role.rb, line 26 def resources_path if api_version_v2? "OS-KSADM/roles" else resources_name end end
revoke(role_name, from:, on:)
click to toggle source
@param role_name [String] @param from [String] @param on [String] @return [Faraday::Response]
# File lib/yao/resources/role.rb, line 70 def revoke(role_name, from:, on:) role = Yao::Role.get(role_name) user = Yao::User.get(from) tenant = if api_version_v2? Yao::Tenant.get(on) else Yao::Project.get(on) end # response is "204 Not Content" DELETE(path_for_role_resource(tenant, user, role)) end
Private Class Methods
api_version_v2?()
click to toggle source
workaround of keystone versioning v2.0/v3 @return [Bool]
# File lib/yao/resources/role.rb, line 87 def api_version_v2? client.url_prefix.to_s =~ /v2\.0/ end
path_for_role_resource(tenant, user, role = nil)
click to toggle source
@param tenant [String] @param user [String]
# File lib/yao/resources/role.rb, line 93 def path_for_role_resource(tenant, user, role = nil) if api_version_v2? paths = ["tenants", tenant.id, "users", user.id, "roles"] paths += ["OS-KSADM", role.id] if role else paths = ["projects", tenant.id, "users", user.id, "roles"] paths << role.id if role end paths.join("/") end