aboutsummaryrefslogtreecommitdiff
path: root/kolla/image
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-03-30 13:42:22 +0000
committerGerrit Code Review <review@openstack.org>2017-03-30 13:42:23 +0000
commitf37bf1bf272b3d779ad88b90ac9dd30caadc5e33 (patch)
treee6259cf0e3d4990deadc5dedeccbef691a1ab115 /kolla/image
parenta32b2d7d4b2aecf4657106ad70007e17dd652be7 (diff)
parente5410950c4cd3f89bef44f07f354cd71d8038105 (diff)
downloadkolla-f37bf1bf272b3d779ad88b90ac9dd30caadc5e33.tar.gz
kolla-f37bf1bf272b3d779ad88b90ac9dd30caadc5e33.zip
Merge "Allow the use of previously built parent images"
Diffstat (limited to 'kolla/image')
-rwxr-xr-xkolla/image/build.py41
1 files changed, 34 insertions, 7 deletions
diff --git a/kolla/image/build.py b/kolla/image/build.py
index 7db9a24a0..125a3bdcb 100755
--- a/kolla/image/build.py
+++ b/kolla/image/build.py
@@ -88,6 +88,7 @@ STATUS_BUILDING = 'building'
STATUS_UNMATCHED = 'unmatched'
STATUS_MATCHED = 'matched'
STATUS_UNPROCESSED = 'unprocessed'
+STATUS_SKIPPED = 'skipped'
# All error status constants.
STATUS_ERRORS = (STATUS_CONNECTION_ERROR, STATUS_PUSH_ERROR,
@@ -257,7 +258,7 @@ class BuildTask(DockerTask):
def run(self):
self.builder(self.image)
- if self.image.status == STATUS_BUILT:
+ if self.image.status in (STATUS_BUILT, STATUS_SKIPPED):
self.success = True
@property
@@ -395,6 +396,11 @@ class BuildTask(DockerTask):
return len(os.listdir(items_path))
self.logger.debug('Processing')
+
+ if image.status == STATUS_SKIPPED:
+ self.logger.info('Skipping %s (--skip-parents)' % image.name)
+ return
+
if image.status == STATUS_UNMATCHED:
return
@@ -567,6 +573,7 @@ class KollaWorker(object):
self.image_statuses_bad = dict()
self.image_statuses_good = dict()
self.image_statuses_unmatched = dict()
+ self.image_statuses_skipped = dict()
self.maintainer = conf.maintainer
def _get_images_dir(self):
@@ -787,14 +794,18 @@ class KollaWorker(object):
if filter_:
patterns = re.compile(r"|".join(filter_).join('()'))
for image in self.images:
- if image.status == STATUS_MATCHED:
+ if image.status in (STATUS_MATCHED, STATUS_SKIPPED):
continue
if re.search(patterns, image.name):
image.status = STATUS_MATCHED
while (image.parent is not None and
- image.parent.status != STATUS_MATCHED):
+ image.parent.status not in (STATUS_MATCHED,
+ STATUS_SKIPPED)):
image = image.parent
- image.status = STATUS_MATCHED
+ if self.conf.skip_parents:
+ image.status = STATUS_SKIPPED
+ else:
+ image.status = STATUS_MATCHED
LOG.debug('Image %s matched regex', image.name)
else:
image.status = STATUS_UNMATCHED
@@ -815,6 +826,7 @@ class KollaWorker(object):
'built': [],
'failed': [],
'not_matched': [],
+ 'skipped': [],
}
if self.image_statuses_good:
@@ -848,25 +860,40 @@ class KollaWorker(object):
'name': name,
})
+ if self.image_statuses_skipped:
+ LOG.debug("=====================================")
+ LOG.debug("Images skipped due to --skip-parents")
+ LOG.debug("=====================================")
+ for name in self.image_statuses_skipped.keys():
+ LOG.debug(name)
+ results['skipped'].append({
+ 'name': name,
+ })
+
return results
def get_image_statuses(self):
if any([self.image_statuses_bad,
self.image_statuses_good,
- self.image_statuses_unmatched]):
+ self.image_statuses_unmatched,
+ self.image_statuses_skipped]):
return (self.image_statuses_bad,
self.image_statuses_good,
- self.image_statuses_unmatched)
+ self.image_statuses_unmatched,
+ self.image_statuses_skipped)
for image in self.images:
if image.status == STATUS_BUILT:
self.image_statuses_good[image.name] = image.status
elif image.status == STATUS_UNMATCHED:
self.image_statuses_unmatched[image.name] = image.status
+ elif image.status == STATUS_SKIPPED:
+ self.image_statuses_skipped[image.name] = image.status
else:
self.image_statuses_bad[image.name] = image.status
return (self.image_statuses_bad,
self.image_statuses_good,
- self.image_statuses_unmatched)
+ self.image_statuses_unmatched,
+ self.image_statuses_skipped)
def build_image_list(self):
def process_source_installation(image, section):