hyperb 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +12 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.rubocop.yml +41 -0
- data/Dockerfile +7 -0
- data/Gemfile +16 -0
- data/LICENSE.txt +21 -0
- data/Makefile +16 -0
- data/README.md +188 -0
- data/Rakefile +24 -0
- data/circle.yml +13 -0
- data/examples/README.md +367 -0
- data/examples/auth-gcr-registry.md +19 -0
- data/examples/compose.md +75 -0
- data/examples/handling-errors.md +54 -0
- data/examples/streaming-logs.md +28 -0
- data/examples/streaming-stats.md +25 -0
- data/hyperb.gemspec +30 -0
- data/lib/hyperb.rb +4 -0
- data/lib/hyperb/api.rb +22 -0
- data/lib/hyperb/auth_object.rb +42 -0
- data/lib/hyperb/client.rb +32 -0
- data/lib/hyperb/compose/compose.rb +116 -0
- data/lib/hyperb/containers/container.rb +27 -0
- data/lib/hyperb/containers/containers.rb +251 -0
- data/lib/hyperb/error.rb +44 -0
- data/lib/hyperb/hyper_version.rb +12 -0
- data/lib/hyperb/images/image.rb +13 -0
- data/lib/hyperb/images/images.rb +108 -0
- data/lib/hyperb/network/fips.rb +102 -0
- data/lib/hyperb/request.rb +129 -0
- data/lib/hyperb/services/services.rb +59 -0
- data/lib/hyperb/snapshots/snapshot.rb +12 -0
- data/lib/hyperb/snapshots/snapshots.rb +39 -0
- data/lib/hyperb/utils.rb +39 -0
- data/lib/hyperb/version.rb +3 -0
- data/lib/hyperb/volumes/volume.rb +16 -0
- data/lib/hyperb/volumes/volumes.rb +67 -0
- data/spec/auth_object_spec.rb +45 -0
- data/spec/client_spec.rb +27 -0
- data/spec/compose_spec.rb +145 -0
- data/spec/container_spec.rb +25 -0
- data/spec/containers_spec.rb +442 -0
- data/spec/create_snapshot.rb +30 -0
- data/spec/error_spec.rb +18 -0
- data/spec/fixtures/auth_obj.json +12 -0
- data/spec/fixtures/compose_rm.json +1 -0
- data/spec/fixtures/compose_up.json +1 -0
- data/spec/fixtures/container_stats.json +78 -0
- data/spec/fixtures/containers.json +160 -0
- data/spec/fixtures/create_container.json +4 -0
- data/spec/fixtures/create_image.json +1 -0
- data/spec/fixtures/create_service.json +35 -0
- data/spec/fixtures/create_snapshot.json +8 -0
- data/spec/fixtures/fip_allocate.json +7 -0
- data/spec/fixtures/fips_ls.json +14 -0
- data/spec/fixtures/images.json +32 -0
- data/spec/fixtures/inspect_container.json +159 -0
- data/spec/fixtures/inspect_image.json +89 -0
- data/spec/fixtures/inspect_volume.json +11 -0
- data/spec/fixtures/remove_container.json +1 -0
- data/spec/fixtures/remove_image.json +5 -0
- data/spec/fixtures/volumes.json +13 -0
- data/spec/helper.rb +36 -0
- data/spec/image_spec.rb +17 -0
- data/spec/images_spec.rb +133 -0
- data/spec/network_spec.rb +106 -0
- data/spec/request_spec.rb +41 -0
- data/spec/services_spec.rb +193 -0
- data/spec/version_spec.rb +7 -0
- data/spec/volumes_spec.rb +88 -0
- metadata +74 -3
@@ -0,0 +1,193 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'http'
|
3
|
+
|
4
|
+
RSpec.describe Hyperb::Services do
|
5
|
+
|
6
|
+
before do
|
7
|
+
@client = Hyperb::Client.new(access_key: 'key', secret_key: '123')
|
8
|
+
@base_path = Hyperb::Request::BASE_URL + Hyperb::Request::VERSION + '/services'
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#remove_container' do
|
12
|
+
|
13
|
+
it 'should raise ArgumentError when name is not provided' do
|
14
|
+
expect { @client.remove_service }.to raise_error(ArgumentError)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'request to the correct path should be made' do
|
18
|
+
path = @base_path + '/name'
|
19
|
+
|
20
|
+
stub_request(:delete, path)
|
21
|
+
.to_return(body: '')
|
22
|
+
|
23
|
+
@client.remove_service(name: 'name')
|
24
|
+
expect(a_request(:delete, path)).to have_been_made
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'request to the correct path should be made with keep' do
|
28
|
+
path = @base_path + '/name?keep=true'
|
29
|
+
|
30
|
+
stub_request(:delete, path)
|
31
|
+
.to_return(body: '')
|
32
|
+
|
33
|
+
@client.remove_service(name: 'name', keep: true)
|
34
|
+
expect(a_request(:delete, path)).to have_been_made
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#create_service' do
|
40
|
+
|
41
|
+
it 'should raise ArgumentError when name is not provided' do
|
42
|
+
expect { @client.create_service image: 'nginx', labels: {} }.to raise_error(ArgumentError)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should raise ArgumentError when image is not provided' do
|
46
|
+
expect { @client.create_service name: 'srvc1', service_port: 80, labels: {} }.to raise_error(ArgumentError)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'should raise ArgumentError when service_port is not provided' do
|
50
|
+
expect { @client.create_service }.to raise_error(ArgumentError)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should raise ArgumentError when replicas is not provided' do
|
54
|
+
expect { @client.create_service name: 'name1', image: 'img' }.to raise_error(ArgumentError)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'should raise ArgumentError when labels is not provided' do
|
58
|
+
expect { @client.create_service }.to raise_error(ArgumentError)
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'request to the correct path should be made with name' do
|
62
|
+
path = @base_path + '/create'
|
63
|
+
body = {
|
64
|
+
service_port: 80,
|
65
|
+
name: 'name1',
|
66
|
+
image: 'nginx',
|
67
|
+
replicas: 2,
|
68
|
+
container_port: 80,
|
69
|
+
labels: {}
|
70
|
+
}
|
71
|
+
stub_request(:post, path)
|
72
|
+
.with(body: body)
|
73
|
+
.to_return(body: fixture('create_service.json'))
|
74
|
+
|
75
|
+
@client.create_service(body)
|
76
|
+
expect(a_request(:post, path)).to have_been_made
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'correct request should be made with entrypoint' do
|
80
|
+
path = @base_path + '/create'
|
81
|
+
body = {
|
82
|
+
service_port: 80,
|
83
|
+
name: 'name1',
|
84
|
+
image: 'nginx',
|
85
|
+
replicas: 2,
|
86
|
+
entrypoint: 'entry.sh',
|
87
|
+
container_port: 80,
|
88
|
+
labels: {}
|
89
|
+
}
|
90
|
+
stub_request(:post, path)
|
91
|
+
.with(body: body)
|
92
|
+
.to_return(body: fixture('create_service.json'))
|
93
|
+
|
94
|
+
@client.create_service(body)
|
95
|
+
expect(a_request(:post, path)).to have_been_made
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'correct request should be made with cmd' do
|
99
|
+
path = @base_path + '/create'
|
100
|
+
body = {
|
101
|
+
service_port: 80,
|
102
|
+
name: 'name1',
|
103
|
+
image: 'nginx',
|
104
|
+
replicas: 2,
|
105
|
+
cmd: 'echo 1',
|
106
|
+
container_port: 80,
|
107
|
+
labels: {}
|
108
|
+
}
|
109
|
+
stub_request(:post, path)
|
110
|
+
.with(body: body)
|
111
|
+
.to_return(body: fixture('create_service.json'))
|
112
|
+
|
113
|
+
@client.create_service(body)
|
114
|
+
expect(a_request(:post, path)).to have_been_made
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'correct request should be made with env' do
|
118
|
+
path = @base_path + '/create'
|
119
|
+
body = {
|
120
|
+
service_port: 80,
|
121
|
+
name: 'name1',
|
122
|
+
image: 'nginx',
|
123
|
+
replicas: 2,
|
124
|
+
env: ['ENV=123'],
|
125
|
+
container_port: 80,
|
126
|
+
labels: {}
|
127
|
+
}
|
128
|
+
stub_request(:post, path)
|
129
|
+
.with(body: body)
|
130
|
+
.to_return(body: fixture('create_service.json'))
|
131
|
+
|
132
|
+
@client.create_service(body)
|
133
|
+
expect(a_request(:post, path)).to have_been_made
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'correct request should be made with protocol' do
|
137
|
+
path = @base_path + '/create'
|
138
|
+
body = {
|
139
|
+
service_port: 80,
|
140
|
+
name: 'name1',
|
141
|
+
image: 'nginx',
|
142
|
+
replicas: 2,
|
143
|
+
protocol: 'https',
|
144
|
+
container_port: 80,
|
145
|
+
labels: {}
|
146
|
+
}
|
147
|
+
stub_request(:post, path)
|
148
|
+
.with(body: body)
|
149
|
+
.to_return(body: fixture('create_service.json'))
|
150
|
+
|
151
|
+
@client.create_service(body)
|
152
|
+
expect(a_request(:post, path)).to have_been_made
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'correct request should be made with algorithm' do
|
156
|
+
path = @base_path + '/create'
|
157
|
+
body = {
|
158
|
+
service_port: 80,
|
159
|
+
name: 'name1',
|
160
|
+
image: 'nginx',
|
161
|
+
replicas: 2,
|
162
|
+
container_port: 80,
|
163
|
+
algorithm: 'roundrobin',
|
164
|
+
labels: {}
|
165
|
+
}
|
166
|
+
stub_request(:post, path)
|
167
|
+
.with(body: body)
|
168
|
+
.to_return(body: fixture('create_service.json'))
|
169
|
+
|
170
|
+
@client.create_service(body)
|
171
|
+
expect(a_request(:post, path)).to have_been_made
|
172
|
+
end
|
173
|
+
|
174
|
+
it 'correct request should be made with workingdir' do
|
175
|
+
path = @base_path + '/create'
|
176
|
+
body = {
|
177
|
+
service_port: 80,
|
178
|
+
name: 'name1',
|
179
|
+
workingdir: '/path',
|
180
|
+
image: 'nginx',
|
181
|
+
replicas: 2,
|
182
|
+
container_port: 80,
|
183
|
+
labels: {}
|
184
|
+
}
|
185
|
+
stub_request(:post, path)
|
186
|
+
.with(body: body)
|
187
|
+
.to_return(body: fixture('create_service.json'))
|
188
|
+
|
189
|
+
@client.create_service(body)
|
190
|
+
expect(a_request(:post, path)).to have_been_made
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'http'
|
3
|
+
|
4
|
+
RSpec.describe Hyperb::Volumes do
|
5
|
+
|
6
|
+
before do
|
7
|
+
@client = Hyperb::Client.new(access_key: 'key', secret_key: '123')
|
8
|
+
@base_path = Hyperb::Request::BASE_URL + Hyperb::Request::VERSION + '/volumes'
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#remove_volume' do
|
12
|
+
|
13
|
+
it 'should raise ArgumentError when id is not provided' do
|
14
|
+
expect { @client.remove_volume }.to raise_error(ArgumentError)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'request to the correct path should be made' do
|
18
|
+
path = @base_path + '/id'
|
19
|
+
|
20
|
+
stub_request(:delete, path)
|
21
|
+
.to_return(body: fixture('remove_container.json'))
|
22
|
+
|
23
|
+
@client.remove_volume id: 'id'
|
24
|
+
expect(a_request(:delete, path)).to have_been_made
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#inspect_volume' do
|
29
|
+
|
30
|
+
it 'should raise ArgumentError when id is not provided' do
|
31
|
+
expect { @client.inspect_volume }.to raise_error(ArgumentError)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'request to the correct path should be made' do
|
35
|
+
path = @base_path + '/id'
|
36
|
+
|
37
|
+
stub_request(:get, path)
|
38
|
+
.to_return(body: fixture('inspect_container.json'))
|
39
|
+
|
40
|
+
@client.inspect_volume id: 'id'
|
41
|
+
expect(a_request(:get, path)).to have_been_made
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'correct attrs' do
|
45
|
+
path = @base_path + '/id'
|
46
|
+
|
47
|
+
stub_request(:get, path)
|
48
|
+
.to_return(body: fixture('inspect_container.json'))
|
49
|
+
|
50
|
+
vol = @client.inspect_volume id: 'id'
|
51
|
+
expect(vol.key?(:name)).to be true
|
52
|
+
expect(vol.key?(:driver)).to be true
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '#inspect_volume' do
|
57
|
+
|
58
|
+
it 'request to the correct path should be made' do
|
59
|
+
stub_request(:get, @base_path)
|
60
|
+
.to_return(body: fixture('volumes.json'))
|
61
|
+
|
62
|
+
@client.volumes
|
63
|
+
expect(a_request(:get, @base_path)).to have_been_made
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'return array of containers' do
|
67
|
+
stub_request(:get, @base_path)
|
68
|
+
.to_return(body: fixture('volumes.json'))
|
69
|
+
|
70
|
+
volumes = @client.volumes
|
71
|
+
expect(volumes).to be_a Array
|
72
|
+
expect(volumes[0]).to be_a Hyperb::Volume
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'correct attrs' do
|
76
|
+
stub_request(:get, @base_path)
|
77
|
+
.to_return(body: fixture('volumes.json'))
|
78
|
+
|
79
|
+
@client.volumes.each do |vol|
|
80
|
+
expect(vol.name).to be_a String
|
81
|
+
expect(vol.driver).to be_a String
|
82
|
+
expect(vol.mountpoint).to be_a String
|
83
|
+
expect(vol.labels).to be_a Hash
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyperb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- drish
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -120,7 +120,78 @@ email:
|
|
120
120
|
executables: []
|
121
121
|
extensions: []
|
122
122
|
extra_rdoc_files: []
|
123
|
-
files:
|
123
|
+
files:
|
124
|
+
- ".codeclimate.yml"
|
125
|
+
- ".gitignore"
|
126
|
+
- ".rspec"
|
127
|
+
- ".rubocop.yml"
|
128
|
+
- Dockerfile
|
129
|
+
- Gemfile
|
130
|
+
- LICENSE.txt
|
131
|
+
- Makefile
|
132
|
+
- README.md
|
133
|
+
- Rakefile
|
134
|
+
- circle.yml
|
135
|
+
- examples/README.md
|
136
|
+
- examples/auth-gcr-registry.md
|
137
|
+
- examples/compose.md
|
138
|
+
- examples/handling-errors.md
|
139
|
+
- examples/streaming-logs.md
|
140
|
+
- examples/streaming-stats.md
|
141
|
+
- hyperb.gemspec
|
142
|
+
- lib/hyperb.rb
|
143
|
+
- lib/hyperb/api.rb
|
144
|
+
- lib/hyperb/auth_object.rb
|
145
|
+
- lib/hyperb/client.rb
|
146
|
+
- lib/hyperb/compose/compose.rb
|
147
|
+
- lib/hyperb/containers/container.rb
|
148
|
+
- lib/hyperb/containers/containers.rb
|
149
|
+
- lib/hyperb/error.rb
|
150
|
+
- lib/hyperb/hyper_version.rb
|
151
|
+
- lib/hyperb/images/image.rb
|
152
|
+
- lib/hyperb/images/images.rb
|
153
|
+
- lib/hyperb/network/fips.rb
|
154
|
+
- lib/hyperb/request.rb
|
155
|
+
- lib/hyperb/services/services.rb
|
156
|
+
- lib/hyperb/snapshots/snapshot.rb
|
157
|
+
- lib/hyperb/snapshots/snapshots.rb
|
158
|
+
- lib/hyperb/utils.rb
|
159
|
+
- lib/hyperb/version.rb
|
160
|
+
- lib/hyperb/volumes/volume.rb
|
161
|
+
- lib/hyperb/volumes/volumes.rb
|
162
|
+
- spec/auth_object_spec.rb
|
163
|
+
- spec/client_spec.rb
|
164
|
+
- spec/compose_spec.rb
|
165
|
+
- spec/container_spec.rb
|
166
|
+
- spec/containers_spec.rb
|
167
|
+
- spec/create_snapshot.rb
|
168
|
+
- spec/error_spec.rb
|
169
|
+
- spec/fixtures/auth_obj.json
|
170
|
+
- spec/fixtures/compose_rm.json
|
171
|
+
- spec/fixtures/compose_up.json
|
172
|
+
- spec/fixtures/container_stats.json
|
173
|
+
- spec/fixtures/containers.json
|
174
|
+
- spec/fixtures/create_container.json
|
175
|
+
- spec/fixtures/create_image.json
|
176
|
+
- spec/fixtures/create_service.json
|
177
|
+
- spec/fixtures/create_snapshot.json
|
178
|
+
- spec/fixtures/fip_allocate.json
|
179
|
+
- spec/fixtures/fips_ls.json
|
180
|
+
- spec/fixtures/images.json
|
181
|
+
- spec/fixtures/inspect_container.json
|
182
|
+
- spec/fixtures/inspect_image.json
|
183
|
+
- spec/fixtures/inspect_volume.json
|
184
|
+
- spec/fixtures/remove_container.json
|
185
|
+
- spec/fixtures/remove_image.json
|
186
|
+
- spec/fixtures/volumes.json
|
187
|
+
- spec/helper.rb
|
188
|
+
- spec/image_spec.rb
|
189
|
+
- spec/images_spec.rb
|
190
|
+
- spec/network_spec.rb
|
191
|
+
- spec/request_spec.rb
|
192
|
+
- spec/services_spec.rb
|
193
|
+
- spec/version_spec.rb
|
194
|
+
- spec/volumes_spec.rb
|
124
195
|
homepage: https://github.com/drish/hyperb
|
125
196
|
licenses:
|
126
197
|
- MIT
|