@@ -128,18 +128,23 @@ class RegistryProxyController {
128
128
}
129
129
130
130
if ( route. tagList ){
131
+ log. debug " Handling tag list request '$route . path '"
131
132
return handleTagList(route, httpRequest)
132
133
}
133
134
134
135
final type = route. isManifest() ? ' manifest' : ' blob'
135
136
final headers = httpRequest. headers. asMap() as Map<String , List<String > >
136
137
final resp = proxyService. handleRequest(route, headers)
137
138
if ( resp. isRedirect() ) {
138
- log. debug " Forwarding $type request '$route . path ' to '$resp . location '"
139
+ log. debug " Forwarding $type request '${ route.getTargetContainer() } ' to '${ resp.location} '"
139
140
return fromRedirectResponse(resp)
140
141
}
142
+ else if ( route. isManifest() ) {
143
+ log. debug " Pulling manifest from repository: '${ route.getTargetContainer()} '"
144
+ return fromManifestResponse(resp)
145
+ }
141
146
else {
142
- log. debug " Pulling $t ype from remote host : '$route . path '"
147
+ log. debug " Pulling blob from repository : '${ route.getTargetContainer() } '"
143
148
return fromDelegateResponse(resp)
144
149
}
145
150
}
@@ -160,7 +165,7 @@ class RegistryProxyController {
160
165
161
166
MutableHttpResponse<?> handleHead (RoutePath route , HttpRequest httpRequest ) {
162
167
163
- if (! ( route. manifest && route . tag) ) {
168
+ if ( ! route. manifest ) {
164
169
throw new DockerRegistryException (" Invalid request HEAD '$httpRequest . path '" , 400 , ' UNKNOWN' )
165
170
}
166
171
@@ -172,7 +177,6 @@ class RegistryProxyController {
172
177
}
173
178
174
179
MutableHttpResponse<?> handleTagList (RoutePath route , HttpRequest httpRequest ) {
175
- log. debug " Handling tag list request '$route . path '"
176
180
final headers = httpRequest. headers. asMap() as Map<String , List<String > >
177
181
final resp = proxyService. handleRequest(route, headers)
178
182
HttpResponse
@@ -188,7 +192,7 @@ class RegistryProxyController {
188
192
" docker-content-digest" , entry. digest,
189
193
" etag" , entry. digest,
190
194
" docker-distribution-api-version" , " registry/2.0" ) as Map<CharSequence , CharSequence >
191
- MutableHttpResponse
195
+ HttpResponse
192
196
.ok( entry. bytes )
193
197
.headers(headers)
194
198
}
@@ -211,6 +215,13 @@ class RegistryProxyController {
211
215
.headers(toMutableHeaders(delegateResponse. headers))
212
216
}
213
217
218
+ MutableHttpResponse<?> fromManifestResponse (DelegateResponse resp ) {
219
+ HttpResponse
220
+ .status(HttpStatus . valueOf(resp. statusCode))
221
+ .body(resp. body. bytes)
222
+ .headers(toMutableHeaders(resp. headers))
223
+ }
224
+
214
225
static protected Consumer<MutableHttpHeaders > toMutableHeaders (Map<String ,List<String > > headers , Map<String ,String > override = Collections . emptyMap()) {
215
226
new Consumer<MutableHttpHeaders > () {
216
227
@Override
0 commit comments