]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
doc: use plantweb as fallback of sphinx-ditaa
authorKefu Chai <kchai@redhat.com>
Thu, 9 Apr 2020 13:25:39 +0000 (21:25 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 26 Nov 2020 09:33:30 +0000 (17:33 +0800)
RTD does not support installing system packages, the only ways to install
dependencies are setuptools and pip. while ditaa is a tool written in
Java. so we need to find a native python tool allowing us to render ditaa
images. plantweb is able to the web service for rendering the ditaa
diagram. so let's use it as a fallback if "ditaa" is not around.

also start a new line after the directive, otherwise planweb server will
return 500 at seeing the diagram.

Signed-off-by: Kefu Chai <kchai@redhat.com>
(cherry picked from commit 0cb56e0f13dc57167271ec7f20f11421416196a2)

28 files changed:
.readthedocs.yml
admin/doc-read-the-docs.txt [new file with mode: 0644]
doc/architecture.rst
doc/conf.py
doc/install/install-vm-cloud.rst
doc/install/manual-deployment.rst
doc/install/manual-freebsd-deployment.rst
doc/rados/api/librados-intro.rst
doc/rados/configuration/mon-config-ref.rst
doc/rados/configuration/mon-osd-interaction.rst
doc/rados/configuration/network-config-ref.rst
doc/rados/operations/cache-tiering.rst
doc/rados/operations/monitoring-osd-pg.rst
doc/rados/operations/placement-groups.rst
doc/rados/operations/user-management.rst
doc/radosgw/admin.rst
doc/radosgw/index.rst
doc/radosgw/swift/tutorial.rst
doc/rbd/index.rst
doc/rbd/libvirt.rst
doc/rbd/qemu-rbd.rst
doc/rbd/rbd-cloudstack.rst
doc/rbd/rbd-openstack.rst
doc/rbd/rbd-snapshot.rst
doc/start/intro.rst
doc/start/quick-ceph-deploy.rst
doc/start/quick-common.rst
doc/start/quick-rbd.rst

index 61c710b33b152f049288e24ddfc1c71e9af05d3a..24815ce2466e4622cb65a8cb5addedfc90648a60 100644 (file)
@@ -10,6 +10,7 @@ python:
   version: 3
   install:
     - requirements: admin/doc-requirements.txt
+    - requirements: admin/doc-read-the-docs.txt
 sphinx:
   builder: dirhtml
   configuration: doc/conf.py
diff --git a/admin/doc-read-the-docs.txt b/admin/doc-read-the-docs.txt
new file mode 100644 (file)
index 0000000..bcc77cc
--- /dev/null
@@ -0,0 +1 @@
+plantweb
index fb6e9c31bf1468c6e0a67f17e4b197e5ecf65cfc..ff00387980f1cd7dbe0023c400d673e6f2136634 100644 (file)
@@ -27,7 +27,9 @@ A Ceph Storage Cluster consists of two types of daemons:
 - :term:`Ceph Monitor`
 - :term:`Ceph OSD Daemon`
 
-.. ditaa::  +---------------+ +---------------+
+.. ditaa::
+
+            +---------------+ +---------------+
             |      OSDs     | |    Monitors   |
             +---------------+ +---------------+
 
@@ -56,7 +58,9 @@ comes through a :term:`Ceph Block Device`, :term:`Ceph Object Storage`, the
 file in a filesystem, which is stored on an :term:`Object Storage Device`. Ceph
 OSD Daemons handle the read/write operations on the storage disks.
 
-.. ditaa:: /-----\       +-----+       +-----+
+.. ditaa::
+
+           /-----\       +-----+       +-----+
            | obj |------>| {d} |------>| {s} |
            \-----/       +-----+       +-----+
    
@@ -70,7 +74,9 @@ attributes such as the file owner, created date, last modified date, and so
 forth.
 
 
-.. ditaa:: /------+------------------------------+----------------\
+.. ditaa::
+
+           /------+------------------------------+----------------\
            | ID   | Binary Data                  | Metadata       |
            +------+------------------------------+----------------+
            | 1234 | 0101010101010100110101010010 | name1 = value1 | 
@@ -229,7 +235,9 @@ the client and the monitor share a secret key.
 .. note:: The ``client.admin`` user must provide the user ID and 
    secret key to the user in a secure manner. 
 
-.. ditaa:: +---------+     +---------+
+.. ditaa::
+
+           +---------+     +---------+
            | Client  |     | Monitor |
            +---------+     +---------+
                 |  request to   |
@@ -252,7 +260,9 @@ user's secret key and transmits it back to the client. The client decrypts the
 ticket and uses it to sign requests to OSDs and metadata servers throughout the
 cluster.
 
-.. ditaa:: +---------+     +---------+
+.. ditaa::
+
+           +---------+     +---------+
            | Client  |     | Monitor |
            +---------+     +---------+
                 |  authenticate |
@@ -283,7 +293,9 @@ machine and the Ceph servers. Each message sent between a client and server,
 subsequent to the initial authentication, is signed using a ticket that the
 monitors, OSDs and metadata servers can verify with their shared secret.
 
-.. ditaa:: +---------+     +---------+     +-------+     +-------+
+.. ditaa::
+
+           +---------+     +---------+     +-------+     +-------+
            |  Client |     | Monitor |     |  MDS  |     |  OSD  |
            +---------+     +---------+     +-------+     +-------+
                 |  request to   |              |             |
@@ -393,7 +405,8 @@ ability to leverage this computing power leads to several major benefits:
    and tertiary OSDs (as many OSDs as additional replicas), and responds to the
    client once it has confirmed the object was stored successfully.
 
-.. ditaa:: 
+.. ditaa::
+
              +----------+
              |  Client  |
              |          |
@@ -443,7 +456,8 @@ Ceph Clients retrieve a `Cluster Map`_ from a Ceph Monitor, and write objects to
 pools. The pool's ``size`` or number of replicas, the CRUSH rule and the
 number of placement groups determine how Ceph will place the data.
 
-.. ditaa:: 
+.. ditaa::
+
             +--------+  Retrieves  +---------------+
             | Client |------------>|  Cluster Map  |
             +--------+             +---------------+
@@ -488,7 +502,8 @@ rebalance dynamically when new Ceph OSD Daemons and the underlying OSD devices
 come online. The following diagram depicts how CRUSH maps objects to placement
 groups, and placement groups to OSDs.
 
-.. ditaa:: 
+.. ditaa::
+
            /-----\  /-----\  /-----\  /-----\  /-----\
            | obj |  | obj |  | obj |  | obj |  | obj |
            \-----/  \-----/  \-----/  \-----/  \-----/
@@ -614,7 +629,8 @@ and each OSD gets some added capacity, so there are no load spikes on the
 new OSD after rebalancing is complete.
 
 
-.. ditaa:: 
+.. ditaa::
+
            +--------+     +--------+
    Before  |  OSD 1 |     |  OSD 2 |
            +--------+     +--------+
@@ -685,6 +701,7 @@ name. Chunk 1 contains ``ABC`` and is stored on **OSD5** while chunk 4 contains
 
 
 .. ditaa::
+
                             +-------------------+
                        name |       NYAN        |
                             +-------------------+
@@ -739,6 +756,7 @@ three chunks are read: **OSD2** was the slowest and its chunk was not taken into
 account.
 
 .. ditaa::
+
                                 +-------------------+
                            name |       NYAN        |
                                 +-------------------+
@@ -804,6 +822,7 @@ version 1).
 
 
 .. ditaa::
