yao 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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