docker_registry2 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/Gemfile +1 -7
  4. data/Makefile +3 -0
  5. data/lib/registry/registry.rb +51 -8
  6. data/lib/registry/version.rb +1 -1
  7. data/test.sh +34 -0
  8. data/test/registry/docker/registry/v2/blobs/sha256/05/05a3bd381fc2470695a35f230afefd7bf978b566253199c4ae5cc96fafa29b37/data +1 -0
  9. data/test/registry/docker/registry/v2/blobs/sha256/5b/5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9/data +0 -0
  10. data/test/registry/docker/registry/v2/blobs/sha256/6d/6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca/data +22 -0
  11. data/test/registry/docker/registry/v2/blobs/sha256/a3/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4/data +0 -0
  12. data/test/registry/docker/registry/v2/blobs/sha256/a5/a5074d61e1e0175fb3a46e0bab46b1f764380ad00cac0e71d53bd4917d196988/data +16 -0
  13. data/test/registry/docker/registry/v2/blobs/sha256/ce/ce7ce558987faf28ee4526d4d959ee327f4503428becafd3d40109887d54ec74/data +1 -0
  14. data/test/registry/docker/registry/v2/repositories/hello-world-v1/_layers/sha256/05a3bd381fc2470695a35f230afefd7bf978b566253199c4ae5cc96fafa29b37/link +1 -0
  15. data/test/registry/docker/registry/v2/repositories/hello-world-v1/_layers/sha256/5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9/link +1 -0
  16. data/test/registry/docker/registry/v2/repositories/hello-world-v1/_layers/sha256/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4/link +1 -0
  17. data/test/registry/docker/registry/v2/repositories/hello-world-v1/_manifests/revisions/sha256/6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca/link +1 -0
  18. data/test/registry/docker/registry/v2/repositories/hello-world-v1/_manifests/revisions/sha256/6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca/signatures/sha256/ce7ce558987faf28ee4526d4d959ee327f4503428becafd3d40109887d54ec74/link +1 -0
  19. data/test/registry/docker/registry/v2/repositories/hello-world-v1/_manifests/tags/latest/current/link +1 -0
  20. data/test/registry/docker/registry/v2/repositories/hello-world-v1/_manifests/tags/latest/index/sha256/6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca/link +1 -0
  21. data/test/registry/docker/registry/v2/repositories/hello-world-v2/_layers/sha256/05a3bd381fc2470695a35f230afefd7bf978b566253199c4ae5cc96fafa29b37/link +1 -0
  22. data/test/registry/docker/registry/v2/repositories/hello-world-v2/_layers/sha256/5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9/link +1 -0
  23. data/test/registry/docker/registry/v2/repositories/hello-world-v2/_manifests/revisions/sha256/a5074d61e1e0175fb3a46e0bab46b1f764380ad00cac0e71d53bd4917d196988/link +1 -0
  24. data/test/registry/docker/registry/v2/repositories/hello-world-v2/_manifests/tags/latest/current/link +1 -0
  25. data/test/registry/docker/registry/v2/repositories/hello-world-v2/_manifests/tags/latest/index/sha256/a5074d61e1e0175fb3a46e0bab46b1f764380ad00cac0e71d53bd4917d196988/link +1 -0
  26. data/test/test.rb +27 -0
  27. metadata +42 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cce22be352c28fdedb18bd5e760f223dfcbe3e01
4
- data.tar.gz: 3b50ea0a5a5a4bd01413b644969db483cc03ef49
3
+ metadata.gz: f8e366499e6fd775167d81e169e2f4996224d7d5
4
+ data.tar.gz: 883e219f5b5782f0573b62893954e075d5e8f246
5
5
  SHA512:
6
- metadata.gz: 59f287a1eef0adad31468e3f3568267bfcd6143c7a6d0edde031ae6c2be0922deecd60b27dfce4acab1689bb6b06429f4c357af3dcd5d0a297193696f940fc38
7
- data.tar.gz: 1b1282ee6b00ac909af0bf478070f67aea287f1463e8dab2ff579a00a53cab19c210d08fb50b749feea6c8a48a2ab6045744f6b7900ecb82626683bb25772527
6
+ metadata.gz: 6b0d7005b5511de80c0034afe83eb0157b8a43c7783ecf8bdc840642a679e4fd2cfe43fe616271abb3fbf9408add87a3d410ff33d54d998517709f3456c4505c
7
+ data.tar.gz: b6f14af6e5b24085943df7d0d204d8372d4d4e77f1447f130410db5d5ea443e109e8a74bb935dce094cd01f82b90ff1f67a7d34b90d3f1f04dcf4de2f61c4a49
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## v1.3.0, 22 October 2017
2
+
3
+ - Add basic tests
4
+ - Add support for both v1 and v2 schemas thanks to https://github.com/lehn-etracker
5
+
1
6
  ## v1.2.0, 15 October 2017
