docker_registry2 1.1.0 → 1.2.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/CHANGELOG.md +6 -0
- data/README.md +8 -1
- data/lib/registry/registry.rb +38 -4
- data/lib/registry/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cce22be352c28fdedb18bd5e760f223dfcbe3e01
|
4
|
+
data.tar.gz: 3b50ea0a5a5a4bd01413b644969db483cc03ef49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59f287a1eef0adad31468e3f3568267bfcd6143c7a6d0edde031ae6c2be0922deecd60b27dfce4acab1689bb6b06429f4c357af3dcd5d0a297193696f940fc38
|
7
|
+
data.tar.gz: 1b1282ee6b00ac909af0bf478070f67aea287f1463e8dab2ff579a00a53cab19c210d08fb50b749feea6c8a48a2ab6045744f6b7900ecb82626683bb25772527
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## v1.2.0, 15 October 2017
|
2
|
+
|
3
|
+
- Add shorter default timeouts. Previously, the RestClient default of 60 seconds
|
4
|
+
was used for both open_timeout and read_timeout. Now, those values are set at
|
5
|
+
2 seconds and 5 seconds, respectively.
|
6
|
+
|
1
7
|
## v1.1.0, 13 October 2017
|
2
8
|
|
3
9
|
- Move `ping` call from `DockerRegistry2::Registry.new` to
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
## Introduction
|
4
4
|
|
5
|
-
This is a simple gem that provides direct http access to a docker registry v2 without going through a docker server. You do **not**
|
5
|
+
This is a simple gem that provides direct http access to a docker registry v2 without going through a docker server. You do **not** require docker installed on your system to provide access.
|
6
6
|
|
7
7
|
````ruby
|
8
8
|
reg = DockerRegistry2.connect("https://my.registy.corp.com")
|
@@ -46,7 +46,14 @@ reg = DockerRegistry2.connect("https://my.registy.corp.com")
|
|
46
46
|
|
47
47
|
If you do not provide the URL for a registry, it uses the default `https://registry.hub.docker.com`.
|
48
48
|
|
49
|
+
By default, requests to the registry will timeout if they take over 2 seconds to
|
50
|
+
connect or over 5 seconds to respond. You can set different thresholds when
|
51
|
+
connecting to a registry as follows:
|
49
52
|
|
53
|
+
```ruby
|
54
|
+
opts = { open_timeout: 2, read_timeout: 5 }
|
55
|
+
reg = DockerRegistry2.connect("https://my.registy.corp.com", opts)
|
56
|
+
```
|
50
57
|
|
51
58
|
You can connect anonymously or with credentials:
|
52
59
|
|
data/lib/registry/registry.rb
CHANGED
@@ -7,11 +7,15 @@ class DockerRegistry2::Registry
|
|
7
7
|
# @param [Hash] options Client options
|
8
8
|
# @option options [#to_s] :user User name for basic authentication
|
9
9
|
# @option options [#to_s] :password Password for basic authentication
|
10
|
+
# @option options [#to_s] :open_timeout Time to wait for a connection with a registry
|
11
|
+
# @option options [#to_s] :read_timeout Time to wait for data from a registry
|
10
12
|
def initialize(uri, options = {})
|
11
13
|
@uri = URI.parse(uri)
|
12
14
|
@base_uri = "#{@uri.scheme}://#{@uri.host}:#{@uri.port}"
|
13
15
|
@user = options[:user]
|
14
16
|
@password = options[:password]
|
17
|
+
@open_timeout = options[:open_timeout] || 2
|
18
|
+
@read_timeout = options[:read_timeout] || 5
|
15
19
|
end
|
16
20
|
|
17
21
|
def doget(url)
|
@@ -126,7 +130,14 @@ class DockerRegistry2::Registry
|
|
126
130
|
stream.write chunk
|
127
131
|
end
|
128
132
|
}
|
129
|
-
response = RestClient::Request.execute
|
133
|
+
response = RestClient::Request.execute(
|
134
|
+
method: type,
|
135
|
+
url: @base_uri+url,
|
136
|
+
headers: {Accept: 'application/vnd.docker.distribution.manifest.v2+json'},
|
137
|
+
block_response: block,
|
138
|
+
open_timeout: @open_timeout,
|
139
|
+
read_timeout: @read_timeout
|
140
|
+
)
|
130
141
|
rescue SocketError
|
131
142
|
raise DockerRegistry2::RegistryUnknownException
|
132
143
|
rescue RestClient::Unauthorized => e
|
@@ -151,7 +162,16 @@ class DockerRegistry2::Registry
|
|
151
162
|
stream.write chunk
|
152
163
|
end
|
153
164
|
}
|
154
|
-
response = RestClient::Request.execute
|
165
|
+
response = RestClient::Request.execute(
|
166
|
+
method: type,
|
167
|
+
url: @base_uri+url,
|
168
|
+
user: @user,
|
169
|
+
password: @password,
|
170
|
+
headers: {Accept: 'application/vnd.docker.distribution.manifest.v2+json'},
|
171
|
+
block_response: block,
|
172
|
+
open_timeout: @open_timeout,
|
173
|
+
read_timeout: @read_timeout
|
174
|
+
)
|
155
175
|
rescue SocketError
|
156
176
|
raise DockerRegistry2::RegistryUnknownException
|
157
177
|
rescue RestClient::Unauthorized
|
@@ -170,7 +190,14 @@ class DockerRegistry2::Registry
|
|
170
190
|
stream.write chunk
|
171
191
|
end
|
172
192
|
}
|
173
|
-
response = RestClient::Request.execute
|
193
|
+
response = RestClient::Request.execute(
|
194
|
+
method: type,
|
195
|
+
url: @base_uri+url,
|
196
|
+
headers: {Authorization: 'Bearer '+token, Accept: 'application/vnd.docker.distribution.manifest.v2+json'},
|
197
|
+
block_response: block,
|
198
|
+
open_timeout: @open_timeout,
|
199
|
+
read_timeout: @read_timeout
|
200
|
+
)
|
174
201
|
rescue SocketError
|
175
202
|
raise DockerRegistry2::RegistryUnknownException
|
176
203
|
rescue RestClient::Unauthorized
|
@@ -192,7 +219,14 @@ class DockerRegistry2::Registry
|
|
192
219
|
# authenticate against the realm
|
193
220
|
uri = URI.parse(target[:realm])
|
194
221
|
begin
|
195
|
-
response = RestClient::Request.execute
|
222
|
+
response = RestClient::Request.execute(
|
223
|
+
method: :get,
|
224
|
+
url: uri.to_s, headers: {params: target[:params]},
|
225
|
+
user: @user,
|
226
|
+
password: @password,
|
227
|
+
open_timeout: @open_timeout,
|
228
|
+
read_timeout: @read_timeout
|
229
|
+
)
|
196
230
|
rescue RestClient::Unauthorized
|
197
231
|
# bad authentication
|
198
232
|
raise DockerRegistry2::RegistryAuthenticationException
|
data/lib/registry/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docker_registry2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Avi Deitcher https://github.com/deitch
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-10-
|
13
|
+
date: 2017-10-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|