summaryrefslogtreecommitdiff
path: root/tools/build.py
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 /tools/build.py
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
Diffstat (limited to 'tools/build.py')
-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()