Create scenario tests for load balancers

This patch implements the tempest plugin for
for testing load balancer creation in Octavia.

Co-Authored-By: Jude Cross <jcross@godaddy.com>
Co-Authored-By: Lingxian Kong <anlin.kong@gmail.com>

Depends-On: https://review.openstack.org/557856
Change-Id: I57064f8e0834efba8859a780394a1c69851cc917
diff --git a/doc/requirements.txt b/doc/requirements.txt
new file mode 100644
index 0000000..1ade022
--- /dev/null
+++ b/doc/requirements.txt
@@ -0,0 +1,9 @@
+# The order of packages is significant, because pip processes them in the order
+# of appearance. Changing the order has an impact on the overall integration
+# process, which may cause wedges in the gate later.
+
+sphinx>=1.6.2,!=1.6.6,!=1.6.7 # BSD
+openstackdocstheme>=1.18.1 # Apache-2.0
+
+# releasenotes
+reno>=2.5.0 # Apache-2.0
diff --git a/doc/source/conf.py b/doc/source/conf.py
index c99e0b6..1f18a18 100755
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -15,20 +15,27 @@
 import os
 import sys
 
+import openstackdocstheme
+from sphinx import apidoc
+
 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',
-    #'sphinx.ext.intersphinx',
-    'oslosphinx'
+    'sphinx.ext.viewcode',
+    'openstackdocstheme',
+    'oslo_config.sphinxext'
 ]
 
 # 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
+templates_path = ['_templates']
 
 # The suffix of source filenames.
 source_suffix = '.rst'
@@ -45,11 +52,14 @@
 
 # If true, the current module name will be prepended to all description
 # unit titles (such as .. function::).
-add_module_names = True
+add_module_names = False
 
 # The name of the Pygments (syntax highlighting) style to use.
 pygments_style = 'sphinx'
 
+# A list of ignored prefixes for module index sorting.
+modindex_common_prefix = ['octavia_tempest_plugin.']
+
 # -- Options for HTML output --------------------------------------------------
 
 # The theme to use for HTML and HTML Help pages.  Major themes that come with
@@ -58,9 +68,19 @@
 # html_theme = '_theme'
 # html_static_path = ['static']
 
+html_theme = 'openstackdocs'
+
+html_last_updated_fmt = '%Y-%m-%d %H:%M'
+
 # Output file base name for HTML help builder.
 htmlhelp_basename = '%sdoc' % project
 
+# If false, no module index is generated.
+html_domain_indices = True
+
+# If false, no index is generated.
+html_use_index = True
+
 # Grouping the document tree into LaTeX files. List of tuples
 # (source start file, target name, title, author, documentclass
 # [howto/manual]).
@@ -73,3 +93,27 @@
 
 # Example configuration for intersphinx: refer to the Python standard library.
 #intersphinx_mapping = {'http://docs.python.org/': None}
+
+repository_name = 'openstack/octavia-tempest-plugin'
+bug_project = '910'
+bug_tag = 'docs'
+
+# TODO(mordred) We should extract this into a sphinx plugin
+def run_apidoc(_):
+    cur_dir = os.path.abspath(os.path.dirname(__file__))
+    out_dir = os.path.join(cur_dir, '_build', 'modules')
+    module = os.path.join(cur_dir, '..', '..', 'octavia_tempest_plugin')
+    # Keep the order of arguments same as the sphinx-apidoc help, otherwise it
+    # would cause unexpected errors:
+    # sphinx-apidoc [options] -o <output_path> <module_path>
+    # [exclude_pattern, ...]
+    apidoc.main([
+        '--force',
+        '-o',
+        out_dir,
+        module,
+    ])
+
+
+def setup(app):
+    app.connect('builder-inited', run_apidoc)
diff --git a/doc/source/configref.rst b/doc/source/configref.rst
new file mode 100644
index 0000000..f9db042
--- /dev/null
+++ b/doc/source/configref.rst
@@ -0,0 +1,26 @@
+..
+      Copyright 2018 Rackspace US Inc.
+
+      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.
+
+Octavia Tempest Plugin Configuration Options
+============================================
+
+.. contents:: Table of Contents
+    :depth: 2
+
+.. note:: Not all of these options are used by the Octavia tempest tests.
+
+.. show-options::
+
+    tempest.config
diff --git a/doc/source/index.rst b/doc/source/index.rst
index fad3a36..494a0b6 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -14,11 +14,16 @@
    readme
    installation
    contributing
+   configref
 
 Indices and tables
 ==================
 
+.. toctree::
+   :hidden:
+
+   _build/modules/modules
+
 * :ref:`genindex`
 * :ref:`modindex`
 * :ref:`search`
-