2
7
 
3
8
  - Add shorter default timeouts. Previously, the RestClient default of 60 seconds
data/Gemfile CHANGED
@@ -1,9 +1,3 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
4
- gem 'rest-client'
5
-
6
-
7
- group :test do
8
- gem 'rake'
9
- end
3
+ gemspec
data/Makefile CHANGED
@@ -12,3 +12,6 @@ $(GEM):
12
12
 
13
13
  clean:
14
14
  rm -rf docker_registry2*.gem
15
+
16
+ test:
17
+ ./test.sh
@@ -84,18 +84,61 @@ class DockerRegistry2::Registry
84
84
  return dodelete("/v2/#{image}/manifests/#{reference}").code
85
85
  end
86
86
 
87
- def pull(repo,tag,dir)
87
+ def pull(repo, tag, dir)
88
88
  # make sure the directory exists
89
- FileUtils::mkdir_p dir
89
+ FileUtils.mkdir_p dir
90
90
  # get the manifest
91
- m = manifest repo,tag
91
+ m = manifest repo, tag
92
+ # puts "pulling #{repo}:#{tag} into #{dir}"
93
+ # manifest can contain multiple manifests one for each API version
94
+ downloaded_layers = []
95
+ downloaded_layers += _pull_v2(repo, m, dir) if m['schemaVersion'] == 2
96
+ downloaded_layers += _pull_v1(repo, m, dir) if m['schemaVersion'] == 1
97
+ # return downloaded_layers
98
+ downloaded_layers
99
+ end
100
+
101
+ def _pull_v2(repo, manifest, dir)
102
+ # make sure the directory exists
103
+ FileUtils.mkdir_p dir
104
+ return false unless manifest['schemaVersion'] == 2
92
105
  # pull each of the layers
93
- m["layers"].each { |layer|
94
- # make sure the layer does not exist first
95
- if ! File.file? "#{dir}/#{layer.blobSum}" then
96
- doget "/v2/#{repo}/blobs/#{layer.blobSum}" "#{dir}/#{layer.blobSum}"
106
+ manifest['layers'].each do |layer|
107
+ # define path of file to save layer in
108
+ layer_file = "#{dir}/#{layer['digest']}"
109
+ # skip layer if we already got it
110
+ next if File.file? layer_file
111
+ # download layer
112
+ # puts "getting layer (v2) #{layer['digest']}"
113
+ File.open(layer_file, 'w') do |fd|
114
+ doreq('get',
115
+ "/v2/#{repo}/blobs/#{layer['digest']}",
116
+ fd)
97
117
  end
98
- }
118
+ layer_file
119
+ end
120
+ end
121
+
122
+ def _pull_v1(repo, manifest, dir)
123
+ # make sure the directory exists
124
+ FileUtils.mkdir_p dir
125
+ return false unless manifest['schemaVersion'] == 1
126
+ # pull each of the layers
127
+ manifest['fsLayers'].each do |layer|
128
+ # define path of file to save layer in
129
+ layer_file = "#{dir}/#{layer['blobSum']}"
130
+ # skip layer if we already got it
131
+ next if File.file? layer_file
132
+ # download layer
133
+ # puts "getting layer (v1) #{layer['blobSum']}"
134
+ File.open(layer_file, 'w') do |fd|
135
+ doreq('get',
136
+ "/v2/#{repo}/blobs/#{layer['blobSum']}",
137
+ fd)
138
+ end
139
+ # return layer file
140
+ layer_file
141
+ end
99
142
  end
100
143
 
101
144
  def push(manifest,dir)
@@ -1,3 +1,3 @@
1
1
  module DockerRegistry2
2
- VERSION = '1.2.0'
2
+ VERSION = '1.3.0'
3
3
  end