+
      Primary OSD
     
    +-------------+
@@ -934,6 +953,7 @@ object can be removed: ``D1v1`` on **OSD 1**, ``D2v1`` on **OSD 2** and ``C1v1``
 on **OSD 3**.
 
 .. ditaa::
+
      Primary OSD
     
    +-------------+
@@ -972,6 +992,7 @@ to be available on all OSDs in the previous acting set ) is ``1,1`` and that
 will be the head of the new authoritative log.
 
 .. ditaa::
+
    +-------------+
    |    OSD 1    |
    |   (down)    |
@@ -1017,6 +1038,7 @@ the erasure coding library during scrubbing and stored on the new primary
 
 
 .. ditaa::
+
      Primary OSD
     
    +-------------+
@@ -1068,7 +1090,8 @@ tier. So the cache tier and the backing storage tier are completely transparent
 to Ceph clients.
 
 
-.. ditaa:: 
+.. ditaa::
+
            +-------------+
            | Ceph Client |
            +------+------+
@@ -1150,7 +1173,8 @@ Cluster. Ceph packages this functionality into the ``librados`` library so that
 you can create your own custom Ceph Clients. The following diagram depicts the
 basic architecture.
 
-.. ditaa::  
+.. ditaa::
+
             +---------------------------------+
             |  Ceph Storage Cluster Protocol  |
             |           (librados)            |
