yao 0.0.6 → 0.1.0
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 +4 -4
- data/lib/yao/client.rb +16 -7
- data/lib/yao/resources/restfully_accessible.rb +43 -7
- data/lib/yao/resources/role.rb +11 -0
- data/lib/yao/resources/tenant.rb +12 -0
- data/lib/yao/resources/user.rb +20 -0
- data/lib/yao/resources.rb +2 -1
- data/lib/yao/token.rb +8 -9
- data/lib/yao/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba36ff08aa0365694cdd8b503c8f281326757bdd
|
4
|
+
data.tar.gz: 5eb339c8efba8d3120407cbca1be572ca7caef2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6c1910d273332de80491414bf07000ba0197b661e834bbd21c389af91b7ee4efe070719ef1a0da4945301d4122ef57acbd349215deb5020a4705ca0c8b25b5c
|
7
|
+
data.tar.gz: 7740df0df2806e24a2ba621185abacca35c87df2187d367d304de70b1a96847eb20616adb3ceb50a9e81c6513d1dcc05c2e85715d3d434afe8aad21cff10392c
|
data/lib/yao/client.rb
CHANGED
@@ -8,24 +8,33 @@ module Yao
|
|
8
8
|
module Client
|
9
9
|
class ClientSet
|
10
10
|
def initialize
|
11
|
-
@pool
|
11
|
+
@pool = {}
|
12
|
+
@admin_pool = {}
|
12
13
|
end
|
13
|
-
attr_reader :pool
|
14
|
+
attr_reader :pool, :admin_pool
|
14
15
|
|
15
16
|
%w(default compute network image metering volume orchestration identity).each do |type|
|
16
17
|
define_method(type) do
|
17
18
|
self.pool[type]
|
18
19
|
end
|
20
|
+
|
21
|
+
define_method("#{type}_admin") do
|
22
|
+
self.admin_pool[type]
|
23
|
+
end
|
19
24
|
end
|
20
25
|
|
21
26
|
def register_endpoints(endpoints, token: nil)
|
22
|
-
endpoints.each_pair do |type,
|
27
|
+
endpoints.each_pair do |type, urls|
|
23
28
|
# XXX: neutron just have v2.0 API and endpoint may not have version prefix
|
24
|
-
if type == "network"
|
25
|
-
|
29
|
+
if type == "network"
|
30
|
+
urls = urls.map {|public_or_admin, url|
|
31
|
+
url = URI.parse(url).path == "/" ? File.join(url, "v2.0") : url
|
32
|
+
[public_or_admin, url]
|
33
|
+
}.to_h
|
26
34
|
end
|
27
35
|
|
28
|
-
self.pool[type]
|
36
|
+
self.pool[type] = Yao::Client.gen_client(urls[:public_url], token: token)
|
37
|
+
self.admin_pool[type] = Yao::Client.gen_client(urls[:admin_url], token: token)
|
29
38
|
end
|
30
39
|
end
|
31
40
|
end
|
@@ -66,7 +75,7 @@ module Yao
|
|
66
75
|
|
67
76
|
def reset_client(new_endpoint=nil)
|
68
77
|
set = ClientSet.new
|
69
|
-
set.register_endpoints("default" =>
|
78
|
+
set.register_endpoints("default" => {public_url: new_endpoint || Yao.config.endpoint})
|
70
79
|
self.default_client = set
|
71
80
|
end
|
72
81
|
end
|
@@ -23,24 +23,60 @@ module Yao::Resources
|
|
23
23
|
@service
|
24
24
|
end
|
25
25
|
|
26
|
+
def admin=(bool)
|
27
|
+
@admin = bool
|
28
|
+
end
|
29
|
+
|
30
|
+
def return_single_on_querying=(bool)
|
31
|
+
@return_single_on_querying = bool
|
32
|
+
end
|
33
|
+
|
34
|
+
def resources_path
|
35
|
+
@resources_path || resources_name
|
36
|
+
end
|
37
|
+
|
38
|
+
def resources_path=(path)
|
39
|
+
@resources_path = path.sub(%r!^\/!, "")
|
40
|
+
end
|
41
|
+
|
26
42
|
def client
|
27
|
-
|
43
|
+
if @admin
|
44
|
+
Yao.default_client.admin_pool[service]
|
45
|
+
else
|
46
|
+
Yao.default_client.pool[service]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def as_member(&blk)
|
51
|
+
if @admin
|
52
|
+
@admin = false
|
53
|
+
result = yield(blk)
|
54
|
+
@admin = true
|
55
|
+
result
|
56
|
+
else
|
57
|
+
yield blk
|
58
|
+
end
|
28
59
|
end
|
29
60
|
|
30
61
|
# restful methods
|
31
62
|
def list(query={})
|
32
|
-
|
63
|
+
json = GET(resources_path, query).body
|
64
|
+
if @return_single_on_querying && !query.empty?
|
65
|
+
return_resource(json[resource_name_in_json])
|
66
|
+
else
|
67
|
+
return_resources(json[resources_name_in_json])
|
68
|
+
end
|
33
69
|
end
|
34
70
|
|
35
71
|
def list_detail(query={})
|
36
|
-
return_resources(GET([
|
72
|
+
return_resources(GET([resources_path, "detail"].join("/"), query).body[resources_name_in_json])
|
37
73
|
end
|
38
74
|
|
39
75
|
def get(id_or_permalink, query={})
|
40
76
|
res = if id_or_permalink =~ /^https?:\/\//
|
41
77
|
GET(id_or_permalink, query)
|
42
78
|
else
|
43
|
-
GET([
|
79
|
+
GET([resources_path, id_or_permalink].join("/"), query)
|
44
80
|
end
|
45
81
|
return_resource(res.body[resource_name_in_json])
|
46
82
|
end
|
@@ -50,7 +86,7 @@ module Yao::Resources
|
|
50
86
|
params = {
|
51
87
|
resource_name_in_json => resource_params
|
52
88
|
}
|
53
|
-
res = POST(
|
89
|
+
res = POST(resources_path) do |req|
|
54
90
|
req.body = params.to_json
|
55
91
|
req.headers['Content-Type'] = 'application/json'
|
56
92
|
end
|
@@ -61,7 +97,7 @@ module Yao::Resources
|
|
61
97
|
params = {
|
62
98
|
resource_name_in_json => resource_params
|
63
99
|
}
|
64
|
-
res = PUT([
|
100
|
+
res = PUT([resources_path, id].join("/")) do |req|
|
65
101
|
req.body = params.to_json
|
66
102
|
req.headers['Content-Type'] = 'application/json'
|
67
103
|
end
|
@@ -69,7 +105,7 @@ module Yao::Resources
|
|
69
105
|
end
|
70
106
|
|
71
107
|
def destroy(id)
|
72
|
-
res = DELETE([
|
108
|
+
res = DELETE([resources_path, id].join("/"))
|
73
109
|
res.body
|
74
110
|
end
|
75
111
|
|
data/lib/yao/resources/tenant.rb
CHANGED
@@ -5,5 +5,17 @@ module Yao::Resources
|
|
5
5
|
self.service = "identity"
|
6
6
|
self.resource_name = "tenant"
|
7
7
|
self.resources_name = "tenants"
|
8
|
+
self.admin = true
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def get_by_name(name)
|
12
|
+
self.get("", name: name)
|
13
|
+
end
|
14
|
+
alias find_by_name get_by_name
|
15
|
+
|
16
|
+
def accessible
|
17
|
+
as_member { self.list }
|
18
|
+
end
|
19
|
+
end
|
8
20
|
end
|
9
21
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Yao::Resources
|
2
|
+
class User < Base
|
3
|
+
friendly_attributes :name, :email, :enabled, :id
|
4
|
+
|
5
|
+
alias enabled? enabled
|
6
|
+
|
7
|
+
self.service = "identity"
|
8
|
+
self.resource_name = "user"
|
9
|
+
self.resources_name = "users"
|
10
|
+
self.admin = true
|
11
|
+
self.return_single_on_querying = true
|
12
|
+
|
13
|
+
class << self
|
14
|
+
def get_by_name(name)
|
15
|
+
self.list(name: name)
|
16
|
+
end
|
17
|
+
alias find_by_name get_by_name
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/yao/resources.rb
CHANGED
@@ -15,7 +15,8 @@ module Yao
|
|
15
15
|
autoload :Port, "yao/resources/port"
|
16
16
|
autoload :Tenant, "yao/resources/tenant"
|
17
17
|
autoload :Host, "yao/resources/host"
|
18
|
-
|
18
|
+
autoload :User, "yao/resources/user"
|
19
|
+
autoload :Role, "yao/resources/role"
|
19
20
|
end
|
20
21
|
|
21
22
|
def self.const_missing(name)
|
data/lib/yao/token.rb
CHANGED
@@ -47,16 +47,15 @@ module Yao
|
|
47
47
|
return unless _endpoints
|
48
48
|
|
49
49
|
_endpoints.each do |endpoint_data|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
@endpoints[key] = value
|
58
|
-
end
|
50
|
+
type = endpoint_data["type"]
|
51
|
+
endpoint = endpoint_data["endpoints"].first
|
52
|
+
urls = {}
|
53
|
+
urls[:public_url] = endpoint["publicURL"] if endpoint["publicURL"]
|
54
|
+
urls[:admin_url] = endpoint["adminURL"] if endpoint["adminURL"]
|
55
|
+
|
56
|
+
@endpoints[type] = urls
|
59
57
|
end
|
58
|
+
|
60
59
|
Yao.default_client.register_endpoints(@endpoints, token: self)
|
61
60
|
end
|
62
61
|
end
|
data/lib/yao/version.rb
CHANGED
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.0
|
4
|
+
version: 0.1.0
|
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
|
+
date: 2015-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -182,11 +182,13 @@ files:
|
|
182
182
|
- lib/yao/resources/network.rb
|
183
183
|
- lib/yao/resources/port.rb
|
184
184
|
- lib/yao/resources/restfully_accessible.rb
|
185
|
+
- lib/yao/resources/role.rb
|
185
186
|
- lib/yao/resources/security_group.rb
|
186
187
|
- lib/yao/resources/security_group_rule.rb
|
187
188
|
- lib/yao/resources/server.rb
|
188
189
|
- lib/yao/resources/subnet.rb
|
189
190
|
- lib/yao/resources/tenant.rb
|
191
|
+
- lib/yao/resources/user.rb
|
190
192
|
- lib/yao/server_error.rb
|
191
193
|
- lib/yao/token.rb
|
192
194
|
- lib/yao/version.rb
|