diff options
| author | Jenkins <jenkins@review.openstack.org> | 2017-03-30 13:42:22 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2017-03-30 13:42:23 +0000 |
| commit | f37bf1bf272b3d779ad88b90ac9dd30caadc5e33 (patch) | |
| tree | e6259cf0e3d4990deadc5dedeccbef691a1ab115 /kolla/image | |
| parent | a32b2d7d4b2aecf4657106ad70007e17dd652be7 (diff) | |
| parent | e5410950c4cd3f89bef44f07f354cd71d8038105 (diff) | |
| download | kolla-f37bf1bf272b3d779ad88b90ac9dd30caadc5e33.tar.gz kolla-f37bf1bf272b3d779ad88b90ac9dd30caadc5e33.zip | |
Merge "Allow the use of previously built parent images"
Diffstat (limited to 'kolla/image')
| -rwxr-xr-x | kolla/image/build.py | 41 |
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): |
