From 41b020a702cc12fd9be09e31874e3821880e11c4 Mon Sep 17 00:00:00 2001 From: agardner Date: Fri, 15 Dec 2017 16:52:31 -0500 Subject: [PATCH] Add tox and sphinx stuff for calipso Also fix malformed table in admin guide Change-Id: Ib15f93d0161b9f36be84553b2181419449dbfa2a Signed-off-by: agardner --- docs/_static/favicon.ico | Bin 0 -> 15086 bytes docs/_static/my-styles.css | 33 +++++ docs/_static/opnfv-logo.png | Bin 0 -> 2829 bytes docs/conf.py | 282 +++++++++++++++++++++++++++++++++++++++++++ docs/release/admin-guide.rst | 16 +-- etc/requirements.txt | 8 ++ tox.ini | 15 +++ 7 files changed, 346 insertions(+), 8 deletions(-) create mode 100755 docs/_static/favicon.ico create mode 100644 docs/_static/my-styles.css create mode 100644 docs/_static/opnfv-logo.png create mode 100644 docs/conf.py create mode 100644 etc/requirements.txt create mode 100644 tox.ini diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..bbe55ab40de1dca529711bd956dd395f831c8661 GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/docs/_static/my-styles.css b/docs/_static/my-styles.css new file mode 100644 index 0000000..8feb45b --- /dev/null +++ b/docs/_static/my-styles.css @@ -0,0 +1,33 @@ +body { + font-family: Helvetica, sans-serif; + font-size: 16px; +} + +body a { + color: #27CCC0; +} + +body a:hover { + color: #676767; +} + +.navbar-brand img { + height: 200%; + margin-top: -5%; +} + +.navbar, h1, h2, h3, h4, h5, h6 { + font-family: Helvetica, sans-serif; +} + +.navbar-text{ + color: #676767; +} + +.navbar-form.navbar-right{ + padding: 0; +} + +.navbar-form .form-control{ + width: 150px; +} diff --git a/docs/_static/opnfv-logo.png b/docs/_static/opnfv-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1519503eba764f7a00877b9b8bdbbd37fd3707c6 GIT binary patch literal 2829 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 v documentation" by default. +# html_title = 'OpenDaylight Documentation v0.3.0' + +# A shorter title for the navigation bar. Default is the same as html_title. +# html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +html_logo = '_static/opnfv-logo.png' + +# The name of an image file (relative to this directory) to use as a favicon of +# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +html_favicon = '_static/favicon.ico' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +# html_extra_path = [] + +# If not None, a 'Last updated on:' timestamp is inserted at every page +# bottom, using the given strftime format. +# The empty string is equivalent to '%b %d, %Y'. +# html_last_updated_fmt = None + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +# html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +# html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +# html_additional_pages = {} + +# If false, no module index is generated. +# html_domain_indices = True + +# If false, no index is generated. +# html_use_index = True + +# If true, the index is split into individual pages for each letter. +# html_split_index = False + +# If true, links to the reST sources are added to the pages. +# html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +# html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +# html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +# html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +# html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr', 'zh' +# html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# 'ja' uses this config value. +# 'zh' user can custom change `jieba` dictionary path. +# html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +# html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'OPNFV' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + #'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + #'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + #'preamble': '', + + # Latex figure (float) alignment + #'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'OPNFV.tex', 'OPNFV Documentation', + 'OPNFV Project', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# latex_use_parts = False + +# If true, show page references after internal links. +# latex_show_pagerefs = False + +# If true, show URL addresses after external links. +# latex_show_urls = False + +# Documents to append as an appendix to all manuals. +# latex_appendices = [] + +# If false, no module index is generated. +# latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'OPNFVDocs', 'OPNFV Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +# man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'OPNFVDocs', 'OPNFV Documentation', + author, 'OPNFV', 'One line description of project.', + 'Miscellaneous'), +] + +html_sidebars = {'**': ['localtoc.html', 'relations.html'],} +# Documents to append as an appendix to all manuals. +# texinfo_appendices = [] + +# If false, no module index is generated. +# texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +# texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +# texinfo_no_detailmenu = False + +# intersphinx_mapping = +# {'RTD':('http://opnfvdocsdemo.readthedocs.io/projects/', None)} diff --git a/docs/release/admin-guide.rst b/docs/release/admin-guide.rst index 3529e77..edf7b00 100644 --- a/docs/release/admin-guide.rst +++ b/docs/release/admin-guide.rst @@ -923,7 +923,7 @@ Event-based handling details +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | # | Event name | AMQP event | Handler | Workflow | Scans | Notes | +==========================+===========================+=====================================+=========================================+==================================================================================================================================================================================================================================================================================+======================================================================================================+==========================================================================================================================================================================================================================================================================================================================================+ -| **Instance** | +| **Instance** | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 1 | Create Instance | compute.instance.create.end | EventInstanceAdd | 1. Get *instances\_root* from inventory | **Yes** | ** ** | | | | | | | | | @@ -969,7 +969,7 @@ Event-based handling details | | | | | | | | | | | | | 2. Execute *self.delete\_handler()* | | | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **Instance Lifecycle** | +| **Instance Lifecycle** | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 4 | Instance Down | compute.instance.shutdown.start | **Not implemented** | | | | | | | | | | | | @@ -981,7 +981,7 @@ Event-based handling details | | | | | | | | | | | compute.instance.suspend.end | | | | | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **Region** | +| **Region** | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 6 | Add Region | servergroup.create | **Not implemented** | | | | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -991,7 +991,7 @@ Event-based handling details +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 8 | Delete Region | servergroup.delete | **Not implemented** | ** ** | ** ** | ** ** | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **Network** | +| **Network** | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 9 | Add Network | network.create.end | EventNetworkAdd | 1. If network with specified *id* already exists, log error and **return None** | **No** | ** ** | | | | | | | | | @@ -1015,7 +1015,7 @@ Event-based handling details | | | | | | | | | | | | | 2. Execute *self.delete\_handler()* | | | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **Subnet** | +| **Subnet** | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 12 | Add Subnet | subnet.create.end | EventSubnetAdd | 1. Get *network\_document* from db | **Yes** {cliques: 1} | 1. I don’t fully understand what `*these lines* `__ do. We make sure *ApiAccess.regions* variable is not empty, but why? The widespread usage of static variables is not a good sign anyway. | | | | | | | | | @@ -1069,7 +1069,7 @@ Event-based handling details | | | | | | | | | | | | | 6. If no subnets are left in *network\_document*, delete related vservice dhcp, port and vnic documents | | | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **Port** | +| **Port** | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 15 | Create Port | port.create.end | EventPortAdd | 1. Check if ports folder exists, create if not. | **Yes** {cliques: 1} | 1. The port and (maybe) port folder will still persist in db even if we abort the execution on step 6. See idea 1 for details. | | | | | | | | | @@ -1127,7 +1127,7 @@ Event-based handling details | | | | | | | | | | | | | 6. Execute *self.delete\_handler(vnic)* *for vnic* | | | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **Router** | +| **Router** | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 18 | Add Router | router.create.end | EventRouterAdd | 1. Get *host* by id from db | **Yes** {cliques: 1} | 1. Looks like code author confused a lot of stuff here. This class needs to be reviewed thoroughly. | | | | | | | | | @@ -1193,7 +1193,7 @@ Event-based handling details | | | | | | | | | | | | | 2. Execute *self.delete\_handler()* | | | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **Router Interface** | +| **Router Interface** | +--------------------------+---------------------------+-------------------------------------+-----------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 21 | Add Router Interface | router.interface.create | EventInterfaceAdd | 1. Get *network\_doc* from db based on subnet id from interface payload | **Yes** {cliques: 1} | 1. Log message states that we should abort interface adding, though the code does nothing to support that. Moreover, router\_doc can’t be empty at that moment because it’s referenced before. | | | | | | | | | diff --git a/etc/requirements.txt b/etc/requirements.txt new file mode 100644 index 0000000..7550086 --- /dev/null +++ b/etc/requirements.txt @@ -0,0 +1,8 @@ +tox +Sphinx==1.3.1 +doc8 +docutils==0.12 +setuptools +six +sphinxcontrib-httpdomain +sphinx_bootstrap_theme>=0.4.11 diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..c1993d9 --- /dev/null +++ b/tox.ini @@ -0,0 +1,15 @@ +[tox] +minversion = 1.6 +envlist = docs,docs-linkcheck +skipsdist = true + +[testenv:docs] +deps = -r{toxinidir}/etc/requirements.txt +commands = + sphinx-build -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html + echo "Generated docs available in {toxinidir}/docs/_build/html" +whitelist_externals = echo + +[testenv:docs-linkcheck] +deps = -r{toxinidir}/etc/requirements.txt +commands = sphinx-build -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck \ No newline at end of file -- 2.16.6