[VOL-1914] Correctly rebooting the OLT

Change-Id: I4b97b8bc09c20452ec25fdbe93ed46b2b7f04fdf
diff --git a/docs/source/olt-state-machine.rst b/docs/source/olt-state-machine.rst
new file mode 100644
index 0000000..d92d6f8
--- /dev/null
+++ b/docs/source/olt-state-machine.rst
@@ -0,0 +1,42 @@
+.. _OLT State Machine:
+
+OLT State Machine
+=================
+
+In ``BBSim`` the device state is created using a state machine
+library: `fsm <https://github.com/looplab/fsm>`__.
+
+Here is a list of possible states for an OLT in BBSim:
+
+.. list-table:: OLT States
+    :header-rows: 1
+
+    * -
+      - Initialized
+      - Enabled
+      - Disabled
+      - Deleted
+    * - Data model is created for OLT, NNIs, PONs and ONUs
+      - Starts the listener on the NNI interface and the DHCP server,
+        Starts the OLT gRPC server,
+        Moves the ONUs to ``initialized`` state
+      - Sends OLT, NNIs and PONs ``UP`` indications
+        Transition the ONUs into ``discovered`` state
+      - Transition the ONUs into ``disabled`` state
+        Sends OLT, NNIs and PONs ``UP`` indications
+      - Stops the OLT gRPC Server
+
+Below is a diagram of the state machine allowed transitions:
+
+.. graphviz::
+
+    digraph {
+        rankdir=TB
+        newrank=true
+        graph [pad="1,1" bgcolor="#cccccc"]
+        node [style=filled]
+
+        created -> initialized -> enabled -> disabled -> deleted
+        disabled -> enabled
+        deleted -> initialized
+    }
\ No newline at end of file