* authorization token is optional * registry url is taken from X-Docker-Endpoints header * pull.sh correctly resumes partial layer downloads * detjson.py does not fail on missing keys
40 lines
906 B
Python
40 lines
906 B
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# Deterministic layer json: https://github.com/docker/hub-feedback/issues/488
|
|
|
|
import sys
|
|
reload(sys)
|
|
sys.setdefaultencoding('UTF8')
|
|
import json
|
|
|
|
# If any of the keys below are equal to a certain value
|
|
# then we can delete it because it's the default value
|
|
SAFEDELS = {
|
|
"Size": 0,
|
|
"config": {
|
|
"ExposedPorts": None,
|
|
"MacAddress": "",
|
|
"NetworkDisabled": False,
|
|
"PortSpecs": None,
|
|
"VolumeDriver": ""
|
|
}
|
|
}
|
|
SAFEDELS["container_config"] = SAFEDELS["config"]
|
|
|
|
def makedet(j, safedels):
|
|
for k,v in safedels.items():
|
|
if k not in j:
|
|
continue
|
|
if type(v) == dict:
|
|
makedet(j[k], v)
|
|
elif j[k] == v:
|
|
del j[k]
|
|
|
|
def main():
|
|
j = json.load(sys.stdin)
|
|
makedet(j, SAFEDELS)
|
|
json.dump(j, sys.stdout, sort_keys=True)
|
|
|
|
if __name__ == '__main__':
|
|
main() |