hostile-takeover/server/docker/push_image
2016-01-07 22:10:13 -08:00

55 lines
1.4 KiB
Python
Executable File

#!/usr/bin/python2.7
"""push_image <image name>
This tool wraps docker push to handle image versions appropriately
"""
import sys
import os
import json
import subprocess
import shlex
import config
registry = config.get('REGISTRY_PREFIX')
auth = config.get('AUTH_PREFIX')
def load_versions(filename):
if not os.path.exists(filename):
print 'Can\'t find image_versions.json'
sys.exit(1)
t = json.loads(file(filename).read())
versions = {}
for key in t:
versions[key.encode('utf-8')] = t[key].encode('utf-8')
return versions
def main():
if len(sys.argv) == 1:
print __doc__
sys.exit(1)
image_name = sys.argv[1]
tag_prefixes = sys.argv[2:]
dir = os.path.dirname(os.path.abspath(sys.argv[0]))
versions = load_versions(os.path.join(dir, 'image_versions.json'))
# Does version exist for this image?
if not versions.has_key(image_name):
print 'Version not available for %s.' % image_name
sys.exit(1)
# Push the image
image = '%s/%s:%s' % (registry, image_name, versions[image_name])
print 'Pushing image %s' % image
s = '%s docker -- push %s' % (auth, image)
return_code = subprocess.call(shlex.split(s))
if return_code != 0:
print s
print 'returned error %d' % return_code
sys.exit(return_code)
if __name__ == '__main__':
main()