@@ -120,7 +120,7 @@ def _get_registry_access_header(app, registry):
120120 jwt = Authorize .get_jwt_with_appname (app )
121121 header = {'Authorization' : 'Bearer %s' % jwt }
122122 else :
123- header = ''
123+ header = {}
124124 return header
125125
126126
@@ -171,6 +171,28 @@ def get_meta_from_registry(app, meta_version, registry=None):
171171 return y
172172
173173
174+ def get_image_config_from_registry (app , meta_version , registry = None ):
175+ logger .debug ("ready get meta version %s for app %s from registry" %
176+ (meta_version , app ))
177+ meta_version = normalize_meta_version (meta_version )
178+ if not registry :
179+ registry = PRIVATE_REGISTRY
180+
181+ headers = _get_registry_access_header (app , registry )
182+ headers ['Accept' ] = 'application/vnd.docker.distribution.manifest.v2+json'
183+ url = 'http://%s/v2/%s/manifests/release-%s' % (registry , app , meta_version )
184+ resp = requests .get (url , headers = headers )
185+ if resp .status_code != 200 :
186+ raise Exception ("requests.get(%s, %s) failed, resp: %s" % (url , headers , resp ))
187+ config_digest = resp .json ()['config' ]['digest' ]
188+ headers = _get_registry_access_header (app , registry )
189+ url = 'http://%s/v2/%s/blobs/%s' % (registry , app , config_digest )
190+ resp = requests .get (url , headers = headers )
191+ if resp .status_code != 200 :
192+ raise Exception ("requests.get(%s, %s) failed, resp: %s" % (url , headers , resp ))
193+ return resp .json ()['config' ]
194+
195+
174196def shell (cmd ):
175197 retcode = 0
176198 output = None
0 commit comments