Skip to content

Commit

Permalink
Replace blockdiag with graphviz
Browse files Browse the repository at this point in the history
The python blockdiag module is unmaintained and will likely be removed from distros.[1]
This patch replaces blockdiag with graphviz diagrams.

[1] blockdiag/blockdiag#171

Change-Id: I3a902c60b59071b466e1bf1ec6bda205e58b378c
  • Loading branch information
johnsom committed Jul 28, 2023
1 parent 61b4082 commit beb79ac
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 88 deletions.
2 changes: 2 additions & 0 deletions bindep.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Docs package dependencies
graphviz [doc]
1 change: 0 additions & 1 deletion doc/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
# process, which may cause wedges in the gate later.
sphinx>=2.0.0,!=2.1.0 # BSD
sphinxcontrib-httpdomain>=1.3.0 # BSD
sphinxcontrib-blockdiag>=1.5.4 # BSD
reno>=3.1.0 # Apache-2.0
os-api-ref>=1.4.0 # Apache-2.0
openstackdocstheme>=2.2.0 # Apache-2.0
217 changes: 133 additions & 84 deletions doc/source/admin/ha.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,24 @@ Needs Access to:

* AMQP

.. blockdiag::

blockdiag {

loadbalancer [label="L7 Load Balancer", stacked];
amqp_servers [label="AMQP Servers", stacked]
group api_servers {
label = "API Servers";
api_server_1 [label="API Server 1"];
api_server_2 [label="API Server 2"];
api_server_3 [label="API Server 3"];
}
loadbalancer -> api_server_1, api_server_2, api_server_3;
api_server_1, api_server_2, api_server_3 -> amqp_servers;
.. graphviz::

digraph APIHA {
rankdir=LR
{"L7 Load Balancers" [shape=box]
"API Server 1" [shape=box]
"API Server 2" [shape=box]
"API Server 3" [shape=box]
"AMQP Servers" [shape=box]
}
subgraph "API Servers" {
cluster=true;
label="API Servers";
"API Server 1";
"API Server 2";
"API Server 3";
}
"L7 Load Balancers" -> {"API Server 1" "API Server 2" "API Server 3"} -> "AMQP Servers";
}

Notes
Expand Down Expand Up @@ -67,20 +71,29 @@ Needs Access to:
* AMQP
* Database

.. blockdiag::

blockdiag {

amqp_servers [label="AMQP Servers", stacked]
db_servers [label="Database Servers", stacked, shape=flowchart.database]
group designate_central_servers {
label = "designate-central Servers";
designate_central_server_1 [label="designate-central Server 1", width=256];
designate_central_server_2 [label="designate-central Server 2", width=256];
designate_central_server_3 [label="designate-central Server 3", width=256];
}
amqp_servers <-> designate_central_server_1, designate_central_server_2, designate_central_server_3;
designate_central_server_1, designate_central_server_2, designate_central_server_3 -> db_servers;
.. graphviz::

digraph CENTRALHA {
rankdir=LR
{"AMQP Servers" [shape=box]
"designate-central Server 1" [shape=box]
"designate-central Server 2" [shape=box]
"designate-central Server 3" [shape=box]
"Database Servers" [shape=cylinder]
}
subgraph "designate-central Servers" {
cluster=true;
label="designate-central Servers";
"designate-central Server 1";
"designate-central Server 2";
"designate-central Server 3";
}
"AMQP Servers" -> "designate-central Server 1" [dir=both];
"AMQP Servers" -> "designate-central Server 2" [dir=both];
"AMQP Servers" -> "designate-central Server 3" [dir=both];
"designate-central Server 1" -> "Database Servers";
"designate-central Server 2" -> "Database Servers";
"designate-central Server 3" -> "Database Servers";
}

Notes
Expand All @@ -99,22 +112,33 @@ Needs Access to:
* Database
* DNS Servers

.. blockdiag::

blockdiag {

amqp_servers [label="AMQP Servers", stacked]
dns_servers [label="DNS Servers", stacked, shape="cloud"]
db_servers [label="Database Servers", stacked, shape=flowchart.database]
group designate_mdns_servers {
label = "designate-mdns Servers";
designate_mdns_server_1 [label="designate-mdns Server 1", width=256];
designate_mdns_server_2 [label="designate-mdns Server 2", width=256];
designate_mdns_server_3 [label="designate-mdns Server 3", width=256];
}
amqp_servers <-> designate_mdns_server_1, designate_mdns_server_2, designate_mdns_server_3;
designate_mdns_server_1, designate_mdns_server_2, designate_mdns_server_3 <- db_servers;
designate_mdns_server_1, designate_mdns_server_2, designate_mdns_server_3 -> dns_servers;
.. graphviz::

digraph MDNSHA {
rankdir=LR
{"AMQP Servers" [shape=box]
"designate-mdns Server 1" [shape=box]
"designate-mdns Server 2" [shape=box]
"designate-mdns Server 3" [shape=box]
"DNS Servers" [shape=egg]
"Database Servers" [shape=cylinder]
}
subgraph "designate-mdns Servers" {
cluster=true;
label="designate-mdns Servers";
"designate-mdns Server 1";
"designate-mdns Server 2";
"designate-mdns Server 3";
}
"AMQP Servers" -> "designate-mdns Server 1" [dir=both];
"AMQP Servers" -> "designate-mdns Server 2" [dir=both];
"AMQP Servers" -> "designate-mdns Server 3" [dir=both];
"designate-mdns Server 1" -> "Database Servers" [dir=back];
"designate-mdns Server 2" -> "Database Servers" [dir=back];
"designate-mdns Server 3" -> "Database Servers" [dir=back];
"designate-mdns Server 1" -> "DNS Servers"
"designate-mdns Server 2" -> "DNS Servers"
"designate-mdns Server 3" -> "DNS Servers"
}

Notes
Expand All @@ -132,20 +156,29 @@ Needs Access to:
* AMQP
* DNS Servers

.. blockdiag::

blockdiag {

amqp_servers [label="AMQP Servers", stacked]
dns_servers [label="DNS Servers", stacked, shape="cloud"]
group designate_worker_servers {
label = "designate-worker Servers";
designate_worker_server_1 [label="designate-worker Server 1", width=256];
designate_worker_server_2 [label="designate-worker Server 2", width=256];
designate_worker_server_3 [label="designate-worker Server 3", width=256];
}
amqp_servers <-> designate_worker_server_1, designate_worker_server_2, designate_worker_server_3;
designate_worker_server_1, designate_worker_server_2, designate_worker_server_3 -> dns_servers;
.. graphviz::

digraph WORKERSHA {
rankdir=LR
{"AMQP Servers" [shape=box]
"designate-worker Server 1" [shape=box]
"designate-worker Server 2" [shape=box]
"designate-worker Server 3" [shape=box]
"DNS Servers" [shape=egg]
}
subgraph "designate-worker Servers" {
cluster=true;
label="designate-worker Servers";
"designate-worker Server 1";
"designate-worker Server 2";
"designate-worker Server 3";
}
"AMQP Servers" -> "designate-worker Server 1" [dir=both];
"AMQP Servers" -> "designate-worker Server 2" [dir=both];
"AMQP Servers" -> "designate-worker Server 3" [dir=both];
"designate-worker Server 1" -> "DNS Servers"
"designate-worker Server 2" -> "DNS Servers"
"designate-worker Server 3" -> "DNS Servers"
}

Notes
Expand All @@ -163,20 +196,29 @@ Needs Access to:
* AMQP
* DLM

.. blockdiag::

blockdiag {

amqp_servers [label="AMQP Servers", stacked]
dlm_servers [label="DLM Servers", stacked]
group designate_producer_servers {
label = "designate-producer Servers";
designate_producer_server_1 [label="designate-producer Server 1", width=256];
designate_producer_server_2 [label="designate-producer Server 2", width=256];
designate_producer_server_3 [label="designate-producer Server 3", width=256];
}
amqp_servers <-> designate_producer_server_1, designate_producer_server_2, designate_producer_server_3;
designate_producer_server_1, designate_producer_server_2, designate_producer_server_3 -> dlm_servers;
.. graphviz::

digraph PRODUCERSHA {
rankdir=LR
{"AMQP Servers" [shape=box]
"designate-producer Server 1" [shape=box]
"designate-producer Server 2" [shape=box]
"designate-producer Server 3" [shape=box]
"DLM Servers" [shape=octagon]
}
subgraph "designate-producer Servers" {
cluster=true;
label="designate-producer Servers";
"designate-producer Server 1";
"designate-producer Server 2";
"designate-producer Server 3";
}
"AMQP Servers" -> "designate-producer Server 1" [dir=both];
"AMQP Servers" -> "designate-producer Server 2" [dir=both];
"AMQP Servers" -> "designate-producer Server 3" [dir=both];
"designate-producer Server 1" -> "DLM Servers"
"designate-producer Server 2" -> "DLM Servers"
"designate-producer Server 3" -> "DLM Servers"
}

Notes
Expand Down Expand Up @@ -205,18 +247,25 @@ Needs Access to:

* AMQP

.. blockdiag::

blockdiag {

amqp_servers [label="AMQP Servers", stacked]
group designate_sink_servers {
label = "designate-sink Servers";
designate_sink_server_1 [label="designate-sink Server 1", width=256];
designate_sink_server_2 [label="designate-sink Server 2", width=256];
designate_sink_server_3 [label="designate-sink Server 3", width=256];
}
amqp_servers <-> designate_sink_server_1, designate_sink_server_2, designate_sink_server_3;
.. graphviz::

digraph SINKSHA {
rankdir=LR
{"AMQP Servers" [shape=box]
"designate-sink Server 1" [shape=box]
"designate-sink Server 2" [shape=box]
"designate-sink Server 3" [shape=box]
}
subgraph "designate-sink Servers" {
cluster=true;
label="designate-sink Servers";
"designate-sink Server 1";
"designate-sink Server 2";
"designate-sink Server 3";
}
"AMQP Servers" -> "designate-sink Server 1" [dir=both];
"AMQP Servers" -> "designate-sink Server 2" [dir=both];
"AMQP Servers" -> "designate-sink Server 3" [dir=both];
}

Notes
Expand Down
4 changes: 1 addition & 3 deletions doc/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.autodoc',
'sphinx.ext.viewcode',
'sphinx.ext.graphviz',
'sphinxcontrib.httpdomain',
'sphinxcontrib.blockdiag',
'ext.support_matrix',
'ext.custom_css',
'openstackdocstheme',
Expand All @@ -54,8 +54,6 @@
policy_generator_config_file = '../../etc/designate/designate-policy-generator.conf'
sample_policy_basename = '_static/designate'

blockdiag_antialias = True
blockdiag_html_image_format = "SVG"
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']

Expand Down

0 comments on commit beb79ac

Please sign in to comment.