Skip to content
Snippets Groups Projects
Commit fdb440b7 authored by Jenkins's avatar Jenkins Committed by Gerrit Code Review
Browse files

Merge "Gen the image dependency in the Graphviz dot format"

parents 09bf7bc5 f2bded7f
No related branches found
No related tags found
No related merge requests found
......@@ -16,6 +16,7 @@
import datetime
import errno
import graphviz
import json
import logging
import os
......@@ -558,6 +559,19 @@ class KollaWorker(object):
self.images.append(image)
def save_dependency(self, to_file):
dot = graphviz.Digraph(comment='Docker Images Dependency')
dot.body.extend(['rankdir=LR'])
for image in self.images:
if image['status'] not in ['matched']:
continue
dot.node(image['name'])
if image['parent'] is not None:
dot.edge(image['parent']['name'], image['name'])
with open(to_file, 'w') as f:
f.write(dot.source)
def find_parents(self):
"""Associate all images with parents and children"""
sort_images = dict()
......@@ -614,6 +628,12 @@ def main():
queue = kolla.build_queue()
push_queue = six.moves.queue.Queue()
if conf.save_dependency:
kolla.save_dependency(conf.save_dependency)
LOG.info('Docker images dependency is saved in %s',
conf.save_dependency)
return
for x in range(conf.threads):
worker = WorkerThread(queue, push_queue, conf)
worker.setDaemon(True)
......
......@@ -107,6 +107,9 @@ _CLI_OPTS = [
cfg.StrOpt('registry', deprecated_group='kolla-build',
help=('The docker registry host. The default registry host'
' is Docker Hub')),
cfg.StrOpt('save-dependency',
help=('Path to the file to store the docker image'
' dependency in Graphviz dot format')),
cfg.StrOpt('type', short='t', default='binary',
choices=INSTALL_TYPE_CHOICES,
dest='install_type', deprecated_group='kolla-build',
......
......@@ -8,3 +8,4 @@ gitdb>=0.6.4 # BSD License (3 clause)
GitPython>=1.0.1 # BSD License (3 clause)
six>=1.9.0
oslo.config>=2.7.0 # Apache-2.0
graphviz>=0.4.0 # MIT License
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment