aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Yaple <sam@yaple.net>2015-07-28 13:36:06 +0000
committerSam Yaple <sam@yaple.net>2015-08-05 04:50:21 +0000
commitfca1e0658acbc9e09d8ace9ab648bd56601fe24a (patch)
tree8fa6141c6040b4dcc3cdf9f7ff72c20138dc5f84
parent3097d3e48dd3dcb0f318663d1d0628ff1c565098 (diff)
downloadkolla-fca1e0658acbc9e09d8ace9ab648bd56601fe24a.tar.gz
kolla-fca1e0658acbc9e09d8ace9ab648bd56601fe24a.zip
Adds push to build script
This works as is, but could use some cleaning up and threading needs to be confirmed broken. If it isn't broken, it should be implemented. Co-Authored-By: Swapnil Kulkarni <me@coolsvap.net> Change-Id: I708406dcff8aa9b2f4064f03bda07873ce97d994 Paritally-Implements: blueprint build-script
-rwxr-xr-xtools/build.py33
1 files changed, 31 insertions, 2 deletions
diff --git a/tools/build.py b/tools/build.py
index 11f23f603..ac471960b 100755
--- a/tools/build.py
+++ b/tools/build.py
@@ -111,7 +111,11 @@ def argParser():
action='store_true',
default=False)
parser.add_argument('--keep',
- help='Keep failed intermediate containers building',
+ help='Keep failed intermediate containers',
+ action='store_true',
+ default=False)
+ parser.add_argument('--push',
+ help='Push images after building',
action='store_true',
default=False)
parser.add_argument('-T', '--threads',
@@ -248,20 +252,45 @@ class KollaWorker(object):
return pools
+def push_image(image):
+ dc = docker.Client(**docker.utils.kwargs_from_env())
+
+ image['push_logs'] = str()
+ for response in dc.push(image['fullname'],
+ stream=True,
+ insecure_registry=True):
+ stream = json.loads(response)
+
+ if 'stream' in stream:
+ image['push_logs'] = image['logs'] + stream['stream']
+ # This is only single threaded for right now so we can show logs
+ print(stream['stream'])
+ elif 'errorDetail' in stream:
+ image['status'] = "error"
+ raise Exception(stream['errorDetail']['message'])
+
+
def main():
args = argParser()
kolla = KollaWorker(args)
kolla.setupWorkingDir()
kolla.findDockerfiles()
+ pools = kolla.buildQueues()
# Returns a list of Queues for us to loop through
- for pool in kolla.buildQueues():
+ for pool in pools:
for x in xrange(args['threads']):
WorkerThread(pool, args['no_cache'], args['keep']).start()
# block until queue is empty
pool.join()
+ if args['push']:
+ for tier in kolla.tiers:
+ for image in tier:
+ if image['status'] == "built":
+ push_image(image)
+
kolla.summary()
kolla.cleanup()