yao 0.7.0 → 0.8.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.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +15 -0
  3. data/.github/workflows/ubuntu-rvm.yml +29 -0
  4. data/.github/workflows/ubuntu.yml +22 -0
  5. data/Gemfile +10 -2
  6. data/README.md +3 -3
  7. data/lib/yao/resources.rb +5 -0
  8. data/lib/yao/resources/action.rb +1 -1
  9. data/lib/yao/resources/compute_services.rb +46 -0
  10. data/lib/yao/resources/flavor.rb +1 -10
  11. data/lib/yao/resources/floating_ip.rb +6 -6
  12. data/lib/yao/resources/hypervisor.rb +6 -12
  13. data/lib/yao/resources/keypair.rb +22 -3
  14. data/lib/yao/resources/meter.rb +6 -7
  15. data/lib/yao/resources/network.rb +3 -1
  16. data/lib/yao/resources/network_associationable.rb +14 -0
  17. data/lib/yao/resources/old_sample.rb +5 -7
  18. data/lib/yao/resources/port.rb +6 -6
  19. data/lib/yao/resources/port_associationable.rb +14 -0
  20. data/lib/yao/resources/project.rb +16 -0
  21. data/lib/yao/resources/resource.rb +12 -7
  22. data/lib/yao/resources/restfully_accessible.rb +72 -35
  23. data/lib/yao/resources/role.rb +73 -18
  24. data/lib/yao/resources/router.rb +3 -1
  25. data/lib/yao/resources/sample.rb +1 -5
  26. data/lib/yao/resources/security_group.rb +3 -1
  27. data/lib/yao/resources/server.rb +4 -9
  28. data/lib/yao/resources/subnet.rb +5 -5
  29. data/lib/yao/resources/tenant.rb +1 -1
  30. data/lib/yao/resources/tenant_associationable.rb +17 -0
  31. data/lib/yao/resources/user.rb +15 -4
  32. data/lib/yao/resources/volume.rb +1 -10
  33. data/lib/yao/version.rb +1 -1
  34. data/test/config.rb +1 -0
  35. data/test/support/auth_stub.rb +1 -0
  36. data/test/support/test_yao_resource.rb +49 -0
  37. data/test/yao/resources/test_aggregates.rb +1 -4
  38. data/test/yao/resources/test_base.rb +1 -1
  39. data/test/yao/resources/test_compute_services.rb +118 -0
  40. data/test/yao/resources/test_flavor.rb +15 -9
  41. data/test/yao/resources/test_floating_ip.rb +24 -19
  42. data/test/yao/resources/test_host.rb +1 -1
  43. data/test/yao/resources/test_hypervisor.rb +17 -10
  44. data/test/yao/resources/test_image.rb +1 -1
  45. data/test/yao/resources/test_keypair.rb +3 -6
  46. data/test/yao/resources/test_loadbalancer.rb +1 -3
  47. data/test/yao/resources/test_loadbalancer_healthmonitor.rb +1 -3
  48. data/test/yao/resources/test_loadbalancer_listener.rb +1 -5
  49. data/test/yao/resources/test_loadbalancer_pool.rb +1 -3
  50. data/test/yao/resources/test_loadbalancer_pool_member.rb +1 -3
  51. data/test/yao/resources/test_meter.rb +13 -14
  52. data/test/yao/resources/test_network.rb +28 -1
  53. data/test/yao/resources/test_old_sample.rb +86 -0
  54. data/test/yao/resources/test_port.rb +29 -7
  55. data/test/yao/resources/test_project.rb +32 -0
  56. data/test/yao/resources/test_resource.rb +56 -0
  57. data/test/yao/resources/test_role.rb +255 -1
  58. data/test/yao/resources/test_role_assignment.rb +4 -6
  59. data/test/yao/resources/test_router.rb +26 -6
  60. data/test/yao/resources/test_sample.rb +61 -0
  61. data/test/yao/resources/test_security_group.rb +23 -1
  62. data/test/yao/resources/test_security_group_rule.rb +1 -1
  63. data/test/yao/resources/test_server.rb +34 -8
  64. data/test/yao/resources/test_subnet.rb +25 -6
  65. data/test/yao/resources/test_user.rb +73 -1
  66. data/test/yao/resources/test_volume.rb +31 -1
  67. data/test/yao/resources/test_volume_type.rb +1 -1
  68. data/test/yao/test_config.rb +21 -8
  69. data/test/yao/test_read_only.rb +3 -3
  70. data/yao.gemspec +0 -8
  71. metadata +22 -101
  72. data/.travis.yml +0 -28