@@ -1193,7 +1217,9 @@ notification. This enables a client to use any object as a
 synchronization/communication channel.
 
 
-.. ditaa:: +----------+     +----------+     +----------+     +---------------+
+.. ditaa::
+
+           +----------+     +----------+     +----------+     +---------------+
            | Client 1 |     | Client 2 |     | Client 3 |     | OSD:Object ID |
            +----------+     +----------+     +----------+     +---------------+
                  |                |                |                  |
@@ -1269,7 +1295,8 @@ take maximum advantage of Ceph's ability to distribute data across placement
 groups, and consequently doesn't improve performance very much. The following
 diagram depicts the simplest form of striping:
 
-.. ditaa::              
+.. ditaa::
+
                         +---------------+
                         |  Client Data  |
                         |     Format    |
@@ -1327,7 +1354,8 @@ set (``object set 2`` in the following diagram), and begins writing to the first
 stripe (``stripe unit 16``) in the first object in the new object set (``object
 4`` in the diagram below).
 
-.. ditaa::                 
+.. ditaa::
+
                           +---------------+
                           |  Client Data  |
                           |     Format    |
@@ -1443,6 +1471,7 @@ and high availability. The following diagram depicts the high-level
 architecture. 
 
 .. ditaa::
+
             +--------------+  +----------------+  +-------------+
             | Block Device |  | Object Storage |  |   CephFS    |
             +--------------+  +----------------+  +-------------+            
@@ -1527,6 +1556,7 @@ Cluster. Ceph Clients mount a CephFS filesystem as a kernel object or as
 a Filesystem in User Space (FUSE).
 
 .. ditaa::
+
             +-----------------------+  +------------------------+
             | CephFS Kernel Object  |  |      CephFS FUSE       |
             +-----------------------+  +------------------------+            
index 0280e561b57f44a4bbeba43cdfd092c7f9f1d1f6..74d8417046ec1527248545ffd5ff9f3a9cdf8fcd 100644 (file)
@@ -1,3 +1,4 @@
+import shutil
 import sys
 import os
 
@@ -47,11 +48,18 @@ extensions = [
     'sphinx.ext.autodoc',
     'sphinx.ext.graphviz',
     'sphinx.ext.todo',
-    'sphinxcontrib.ditaa',
     'breathe',
     'edit_on_github',
     ]
