Class: Yao::Resources::Role

Inherits:
Base
  • Object
show all
Defined in:
lib/yao/resources/role.rb

Instance Attribute Summary

Attributes included from RestfullyAccessible

#service

Class Method Summary collapse

Methods inherited from Base

#[], #[]=, #created, friendly_attributes, #id, #initialize, map_attribute_to_attribute, map_attribute_to_resource, map_attribute_to_resources, #to_hash, #updated

Methods included from RestfullyAccessible

#admin=, #api_version, #api_version=, #as_member, #client, #create, #destroy, extended, #find_by_name, #get, #get!, #list, #resources_path, #resources_path=, #return_single_on_querying, #return_single_on_querying=, #update

Constructor Details

This class inherits a constructor from Yao::Resources::Base

Class Method Details

.find_by_name(name, query = {}) ⇒ Array<Yao::Resources::Role>

override Yao::Resources::RestfullyAccessible#find_by_name This is workaround of keystone versioning v2.0/v3.

Returns:



15
16
17
18
19
20
21
# 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:) ⇒ Faraday::Response

Parameters:

  • role_name (String)
  • to: (String)
  • on: (String)

Returns:

  • (Faraday::Response)


53
54
55
56
57
58
59
60
61
62
63
64
# 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:) ⇒ Array<Yao::Resources::Role>

Parameters:

  • user_name (String)
  • on (String)

Returns:



37
38
39
40
41
42
43
44
45
46
47
# 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_pathString

override Yao::Resources::RestfullyAccessible#resources_path This is workaround of keystone versioning v2.0/v3.

Returns:

  • (String)


26
27
28
29
30
31
32
# 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:) ⇒ Faraday::Response

Parameters:

  • role_name (String)
  • from: (String)
  • on: (String)

Returns:

  • (Faraday::Response)


70
71
72
73
74
75
76
77
78
79
80
81
# 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