From 461ef2c88aa3cde3029f8f58d81de12ddd515c4a Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Tue, 9 Dec 2014 10:49:13 -0500 Subject: [PATCH] Switch to oslosphinx.check_blueprints Change-Id: I54f6c2db12c8eb50ad6a1fb19e9834cbae761d38 --- doc/source/_exts/check_blueprints.py | 98 ---------------------------- doc/source/conf.py | 4 +- test-requirements.txt | 2 - 3 files changed, 2 insertions(+), 102 deletions(-) delete mode 100644 doc/source/_exts/check_blueprints.py diff --git a/doc/source/_exts/check_blueprints.py b/doc/source/_exts/check_blueprints.py deleted file mode 100644 index b0c88f7..0000000 --- a/doc/source/_exts/check_blueprints.py +++ /dev/null @@ -1,98 +0,0 @@ -# All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -"""Ensure that the name of the spec file matches the name of a blueprint. -""" - -import os - -import requests -from launchpadlib.launchpad import Launchpad - - -class BlueprintChecker(object): - - def __init__(self, app): - self.app = app - cachedir = os.path.expanduser('~/.launchpadlib') - self.lp = Launchpad.login_anonymously('check-spec-filename', - 'production', - cachedir) - # Use the launchpad API to figure out which projects we need - # to check instead of hard-coding a list. - self.oslo = self.lp.project_groups['oslo'] - self.projects = self.oslo.projects - self.project_names = [p.name for p in self.projects] - self._good_bps = set() - self._prefix = None - - @property - def desired_prefix(self): - """We only care about blueprints in the current release, if the option - is set. - - """ - if self._prefix is None: - release = self.app.config.check_blueprints_release - if release: - self._prefix = 'specs/%s/' % release - else: - self._prefix = 'specs/' - return self._prefix - - def doctree_resolved(self, app, doctree, docname): - """Hook registered as event handler.""" - if not docname.startswith(self.desired_prefix): - return - bp_name = docname.split('/')[-1] - if bp_name == 'index': - return - self.check(bp_name) - - BP_URL_TEMPLATE = 'https://api.launchpad.net/devel/%s/+spec/%s' - - def blueprint_exists(self, project_name, bp_name): - # We can't use the getSpecification() API because we're logged - # in anonymously, so we have to build the URL to the - # blueprint's API endpoint ourselves and then poke it to see - # if it exists. - url = self.BP_URL_TEMPLATE % (project_name, bp_name) - response = requests.get(url) - return response.status_code == 200 - - def check(self, bp_name): - """Given one blueprint name, check to see if it is valid.""" - if bp_name in self._good_bps: - return True - self.app.info('') # emit newline - for project_name in self.project_names: - self.app.info('Checking for %s in %s' % (bp_name, project_name)) - if self.blueprint_exists(project_name, bp_name): - self.app.info('Found %s in %s' % (bp_name, project_name)) - self._good_bps.add(bp_name) - break - else: - self.app.warn( - 'Could not find a blueprint called %r in the oslo project group' - % bp_name, - location=(bp_name, 0), - ) - raise ValueError('Document %s does not match any blueprint name' - % bp_name) - - -def setup(app): - app.info('Initializing %s' % __name__) - checker = BlueprintChecker(app) - app.connect('doctree-resolved', checker.doctree_resolved) - app.add_config_value('check_blueprints_release', '', 'env') diff --git a/doc/source/conf.py b/doc/source/conf.py index 20565a2..21c18f2 100755 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -17,7 +17,6 @@ import os import sys sys.path.insert(0, os.path.abspath('../..')) -sys.path.insert(0, os.path.abspath('_exts')) # -- General configuration ---------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be @@ -27,10 +26,11 @@ extensions = [ #'sphinx.ext.intersphinx', 'oslosphinx', 'yasfb', - 'check_blueprints', + 'oslosphinx.check_blueprints', ] check_blueprints_release = 'kilo' +check_blueprints_project_group = 'oslo' # Feed configuration for yasfb feed_base_url = 'http://specs.openstack.org/openstack/oslo-specs' diff --git a/test-requirements.txt b/test-requirements.txt index 4c0f1fa..e69de29 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,2 +0,0 @@ -requests -launchpadlib