From 8d5e05dc846edca4efb644e0b8cd0c751b1cd0ef Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Sun, 13 Sep 2015 22:12:59 +0000 Subject: [PATCH] render the json to html as sphinx runs Instead of using a tool script to render the JSON to RST and checking that into git, do the rendering work as Sphinx builds the documentation. This avoids any issue with multiple sources of truth. Change-Id: I47cd15b92d3876fc55ea4a70d188515ce5be8629 --- doc/source/_templates/guidelines.tmpl | 76 ++++++++++++++ doc/source/conf.py | 3 +- doc/source/guidelines/2015.07.rst | 145 +------------------------- test-requirements.txt | 1 + 4 files changed, 82 insertions(+), 143 deletions(-) create mode 100644 doc/source/_templates/guidelines.tmpl diff --git a/doc/source/_templates/guidelines.tmpl b/doc/source/_templates/guidelines.tmpl new file mode 100644 index 00000000..4b36055c --- /dev/null +++ b/doc/source/_templates/guidelines.tmpl @@ -0,0 +1,76 @@ +.. -*- mode: rst -*- + +:Status: {{data['status'].title()}} +:Replaces: :doc:`{{data['replaces']}}` + +Releases Covered +================ + +{% for release in data['releases'] %} +- {{release.title()}} +{% endfor %} + +Platform Components +=================== + +{% for category in ['required', 'advisory', 'deprecated', 'removed'] %} +:{{category}}: {% for r in data['platform'][category] %}{{r.title()}}{% if not loop.last %}, {% endif %}{% else %}None{% endfor %} +{% endfor %}{# category #} + +{% for component_name, component in data['components'].items()|sort %} +{{component_name.title()}} Component Capabilities +{% for _ in component_name %}={% endfor %}======================== + +{% for category in ['required', 'advisory', 'deprecated', 'removed'] %} +{{category.title()}} Capabilities +{% for _ in category %}-{% endfor %}------------- + +{% for capability in component[category.lower()] %} +- {{ capability }} ({{data['capabilities'][capability]['project'].title()}}) +{% else %} +None +{% endfor %}{# capabilities #} + +{% endfor %}{# category1 #} + +{% endfor %}{# component2 #} + +Designated Sections +=================== + +The following designated sections apply to the same releases as this +specification. + +{% for category in ['required', 'advisory', 'deprecated', 'removed'] %} +{{category.title()}} Designated Sections +{% for _ in category %}-{% endfor %}-------------------- + +{% for component_name, component in data['designated-sections'][category].items()|sort %} +{{component_name.title()}} +{% for _ in category %}~{% endfor %} + +:Guidance: {{component['guidance']}} +:Comment: {{component['comment']}} + +.. list-table:: Sections + :header-rows: 1 + :widths: 20 40 10 30 + + - * Section + * Description + * Designated + * Comments +{% for section_name, section in component['sections'].items()|sort %} + - * {{section_name.title()}} + * {{section['description']}} + * {% if section['designated'] %}Yes{% else %}No{% endif %} + * {{section['comment']}} +{% else %} +None +{%- endfor %}{# section #} + +{% else %} +None +{% endfor %}{# component2 #} + +{% endfor %}{# category2 #} diff --git a/doc/source/conf.py b/doc/source/conf.py index e5938a17..c405d25c 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -30,7 +30,8 @@ extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.viewcode', - 'oslosphinx' + 'oslosphinx', + 'sphinxcontrib.datatemplates', ] todo_include_todos = True diff --git a/doc/source/guidelines/2015.07.rst b/doc/source/guidelines/2015.07.rst index fc13b03c..63fe1ace 100644 --- a/doc/source/guidelines/2015.07.rst +++ b/doc/source/guidelines/2015.07.rst @@ -2,151 +2,12 @@ OpenStack DefCore 2015.07 ========================= -:Status: approved -:Replaces: 2015.05 -:JSON Master: http://git.openstack.org/cgit/openstack/defcore/tree/2015.07.json - This document outlines the mandatory capabilities and designated sections required to exist in a software installation in order to be eligible to use marks controlled by the OpenStack Foundation. This document was generated from the `master JSON version <2015.07.json>`_. -Releases Covered -============================== -Applies to Icehouse, Juno, Kilo - -Platform Components -============================== -:Required: Compute, Object - -:Advisory: None - -:Deprecated: None - -:Removed: None - - - - -Compute Component Capabilities -============================== -Required Capabilities ------------------------ -* identity-v2-tokens-create (Keystone) -* identity-v3-tokens-create (Keystone) -* compute-auth-create (Nova) -* compute-auth-get (Nova) -* compute-auth-set (Nova) -* compute-images-create (Nova) -* compute-images-delete (Nova) -* compute-images-get (Nova) -* compute-images-list (Nova) -* compute-instance-actions-get (Nova) -* compute-instance-actions-list (Nova) -* compute-keypairs-create (Nova) -* compute-quotas-get (Nova) -* compute-servers-change (Nova) -* compute-servers-create (Nova) -* compute-servers-delete (Nova) -* compute-servers-get (Nova) -* compute-servers-host (Nova) -* compute-servers-invalid (Nova) -* compute-servers-list (Nova) -* compute-servers-lock (Nova) -* compute-servers-name (Nova) -* compute-servers-reboot (Nova) -* compute-servers-rebuild (Nova) -* compute-servers-resize (Nova) -* compute-servers-stop (Nova) -* compute-servers-update (Nova) -* compute-servers-verify (Nova) -* compute-volume-attach (Nova) -* compute-volume-get (Nova) -* compute-volume-list (Nova) -* images-v2-index (Nova) -* compute-servers-metadata-delete (Nova) -* compute-servers-metadata-get (Nova) -* compute-servers-metadata-list (Nova) -* compute-servers-metadata-set (Nova) -* compute-servers-metadata-update (Nova) - -Advisory Capabilities ------------------------ -None - -Deprecated Capabilities -------------------------- -None - -Removed Capabilities ----------------------- -None - - - - -Object Component Capabilities -============================= -Required Capabilities ------------------------ -* objectstore-object-access (Swift) -* objectstore-object-copy (Swift) -* objectstore-object-create (Swift) -* objectstore-object-delete (Swift) -* objectstore-object-get (Swift) -* objectstore-object-put (Swift) -* objectstore-object-upload (Swift) -* objectstore-object-versioned (Swift) -* objectstore-temp-url-get (Swift) -* identity-v2-tokens-create (Keystone) -* identity-v3-tokens-create (Keystone) - -Advisory Capabilities ------------------------ -None - -Deprecated Capabilities -------------------------- -None - -Removed Capabilities ----------------------- -None - - -Designated Sections -===================================== - -The following designated sections apply to the same releases as -this specification. - -Required Designated Sections ----------------------------- - -* Cinder : Designated sections are the API implementation code -* Glance : Designated sections are the API implementation code and domain - model. -* Keystone : Designation is outlined per API grouping. Identity (user and - group) management APIs will not be designated. API access (with exception of - auth) may be prohibited by policy (resulting in HTTP 403). Designated APIs - include both v2.0 and v3 versions where applicable. -* Nova : By default, designated except scheduler, filter, drivers, API - extensions and networking. -* Swift : Designated sections are proxy server, object server, container - server, account server and select middleware - -Advisory Designated Sections ----------------------------- - -None - -Deprecated Designated Sections ------------------------------- - -None - -Removed Designated Sections ---------------------------- - -None +.. datatemplate:: + :source: ../../../2015.07.json + :template: guidelines.tmpl diff --git a/test-requirements.txt b/test-requirements.txt index d7def617..eaf3557b 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -2,3 +2,4 @@ pygments doc8 oslosphinx sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3 +sphinxcontrib.datatemplates