@@ -1,8 +1,4 @@
1
- class TestSubnet < Test::Unit::TestCase
2
-
3
- def setup
4
- Yao.default_client.pool["network"] = Yao::Client.gen_client("https://example.com:12345")
5
- end
1
+ class TestSubnet < TestYaoResource
6
2
 
7
3
  def test_subnet
8
4
  # https://docs.openstack.org/api-ref/network/v2/#subnets
@@ -56,7 +52,7 @@ class TestSubnet < Test::Unit::TestCase
56
52
  end
57
53
 
58
54
  def test_network
59
- stub_request(:get, "https://example.com:12345/networks/00000000-0000-0000-0000-000000000000").
55
+ stub = stub_request(:get, "https://example.com:12345/networks/00000000-0000-0000-0000-000000000000").
60
56
  to_return(
61
57
  status: 200,
62
58
  body: <<-JSON,
@@ -76,5 +72,28 @@ class TestSubnet < Test::Unit::TestCase
76
72
  subnet = Yao::Subnet.new(params)
77
73
  assert_instance_of(Yao::Resources::Network, subnet.network)
78
74
  assert_equal(subnet.network.id, "00000000-0000-0000-0000-000000000000")
75
+
76
+ assert_requested(stub)
77
+ end
78
+
79
+ def test_tenant
80
+ stub = stub_request(:get, "https://example.com:12345/tenants/0123456789abcdef0123456789abcdef")
81
+ .to_return(
82
+ status: 200,
83
+ body: <<-JSON,
84
+ {
85
+ "tenant": {
86
+ "id": "0123456789abcdef0123456789abcdef"
87
+ }
88
+ }
89
+ JSON
90
+ headers: {'Content-Type' => 'application/json'}
91
+ )
92
+
93
+ subnet = Yao::Subnet.new('tenant_id' => '0123456789abcdef0123456789abcdef')
94
+ assert_instance_of(Yao::Tenant, subnet.tenant)
95
+ assert_equal(subnet.tenant.id, '0123456789abcdef0123456789abcdef')
96
+
97
+ assert_requested(stub)
79
98
  end
80
99
  end
@@ -1,4 +1,4 @@
1
- class TestUser < Test::Unit::TestCase
1
+ class TestUser < TestYaoResource
2
2
  def test_sg_attributes
3
3
  params = {
4
4
  "name" => "test_user",
@@ -10,4 +10,76 @@ class TestUser < Test::Unit::TestCase
10
10
  assert_equal(user.name, "test_user")
11
11
  assert_equal(user.email, "test-user@example.com")
12
12
  end
13
+
14
+ sub_test_case 'with keystone v2.0' do
15
+ def setup
16
+ super
17
+ Yao.default_client.admin_pool["identity"] = Yao::Client.gen_client("https://example.com:12345/v2.0")
18
+ end
19
+
20
+ def test_find_by_name
21
+ stub = stub_request(:get, "https://example.com:12345/v2.0/users?name=test_user").
22
+ to_return(
23
+ status: 200,
24
+ body: <<-JSON,
25
+ {
26
+ "user": {
27
+ "email": "test-user@example.com",
28
+ "enabled": true,
29
+ "id": "u1000",
30
+ "name": "test_user",
31
+ "username": "test_user"
32
+ }
33
+ }
34
+ JSON
35
+ headers: {'Content-Type' => 'application/json'}
36
+ )
37
+
38
+ roles = Yao::User.find_by_name("test_user")
39
+ assert_instance_of(Array, roles)
40
+ assert_equal(roles.first.id, "u1000")
41
+ assert_requested(stub)
42
+ end
43
+ end
44
+
45
+ sub_test_case 'with keystone v3' do
46
+ def setup
47
+ super
48
+ Yao.default_client.admin_pool["identity"] = Yao::Client.gen_client("https://example.com:12345/v3")
49
+ end
50
+
51
+ def test_find_by_name
52
+ stub = stub_request(:get, "https://example.com:12345/v3/users?name=test_user").
53
+ to_return(
54
+ status: 200,
55
+ body: <<-JSON,
56
+ {
57
+ "links": {
58
+ "next": null,
59
+ "previous": null,
60
+ "self": "http://example.com:12345/v3/users"
61
+ },
62
+ "users": [
63
+ {
64
+ "domain_id": "default",
65
+ "enabled": true,
66
+ "id": "2844b2a08be147a08ef58317d6471f1f",
67
+ "links": {
68
+ "self": "http://example.com:12345/v3/users/2844b2a08be147a08ef58317d6471f1f"
69
+ },
70
+ "name": "test_user",
71
+ "password_expires_at": null
72
+ }
73
+ ]
74
+ }
75
+ JSON
76
+ headers: {'Content-Type' => 'application/json'}
77
+ )
78
+
79
+ roles = Yao::User.find_by_name("test_user")
80
+ assert_instance_of(Array, roles)
81
+ assert_equal(roles.first.id, "2844b2a08be147a08ef58317d6471f1f")
82
+ assert_requested(stub)
83
+ end
84
+ end
13
85
  end
@@ -1,4 +1,4 @@
1
- class TestVolume < Test::Unit::TestCase
1
+ class TestVolume < TestYaoResource
2
2
  def test_volume
3
3
  params = {
4
4
  'name' => 'cinder',
@@ -9,4 +9,34 @@ class TestVolume < Test::Unit::TestCase
9
9
  assert_equal('cinder', volume.name)
10
10
  assert_equal(10, volume.size)
11
11
  end
12
+
13
+ def test_list
14
+ # https://docs.openstack.org/api-ref/block-storage/v3/index.html?expanded=#volumes-volumes
15
+ stub = stub_request(:get, "https://example.com:12345/volumes/detail").
16
+ to_return(
17
+ status: 200,
18
+ body: <<-JSON,
19
+ {
20
+ "volumes": [
21
+ {
22
+ "id": "00000000-0000-0000-0000-000000000000"
23
+ }
24
+ ]
25
+ }
26
+ JSON
27
+ headers: {'Content-Type' => 'application/json'}
28
+ )
29
+
30
+ assert(Yao::Volume.resources_detail_available)
31
+
32
+ volumes = Yao::Volume.list
33
+ assert_instance_of(Yao::Volume, volumes.first)
34
+ assert_equal(volumes.first.id, "00000000-0000-0000-0000-000000000000")
35
+
36
+ assert_requested(stub)
37
+ end
38
+
39
+ def test_list_detail
40
+ assert_equal(Yao::Volume.method(:list_detail), Yao::Volume.method(:list))
41
+ end
12
42
  end
@@ -1,4 +1,4 @@
1
- class TestVolumeType < Test::Unit::TestCase
1
+ class TestVolumeType < TestYaoResource
2
2
  def test_volume
3
3
  params = {
4
4
  'name' => 'test_volume',
@@ -50,16 +50,29 @@ class TestConfig < Test::Unit::TestCase
50
50
  assert { hooked_value == "test 2" }
51
51
  end
52
52
 
53
- def test_auth_is_hooked
54
- auth = Yao::Auth
55
- count = Yao::Config::HOOK_RENEW_CLIENT_KEYS.size
56
- mock(auth).try_new.times(count)
57
- Yao::Config::HOOK_RENEW_CLIENT_KEYS.each do |key|
58
- Yao.configure do
59
- set key, "http://dummy"
53
+ sub_test_case 'setting Yao.configure' do
54
+
55
+ def test_auth_is_hooked
56
+ auth = Yao::Auth
57
+ count = Yao::Config::HOOK_RENEW_CLIENT_KEYS.size
58
+ mock(auth).try_new.times(count)
59
+ Yao::Config::HOOK_RENEW_CLIENT_KEYS.each do |key|
60
+ # configurations have side effects !!!!
61
+ Yao.configure do
62
+ set key, "http://dummy"
63
+ end
60
64
  end
65
+
66
+ assert_received(auth) {|a| a.try_new.times(count) }
61
67
  end
62
68
 
63
- assert_received(auth) {|a| a.try_new.times(count) }
69
+ # reset configurations of Yao.configure
70
+ def teardown
71
+ Yao::Config::HOOK_RENEW_CLIENT_KEYS.each do |key|
72
+ Yao.configure do
73
+ set key, nil
74
+ end
75
+ end
76
+ end
64
77
  end
65
78
  end
@@ -17,13 +17,13 @@ class TestOnly < Test::Unit::TestCase
17
17
  end
18
18
 
19
19
  @username = username
20
- @get_stub = stub_request(:get, "#{auth_url}/users?name=#{username}")
20
+ @get_stub = stub_request(:get, "#{auth_url}/users/#{username}")
21
21
  @post_stub = stub_request(:post, "#{auth_url}/users")
22
22
  end
23
23
 
24
24
  def test_read_only
25
25
  Yao.read_only do
26
- Yao::User.get_by_name(@username)
26
+ Yao::User.get(@username)
27
27
  Yao::User.create(name: "foo", email: "bar", password: "baz")
28
28
  end
29
29
 
@@ -34,7 +34,7 @@ class TestOnly < Test::Unit::TestCase
34
34
  def test_read_only!
35
35
  assert_raise Yao::ReadOnlyViolationError do
36
36
  Yao.read_only! do
37
- Yao::User.get_by_name(@username)
37
+ Yao::User.get(@username)
38
38
  Yao::User.create(name: "foo", email: "bar", password: "baz")
39
39
  end
40
40
  end
@@ -20,12 +20,4 @@ Gem::Specification.new do |spec|
20
20
  spec.add_dependency "json"
21
21
  spec.add_dependency "faraday"
22
22
  spec.add_dependency "faraday_middleware"
23
-
24
- spec.add_development_dependency "bundler", ">= 1.10"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "test-unit", ">= 3"
27
- spec.add_development_dependency "test-unit-rr"
28
- spec.add_development_dependency "power_assert"
29
- spec.add_development_dependency "pry"
30
- spec.add_development_dependency "webmock"
31
23
  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.7.0
4
+ version: 0.8.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: 2019-08-22 00:00:00.000000000 Z
11
+ date: 2019-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -52,104 +52,6 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '1.10'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '1.10'
69
- - !ruby/object:Gem::Dependency
70
- name: rake
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '10.0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '10.0'
83
- - !ruby/object:Gem::Dependency
84
- name: test-unit
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '3'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '3'
97
- - !ruby/object:Gem::Dependency
98
- name: test-unit-rr
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: power_assert
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: pry
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: webmock
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
55
  description: YAO is a Yet Another OpenStack API Wrapper that rocks!!
154
56
  email:
155
57
  - udzura@udzura.jp
@@ -157,9 +59,11 @@ executables: []
157
59
  extensions: []
158
60
  extra_rdoc_files: []
159
61
  files:
62
+ - ".github/workflows/macos.yml"
63
+ - ".github/workflows/ubuntu-rvm.yml"
64
+ - ".github/workflows/ubuntu.yml"
160
65
  - ".gitignore"
161
66
  - ".rubocop.yml"
162
- - ".travis.yml"
163
67
  - CHANGELOG.md
164
68
  - CODE_OF_CONDUCT.md
165
69
  - Gemfile
@@ -181,6 +85,7 @@ files:
181
85
  - lib/yao/resources/action.rb
182
86
  - lib/yao/resources/aggregates.rb
183
87
  - lib/yao/resources/base.rb
88
+ - lib/yao/resources/compute_services.rb
184
89
  - lib/yao/resources/flavor.rb
185
90
  - lib/yao/resources/floating_ip.rb
186
91
  - lib/yao/resources/host.rb
@@ -195,8 +100,11 @@ files:
195
100
  - lib/yao/resources/metadata_available.rb
196
101
  - lib/yao/resources/meter.rb
197
102
  - lib/yao/resources/network.rb
103
+ - lib/yao/resources/network_associationable.rb
198
104
  - lib/yao/resources/old_sample.rb
199
105
  - lib/yao/resources/port.rb
106
+ - lib/yao/resources/port_associationable.rb
107
+ - lib/yao/resources/project.rb
200
108
  - lib/yao/resources/resource.rb
201
109
  - lib/yao/resources/restfully_accessible.rb
202
110
  - lib/yao/resources/role.rb
@@ -208,6 +116,7 @@ files:
208
116
  - lib/yao/resources/server.rb
209
117
  - lib/yao/resources/subnet.rb
210
118
  - lib/yao/resources/tenant.rb
119
+ - lib/yao/resources/tenant_associationable.rb
211
120
  - lib/yao/resources/user.rb
212
121
  - lib/yao/resources/volume.rb
213
122
  - lib/yao/resources/volume_type.rb
@@ -221,8 +130,10 @@ files:
221
130
  - test/support/auth_stub.rb
222
131
  - test/support/authv3_stub.rb
223
132
  - test/support/restfully_accesible_stub.rb
133
+ - test/support/test_yao_resource.rb
224
134
  - test/yao/resources/test_aggregates.rb
225
135
  - test/yao/resources/test_base.rb
136
+ - test/yao/resources/test_compute_services.rb
226
137
  - test/yao/resources/test_flavor.rb
227
138
  - test/yao/resources/test_floating_ip.rb
228
139
  - test/yao/resources/test_host.rb
@@ -236,11 +147,15 @@ files:
236
147
  - test/yao/resources/test_loadbalancer_pool_member.rb
237
148
  - test/yao/resources/test_meter.rb
238
149
  - test/yao/resources/test_network.rb
150
+ - test/yao/resources/test_old_sample.rb
239
151
  - test/yao/resources/test_port.rb
152
+ - test/yao/resources/test_project.rb
153
+ - test/yao/resources/test_resource.rb
240
154
  - test/yao/resources/test_restfully_accessible.rb
241
155
  - test/yao/resources/test_role.rb
242
156
  - test/yao/resources/test_role_assignment.rb
243
157
  - test/yao/resources/test_router.rb
158
+ - test/yao/resources/test_sample.rb
244
159
  - test/yao/resources/test_security_group.rb
245
160
  - test/yao/resources/test_security_group_rule.rb
246
161
  - test/yao/resources/test_server.rb
@@ -289,8 +204,10 @@ test_files:
289
204
  - test/support/auth_stub.rb
290
205
  - test/support/authv3_stub.rb
291
206
  - test/support/restfully_accesible_stub.rb
207
+ - test/support/test_yao_resource.rb
292
208
  - test/yao/resources/test_aggregates.rb
293
209
  - test/yao/resources/test_base.rb
210
+ - test/yao/resources/test_compute_services.rb
294
211
  - test/yao/resources/test_flavor.rb
295
212
  - test/yao/resources/test_floating_ip.rb
296
213
  - test/yao/resources/test_host.rb
@@ -304,11 +221,15 @@ test_files:
304
221
  - test/yao/resources/test_loadbalancer_pool_member.rb
305
222
  - test/yao/resources/test_meter.rb
306
223
  - test/yao/resources/test_network.rb
224
+ - test/yao/resources/test_old_sample.rb
307
225
  - test/yao/resources/test_port.rb
226
+ - test/yao/resources/test_project.rb
227
+ - test/yao/resources/test_resource.rb
308
228
  - test/yao/resources/test_restfully_accessible.rb
309
229
  - test/yao/resources/test_role.rb
310
230
  - test/yao/resources/test_role_assignment.rb
311
231
  - test/yao/resources/test_router.rb
232
+ - test/yao/resources/test_sample.rb
312
233
  - test/yao/resources/test_security_group.rb
313
234
  - test/yao/resources/test_security_group_rule.rb
314
235
  - test/yao/resources/test_server.rb