From 9b19db099d9666810845ba5b7be9aff12c5d536d Mon Sep 17 00:00:00 2001 From: Jeffrey Zhang Date: Thu, 7 Jan 2016 20:28:31 +0800 Subject: [PATCH] Fix the package source don't register issue Closes-Bug: #1531848 Change-Id: I3c6ceb9f1f367b8b19ab1b1d06c67817ab93cabb --- kolla/cmd/build.py | 15 ++++++++------- kolla/common/config.py | 10 ++++++---- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/kolla/cmd/build.py b/kolla/cmd/build.py index 96a7a5e5d9..61785f5337 100755 --- a/kolla/cmd/build.py +++ b/kolla/cmd/build.py @@ -517,7 +517,8 @@ class KollaWorker(object): def build_image_list(self): def process_source_installation(image, section): installation = dict() - if section not in self.conf.list_all_sections(): + # NOTE(jeffrey4l): source is not needed when the type is None + if self.conf._get('type', self.conf._get_group(section)) is None: LOG.debug('%s:No source location found', section) else: installation['type'] = self.conf[section]['type'] @@ -545,17 +546,17 @@ class KollaWorker(object): image['plugins'] = list() if self.install_type == 'source': - self.conf.register_opts([ - cfg.StrOpt('type'), - cfg.StrOpt('location'), - cfg.StrOpt('reference') - ], image['name']) + # NOTE(jeffrey4l): register the opts if the section didn't + # register in the kolla/common/config.py file + if image['name'] not in self.conf._groups: + self.conf.register_opts(common_config.get_source_opts(), + image['name']) image['source'] = process_source_installation(image, image['name']) for plugin in [match.group(0) for match in (re.search('{}-plugin-.+'.format(image['name']), section) for section in - self.conf.list_all_sections()) if match]: + self.conf._groups) if match]: image['plugins'].append( process_source_installation(image, plugin)) diff --git a/kolla/common/config.py b/kolla/common/config.py index f5d8f48d75..435f8ba190 100644 --- a/kolla/common/config.py +++ b/kolla/common/config.py @@ -225,7 +225,7 @@ SOURCES = { } -def _get_source_opt(type_, location, reference=None): +def get_source_opts(type_=None, location=None, reference=None): return [cfg.StrOpt('type', choices=['git', 'url'], default=type_, help='Source location type'), @@ -236,19 +236,19 @@ def _get_source_opt(type_, location, reference=None): 'or branch name'))] -def gen_source_opts(): +def gen_all_source_opts(): for name, params in SOURCES.iteritems(): type_ = params['type'] location = params['location'] reference = params.get('reference') - yield name, _get_source_opt(type_, location, reference) + yield name, get_source_opts(type_, location, reference) def list_opts(): return itertools.chain([(None, _CLI_OPTS), (None, _BASE_OPTS), ('profiles', _PROFILE_OPTS)], - gen_source_opts(), + gen_all_source_opts(), ) @@ -257,6 +257,8 @@ def parse(conf, args, usage=None, prog=None, conf.register_cli_opts(_CLI_OPTS) conf.register_opts(_BASE_OPTS) conf.register_opts(_PROFILE_OPTS, group='profiles') + for name, opts in gen_all_source_opts(): + conf.register_opts(opts, name) conf(args=args, project='kolla',