-ditaa = 'ditaa'
+ditaa = shutil.which("ditaa")
+if ditaa is not None:
+    extensions += ['sphinxcontrib.ditaa']
+else:
+    extensions += ['plantweb.directive']
+    plantweb_defaults = {
+        'engine': 'ditaa'
+    }
+
 todo_include_todos = True
 
 top_level = os.path.dirname(
@@ -80,6 +88,10 @@ edit_on_github_branch = 'master'
 # handles edit-on-github and old version warning display
 def setup(app):
     app.add_javascript('js/ceph.js')
+    if ditaa is None:
+        # add "ditaa" as an alias of "diagram"
+        from plantweb.directive import DiagramDirective
+        app.add_directive('ditaa', DiagramDirective)
 
 # mocking ceph_module offered by ceph-mgr. `ceph_module` is required by
 # mgr.mgr_module
index a28a76a28f74f161849a314336e80f0a3dd6fc6c..39bc01c893f2363e0ac62344365b066fbcf54297 100644 (file)
@@ -9,7 +9,9 @@ Examples of VMs include: QEMU/KVM, XEN, VMWare, LXC, VirtualBox, etc. Examples
 of Cloud Platforms include OpenStack, CloudStack, OpenNebula, etc.
 
 
-.. ditaa::  +---------------------------------------------------+
+.. ditaa::
+
+            +---------------------------------------------------+
             |                     libvirt                       |
             +------------------------+--------------------------+
                                      |
index 67146c1fe5e3d69fae851cf1d9fc2b199455ce5d..d50c7216b03488dce92cb9fa774b4432c1b90635 100644 (file)
@@ -18,6 +18,7 @@ OSD nodes.
 
 
 .. ditaa::
+
            /------------------\         /----------------\
            |    Admin Node    |         |     node1      |
            |                  +-------->+                |
index 9c70e6ab6e4779048b376640123345ffc70f704d..d8dae2890d04004352854ec7bef6ab05f07f4be7 100644 (file)
@@ -22,6 +22,7 @@ OSD nodes.
 
 
 .. ditaa:: 
+
            /------------------\         /----------------\
            |    Admin Node    |         |     node1      |
            |                  +-------->+                |
index c63a255897c0f0109b209097f9a979d98752a787..7179438a84de4b0267f937ec2ef15ddedaad14fb 100644 (file)
@@ -15,7 +15,7 @@ the Ceph Storage Cluster:
 - The :term:`Ceph Monitor`, which maintains a master copy of the cluster map. 
 - The :term:`Ceph OSD Daemon` (OSD), which stores data as objects on a storage node.
 
-.. ditaa::  
+.. ditaa::
             +---------------------------------+
             |  Ceph Storage Cluster Protocol  |
             |           (librados)            |
@@ -165,7 +165,7 @@ placement group and `OSD`_  for locating the data. Then the client application
 can read or write data. The client app doesn't need to learn about the topology
 of the cluster directly.
 
-.. ditaa:: 
+.. ditaa::
             +--------+  Retrieves  +---------------+
             | Client |------------>|  Cluster Map  |
             +--------+             +---------------+
@@ -217,7 +217,8 @@ these capabilities. The following diagram provides a high-level flow for the
 initial connection.
 
 
-.. ditaa:: +---------+     +---------+
+.. ditaa::
+           +---------+     +---------+
            | Client  |     | Monitor |
            +---------+     +---------+
                 |               |
@@ -521,7 +522,8 @@ functionality includes:
 - Snapshot pools, list snapshots, etc.
 
 
-.. ditaa:: +---------+     +---------+     +---------+
+.. ditaa::
+           +---------+     +---------+     +---------+
            | Client  |     | Monitor |     |   OSD   |
            +---------+     +---------+     +---------+
                 |               |               |
index 01432c3f352576f7a81ae4d99cfebc146ec7b873..8302e58eafe95ffd14d602d30a58f0484dda4260 100644 (file)
@@ -34,8 +34,7 @@ Monitors can query the most recent version of the cluster map during sync
 operations. Ceph Monitors leverage the key/value store's snapshots and iterators
 (using leveldb) to perform store-wide synchronization.
 
-.. ditaa:: 
-
+.. ditaa::
  /-------------\               /-------------\
  |   Monitor   | Write Changes |    Paxos    |
  |   cCCC      +-------------->+   cCCC      |
@@ -496,7 +495,6 @@ Ceph Clients to read and write data. So the Ceph Storage Cluster's operating
 capacity is 95TB, not 99TB.
 
 .. ditaa::
-
  +--------+  +--------+  +--------+  +--------+  +--------+  +--------+
  | Rack 1 |  | Rack 2 |  | Rack 3 |  | Rack 4 |  | Rack 5 |  | Rack 6 |
  | cCCC   |  | cF00   |  | cCCC   |  | cCCC   |  | cCCC   |  | cCCC   |
@@ -620,7 +618,8 @@ fallen behind the other monitors. The requester asks the leader to synchronize,
 and the leader tells the requester to synchronize with a provider.
 
 
-.. ditaa:: +-----------+          +---------+          +----------+
+.. ditaa::
+           +-----------+          +---------+          +----------+
            | Requester |          | Leader  |          | Provider |
            +-----------+          +---------+          +----------+
                   |                    |                     |
index a7324ebb0e5541e996e69f8140a3e0ab71e24398..6ef6626555385ca02642faf00f9fe300a1e5fdc0 100644 (file)
@@ -34,7 +34,8 @@ and ``[osd]`` or ``[global]`` section of your Ceph configuration file,
 or by setting the value at runtime.
 
 
-.. ditaa:: +---------+          +---------+
+.. ditaa::
+           +---------+          +---------+
            |  OSD 1  |          |  OSD 2  |
            +---------+          +---------+
                 |                    |
@@ -89,7 +90,9 @@ and ``mon osd reporter subtree level`` settings  under the ``[mon]`` section of
 your Ceph configuration file, or by setting the value at runtime.
 
 
-.. ditaa:: +---------+     +---------+      +---------+
+.. ditaa::
+
+           +---------+     +---------+      +---------+
            |  OSD 1  |     |  OSD 2  |      | Monitor |
            +---------+     +---------+      +---------+
                 |               |                |
@@ -118,7 +121,9 @@ Ceph Monitor heartbeat interval by adding an ``osd mon heartbeat interval``
 setting under the ``[osd]`` section of your Ceph configuration file, or by
 setting the value at runtime.
 
-.. ditaa:: +---------+     +---------+     +-------+     +---------+
+.. ditaa::
+
+           +---------+     +---------+     +-------+     +---------+
            |  OSD 1  |     |  OSD 2  |     | OSD 3 |     | Monitor |
            +---------+     +---------+     +-------+     +---------+
                 |               |              |              |
@@ -161,7 +166,9 @@ interval max`` setting under the ``[osd]`` section of your Ceph configuration
 file, or by setting the value at runtime.
 
 
-.. ditaa:: +---------+          +---------+
+.. ditaa::
+
+           +---------+          +---------+
            |  OSD 1  |          | Monitor |
            +---------+          +---------+
                 |                    |
index 7f1cea53d683c4edc88ac49315137d60926a4f58..1ac01a3e814ec141fe92458b573e984cdaacb35f 100644 (file)
@@ -130,7 +130,7 @@ Each Ceph OSD Daemon on a Ceph Node may use up to four ports:
 #. One for sending data to other OSDs.
 #. Two for heartbeating on each interface.
 
-.. ditaa:: 
+.. ditaa::
               /---------------\
               |      OSD      |
               |           +---+----------------+-----------+
index 9d52e74988be7a5d08a421bedffac4a726c6e3a5..132aac4cc9b7d05d0249f1703bbfd6dc29f348cf 100644 (file)
@@ -13,7 +13,7 @@ tier. So the cache tier and the backing storage tier are completely transparent
 to Ceph clients.
 
 
-.. ditaa:: 
+.. ditaa::
            +-------------+
            | Ceph Client |
            +------+------+
index be896b729fb609a62dc96fab575a6fbef20edac4..56609b75c9a6edb3946db4eada8105661e9c4d39 100644 (file)
@@ -33,7 +33,9 @@ not assign placement groups to the OSD. If an OSD is ``down``, it should also be
 .. note:: If an OSD is ``down`` and ``in``, there is a problem and the cluster 
    will not be in a healthy state.
 
-.. ditaa:: +----------------+        +----------------+
+.. ditaa::
+
+           +----------------+        +----------------+
            |                |        |                |
            |   OSD #n In    |        |   OSD #n Up    |
            |                |        |                |
@@ -158,7 +160,9 @@ OSDs to establish agreement on the current state of the placement group
 (assuming a pool with 3 replicas of the PG).
 
 
-.. ditaa:: +---------+     +---------+     +-------+
+.. ditaa::
+
+           +---------+     +---------+     +-------+
            |  OSD 1  |     |  OSD 2  |     | OSD 3 |
            +---------+     +---------+     +-------+
                 |               |              |
@@ -265,8 +269,8 @@ group's Acting Set will peer. Once peering is complete, the placement group
 status should be ``active+clean``, which means a Ceph client can begin writing
 to the placement group.
 
-.. ditaa:: 
-         
+.. ditaa::
+
        /-----------\       /-----------\       /-----------\
        | Creating  |------>|  Peering  |------>|  Active   |
        \-----------/       \-----------/       \-----------/
index dcff42bc5caf613f425662f3d96a0c4ef4fa14a2..97fde80531eb9ea72e852fade5840f40b1a52d8f 100644 (file)
@@ -70,7 +70,6 @@ OSDs. For instance, in a replicated pool of size two, each placement
 group will store objects on two OSDs, as shown below.
 
 .. ditaa::
-
    +-----------------------+      +-----------------------+
    |  Placement Group #1   |      |  Placement Group #2   |
    |                       |      |                       |
index 11c64f4fff1e2852c0e5d01930111aa0008e967f..4f8c97a9ae3f1b86b00fc3489d7040f3af2db4cd 100644 (file)
@@ -9,7 +9,8 @@ authorization with the :term:`Ceph Storage Cluster`. Users are either
 individuals or system actors such as applications, which use Ceph clients to
 interact with the Ceph Storage Cluster daemons.
 
-.. ditaa::  +-----+
+.. ditaa::
+            +-----+
             | {o} |
             |     |
             +--+--+       /---------\               /---------\
index 809014f3c24dfeb16ea971b4fa6187b270ab05d0..e2091851bae16ed8eb034aa4923f113c892fb2e6 100644 (file)
@@ -22,7 +22,8 @@ There are two user types:
 - **Subuser:** The term 'subuser' reflects a user of the Swift interface. A subuser
   is associated to a user .
   
-.. ditaa:: +---------+
+.. ditaa::
+           +---------+
            |   User  |
            +----+----+  
                 |     
index 521ad6924091767311200ca13742fbb80bdc7284..e869b4f48fc580306dd0f6f48f377e61db8335ac 100644 (file)
@@ -22,7 +22,9 @@ in the same Ceph Storage Cluster used to store data from Ceph Filesystem clients
 or Ceph Block Device clients. The S3 and Swift APIs share a common namespace, so
 you may write data with one API and retrieve it with the other.
 
-.. ditaa::  +------------------------+ +------------------------+
+.. ditaa::
+
+            +------------------------+ +------------------------+
             |   S3 compatible API    | |  Swift compatible API  |
             +------------------------+-+------------------------+
             |                      radosgw                      |
index 8287d19be5b1c916aa7a9f54d3cae9454006bcc9..5d2889b192d20c5ba10328f72eac18c039358c13 100644 (file)
@@ -13,7 +13,9 @@ metadata. See example code for the following languages:
 - `Ruby`_
 
 
-.. ditaa:: +----------------------------+        +-----------------------------+
+.. ditaa::
+
+           +----------------------------+        +-----------------------------+
            |                            |        |                             |
            |    Create a Connection     |------->|      Create a Container     |
            |                            |        |                             |
index 5bde3378ad381891626a201932e02ab46f30cf54..18a68d35954ab6e49e3b958250ab9012ba85db74 100644 (file)
@@ -17,7 +17,9 @@ such as snapshotting, replication and consistency. Ceph's
 :abbr:`RADOS (Reliable Autonomic Distributed Object Store)` Block Devices (RBD)
 interact with OSDs using kernel modules or the ``librbd`` library.
 
-.. ditaa::  +------------------------+ +------------------------+
+.. ditaa::
+
+            +------------------------+ +------------------------+
             |     Kernel Module      | |        librbd          |
             +------------------------+-+------------------------+
             |                   RADOS Protocol                  |
index f953b1f08e2303629a698b27908b8606f57c71af..b7f07316f2c8cf665ef9625e8d85d27569ad5cad 100644 (file)
@@ -21,7 +21,9 @@ software that interfaces with ``libvirt``. The following stack diagram
 illustrates how ``libvirt`` and QEMU use Ceph block devices via ``librbd``. 
 
 
-.. ditaa::  +---------------------------------------------------+
+.. ditaa::
+
+            +---------------------------------------------------+
             |                     libvirt                       |
             +------------------------+--------------------------+
                                      |
index 80685cd6012f5a2151672ac7a2fcc44056255085..3b8b75fef725b76a4e7839dfdf34bd0b24519dc6 100644 (file)
@@ -14,7 +14,9 @@ virtual machines quickly, because the client doesn't have to download an entire
 image each time it spins up a new virtual machine.
 
 
-.. ditaa::  +---------------------------------------------------+
+.. ditaa::
+
+            +---------------------------------------------------+
             |                       QEMU                        |
             +---------------------------------------------------+
             |                      librbd                       |
index 29849bd1d3db580dc778c977a1f5445487fc489c..9dba29e3e678d6e5912833adc894542e6e64d565 100644 (file)
@@ -14,7 +14,9 @@ and a dual-core processor, but more CPU and RAM will perform better. The
 following diagram depicts the CloudStack/Ceph technology stack.
 
 
-.. ditaa::  +---------------------------------------------------+
+.. ditaa::
+
+            +---------------------------------------------------+
             |                   CloudStack                      |
             +---------------------------------------------------+
             |                     libvirt                       |
index 750e2dc47ef707208339bd852a8997d40912e3ce..bd6b81e10cc23743b67cc7d3bb50d493c7e14873 100644 (file)
@@ -16,7 +16,9 @@ quad-core processor. The following diagram depicts the OpenStack/Ceph
 technology stack.
 
 
-.. ditaa::  +---------------------------------------------------+
+.. ditaa::
+
+            +---------------------------------------------------+
             |                    OpenStack                      |
             +---------------------------------------------------+
             |                     libvirt                       |
index 4ae9388c2e546686e1c705ebb04eff081f178db7..1e506ba3d5a8843d2b4041cbef83fd64251543f0 100644 (file)
@@ -23,7 +23,9 @@ command and many higher level interfaces, including `QEMU`_, `libvirt`_,
    For virtual machines, `qemu-guest-agent` can be used to automatically freeze
    filesystems when creating a snapshot.
    
-.. ditaa:: +------------+         +-------------+
+.. ditaa::
+
+           +------------+         +-------------+
            | {s}        |         | {s} c999    |
            |   Active   |<-------*|   Snapshot  |
            |   Image    |         |   of Image  |
@@ -146,7 +148,9 @@ so cloning a snapshot simplifies semantics--making it possible to create
 clones rapidly.
 
 
-.. ditaa:: +-------------+              +-------------+
+.. ditaa::
+
+           +-------------+              +-------------+
            | {s} c999    |              | {s}         |
            |  Snapshot   | Child refers |  COW Clone  |
            |  of Image   |<------------*| of Snapshot |
@@ -180,7 +184,9 @@ Ceph block device layering is a simple process. You must have an image. You must
 create a snapshot of the image. You must protect the snapshot. Once you have 
 performed these steps, you can begin cloning the snapshot.
 
-.. ditaa:: +----------------------------+        +-----------------------------+
+.. ditaa::
+
+           +----------------------------+        +-----------------------------+
            |                            |        |                             |
            | Create Block Device Image  |------->|      Create a Snapshot      |
            |                            |        |                             |
index 95b51dd839efc10374d8ea19795a36e137c8057f..8c42a7535c9402e10ad7aae0dedd12d3fd75592b 100644 (file)
@@ -11,7 +11,9 @@ Storage Cluster requires at least one Ceph Monitor, Ceph Manager, and
 Ceph OSD (Object Storage Daemon). The Ceph Metadata Server is also
 required when running Ceph Filesystem clients.
 
-.. ditaa::  +---------------+ +------------+ +------------+ +---------------+
+.. ditaa::
+
+            +---------------+ +------------+ +------------+ +---------------+
             |      OSDs     | | Monitors   | |  Managers  | |      MDSs     |
             +---------------+ +------------+ +------------+ +---------------+
 
index 48a13794ce3407f3c6cd1b64d876d5accc01d70d..fc5d0111dd67cf938182e21ec761e93f211382b7 100644 (file)
@@ -152,6 +152,7 @@ expand cluster. Add a Ceph Metadata Server to ``node1``.  Then add a
 Ceph Monitor and Ceph Manager to ``node2`` and ``node3`` to improve reliability and availability.
 
 .. ditaa::
+
            /------------------\         /----------------\
            |    ceph-deploy   |         |     node1      |
            |    Admin Node    |         | cCCC           |
index 22cf501e30e8ef732116d3af843e32b7bd6506c7..fb109c55080ddde9f9419752747eecae5c4985e0 100644 (file)
@@ -1,4 +1,5 @@
-.. ditaa:: 
+.. ditaa::
+
            /------------------\         /-----------------\
            |    admin-node    |         |      node1      |
            |                  +-------->+ cCCC            |
index 837830b53a8a06f67d65d35672f1e1cab14365a4..6ded8c22c9798e5d982c9ab8132054d6c0e5bfd9 100644 (file)
@@ -11,7 +11,8 @@ Device`.
    Block Device.
 
 
-.. ditaa:: 
+.. ditaa::
+
            /------------------\         /----------------\
            |    Admin Node    |         |   ceph-client  |
            |                  +-------->+ cCCC           |