data/test.sh ADDED
@@ -0,0 +1,34 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ cid=$(docker run -d -v $PWD/test/registry:/var/lib/registry -p 5000:5000 registry:2.6)
6
+
7
+ # test a pull of each image - not a fancy start, but a good enough one
8
+ bundle install
9
+
10
+ set +e
11
+ VERSION=v1 ruby ./test/test.rb
12
+ success1=$?
13
+ set -e
14
+
15
+ set +e
16
+ VERSION=v2 ruby ./test/test.rb
17
+ success2=$?
18
+ set -e
19
+
20
+
21
+ docker kill $cid
22
+ docker rm $cid
23
+
24
+ if [ $success1 -ne 0 ]; then
25
+ echo "Failed v1 test"
26
+ fi
27
+
28
+ if [ $success2 -ne 0 ]; then
29
+ echo "Failed v2 test"
30
+ fi
31
+
32
+ if [ $success1 -ne 0 -o $success2 -ne 0 ]; then
33
+ exit 1
34
+ fi
@@ -0,0 +1 @@
1
+ {"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/hello"],"ArgsEscaped":true,"Image":"sha256:dcb41c36211f527a23dccf9178772996d641d7f5c140dae12ed29411d8ea5e65","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"container":"6f86241dad28350cd4f8cc4e26f857757605e5ccd82dff35802cd9ffd0868274","container_config":{"Hostname":"6f86241dad28","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh","-c","#(nop) ","CMD [\"/hello\"]"],"ArgsEscaped":true,"Image":"sha256:dcb41c36211f527a23dccf9178772996d641d7f5c140dae12ed29411d8ea5e65","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{}},"created":"2017-09-12T22:24:11.503356658Z","docker_version":"17.06.2-ce","history":[{"created":"2017-09-12T22:24:11.330149797Z","created_by":"/bin/sh -c #(nop) COPY file:b65349dad8105cbef74456e9c0c9da5d001e9eb2ade4b3c21e107909aee5b25a in / "},{"created":"2017-09-12T22:24:11.503356658Z","created_by":"/bin/sh -c #(nop) CMD [\"/hello\"]","empty_layer":true}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:3a36971a9f14df69f90891bf24dc2b9ed9c2d20959b624eab41bbf126272a023"]}}
@@ -0,0 +1,22 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "name": "hello-world-v1",
4
+ "tag": "latest",
5
+ "architecture": "amd64",
6
+ "fsLayers": [
7
+ {
8
+ "blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
9
+ },
10
+ {
11
+ "blobSum": "sha256:5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9"
12
+ }
13
+ ],
14
+ "history": [
15
+ {
16
+ "v1Compatibility": "{\"architecture\":\"amd64\",\"config\":{\"Hostname\":\"\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/hello\"],\"ArgsEscaped\":true,\"Image\":\"sha256:dcb41c36211f527a23dccf9178772996d641d7f5c140dae12ed29411d8ea5e65\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":null},\"container\":\"6f86241dad28350cd4f8cc4e26f857757605e5ccd82dff35802cd9ffd0868274\",\"container_config\":{\"Hostname\":\"6f86241dad28\",\"Domainname\":\"\",\"User\":\"\",\"AttachStdin\":false,\"AttachStdout\":false,\"AttachStderr\":false,\"Tty\":false,\"OpenStdin\":false,\"StdinOnce\":false,\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\"],\"Cmd\":[\"/bin/sh\",\"-c\",\"#(nop) \",\"CMD [\\\"/hello\\\"]\"],\"ArgsEscaped\":true,\"Image\":\"sha256:dcb41c36211f527a23dccf9178772996d641d7f5c140dae12ed29411d8ea5e65\",\"Volumes\":null,\"WorkingDir\":\"\",\"Entrypoint\":null,\"OnBuild\":null,\"Labels\":{}},\"created\":\"2017-09-12T22:24:11.503356658Z\",\"docker_version\":\"17.06.2-ce\",\"id\":\"bef02f2f646789b5166d68ff91ad4b032b7b626912538d4ba26372d121072f36\",\"os\":\"linux\",\"parent\":\"3619f633e2e68c20001e347ea3b904ded56f5575beb9ac1fc3618d6d2b3a658d\",\"throwaway\":true}"
17
+ },
18
+ {
19
+ "v1Compatibility": "{\"id\":\"3619f633e2e68c20001e347ea3b904ded56f5575beb9ac1fc3618d6d2b3a658d\",\"created\":\"2017-09-12T22:24:11.330149797Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) COPY file:b65349dad8105cbef74456e9c0c9da5d001e9eb2ade4b3c21e107909aee5b25a in / \"]}}"
20
+ }
21
+ ]
22
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": 2,
3
+ "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
4
+ "config": {
5
+ "mediaType": "application/vnd.docker.container.image.v1+json",
6
+ "size": 1510,
7
+ "digest": "sha256:05a3bd381fc2470695a35f230afefd7bf978b566253199c4ae5cc96fafa29b37"
8
+ },
9
+ "layers": [
10
+ {
11
+ "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
12
+ "size": 974,
13
+ "digest": "sha256:5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9"
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1 @@
1
+ {"header":{"jwk":{"crv":"P-256","kid":"HZFY:LV34:PG64:L5IU:KCXW:Z45P:CQIH:SS2U:7VB7:4F25:QFPL:UWYI","kty":"EC","x":"WgEr_lM3ItAdtGUe3bogKT3Q_99I_Pzu28OtkPOmpeA","y":"bYisRvE8gJPjO0nkiTXPZcNOPzNpwOj4Y56NnKF-Tys"},"alg":"ES256"},"signature":"_tUCImcmVEwpMNcxThg78lWDaou5KYtDSuBY6l5H50lGPV1faNm-btfMD9F1fvpecPb2kzEkfLyvbADkGTsW0w","protected":"eyJmb3JtYXRMZW5ndGgiOjIxNDAsImZvcm1hdFRhaWwiOiJDbjAiLCJ0aW1lIjoiMjAxNy0xMC0yMlQxMToyOToxNVoifQ"}
@@ -0,0 +1 @@
1
+ sha256:05a3bd381fc2470695a35f230afefd7bf978b566253199c4ae5cc96fafa29b37
@@ -0,0 +1 @@
1
+ sha256:5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9
@@ -0,0 +1 @@
1
+ sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
@@ -0,0 +1 @@
1
+ sha256:6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca
@@ -0,0 +1 @@
1
+ sha256:05a3bd381fc2470695a35f230afefd7bf978b566253199c4ae5cc96fafa29b37
@@ -0,0 +1 @@
1
+ sha256:5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9
@@ -0,0 +1 @@
1
+ sha256:a5074d61e1e0175fb3a46e0bab46b1f764380ad00cac0e71d53bd4917d196988
data/test/test.rb ADDED
@@ -0,0 +1,27 @@
1
+ #!ruby
2
+ require 'tmpdir'
3
+ require_relative '../lib/docker_registry2'
4
+ version = ENV["VERSION"]
5
+ reg = DockerRegistry2.connect "http://localhost:5000/"
6
+
7
+ # do we have tags?
8
+ image = "hello-world-"+version
9
+ tags = reg.tags image
10
+ if tags == nil || tags["name"] != image || tags["tags"] != ["latest"]
11
+ abort "Bad tags"
12
+ end
13
+
14
+
15
+ # can we read the manifest?
16
+ manifest = reg.manifest image, "latest"
17
+
18
+ # can we pull an image?
19
+ tmpdir = Dir.mktmpdir
20
+ begin
21
+ reg.pull image, "latest", tmpdir
22
+ ensure
23
+ FileUtils.remove_entry_secure tmpdir
24
+ end
25
+
26
+ # success
27
+ exit
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.2.0
4
+ version: 1.3.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-15 00:00:00.000000000 Z
13
+ date: 2017-10-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -85,6 +85,26 @@ files:
85
85
  - lib/registry/exceptions.rb
86
86
  - lib/registry/registry.rb
87
87
  - lib/registry/version.rb
88
+ - test.sh
89
+ - test/registry/docker/registry/v2/blobs/sha256/05/05a3bd381fc2470695a35f230afefd7bf978b566253199c4ae5cc96fafa29b37/data
90
+ - test/registry/docker/registry/v2/blobs/sha256/5b/5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9/data
91
+ - test/registry/docker/registry/v2/blobs/sha256/6d/6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca/data
92
+ - test/registry/docker/registry/v2/blobs/sha256/a3/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4/data
93
+ - test/registry/docker/registry/v2/blobs/sha256/a5/a5074d61e1e0175fb3a46e0bab46b1f764380ad00cac0e71d53bd4917d196988/data
94
+ - test/registry/docker/registry/v2/blobs/sha256/ce/ce7ce558987faf28ee4526d4d959ee327f4503428becafd3d40109887d54ec74/data
95
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_layers/sha256/05a3bd381fc2470695a35f230afefd7bf978b566253199c4ae5cc96fafa29b37/link
96
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_layers/sha256/5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9/link
97
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_layers/sha256/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4/link
98
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_manifests/revisions/sha256/6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca/link
99
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_manifests/revisions/sha256/6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca/signatures/sha256/ce7ce558987faf28ee4526d4d959ee327f4503428becafd3d40109887d54ec74/link
100
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_manifests/tags/latest/current/link
101
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_manifests/tags/latest/index/sha256/6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca/link
102
+ - test/registry/docker/registry/v2/repositories/hello-world-v2/_layers/sha256/05a3bd381fc2470695a35f230afefd7bf978b566253199c4ae5cc96fafa29b37/link
103
+ - test/registry/docker/registry/v2/repositories/hello-world-v2/_layers/sha256/5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9/link
104
+ - test/registry/docker/registry/v2/repositories/hello-world-v2/_manifests/revisions/sha256/a5074d61e1e0175fb3a46e0bab46b1f764380ad00cac0e71d53bd4917d196988/link
105
+ - test/registry/docker/registry/v2/repositories/hello-world-v2/_manifests/tags/latest/current/link
106
+ - test/registry/docker/registry/v2/repositories/hello-world-v2/_manifests/tags/latest/index/sha256/a5074d61e1e0175fb3a46e0bab46b1f764380ad00cac0e71d53bd4917d196988/link
107
+ - test/test.rb
88
108
  homepage: https://github.com/deitch/docker_registry2
89
109
  licenses:
90
110
  - MIT
@@ -109,4 +129,23 @@ rubygems_version: 2.4.8
109
129
  signing_key:
110
130
  specification_version: 4
111
131
  summary: Docker v2 registry HTTP API client
112
- test_files: []
132
+ test_files:
133
+ - test/registry/docker/registry/v2/blobs/sha256/05/05a3bd381fc2470695a35f230afefd7bf978b566253199c4ae5cc96fafa29b37/data
134
+ - test/registry/docker/registry/v2/blobs/sha256/5b/5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9/data
135
+ - test/registry/docker/registry/v2/blobs/sha256/6d/6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca/data
136
+ - test/registry/docker/registry/v2/blobs/sha256/a3/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4/data
137
+ - test/registry/docker/registry/v2/blobs/sha256/a5/a5074d61e1e0175fb3a46e0bab46b1f764380ad00cac0e71d53bd4917d196988/data
138
+ - test/registry/docker/registry/v2/blobs/sha256/ce/ce7ce558987faf28ee4526d4d959ee327f4503428becafd3d40109887d54ec74/data
139
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_layers/sha256/05a3bd381fc2470695a35f230afefd7bf978b566253199c4ae5cc96fafa29b37/link
140
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_layers/sha256/5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9/link
141
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_layers/sha256/a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4/link
142
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_manifests/revisions/sha256/6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca/link
143
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_manifests/revisions/sha256/6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca/signatures/sha256/ce7ce558987faf28ee4526d4d959ee327f4503428becafd3d40109887d54ec74/link
144
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_manifests/tags/latest/current/link
145
+ - test/registry/docker/registry/v2/repositories/hello-world-v1/_manifests/tags/latest/index/sha256/6d28b970d82cb05ce1aca12baddcd72b7034c7e771fdd97d0862672deb863fca/link
146
+ - test/registry/docker/registry/v2/repositories/hello-world-v2/_layers/sha256/05a3bd381fc2470695a35f230afefd7bf978b566253199c4ae5cc96fafa29b37/link
147
+ - test/registry/docker/registry/v2/repositories/hello-world-v2/_layers/sha256/5b0f327be733e58fbaea986eb671ed2eab9bc4a88bda1a7a284209e068d88dc9/link
148
+ - test/registry/docker/registry/v2/repositories/hello-world-v2/_manifests/revisions/sha256/a5074d61e1e0175fb3a46e0bab46b1f764380ad00cac0e71d53bd4917d196988/link
149
+ - test/registry/docker/registry/v2/repositories/hello-world-v2/_manifests/tags/latest/current/link
150
+ - test/registry/docker/registry/v2/repositories/hello-world-v2/_manifests/tags/latest/index/sha256/a5074d61e1e0175fb3a46e0bab46b1f764380ad00cac0e71d53bd4917d196988/link
151
+ - test/test.rb