diff --git a/etc/default_data.json b/etc/default_data.json
index 28c649f7d..aaa21b80f 100644
--- a/etc/default_data.json
+++ b/etc/default_data.json
@@ -11618,7 +11618,7 @@
{
"id": "openstack",
"title": "OpenStack",
- "modules": ["official-integrated", "official-incubated", "official-other", "governance", "python-openstackclient", "api-wg"]
+ "modules": ["official-integrated", "official-other", "governance", "python-openstackclient", "api-wg"]
},
{
"id": "integrated",
@@ -11626,12 +11626,6 @@
"child": true,
"modules": ["official-integrated"]
},
- {
- "id": "incubated",
- "title": "incubated",
- "child": true,
- "modules": ["official-incubated"]
- },
{
"id": "other",
"title": "other",
diff --git a/etc/stackalytics.conf b/etc/stackalytics.conf
index 63b2d5dd1..f6a8a1c41 100644
--- a/etc/stackalytics.conf
+++ b/etc/stackalytics.conf
@@ -38,8 +38,8 @@
# Forcibly read default data and update records
# force_update = False
-# The address of file with list of programs
-# program_list_uri = https://git.openstack.org/cgit/openstack/governance/plain/reference/programs.yaml
+# The address of file with the official projects list
+# project_list_uri = https://git.openstack.org/cgit/openstack/governance/plain/reference/projects.yaml
# The address of DriverLog data
# driverlog_data_uri = https://git.openstack.org/cgit/stackforge/driverlog/plain/etc/default_data.json
diff --git a/etc/test_default_data.json b/etc/test_default_data.json
index d370f3668..17107e10e 100644
--- a/etc/test_default_data.json
+++ b/etc/test_default_data.json
@@ -183,7 +183,7 @@
{
"id": "openstack",
"title": "OpenStack",
- "modules": ["openstack", "openstack-infra", "openstack-dev"]
+ "modules": ["official-integrated", "official-other", "governance", "python-openstackclient", "api-wg"]
},
{
"id": "integrated",
@@ -191,12 +191,6 @@
"child": true,
"modules": ["official-integrated"]
},
- {
- "id": "incubated",
- "title": "incubated",
- "child": true,
- "modules": ["official-incubated"]
- },
{
"id": "other",
"title": "other",
diff --git a/etc/test_programs.yaml b/etc/test_programs.yaml
deleted file mode 100644
index 0d9ea0f54..000000000
--- a/etc/test_programs.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-Image Service:
- codename: Glance
- ptl: Mark Washenberger (markwash)
- url: https://wiki.openstack.org/wiki/Glance
- projects:
- - repo: openstack/glance
- integrated-since: havana
- incubated-since: grizzly
- - repo: openstack/python-glanceclient
diff --git a/etc/test_projects.yaml b/etc/test_projects.yaml
new file mode 100644
index 000000000..a11b3bc72
--- /dev/null
+++ b/etc/test_projects.yaml
@@ -0,0 +1,16 @@
+Sahara:
+ ptl: Sergey Lukjanov (SergeyLukjanov)
+ mission: >
+ To provide a scalable data processing stack and associated management
+ interfaces.
+ url: https://wiki.openstack.org/wiki/Sahara
+ projects:
+ - repo: openstack/sahara
+ tags:
+ - name: integrated-release
+ since: juno
+ - repo: openstack/python-saharaclient
+ - repo: openstack/sahara-dashboard
+ - repo: openstack/sahara-extra
+ - repo: openstack/sahara-image-elements
+ - repo: openstack/sahara-specs
diff --git a/stackalytics/dashboard/templates/_macros/module_details.html b/stackalytics/dashboard/templates/_macros/module_details.html
index dcf76c6a4..8096dfa29 100644
--- a/stackalytics/dashboard/templates/_macros/module_details.html
+++ b/stackalytics/dashboard/templates/_macros/module_details.html
@@ -28,8 +28,8 @@
${name}
{%if tag == 'program' %}
- The official OpenStack program as defined in
-
programs.yaml
+ The official OpenStack project as defined in
+
projects.yaml
{%/if%}
{%if tag == 'group' %}
Custom module group as defined in
diff --git a/stackalytics/dashboard/templates/layout.html b/stackalytics/dashboard/templates/layout.html
index e07a3d7bc..34d9e0f9b 100644
--- a/stackalytics/dashboard/templates/layout.html
+++ b/stackalytics/dashboard/templates/layout.html
@@ -54,12 +54,12 @@ Stackalytics {% if page_title %}| {{ page_title }} {% endif %}
- Project Type
+ Project Type
- Module
+ Module
diff --git a/stackalytics/dashboard/templates/widget.html b/stackalytics/dashboard/templates/widget.html
index 04c650e77..5d4c1fe90 100644
--- a/stackalytics/dashboard/templates/widget.html
+++ b/stackalytics/dashboard/templates/widget.html
@@ -121,7 +121,7 @@
- Project Type
+ Project Type
diff --git a/stackalytics/processor/config.py b/stackalytics/processor/config.py
index d98bb68fc..0be405aa6 100644
--- a/stackalytics/processor/config.py
+++ b/stackalytics/processor/config.py
@@ -45,10 +45,10 @@ OPTS = [
help='SSH username for gerrit review system access'),
cfg.BoolOpt('force-update', default=False,
help='Forcibly read default data and update records'),
- cfg.StrOpt('program-list-uri',
+ cfg.StrOpt('project-list-uri',
default=('https://git.openstack.org/cgit/'
- 'openstack/governance/plain/reference/programs.yaml'),
- help='The address of file with list of programs'),
+ 'openstack/governance/plain/reference/projects.yaml'),
+ help='The address of file with the official projects list'),
cfg.StrOpt('driverlog-data-uri',
default='https://git.openstack.org/cgit/'
'stackforge/driverlog/plain/etc/default_data.json',
diff --git a/stackalytics/processor/main.py b/stackalytics/processor/main.py
index 40c3e65d7..5772afb7e 100644
--- a/stackalytics/processor/main.py
+++ b/stackalytics/processor/main.py
@@ -240,30 +240,24 @@ def apply_corrections(uri, runtime_storage_inst):
runtime_storage_inst.apply_corrections(valid_corrections)
-def _read_official_programs_yaml(program_list_uri, release_names):
- LOG.debug('Process list of programs from uri: %s', program_list_uri)
- content = yaml.safe_load(utils.read_uri(program_list_uri))
+def _read_official_projects_yaml(project_list_uri, release_names):
+ LOG.debug('Process list of projects from uri: %s', project_list_uri)
+ content = yaml.safe_load(utils.read_uri(project_list_uri))
module_groups = collections.defaultdict(
lambda: {'modules': [], 'releases': collections.defaultdict(list)})
official_integrated = module_groups['official-integrated']
official_integrated['tag'] = 'project_type'
official_integrated['module_group_name'] = 'official-integrated'
- official_incubated = module_groups['official-incubated']
- official_incubated['tag'] = 'project_type'
- official_incubated['module_group_name'] = 'official-incubated'
official_other = module_groups['official-other']
official_other['tag'] = 'project_type'
official_other['module_group_name'] = 'official-other'
for name, info in six.iteritems(content):
- # for one program
- group_id = name.lower()
- if 'codename' in info:
- name = '%s (%s)' % (info['codename'], name)
- group_id = '%s-group' % info['codename'].lower()
+ # take one official project
- module_groups[group_id]['module_group_name'] = name
+ group_id = '%s-group' % name.lower()
+ module_groups[group_id]['module_group_name'] = '%s Official' % name
module_groups[group_id]['tag'] = 'program'
for module in info['projects']:
@@ -271,17 +265,22 @@ def _read_official_programs_yaml(program_list_uri, release_names):
module_groups[group_id]['modules'].append(module_name)
- if ('integrated-since' in module) or ('incubated-since' in module):
- project_type = 'official-other'
- for release_name in release_names:
- if release_name == module.get('incubated-since'):
- project_type = 'official-incubated'
- elif release_name == module.get('integrated-since'):
- project_type = 'official-integrated'
+ type_matched = False
+ if 'tags' in module:
+ for tag in module.get('tags'):
+ tag_name = tag.get('name')
- module_groups[project_type]['releases'][
- release_name].append(module_name)
- else:
+ if tag_name == 'integrated-release':
+ type_matched = True # project type is matched here
+ project_type = 'official-other'
+ for release_name in release_names:
+ if release_name == tag.get('since'):
+ project_type = 'official-integrated'
+
+ module_groups[project_type]['releases'][
+ release_name].append(module_name)
+
+ if not type_matched:
module_groups['official-other']['modules'].append(module_name)
# set ids for module groups
@@ -291,13 +290,13 @@ def _read_official_programs_yaml(program_list_uri, release_names):
return module_groups
-def process_program_list(runtime_storage_inst, program_list_uri):
+def process_project_list(runtime_storage_inst, project_list_uri):
module_groups = runtime_storage_inst.get_by_key('module_groups') or {}
release_names = [r['release_name'].lower()
for r in runtime_storage_inst.get_by_key('releases')[1:]]
- official_module_groups = _read_official_programs_yaml(
- program_list_uri, release_names)
+ official_module_groups = _read_official_projects_yaml(
+ project_list_uri, release_names)
LOG.debug('Update module groups with official: %s', official_module_groups)
module_groups.update(official_module_groups)
@@ -335,7 +334,7 @@ def main():
default_data,
cfg.CONF.driverlog_data_uri)
- process_program_list(runtime_storage_inst, cfg.CONF.program_list_uri)
+ process_project_list(runtime_storage_inst, cfg.CONF.project_list_uri)
update_pids(runtime_storage_inst)