diff --git a/.gitignore b/.gitignore index 1d2a7b05a..22cae907c 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,6 @@ releasenotes/build # Files created by doc build doc/source/api + +# Files created by API build +api-ref/build/ diff --git a/api-ref/source/conf.py b/api-ref/source/conf.py new file mode 100644 index 000000000..88984828c --- /dev/null +++ b/api-ref/source/conf.py @@ -0,0 +1,131 @@ +# 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. + +import os +import subprocess +import sys + + +on_rtd = os.environ.get('READTHEDOCS', None) == 'True' + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +sys.path.insert(0, os.path.abspath('../../')) +sys.path.insert(0, os.path.abspath('../')) +sys.path.insert(0, os.path.abspath('./')) +# -- General configuration ---------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinxcontrib.autohttp.flask', + 'sphinxcontrib.pecanwsme.rest', + 'wsmeext.sphinxext', +] + +if not on_rtd: + extensions.append('oslosphinx') + +wsme_protocols = ['restjson'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# autodoc generation is a bit aggressive and a nuisance when doing heavy +# text edit cycles. +# execute "export SPHINX_DEBUG=1" in your terminal to disable + +# The suffix of source filenames. +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'Workflow Service API Reference' +copyright = u'2017, Mistral Contributors' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +from mistral.version import version_info +release = version_info.release_string() +version = version_info.version_string() + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +show_authors = False + +# If true, '()' will be appended to :func: etc. cross-reference text. +add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +add_module_names = True + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# -- Options for HTML output -------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# html_static_path = ['_static'] + +if on_rtd: + html_theme_path = ['.'] + html_theme = 'sphinx_rtd_theme' + +# Output file base name for HTML help builder. +htmlhelp_basename = '%sdoc' % project + +# A list of ignored prefixes for module index sorting. +modindex_common_prefix = ['mistral.'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +# html_last_updated_fmt = '%b %d, %Y' +git_cmd = ["git", "log", "--pretty=format:'%ad, commit %h'", "--date=local", + "-n1"] +html_last_updated_fmt = subprocess.Popen( + git_cmd, stdout=subprocess.PIPE).communicate()[0] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +html_title = 'Mistral API Reference' + +# Custom sidebar templates, maps document names to template names. +html_sidebars = { + 'index': [ + 'sidebarlinks.html', 'localtoc.html', 'searchbox.html', + 'sourcelink.html' + ], + '**': [ + 'localtoc.html', 'relations.html', + 'searchbox.html', 'sourcelink.html' + ] +} + +# -- Options for manual page output ------------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'mistral', u'Mistral', + [u'OpenStack Foundation'], 1) +] + +# If true, show URL addresses after external links. +man_show_urls = True diff --git a/api-ref/source/index.rst b/api-ref/source/index.rst new file mode 100644 index 000000000..9481c1377 --- /dev/null +++ b/api-ref/source/index.rst @@ -0,0 +1,8 @@ +=============================== +OpenStack Workflow Service APIs +=============================== + +.. toctree:: + :maxdepth: 1 + + v2/index diff --git a/api-ref/source/v2/action.inc b/api-ref/source/v2/action.inc new file mode 100644 index 000000000..e69de29bb diff --git a/api-ref/source/v2/cron-trigger.inc b/api-ref/source/v2/cron-trigger.inc new file mode 100644 index 000000000..e69de29bb diff --git a/api-ref/source/v2/execution.inc b/api-ref/source/v2/execution.inc new file mode 100644 index 000000000..e69de29bb diff --git a/api-ref/source/v2/task.inc b/api-ref/source/v2/task.inc new file mode 100644 index 000000000..e69de29bb diff --git a/api-ref/source/v2/workbook.inc b/api-ref/source/v2/workbook.inc new file mode 100644 index 000000000..e69de29bb diff --git a/api-ref/source/v2/workflow.inc b/api-ref/source/v2/workflow.inc new file mode 100644 index 000000000..e69de29bb diff --git a/test-requirements.txt b/test-requirements.txt index 62bce1450..e1d8dfeb2 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -7,6 +7,7 @@ hacking<0.11,>=0.10.0 nose # LGPL oslosphinx>=4.7.0 # Apache-2.0 oslotest>=1.10.0 # Apache-2.0 +os-api-ref>=1.0.0 # Apache-2.0 pyflakes==0.8.1 # MIT mock>=2.0 # BSD requests-mock>=1.1 # Apache-2.0 diff --git a/tox.ini b/tox.ini index 87c5adcac..f1bab3df6 100644 --- a/tox.ini +++ b/tox.ini @@ -58,6 +58,14 @@ commands = python setup.py build_sphinx [testenv:releasenotes] commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html +[testenv:api-ref] +# This environment is called from CI scripts to test and publish +# the API Ref to developer.openstack.org. +commands = + rm -rf api-ref/build + sphinx-build -W -b html -d api-ref/build/doctrees api-ref/source api-ref/build/html +whitelist_externals = rm + #Skip PEP257 violation. [flake8] ignore = D100,D101,D102,D103,D104,D105,D200,D203,D202,D204,D205,D208,D400,D401