#!/usr/bin/env python3 import requests import random import string import pprint registry_url = "docker-registry.wikimedia.org" def randstr(): return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(5)) def _request(url_part, bust_cache=""): headers = {} headers["Accept"] = "application/vnd.docker.distribution.manifest.v2+json" url = "https://{}{}".format(registry_url, url_part) if bust_cache: url += "?cache={}".format(bust_cache) response = requests.request("GET", url, headers=headers, stream=True) response.raise_for_status() return response def compare_content_length(bust_cache=""): r = _request(url, bust_cache) try: expected = int(r.headers["content-length"]) except KeyError: print("ERROR: {} no content-length header".format(r.url)) pprint.pprint(r.headers, width=1) return False got = len(r.raw.data) if expected != got: print("ERROR: {} expected: {} got: {} ".format(img, expected, got)) pprint.pprint(r.headers, width=1) return False return True img = ["/v2/releng/node10-test-browser/manifests/latest", ] for url in img: compare_content_length() bust_cache = randstr() r = compare_content_length(bust_cache=bust_cache) if not r: r2 = compare_content_length(bust_cache=bust_cache) print("Second try okay?: {}".format(r2))