From 27ebdb01df16c4584c2fc88274bf15a6fd00483b Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Thu, 17 Aug 2017 18:11:34 -0500 Subject: [PATCH] Use os-service-types for service type validation We wrote a library to encompass this data, and it knows a bit more about how to handle things like placement and whatnot. Use it. Canonical name for senlin is clustering, use that one to fix build. Change-Id: I215fb11c1e7e6aac5e020f3f3da3a0a0632cc2eb --- test-requirements.txt | 1 + tools/www-generator.py | 34 ++++++++++++++-------------------- www/project-data/latest.yaml | 2 +- www/project-data/mitaka.yaml | 2 +- www/project-data/ocata.yaml | 2 +- www/project-data/pike.yaml | 2 +- 6 files changed, 19 insertions(+), 24 deletions(-) diff --git a/test-requirements.txt b/test-requirements.txt index 85f758aa9b..50f06fb3d3 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -17,6 +17,7 @@ requestsexceptions>=1.2.0 # Apache-2.0 lxml>=2.3,!=3.7.0 # BSD PyYAML>=3.10.0 # MIT jsonschema>=2.6.0 +os-service-types # For translations # Babel 2.4.0 is broken, fixed in 2.4.1 diff --git a/tools/www-generator.py b/tools/www-generator.py index 38441ca1c9..b6ddb9065c 100755 --- a/tools/www-generator.py +++ b/tools/www-generator.py @@ -26,6 +26,7 @@ import sys from bs4 import BeautifulSoup import jinja2 import jsonschema +import os_service_types import requests import yaml @@ -178,19 +179,6 @@ _URLS = [ 'https://developer.openstack.org/api-guide/{service_type}/index.html'), ] -_SERVICE_TYPES_URL = 'http://git.openstack.org/cgit/openstack/service-types-authority/plain/service-types.yaml' # noqa - - -def _get_service_types(): - "Return a map between repo base name and service type" - raw = requests.get(_SERVICE_TYPES_URL) # noqa - data = yaml.safe_load(raw.text) - service_types = { - d['project'].rsplit('/')[-1]: d['service_type'] - for d in data['services'] - } - return service_types - def load_project_data(source_directory, check_all_links=False, @@ -201,7 +189,8 @@ def load_project_data(source_directory, series_to_load = series_to_load or [] project_data = {} fail = False - service_types = _get_service_types() + service_types = os_service_types.ServiceTypes( + session=requests.Session(), only_remote=True) # Set up a schema validator so we can quickly check that the input # data conforms. project_schema_filename = os.path.join( @@ -235,17 +224,22 @@ def load_project_data(source_directory, # the value in the service-type-authority data.base. st = project.get('service_type') if st is not None: - if project['name'] not in service_types: + st_data = service_types.get_service_data_for_project( + project['name']) + if not st_data: + # It's possible this is a project listed by its + # service-type + st_data = service_types.get_service_data(st) + if not st_data: logger.error( - 'did not find %s in %s', - project['name'], _SERVICE_TYPES_URL, + 'did not find %s in Service Types Authority', + project['name'], ) fail = True - elif project['service_type'] != service_types[project['name']]: + elif st != st_data['service_type']: logger.error( 'expected service_type %r for %s but got %r', - service_types[project['name']], project['name'], - project['service_type'], + st_data['service_type'], project['name'], st, ) fail = True diff --git a/www/project-data/latest.yaml b/www/project-data/latest.yaml index c13d7e13b4..8d451ad86a 100644 --- a/www/project-data/latest.yaml +++ b/www/project-data/latest.yaml @@ -393,7 +393,7 @@ - name: senlin service: Clustering service - service_type: resource-cluster + service_type: clustering type: service has_install_guide: true has_api_ref: true diff --git a/www/project-data/mitaka.yaml b/www/project-data/mitaka.yaml index bc78b8c99c..71f4f715d1 100644 --- a/www/project-data/mitaka.yaml +++ b/www/project-data/mitaka.yaml @@ -102,7 +102,7 @@ - name: senlin service: Clustering service - service_type: resource-cluster + service_type: clustering type: service has_api_ref: true diff --git a/www/project-data/ocata.yaml b/www/project-data/ocata.yaml index 7df841e29b..f2df49d7e7 100644 --- a/www/project-data/ocata.yaml +++ b/www/project-data/ocata.yaml @@ -102,7 +102,7 @@ - name: senlin service: Clustering service - service_type: resource-cluster + service_type: clustering type: service has_api_ref: true diff --git a/www/project-data/pike.yaml b/www/project-data/pike.yaml index b1af554de1..57ed11f5cb 100644 --- a/www/project-data/pike.yaml +++ b/www/project-data/pike.yaml @@ -385,7 +385,7 @@ - name: senlin service: Clustering service - service_type: resource-cluster + service_type: clustering type: service has_install_guide: true has_api_ref: true