mirror of
https://github.com/spiffcode/hostile-takeover.git
synced 2025-12-23 06:57:23 +00:00
55 lines
1.4 KiB
Python
Executable File
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()
|