Project type is back to UI to keep compatibility with 0.4

* To keep UI compatibility with version 0.4 project type is returned.
List of project types is configured in default data, every type is
a list of modules or module groups.
* Module groups now have tags to distinguish between different kinds.
Introduced:
  'group' - for user-configured groups,
  'program' - for official programs,
  'project_type' - for types of projects within official programs,
  'organization' - for module groups generated for github organization

Change-Id: I8d5e46e18c7327e8c9d114e0a5eec021305b843e
This commit is contained in:
Ilya Shakhat
2014-01-22 15:07:55 +04:00
parent 3e005e2606
commit 34f43995d2
21 changed files with 368 additions and 139 deletions

View File

@@ -172,8 +172,9 @@ def apply_corrections(uri, runtime_storage_inst):
runtime_storage_inst.apply_corrections(valid_corrections)
def _make_module_group(name, modules):
module_group = {'module_group_name': name, 'modules': modules}
def _make_module_group(group_id, name, modules, tag=None):
module_group = {'id': group_id, 'module_group_name': name,
'modules': modules, 'tag': tag}
LOG.debug('New module group: %s', module_group)
return module_group
@@ -184,8 +185,10 @@ def _read_module_groups(program_list_uri):
module_groups = []
modules_by_types = collections.defaultdict(list)
for name, info in six.iteritems(content):
group_id = name.lower()
if 'codename' in info:
name += ' (%s)' % info['codename']
name = '%s (%s)' % (info['codename'], name)
group_id = '%s-group' % info['codename'].lower()
all_modules = []
for project_type, project_list in six.iteritems(info['projects']):
@@ -193,30 +196,26 @@ def _read_module_groups(program_list_uri):
modules_by_types[project_type] += module_list
all_modules += module_list
module_groups.append(_make_module_group(name, all_modules))
module_groups.append(_make_module_group(
group_id, name, all_modules, 'program'))
all_modules = []
for project_type, modules_list in six.iteritems(modules_by_types):
all_modules += modules_list
module_groups.append(
_make_module_group('OpenStack ' + project_type.capitalize(),
modules_list))
module_groups.append(_make_module_group('OpenStack All Official',
all_modules))
_make_module_group(
'official-%s' % project_type, project_type.capitalize(),
modules_list, 'project_type'))
module_groups.append(_make_module_group(
'official-all', 'OpenStack', all_modules, 'project_type'))
return module_groups
def process_program_list(runtime_storage_inst, program_list_uri):
stored_module_groups = runtime_storage_inst.get_by_key('module_groups')
mg_dict = dict([(mg['module_group_name'], mg['modules'])
for mg in stored_module_groups])
module_groups = runtime_storage_inst.get_by_key('module_groups') or {}
for mg in _read_module_groups(program_list_uri):
mg_dict[mg['module_group_name']] = mg['modules']
stored_module_groups = [{'module_group_name': name, 'modules': modules}
for name, modules in six.iteritems(mg_dict)]
runtime_storage_inst.set_by_key('module_groups', stored_module_groups)
module_groups[mg['module_group_name']] = mg
runtime_storage_inst.set_by_key('module_groups', module_groups)
def main():