yao 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ba36ff08aa0365694cdd8b503c8f281326757bdd
4
- data.tar.gz: 5eb339c8efba8d3120407cbca1be572ca7caef2f
3
+ metadata.gz: 7de241c1b6e0fd16fbebd77ef168fb35672be6b6
4
+ data.tar.gz: 4985a66290b6ef759ebe5b010d86b94f2355db02
5
5
  SHA512:
6
- metadata.gz: c6c1910d273332de80491414bf07000ba0197b661e834bbd21c389af91b7ee4efe070719ef1a0da4945301d4122ef57acbd349215deb5020a4705ca0c8b25b5c
7
- data.tar.gz: 7740df0df2806e24a2ba621185abacca35c87df2187d367d304de70b1a96847eb20616adb3ceb50a9e81c6513d1dcc05c2e85715d3d434afe8aad21cff10392c
6
+ metadata.gz: 56ba2523368eaf6886d81b250f15e3b80b7c89919eec0e24c286129c991ede9518f10ffaab2400ecf661ebc0a2143114046b0c3c9af3e268b0f15d1ab859dbca
7
+ data.tar.gz: bfad2eef1088c14dc96cbc20a33838b687c8be6d17dbaf42a59d663186a3bd83b3524dd26a84cc41b90e459c5420bd3eda31483bf589f3b3e59b5eaefb4078b6
@@ -20,9 +20,16 @@ Faraday::Request.register_middleware os_token: -> { Faraday::Request::OSToken }
20
20
  class Faraday::Response::OSDumper < Faraday::Response::Middleware
21
21
  def on_complete(env)
22
22
  require 'pp'
23
+
24
+ body = if env.response_headers["content-type"] == "application/json"
25
+ JSON.parse(env.body)
26
+ else
27
+ env.body
28
+ end
29
+
23
30
  params = [
24
31
  env.url.to_s,
25
- JSON.parse(env.body),
32
+ body,
26
33
  env.request_headers,
27
34
  env.response_headers,
28
35
  env.method,
@@ -58,6 +58,15 @@ module Yao::Resources
58
58
  end
59
59
  end
60
60
 
61
+ def with_resources_path(path, &blk)
62
+ original = @resources_path
63
+ @resources_path = path
64
+ result = yield(blk)
65
+ @resources_path = original
66
+
67
+ result
68
+ end
69
+
61
70
  # restful methods
62
71
  def list(query={})
63
72
  json = GET(resources_path, query).body
@@ -7,5 +7,42 @@ module Yao::Resources
7
7
  self.resources_name = "roles"
8
8
  self.resources_path = "/OS-KSADM/roles"
9
9
  self.admin = true
10
+
11
+ class << self
12
+ def get_by_name(name)
13
+ self.list.find {|role| role.name == name }
14
+ end
15
+ alias find_by_name get_by_name
16
+
17
+ def list_for_user(user_name, on:)
18
+ user = Yao::User.get_by_name(user_name)
19
+ tenant = Yao::Tenant.get_by_name(on)
20
+ path = ["tenants", tenant.id, "users", user.id, "roles"].join("/")
21
+
22
+ with_resources_path(path) { self.list }
23
+ end
24
+
25
+ def grant(role_name, to:, on:)
26
+ role = Yao::Role.get_by_name(role_name)
27
+ user = Yao::User.get_by_name(to)
28
+ tenant = Yao::Tenant.get_by_name(on)
29
+
30
+ PUT path_for_grant_revoke(tenant, user, role)
31
+ end
32
+
33
+ def revoke(role_name, from:, on:)
34
+ role = Yao::Role.get_by_name(role_name)
35
+ user = Yao::User.get_by_name(from)
36
+ tenant = Yao::Tenant.get_by_name(on)
37
+
38
+ DELETE path_for_grant_revoke(tenant, user, role)
39
+ end
40
+
41
+ private
42
+
43
+ def path_for_grant_revoke(tenant, user, role)
44
+ ["tenants", tenant.id, "users", user.id, "roles", "OS-KSADM", role.id].join("/")
45
+ end
46
+ end
10
47
  end
11
48
  end
@@ -6,10 +6,11 @@ module Yao::Resources
6
6
  self.resource_name = "tenant"
7
7
  self.resources_name = "tenants"
8
8
  self.admin = true
9
+ self.return_single_on_querying = true
9
10
 
10
11
  class << self
11
12
  def get_by_name(name)
12
- self.get("", name: name)
13
+ self.list(name: name)
13
14
  end
14
15
  alias find_by_name get_by_name
15
16
 
data/lib/yao/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Yao
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yao
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uchio, KONDO
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-04 00:00:00.000000000 Z
11
+ date: 2015-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json