hyperb 0.2.2 → 0.3.3
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/Makefile +4 -1
- data/README.md +3 -0
- data/circle.yml +1 -3
- data/examples/README.md +22 -0
- data/lib/hyperb/containers/containers.rb +1 -1
- data/lib/hyperb/network/fips.rb +22 -0
- data/lib/hyperb/services/services.rb +43 -13
- data/lib/hyperb/version.rb +1 -1
- data/spec/fixtures/inspect_service.json +39 -0
- data/spec/fixtures/services.json +41 -0
- data/spec/network_spec.rb +20 -0
- data/spec/services_spec.rb +65 -15
- 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: 9200fb1c5348757773d70f6940a0e10cbee1564d
|
4
|
+
data.tar.gz: e15cc748b6142cb74c6fdcf34a82f8954eb0b448
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15bfbc0569c83146c717d82a641830a1d6d94f23f2e77bd543dcda5066f8aa652d3a0425634391ab150dc292b3900b5318e005d81ac5e614ba4077af9add91bf
|
7
|
+
data.tar.gz: 6a62201383ce5e56f50219daf4f2a83d3b76380cb9c313a8c077a615fc074f3e327addc4b865bf9aedc3f9049abc5349b7b0e2d1b2c7c8f8829e2f2ef1975850
|
data/Makefile
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
.PHONY: test
|
2
2
|
|
3
|
+
r:
|
4
|
+
docker run --rm -it -v $(PWD):/usr/src hyperb bundle exec ruby test.rb
|
5
|
+
|
3
6
|
build:
|
4
7
|
docker build -t hyperb .
|
5
8
|
|
@@ -13,4 +16,4 @@ rake:
|
|
13
16
|
docker run --rm -it -v $(PWD):/usr/src hyperb bundle exec rake
|
14
17
|
|
15
18
|
rubocop:
|
16
|
-
docker run --rm -it -v $(PWD):/usr/src hyperb bundle exec rake rubocop
|
19
|
+
docker run --rm -it -v $(PWD):/usr/src hyperb bundle exec rake rubocop
|
data/README.md
CHANGED
@@ -142,6 +142,7 @@ For more usage examples, please see the full [documentation]().
|
|
142
142
|
* floating ip list
|
143
143
|
* floating ip attach
|
144
144
|
* floating ip detach
|
145
|
+
* floating ip name
|
145
146
|
|
146
147
|
### Compose
|
147
148
|
|
@@ -158,6 +159,8 @@ For more usage examples, please see the full [documentation]().
|
|
158
159
|
|
159
160
|
* create service
|
160
161
|
* remove service
|
162
|
+
* inspect service
|
163
|
+
* list services
|
161
164
|
|
162
165
|
### Misc.
|
163
166
|
|
data/circle.yml
CHANGED
@@ -3,11 +3,9 @@ dependencies:
|
|
3
3
|
- 'rvm-exec 2.2.0 bundle install'
|
4
4
|
- 'rvm-exec 2.3.0 bundle install'
|
5
5
|
- 'rvm-exec 2.4.0 bundle install'
|
6
|
-
- 'rvm-exec ruby-head bundle install'
|
7
6
|
|
8
7
|
test:
|
9
8
|
override:
|
10
9
|
- 'rvm-exec 2.2.0 bundle exec rake'
|
11
10
|
- 'rvm-exec 2.3.0 bundle exec rake'
|
12
|
-
- 'rvm-exec 2.4.0 bundle exec rake'
|
13
|
-
- 'rvm-exec ruby-head bundle exec rake'
|
11
|
+
- 'rvm-exec 2.4.0 bundle exec rake'
|
data/examples/README.md
CHANGED
@@ -284,6 +284,12 @@ Returns an array of floating ip objects
|
|
284
284
|
client.fips_ls
|
285
285
|
```
|
286
286
|
|
287
|
+
#### fip_name
|
288
|
+
|
289
|
+
```ruby
|
290
|
+
client.fip_name ip: '8.8.8.8', name: 'proxy'
|
291
|
+
```
|
292
|
+
|
287
293
|
#### fip_detach
|
288
294
|
|
289
295
|
```ruby
|
@@ -341,6 +347,22 @@ client.remove_service name: 'srvc1'
|
|
341
347
|
client.remove_service name: 'srvc1', keep: true
|
342
348
|
````
|
343
349
|
|
350
|
+
#### services
|
351
|
+
|
352
|
+
Returns an Array of downcased symbols
|
353
|
+
|
354
|
+
```ruby
|
355
|
+
client.services
|
356
|
+
```
|
357
|
+
|
358
|
+
#### inspect_service
|
359
|
+
|
360
|
+
Returns an Hash containing service fields
|
361
|
+
|
362
|
+
```ruby
|
363
|
+
client.inspect_service(name: 'srvc1')
|
364
|
+
```
|
365
|
+
|
344
366
|
## Snapshot API
|
345
367
|
|
346
368
|
Return hash containing snapshot information
|
@@ -57,7 +57,7 @@ module Hyperb
|
|
57
57
|
|
58
58
|
# remove the container id
|
59
59
|
#
|
60
|
-
# @see https://docs.hyper.sh/Reference/API/2016-04-04%20[Ver.%201.23]/Container/
|
60
|
+
# @see https://docs.hyper.sh/Reference/API/2016-04-04%20[Ver.%201.23]/Container/remove.html
|
61
61
|
#
|
62
62
|
# @raise [Hyperb::Error::Unauthorized] raised when credentials are not valid.
|
63
63
|
# @raise [Hyperb::Error::NotFound] raised when container can't be found.
|
data/lib/hyperb/network/fips.rb
CHANGED
@@ -98,5 +98,27 @@ module Hyperb
|
|
98
98
|
fips = JSON.parse(Hyperb::Request.new(self, path, query, 'post').perform)
|
99
99
|
fips
|
100
100
|
end
|
101
|
+
|
102
|
+
# set a name for floating ip
|
103
|
+
#
|
104
|
+
# @see https://docs.hyper.sh/Reference/API/2016-04-04%20[Ver.%201.23]/Network/fip_name.html
|
105
|
+
#
|
106
|
+
# @raise [Hyperb::Error::Unauthorized] raised when credentials are not valid.
|
107
|
+
# @raise [Hyperb::Error::NotFound] raised when fip is not found
|
108
|
+
# @raise [Hyperb::Error::Conflict] raised when name already exists
|
109
|
+
# @raise [Hyperb::Error::InternalServerError] raised when server returns 5xx
|
110
|
+
#
|
111
|
+
#
|
112
|
+
# @param params [Hash] A customizable set of params.
|
113
|
+
# @option params [String] :ip fip
|
114
|
+
# @option params [String] :name the name
|
115
|
+
def fip_name(params = {})
|
116
|
+
raise ArgumentError, 'Invalid Arguments' unless check_arguments(params, 'ip', 'name')
|
117
|
+
path = '/fips/name'
|
118
|
+
query = {}
|
119
|
+
query[:ip] = params[:ip] if params.key?(:ip)
|
120
|
+
query[:name] = params[:name] if params.key?(:name)
|
121
|
+
Hyperb::Request.new(self, path, query, 'post').perform
|
122
|
+
end
|
101
123
|
end
|
102
124
|
end
|
@@ -18,20 +18,23 @@ module Hyperb
|
|
18
18
|
# @return [Hash] Hash containing service information.
|
19
19
|
#
|
20
20
|
# @param params [Hash] A customizable set of params.
|
21
|
-
# @param params
|
22
|
-
# @param params
|
23
|
-
# @param params
|
24
|
-
# @param params
|
25
|
-
# @param params
|
26
|
-
# @param params
|
27
|
-
# @param params
|
28
|
-
# @param params
|
29
|
-
# @param params
|
30
|
-
# @param params
|
31
|
-
# @param params
|
32
|
-
# @param params
|
21
|
+
# @param params [String] :image service name
|
22
|
+
# @param params [String] :name image name
|
23
|
+
# @param params [Fixnum] :replicas numer of replicas
|
24
|
+
# @param params [Fixnum] :serviceport service port
|
25
|
+
# @param params [Fixnum] :containerport container port
|
26
|
+
# @param params [Hash] :labels hash containing labels
|
27
|
+
# @param params [String] :entrypoint entrypoint
|
28
|
+
# @param params [String] :cmd command
|
29
|
+
# @param params [Boolean] :stdin keep STDIN open even if not attached.
|
30
|
+
# @param params [Array] :env array of envs ["env=value", ["env2=value"]]
|
31
|
+
# @param params [String] :algorithm algorithm of the service, 'roundrobin', 'leastconn'
|
32
|
+
# @param params [String] :protocol prot
|
33
|
+
# @param params [String] :workingdir working directory
|
34
|
+
# @param params [Boolean] :sessionaffinity whether the service uses sticky sessions.
|
35
|
+
# @param params [String] :securitygroups security group for the container.
|
33
36
|
def create_service(params = {})
|
34
|
-
valid = check_arguments(params, 'name', 'image', 'replicas', '
|
37
|
+
valid = check_arguments(params, 'name', 'image', 'replicas', 'serviceport', 'labels')
|
35
38
|
raise ArgumentError, 'Invalid arguments.' unless valid
|
36
39
|
path = '/services/create'
|
37
40
|
body = {}
|
@@ -55,5 +58,32 @@ module Hyperb
|
|
55
58
|
query[:keep] = params[:keep] if params.key?(:keep)
|
56
59
|
Hyperb::Request.new(self, path, query, 'delete').perform
|
57
60
|
end
|
61
|
+
|
62
|
+
# inspect a service
|
63
|
+
#
|
64
|
+
# @see https://docs.hyper.sh/Reference/API/2016-04-04%20[Ver.%201.23]/Service/inspect.html
|
65
|
+
#
|
66
|
+
# @raise [Hyperb::Error::Unauthorized] raised when credentials are not valid.
|
67
|
+
# @raise [Hyperb::Error::InternalServerError] raised hyper returns 5xx.
|
68
|
+
#
|
69
|
+
# @param params [Hash] A customizable set of params.
|
70
|
+
# @option params [String] :name service name.
|
71
|
+
def inspect_service(params = {})
|
72
|
+
valid = check_arguments(params, 'name')
|
73
|
+
raise ArgumentError, 'Invalid arguments.' unless valid
|
74
|
+
path = '/services/' + params[:name]
|
75
|
+
downcase_symbolize(JSON.parse(Hyperb::Request.new(self, path, {}, 'get').perform))
|
76
|
+
end
|
77
|
+
|
78
|
+
# list service
|
79
|
+
#
|
80
|
+
# @see https://docs.hyper.sh/Reference/API/2016-04-04%20[Ver.%201.23]/Service/list.html
|
81
|
+
#
|
82
|
+
# @raise [Hyperb::Error::Unauthorized] raised when credentials are not valid.
|
83
|
+
# @raise [Hyperb::Error::InternalServerError] raised hyper returns 5xx.
|
84
|
+
def services
|
85
|
+
path = '/services'
|
86
|
+
downcase_symbolize(JSON.parse(Hyperb::Request.new(self, path, {}, 'get').perform))
|
87
|
+
end
|
58
88
|
end
|
59
89
|
end
|
data/lib/hyperb/version.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
{
|
2
|
+
"Name": "http",
|
3
|
+
"Image": "nginx",
|
4
|
+
"WorkingDir": "",
|
5
|
+
"ContainerSize": "s4",
|
6
|
+
"SSLCert": "",
|
7
|
+
"NetMode": "bridge",
|
8
|
+
"StopSignal": "SIGTERM",
|
9
|
+
"ServicePort": 80,
|
10
|
+
"ContainerPort": 80,
|
11
|
+
"Replicas": 3,
|
12
|
+
"HealthCheckInterval": 3,
|
13
|
+
"HealthCheckFall": 3,
|
14
|
+
"HealthCheckRise": 2,
|
15
|
+
"Algorithm": "roundrobin",
|
16
|
+
"Protocol": "tcp",
|
17
|
+
"Stdin": false,
|
18
|
+
"Tty": false,
|
19
|
+
"SessionAffinity": false,
|
20
|
+
"Entrypoint": [],
|
21
|
+
"Cmd": [],
|
22
|
+
"Env": [],
|
23
|
+
"Volumes": {},
|
24
|
+
"Labels": {
|
25
|
+
"app": "nginx"
|
26
|
+
},
|
27
|
+
"SecurityGroups": {},
|
28
|
+
"IP": "172.16.55.36",
|
29
|
+
"Tenant": "b8dc36865f4b480683dabb25598d61c4",
|
30
|
+
"FIP": "",
|
31
|
+
"Message": "Scaling complete",
|
32
|
+
"Created": "2016-10-08T12:08:33.934Z",
|
33
|
+
"Status": "active",
|
34
|
+
"Containers": [
|
35
|
+
"33cd52f7af63391c9b9eb578130bd46f65f3e2c00ccbe80b9ee882cf40c6043b",
|
36
|
+
"54e3d0724f1d2b4429b08e3192c9ba13c93bd8d9077b391e6129e976eb713b7e",
|
37
|
+
"a35a66d91e0c0740e36f9f2e43db406fefe964f5a483a8137d9c08472860a53e"
|
38
|
+
]
|
39
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"Name": "http",
|
4
|
+
"Image": "nginx",
|
5
|
+
"WorkingDir": "",
|
6
|
+
"ContainerSize": "s4",
|
7
|
+
"SSLCert": "",
|
8
|
+
"NetMode": "bridge",
|
9
|
+
"StopSignal": "SIGTERM",
|
10
|
+
"ServicePort": 80,
|
11
|
+
"ContainerPort": 80,
|
12
|
+
"Replicas": 3,
|
13
|
+
"HealthCheckInterval": 3,
|
14
|
+
"HealthCheckFall": 3,
|
15
|
+
"HealthCheckRise": 2,
|
16
|
+
"Algorithm": "roundrobin",
|
17
|
+
"Protocol": "tcp",
|
18
|
+
"Stdin": false,
|
19
|
+
"Tty": false,
|
20
|
+
"SessionAffinity": false,
|
21
|
+
"Entrypoint": [],
|
22
|
+
"Cmd": [],
|
23
|
+
"Env": [],
|
24
|
+
"Volumes": {},
|
25
|
+
"Labels": {
|
26
|
+
"app": "nginx"
|
27
|
+
},
|
28
|
+
"SecurityGroups": {},
|
29
|
+
"IP": "172.16.55.36",
|
30
|
+
"Tenant": "b8dc36865f4b480683dabb25598d61c4",
|
31
|
+
"FIP": "",
|
32
|
+
"Message": "Scaling complete",
|
33
|
+
"Created": "2016-10-08T12:08:33.934Z",
|
34
|
+
"Status": "active",
|
35
|
+
"Containers": [
|
36
|
+
"33cd52f7af63391c9b9eb578130bd46f65f3e2c00ccbe80b9ee882cf40c6043b",
|
37
|
+
"54e3d0724f1d2b4429b08e3192c9ba13c93bd8d9077b391e6129e976eb713b7e",
|
38
|
+
"a35a66d91e0c0740e36f9f2e43db406fefe964f5a483a8137d9c08472860a53e"
|
39
|
+
]
|
40
|
+
}
|
41
|
+
]
|
data/spec/network_spec.rb
CHANGED
@@ -88,6 +88,26 @@ RSpec.describe Hyperb::Network do
|
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
|
+
describe '#fip_name' do
|
92
|
+
|
93
|
+
it 'should raise ArgumentError when ip is not provided' do
|
94
|
+
expect { @client.fip_name(name: 'test') }.to raise_error(ArgumentError)
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'should raise ArgumentError when name is not provided' do
|
98
|
+
expect { @client.fip_name(ip: '8.8.8.8') }.to raise_error(ArgumentError)
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'request to the correct path should be made' do
|
102
|
+
path = @base_path + '/name?ip=8.8.8.8&name=haproxy'
|
103
|
+
stub_request(:post, path)
|
104
|
+
.to_return(body: "")
|
105
|
+
|
106
|
+
@client.fip_name(ip: '8.8.8.8', name: 'haproxy')
|
107
|
+
expect(a_request(:post, path)).to have_been_made
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
91
111
|
describe '#fip_release' do
|
92
112
|
|
93
113
|
it 'should raise ArgumentError when ip is not provided' do
|
data/spec/services_spec.rb
CHANGED
@@ -8,7 +8,57 @@ RSpec.describe Hyperb::Services do
|
|
8
8
|
@base_path = Hyperb::Request::BASE_URL + Hyperb::Request::VERSION + '/services'
|
9
9
|
end
|
10
10
|
|
11
|
-
describe '#
|
11
|
+
describe '#inspect_service' do
|
12
|
+
|
13
|
+
it 'should raise ArgumentError when name is missing' do
|
14
|
+
expect { @client.inspect_service }.to raise_error(ArgumentError)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'request to the correct path should be made' do
|
18
|
+
path = @base_path + '/service1'
|
19
|
+
|
20
|
+
stub_request(:get, path)
|
21
|
+
.to_return(body: fixture('./inspect_service.json'))
|
22
|
+
|
23
|
+
@client.inspect_service(name: 'service1')
|
24
|
+
expect(a_request(:get, path)).to have_been_made
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'return correct attrs' do
|
28
|
+
path = @base_path + '/service1'
|
29
|
+
|
30
|
+
stub_request(:get, path)
|
31
|
+
.to_return(body: fixture('./inspect_service.json'))
|
32
|
+
|
33
|
+
s = @client.inspect_service(name: 'service1')
|
34
|
+
expect(s.is_a?(Hash)).to be true
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#services' do
|
39
|
+
|
40
|
+
it 'request to the correct path should be made' do
|
41
|
+
path = @base_path
|
42
|
+
|
43
|
+
stub_request(:get, path)
|
44
|
+
.to_return(body: fixture('./services.json'))
|
45
|
+
|
46
|
+
@client.services
|
47
|
+
expect(a_request(:get, path)).to have_been_made
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'return correct attrs' do
|
51
|
+
path = @base_path
|
52
|
+
|
53
|
+
stub_request(:get, path)
|
54
|
+
.to_return(body: fixture('./services.json'))
|
55
|
+
|
56
|
+
s = @client.services
|
57
|
+
expect(s.is_a?(Array)).to be true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#remove_service' do
|
12
62
|
|
13
63
|
it 'should raise ArgumentError when name is not provided' do
|
14
64
|
expect { @client.remove_service }.to raise_error(ArgumentError)
|
@@ -61,11 +111,11 @@ RSpec.describe Hyperb::Services do
|
|
61
111
|
it 'request to the correct path should be made with name' do
|
62
112
|
path = @base_path + '/create'
|
63
113
|
body = {
|
64
|
-
|
114
|
+
serviceport: 80,
|
65
115
|
name: 'name1',
|
66
116
|
image: 'nginx',
|
67
117
|
replicas: 2,
|
68
|
-
|
118
|
+
containerport: 80,
|
69
119
|
labels: {}
|
70
120
|
}
|
71
121
|
stub_request(:post, path)
|
@@ -79,12 +129,12 @@ RSpec.describe Hyperb::Services do
|
|
79
129
|
it 'correct request should be made with entrypoint' do
|
80
130
|
path = @base_path + '/create'
|
81
131
|
body = {
|
82
|
-
|
132
|
+
serviceport: 80,
|
83
133
|
name: 'name1',
|
84
134
|
image: 'nginx',
|
85
135
|
replicas: 2,
|
86
136
|
entrypoint: 'entry.sh',
|
87
|
-
|
137
|
+
containerport: 80,
|
88
138
|
labels: {}
|
89
139
|
}
|
90
140
|
stub_request(:post, path)
|
@@ -98,12 +148,12 @@ RSpec.describe Hyperb::Services do
|
|
98
148
|
it 'correct request should be made with cmd' do
|
99
149
|
path = @base_path + '/create'
|
100
150
|
body = {
|
101
|
-
|
151
|
+
serviceport: 80,
|
102
152
|
name: 'name1',
|
103
153
|
image: 'nginx',
|
104
154
|
replicas: 2,
|
105
155
|
cmd: 'echo 1',
|
106
|
-
|
156
|
+
containerport: 80,
|
107
157
|
labels: {}
|
108
158
|
}
|
109
159
|
stub_request(:post, path)
|
@@ -117,12 +167,12 @@ RSpec.describe Hyperb::Services do
|
|
117
167
|
it 'correct request should be made with env' do
|
118
168
|
path = @base_path + '/create'
|
119
169
|
body = {
|
120
|
-
|
170
|
+
serviceport: 80,
|
121
171
|
name: 'name1',
|
122
172
|
image: 'nginx',
|
123
173
|
replicas: 2,
|
124
174
|
env: ['ENV=123'],
|
125
|
-
|
175
|
+
containerport: 80,
|
126
176
|
labels: {}
|
127
177
|
}
|
128
178
|
stub_request(:post, path)
|
@@ -136,12 +186,12 @@ RSpec.describe Hyperb::Services do
|
|
136
186
|
it 'correct request should be made with protocol' do
|
137
187
|
path = @base_path + '/create'
|
138
188
|
body = {
|
139
|
-
|
189
|
+
serviceport: 80,
|
140
190
|
name: 'name1',
|
141
191
|
image: 'nginx',
|
142
192
|
replicas: 2,
|
143
193
|
protocol: 'https',
|
144
|
-
|
194
|
+
containerport: 80,
|
145
195
|
labels: {}
|
146
196
|
}
|
147
197
|
stub_request(:post, path)
|
@@ -155,11 +205,11 @@ RSpec.describe Hyperb::Services do
|
|
155
205
|
it 'correct request should be made with algorithm' do
|
156
206
|
path = @base_path + '/create'
|
157
207
|
body = {
|
158
|
-
|
208
|
+
serviceport: 80,
|
159
209
|
name: 'name1',
|
160
210
|
image: 'nginx',
|
161
211
|
replicas: 2,
|
162
|
-
|
212
|
+
containerport: 80,
|
163
213
|
algorithm: 'roundrobin',
|
164
214
|
labels: {}
|
165
215
|
}
|
@@ -174,12 +224,12 @@ RSpec.describe Hyperb::Services do
|
|
174
224
|
it 'correct request should be made with workingdir' do
|
175
225
|
path = @base_path + '/create'
|
176
226
|
body = {
|
177
|
-
|
227
|
+
serviceport: 80,
|
178
228
|
name: 'name1',
|
179
229
|
workingdir: '/path',
|
180
230
|
image: 'nginx',
|
181
231
|
replicas: 2,
|
182
|
-
|
232
|
+
containerport: 80,
|
183
233
|
labels: {}
|
184
234
|
}
|
185
235
|
stub_request(:post, path)
|
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.
|
4
|
+
version: 0.3.3
|
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-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -180,9 +180,11 @@ files:
|
|
180
180
|
- spec/fixtures/images.json
|
181
181
|
- spec/fixtures/inspect_container.json
|
182
182
|
- spec/fixtures/inspect_image.json
|
183
|
+
- spec/fixtures/inspect_service.json
|
183
184
|
- spec/fixtures/inspect_volume.json
|
184
185
|
- spec/fixtures/remove_container.json
|
185
186
|
- spec/fixtures/remove_image.json
|
187
|
+
- spec/fixtures/services.json
|
186
188
|
- spec/fixtures/volumes.json
|
187
189
|
- spec/helper.rb
|
188
190
|
- spec/image_spec.rb
|