From f85357ffdbf5e21ec4bab39a9c2621f00ba9c0d2 Mon Sep 17 00:00:00 2001
From: Kurt Taylor <kurt.r.taylor@gmail.com>
Date: Tue, 9 Aug 2016 15:39:11 -0500
Subject: [PATCH] Add CI documentation outline

Since third-party driver continuous integration testing is now required for
ironic, we can include documentation for best practices for setting up a test
environment. This patch is to get a basic outline and index done so that we
can then build on it.

Co-Authored-By: Mike Turek <mjturek@linux.vnet.ibm.com>

Change-Id: I06415c3bd5cc9809d3ffda5b656e5948182349fb
---
 doc/source/dev/third-party-ci.rst | 81 +++++++++++++++++++++++++++++++
 doc/source/index.rst              |  1 +
 2 files changed, 82 insertions(+)
 create mode 100644 doc/source/dev/third-party-ci.rst

diff --git a/doc/source/dev/third-party-ci.rst b/doc/source/dev/third-party-ci.rst
new file mode 100644
index 0000000000..62b85ae3f7
--- /dev/null
+++ b/doc/source/dev/third-party-ci.rst
@@ -0,0 +1,81 @@
+.. _third-party-ci:
+
+==================================
+Third Party Continuous Integration
+==================================
+
+.. NOTE:: This document is a work-in-progress. Unfilled sections will be
+   worked in follow-up patchsets. This version is to get a basic outline and
+   index done so that we can then build on it. (krtaylor)
+
+This document provides tips and guidelines for third-party driver developers
+setting up their continuous integration test systems.
+
+CI Architecture Overview
+========================
+
+Requirements Cookbook
+=====================
+
+Sizing
+------
+
+Infrastructure
+--------------
+This section describes what changes you'll need to make to a your CI system to
+add an ironic job.
+
+jenkins changes
+###############
+
+nodepool changes
+################
+
+neutron changes
+###############
+
+pre-test hook
+#############
+
+cleanup hook
+############
+
+Ironic
+------
+
+
+Hardware Pool Management
+========================
+
+Problem
+-------
+If you are using actual hardware as target machines for your CI testing
+then the problem of two jobs trying to use the name target arises. If
+you have one target machine and a maximum number of one jobs running on
+your ironic pipeline at a time, then you won't run into this problem. However,
+one target may not handle the load of ironic's daily patch submissions.
+
+Solutions
+---------
+
+Zuul v3
+#######
+
+Molten Iron
+###########
+`molteniron <https://github.com/openstack/molteniron/>`_
+is a tool that allows you to reserve hardware from a pool at the last minute
+to use in your job. Once finished testing, you can unreserve the hardware
+making it available for the next test job.
+
+Tips and Tricks
+===============
+
+Optimize Run Time
+-----------------
+Image Server
+############
+
+Other References
+----------------
+
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 74e5cfdb81..cee2d5f81c 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -110,6 +110,7 @@ the developer community about any implementation using this functionality.
   Driver Overview <dev/drivers>
   Driver Base Class Definition <api/ironic.drivers.base.html>
   Writing "vendor_passthru" methods <dev/vendor-passthru>
+  Third party continuous integration testing <dev/third-party-ci>
 
 Testing Network Integration
 ---------------------------