Merge pull request #10052 from zaneb/agent-systemd-diagrams
NO-ISSUE: Generate the agent systemd diagrams from the unit files
7
data/data/agent/systemd/CLAUDE.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# Agent Installer Systemd Unit Files
|
||||
|
||||
When you modify systemd unit files in the `data/data/agent/systemd/units/` directory, and your changes affect the `[Unit]` section (which contains directives like `After`, `Before`, `PartOf`, etc. that define the relationships between systemd services), you must regenerate the agent installer service diagrams by running:
|
||||
|
||||
```bash
|
||||
make -C docs/user/agent/diagrams/
|
||||
```
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Install workflow
|
||||
|
||||

|
||||

|
||||
|
||||
In the install workflow, all information needed to configure a cluster is included in the agent ISO.
|
||||
When the agent ISO is booted, agent-tui and nmstate libraries are copied to the host from initrd. This copy
|
||||
@@ -27,7 +27,7 @@ step is required because the agent-tui and nmstate libraries are too big to fit
|
||||
|
||||
## Add-nodes workflow
|
||||
|
||||

|
||||

|
||||
|
||||
The add-nodes workflow is used to generate an ISO image for adding one or more nodes to a target cluster. It is very similar to the install workflow, with
|
||||
the following exceptions (highlighted in green in the previous picture):
|
||||
@@ -41,7 +41,7 @@ the following exceptions (highlighted in green in the previous picture):
|
||||
|
||||
## Appliance workflow (unconfigured ignition and config image)
|
||||
|
||||

|
||||

|
||||
|
||||
In the appliance workflow, most of the cluster deployment information is included in a config image that is mounted
|
||||
onto the host running the unconfigured-ignition. The appliance flow does not include the agent-tui or the
|
||||
@@ -55,7 +55,7 @@ so no connectivity checks to the release image is needed.
|
||||
|
||||
## Interactive workflow (unconfigured ignition --interactive)
|
||||
|
||||

|
||||

|
||||
|
||||
The interactive workflow allows the user to install a cluster by using the assisted UI running on the rendezvous node. In this workflow
|
||||
the agent-tui is also used interactively to configure which node will be the rendezvous host, and to configure accordingly the other nodes.
|
||||
|
||||
|
Before Width: | Height: | Size: 62 KiB |
349
docs/user/agent/agent_installer_services-add_nodes_workflow.svg
Normal file
@@ -0,0 +1,349 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 12.2.1 (20241206.2353)
|
||||
-->
|
||||
<!-- Title: agent_installer_services_add_nodes_workflow Pages: 1 -->
|
||||
<svg width="805pt" height="780pt"
|
||||
viewBox="0.00 0.00 805.25 780.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 776)">
|
||||
<title>agent_installer_services_add_nodes_workflow</title>
|
||||
<polygon fill="white" stroke="none" points="-4,4 -4,-776 801.25,-776 801.25,4 -4,4"/>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>cluster_assisted_service_pod</title>
|
||||
<polygon fill="none" stroke="#666666" stroke-dasharray="5,2" points="8,-352 8,-764 272,-764 272,-352 8,-352"/>
|
||||
</g>
|
||||
<!-- agent_auth_token_status -->
|
||||
<g id="node1" class="node">
|
||||
<title>agent_auth_token_status</title>
|
||||
<path fill="#add8e6" stroke="#006400" stroke-width="2" d="M460.62,-252C460.62,-252 367.38,-252 367.38,-252 361.38,-252 355.38,-246 355.38,-240 355.38,-240 355.38,-228 355.38,-228 355.38,-222 361.38,-216 367.38,-216 367.38,-216 460.62,-216 460.62,-216 466.62,-216 472.62,-222 472.62,-228 472.62,-228 472.62,-240 472.62,-240 472.62,-246 466.62,-252 460.62,-252"/>
|
||||
<text text-anchor="middle" x="414" y="-229.75" font-family="Arial" font-size="10.00" fill="#006400">agent-auth-token-status</text>
|
||||
</g>
|
||||
<!-- iscsiadm -->
|
||||
<g id="node2" class="node">
|
||||
<title>iscsiadm</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M673.5,-108C673.5,-108 642.5,-108 642.5,-108 636.5,-108 630.5,-102 630.5,-96 630.5,-96 630.5,-84 630.5,-84 630.5,-78 636.5,-72 642.5,-72 642.5,-72 673.5,-72 673.5,-72 679.5,-72 685.5,-78 685.5,-84 685.5,-84 685.5,-96 685.5,-96 685.5,-102 679.5,-108 673.5,-108"/>
|
||||
<text text-anchor="middle" x="658" y="-85.75" font-family="Arial" font-size="10.00">iscsiadm</text>
|
||||
</g>
|
||||
<!-- iscsistart -->
|
||||
<g id="node3" class="node">
|
||||
<title>iscsistart</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M674.25,-36C674.25,-36 641.75,-36 641.75,-36 635.75,-36 629.75,-30 629.75,-24 629.75,-24 629.75,-12 629.75,-12 629.75,-6 635.75,0 641.75,0 641.75,0 674.25,0 674.25,0 680.25,0 686.25,-6 686.25,-12 686.25,-12 686.25,-24 686.25,-24 686.25,-30 680.25,-36 674.25,-36"/>
|
||||
<text text-anchor="middle" x="658" y="-13.75" font-family="Arial" font-size="10.00">iscsistart</text>
|
||||
</g>
|
||||
<!-- iscsistart->iscsiadm -->
|
||||
<g id="edge32" class="edge">
|
||||
<title>iscsistart->iscsiadm</title>
|
||||
<path fill="none" stroke="#333333" d="M658,-35.95C658,-43.43 658,-52.42 658,-60.86"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="654.5,-60.7 658,-70.7 661.5,-60.7 654.5,-60.7"/>
|
||||
</g>
|
||||
<!-- pre_network_manager_config -->
|
||||
<g id="node4" class="node">
|
||||
<title>pre_network_manager_config</title>
|
||||
<path fill="#add8e6" stroke="black" d="M506.38,-36C506.38,-36 393.62,-36 393.62,-36 387.62,-36 381.62,-30 381.62,-24 381.62,-24 381.62,-12 381.62,-12 381.62,-6 387.62,0 393.62,0 393.62,0 506.38,0 506.38,0 512.38,0 518.38,-6 518.38,-12 518.38,-12 518.38,-24 518.38,-24 518.38,-30 512.38,-36 506.38,-36"/>
|
||||
<text text-anchor="middle" x="450" y="-13.75" font-family="Arial" font-size="10.00">pre-network-manager-config</text>
|
||||
</g>
|
||||
<!-- set_hostname -->
|
||||
<g id="node6" class="node">
|
||||
<title>set_hostname</title>
|
||||
<path fill="#add8e6" stroke="black" d="M599.25,-36C599.25,-36 548.75,-36 548.75,-36 542.75,-36 536.75,-30 536.75,-24 536.75,-24 536.75,-12 536.75,-12 536.75,-6 542.75,0 548.75,0 548.75,0 599.25,0 599.25,0 605.25,0 611.25,-6 611.25,-12 611.25,-12 611.25,-24 611.25,-24 611.25,-30 605.25,-36 599.25,-36"/>
|
||||
<text text-anchor="middle" x="574" y="-13.75" font-family="Arial" font-size="10.00">set-hostname</text>
|
||||
</g>
|
||||
<!-- pre_network_manager_config->set_hostname -->
|
||||
<!-- agent_interactive_console_serial -->
|
||||
<g id="node10" class="node">
|
||||
<title>agent_interactive_console_serial</title>
|
||||
<path fill="#6495ed" stroke="black" stroke-width="2" d="M345.75,-180C345.75,-180 208.25,-180 208.25,-180 202.25,-180 196.25,-174 196.25,-168 196.25,-168 196.25,-156 196.25,-156 196.25,-150 202.25,-144 208.25,-144 208.25,-144 345.75,-144 345.75,-144 351.75,-144 357.75,-150 357.75,-156 357.75,-156 357.75,-168 357.75,-168 357.75,-174 351.75,-180 345.75,-180"/>
|
||||
<text text-anchor="middle" x="277" y="-157.75" font-family="Arial" font-size="10.00">agent-interactive-console-serial@</text>
|
||||
</g>
|
||||
<!-- pre_network_manager_config->agent_interactive_console_serial -->
|
||||
<g id="edge11" class="edge">
|
||||
<title>pre_network_manager_config->agent_interactive_console_serial</title>
|
||||
<path fill="none" stroke="#333333" d="M428.79,-36.41C398.39,-61.36 342.28,-107.42 307.45,-136"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="305.34,-133.21 299.83,-142.26 309.78,-138.62 305.34,-133.21"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console -->
|
||||
<g id="node11" class="node">
|
||||
<title>agent_interactive_console</title>
|
||||
<path fill="#6495ed" stroke="black" stroke-width="2" d="M488,-180C488,-180 388,-180 388,-180 382,-180 376,-174 376,-168 376,-168 376,-156 376,-156 376,-150 382,-144 388,-144 388,-144 488,-144 488,-144 494,-144 500,-150 500,-156 500,-156 500,-168 500,-168 500,-174 494,-180 488,-180"/>
|
||||
<text text-anchor="middle" x="438" y="-157.75" font-family="Arial" font-size="10.00">agent-interactive-console</text>
|
||||
</g>
|
||||
<!-- pre_network_manager_config->agent_interactive_console -->
|
||||
<g id="edge16" class="edge">
|
||||
<title>pre_network_manager_config->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" d="M448.53,-36.41C446.51,-60.26 442.87,-103.39 440.44,-132.11"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="436.97,-131.68 439.61,-141.94 443.94,-132.27 436.97,-131.68"/>
|
||||
</g>
|
||||
<!-- selinux -->
|
||||
<g id="node5" class="node">
|
||||
<title>selinux</title>
|
||||
<path fill="#add8e6" stroke="black" d="M352,-36C352,-36 322,-36 322,-36 316,-36 310,-30 310,-24 310,-24 310,-12 310,-12 310,-6 316,0 322,0 322,0 352,0 352,0 358,0 364,-6 364,-12 364,-12 364,-24 364,-24 364,-30 358,-36 352,-36"/>
|
||||
<text text-anchor="middle" x="337" y="-13.75" font-family="Arial" font-size="10.00">selinux</text>
|
||||
</g>
|
||||
<!-- selinux->pre_network_manager_config -->
|
||||
<!-- selinux->agent_interactive_console_serial -->
|
||||
<g id="edge12" class="edge">
|
||||
<title>selinux->agent_interactive_console_serial</title>
|
||||
<path fill="none" stroke="#333333" d="M309.69,-32.48C306.78,-33.74 303.85,-34.94 301,-36 245.22,-56.78 207.99,-24.59 172,-72 162.33,-84.74 163.61,-94.37 172,-108 179.76,-120.61 191.55,-130.33 204.46,-137.78"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="202.69,-140.8 213.17,-142.35 205.94,-134.6 202.69,-140.8"/>
|
||||
</g>
|
||||
<!-- selinux->agent_interactive_console -->
|
||||
<g id="edge17" class="edge">
|
||||
<title>selinux->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" d="M349.38,-36.41C366.8,-60.9 398.68,-105.71 419.07,-134.39"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="415.99,-136.09 424.64,-142.21 421.69,-132.03 415.99,-136.09"/>
|
||||
</g>
|
||||
<!-- set_hostname->iscsistart -->
|
||||
<!-- set_hostname->agent_interactive_console -->
|
||||
<g id="edge33" class="edge">
|
||||
<title>set_hostname->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" d="M557.32,-36.41C533.67,-61.11 490.2,-106.49 462.77,-135.14"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="460.25,-132.71 455.86,-142.35 465.3,-137.55 460.25,-132.71"/>
|
||||
</g>
|
||||
<!-- agent -->
|
||||
<g id="node12" class="node">
|
||||
<title>agent</title>
|
||||
<path fill="#add8e6" stroke="black" d="M533,-252C533,-252 503,-252 503,-252 497,-252 491,-246 491,-240 491,-240 491,-228 491,-228 491,-222 497,-216 503,-216 503,-216 533,-216 533,-216 539,-216 545,-222 545,-228 545,-228 545,-240 545,-240 545,-246 539,-252 533,-252"/>
|
||||
<text text-anchor="middle" x="518" y="-229.75" font-family="Arial" font-size="10.00">agent</text>
|
||||
</g>
|
||||
<!-- set_hostname->agent -->
|
||||
<g id="edge23" class="edge">
|
||||
<title>set_hostname->agent</title>
|
||||
<path fill="none" stroke="#333333" d="M569.51,-36.15C559.89,-72.93 537.18,-159.71 525.39,-204.76"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="522.04,-203.74 522.89,-214.3 528.81,-205.52 522.04,-203.74"/>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0 -->
|
||||
<g id="node7" class="node">
|
||||
<title>_etc_assisted_node0</title>
|
||||
<polygon fill="#fffacd" stroke="black" points="426.75,-324 331.25,-324 331.25,-288 432.75,-288 432.75,-318 426.75,-324"/>
|
||||
<polyline fill="none" stroke="black" points="426.75,-324 426.75,-318"/>
|
||||
<polyline fill="none" stroke="black" points="432.75,-318 426.75,-318"/>
|
||||
<text text-anchor="middle" x="382" y="-301.75" font-family="Arial" font-size="10.00">/etc/assisted/node0</text>
|
||||
</g>
|
||||
<!-- install_status -->
|
||||
<g id="node13" class="node">
|
||||
<title>install_status</title>
|
||||
<path fill="#add8e6" stroke="black" d="M341.75,-468C341.75,-468 294.25,-468 294.25,-468 288.25,-468 282.25,-462 282.25,-456 282.25,-456 282.25,-444 282.25,-444 282.25,-438 288.25,-432 294.25,-432 294.25,-432 341.75,-432 341.75,-432 347.75,-432 353.75,-438 353.75,-444 353.75,-444 353.75,-456 353.75,-456 353.75,-462 347.75,-468 341.75,-468"/>
|
||||
<text text-anchor="middle" x="318" y="-445.75" font-family="Arial" font-size="10.00">install-status</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->install_status -->
|
||||
<g id="edge31" class="edge">
|
||||
<title>_etc_assisted_node0->install_status</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M374.15,-324.41C363.2,-348.71 343.23,-393.03 330.29,-421.73"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="327.25,-419.95 326.33,-430.51 333.63,-422.83 327.25,-419.95"/>
|
||||
</g>
|
||||
<!-- assisted_service_pod -->
|
||||
<g id="node16" class="node">
|
||||
<title>assisted_service_pod</title>
|
||||
<path fill="#add8e6" stroke="black" d="M251.75,-396C251.75,-396 168.25,-396 168.25,-396 162.25,-396 156.25,-390 156.25,-384 156.25,-384 156.25,-372 156.25,-372 156.25,-366 162.25,-360 168.25,-360 168.25,-360 251.75,-360 251.75,-360 257.75,-360 263.75,-366 263.75,-372 263.75,-372 263.75,-384 263.75,-384 263.75,-390 257.75,-396 251.75,-396"/>
|
||||
<text text-anchor="middle" x="210" y="-373.75" font-family="Arial" font-size="10.00">assisted-service-pod</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->assisted_service_pod -->
|
||||
<g id="edge29" class="edge">
|
||||
<title>_etc_assisted_node0->assisted_service_pod</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M339.04,-324.48C316.07,-333.83 287.58,-345.43 263.22,-355.34"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="262.05,-352.04 254.11,-359.05 264.69,-358.52 262.05,-352.04"/>
|
||||
</g>
|
||||
<!-- agent_add_node -->
|
||||
<g id="node17" class="node">
|
||||
<title>agent_add_node</title>
|
||||
<path fill="#add8e6" stroke="#006400" stroke-width="2" d="M243,-756C243,-756 185,-756 185,-756 179,-756 173,-750 173,-744 173,-744 173,-732 173,-732 173,-726 179,-720 185,-720 185,-720 243,-720 243,-720 249,-720 255,-726 255,-732 255,-732 255,-744 255,-744 255,-750 249,-756 243,-756"/>
|
||||
<text text-anchor="middle" x="214" y="-733.75" font-family="Arial" font-size="10.00" fill="#006400">agent-add-node</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->agent_add_node -->
|
||||
<g id="edge7" class="edge">
|
||||
<title>_etc_assisted_node0->agent_add_node</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M414.5,-324.46C426.11,-331.83 438.62,-341.22 448,-352 479.57,-388.29 496,-400.9 496,-449 496,-449 496,-449 496,-595 496,-696.33 348.96,-725.36 267.23,-733.67"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="267.05,-730.17 257.42,-734.59 267.7,-737.14 267.05,-730.17"/>
|
||||
</g>
|
||||
<!-- agent_import_cluster -->
|
||||
<g id="node18" class="node">
|
||||
<title>agent_import_cluster</title>
|
||||
<path fill="#add8e6" stroke="#006400" stroke-width="2" d="M249.75,-540C249.75,-540 172.25,-540 172.25,-540 166.25,-540 160.25,-534 160.25,-528 160.25,-528 160.25,-516 160.25,-516 160.25,-510 166.25,-504 172.25,-504 172.25,-504 249.75,-504 249.75,-504 255.75,-504 261.75,-510 261.75,-516 261.75,-516 261.75,-528 261.75,-528 261.75,-534 255.75,-540 249.75,-540"/>
|
||||
<text text-anchor="middle" x="211" y="-517.75" font-family="Arial" font-size="10.00" fill="#006400">agent-import-cluster</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->agent_import_cluster -->
|
||||
<g id="edge10" class="edge">
|
||||
<title>_etc_assisted_node0->agent_import_cluster</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M385.37,-324.25C390.6,-356.37 396.83,-425.86 363,-468 341.4,-494.9 305.29,-508.19 273.68,-514.73"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="273.4,-511.22 264.21,-516.49 274.68,-518.1 273.4,-511.22"/>
|
||||
</g>
|
||||
<!-- agent_register_infraenv -->
|
||||
<g id="node19" class="node">
|
||||
<title>agent_register_infraenv</title>
|
||||
<path fill="#add8e6" stroke="black" d="M252,-612C252,-612 164,-612 164,-612 158,-612 152,-606 152,-600 152,-600 152,-588 152,-588 152,-582 158,-576 164,-576 164,-576 252,-576 252,-576 258,-576 264,-582 264,-588 264,-588 264,-600 264,-600 264,-606 258,-612 252,-612"/>
|
||||
<text text-anchor="middle" x="208" y="-589.75" font-family="Arial" font-size="10.00">agent-register-infraenv</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->agent_register_infraenv -->
|
||||
<g id="edge22" class="edge">
|
||||
<title>_etc_assisted_node0->agent_register_infraenv</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M392.25,-324.32C396.47,-332.43 400.87,-342.4 403,-352 414.29,-402.87 415.22,-424.85 386,-468 354.25,-514.88 298.63,-549.73 257.99,-570.56"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="256.48,-567.4 249.1,-575 259.61,-573.66 256.48,-567.4"/>
|
||||
</g>
|
||||
<!-- apply_host_config -->
|
||||
<g id="node20" class="node">
|
||||
<title>apply_host_config</title>
|
||||
<path fill="#add8e6" stroke="black" d="M246.38,-684C246.38,-684 181.62,-684 181.62,-684 175.62,-684 169.62,-678 169.62,-672 169.62,-672 169.62,-660 169.62,-660 169.62,-654 175.62,-648 181.62,-648 181.62,-648 246.38,-648 246.38,-648 252.38,-648 258.38,-654 258.38,-660 258.38,-660 258.38,-672 258.38,-672 258.38,-678 252.38,-684 246.38,-684"/>
|
||||
<text text-anchor="middle" x="214" y="-661.75" font-family="Arial" font-size="10.00">apply-host-config</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->apply_host_config -->
|
||||
<g id="edge25" class="edge">
|
||||
<title>_etc_assisted_node0->apply_host_config</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M399.49,-324.27C406.85,-332.21 415.05,-342.06 421,-352 444.69,-391.59 458,-402.86 458,-449 458,-449 458,-449 458,-523 458,-609.53 341.94,-644.25 269.91,-657.46"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="269.5,-653.98 260.24,-659.14 270.7,-660.88 269.5,-653.98"/>
|
||||
</g>
|
||||
<!-- _usr_lib_dracut_hooks_pre_pivot_99_agent_copy_files_sh -->
|
||||
<g id="node8" class="node">
|
||||
<title>_usr_lib_dracut_hooks_pre_pivot_99_agent_copy_files_sh</title>
|
||||
<polygon fill="#f5deb3" stroke="black" points="286.25,-36 181.75,-36 181.75,0 292.25,0 292.25,-30 286.25,-36"/>
|
||||
<polyline fill="none" stroke="black" points="286.25,-36 286.25,-30"/>
|
||||
<polyline fill="none" stroke="black" points="292.25,-30 286.25,-30"/>
|
||||
<text text-anchor="middle" x="237" y="-13.75" font-family="Arial" font-size="10.00">99-agent-copy-files.sh</text>
|
||||
</g>
|
||||
<!-- _usr_lib_dracut_hooks_pre_pivot_99_agent_copy_files_sh->selinux -->
|
||||
<!-- _usr_local_bin_agent_tui -->
|
||||
<g id="node9" class="node">
|
||||
<title>_usr_local_bin_agent_tui</title>
|
||||
<polygon fill="#fffacd" stroke="black" points="286.62,-108 181.38,-108 181.38,-72 292.62,-72 292.62,-102 286.62,-108"/>
|
||||
<polyline fill="none" stroke="black" points="286.62,-108 286.62,-102"/>
|
||||
<polyline fill="none" stroke="black" points="292.62,-102 286.62,-102"/>
|
||||
<text text-anchor="middle" x="237" y="-85.75" font-family="Arial" font-size="10.00">/usr/local/bin/agent-tui</text>
|
||||
</g>
|
||||
<!-- _usr_lib_dracut_hooks_pre_pivot_99_agent_copy_files_sh->_usr_local_bin_agent_tui -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>_usr_lib_dracut_hooks_pre_pivot_99_agent_copy_files_sh->_usr_local_bin_agent_tui</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M237,-36.3C237,-43.59 237,-52.27 237,-60.46"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="233.5,-60.38 237,-70.38 240.5,-60.38 233.5,-60.38"/>
|
||||
</g>
|
||||
<!-- _usr_local_bin_agent_tui->agent_interactive_console_serial -->
|
||||
<g id="edge15" class="edge">
|
||||
<title>_usr_local_bin_agent_tui->agent_interactive_console_serial</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M240.97,-108.3C244.57,-115.99 249.61,-125.21 254.85,-133.78"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="251.85,-135.59 260.19,-142.13 257.75,-131.82 251.85,-135.59"/>
|
||||
</g>
|
||||
<!-- _usr_local_bin_agent_tui->agent_interactive_console -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>_usr_local_bin_agent_tui->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M281.27,-108.48C307.24,-117.86 340.54,-129.5 369.78,-139.43"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="368.33,-142.63 378.92,-142.52 370.57,-136 368.33,-142.63"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console_serial->_usr_local_bin_agent_tui -->
|
||||
<!-- agent_interactive_console_serial->agent -->
|
||||
<g id="edge13" class="edge">
|
||||
<title>agent_interactive_console_serial->agent</title>
|
||||
<path fill="none" stroke="#333333" d="M358.39,-180.32C393.62,-188.69 435.34,-199.76 479.93,-215.57"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="478.69,-218.84 489.29,-218.95 481.07,-212.26 478.69,-218.84"/>
|
||||
</g>
|
||||
<!-- node_zero -->
|
||||
<g id="node14" class="node">
|
||||
<title>node_zero</title>
|
||||
<path fill="#add8e6" stroke="#006400" stroke-width="2" d="M315.25,-252C315.25,-252 276.75,-252 276.75,-252 270.75,-252 264.75,-246 264.75,-240 264.75,-240 264.75,-228 264.75,-228 264.75,-222 270.75,-216 276.75,-216 276.75,-216 315.25,-216 315.25,-216 321.25,-216 327.25,-222 327.25,-228 327.25,-228 327.25,-240 327.25,-240 327.25,-246 321.25,-252 315.25,-252"/>
|
||||
<text text-anchor="middle" x="296" y="-229.75" font-family="Arial" font-size="10.00" fill="#006400">node-zero*</text>
|
||||
</g>
|
||||
<!-- agent_interactive_console_serial->node_zero -->
|
||||
<g id="edge14" class="edge">
|
||||
<title>agent_interactive_console_serial->node_zero</title>
|
||||
<path fill="none" stroke="#333333" d="M281.79,-180.66C283.71,-187.74 285.98,-196.08 288.13,-204"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="284.75,-204.9 290.74,-213.64 291.5,-203.07 284.75,-204.9"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console->agent_auth_token_status -->
|
||||
<g id="edge8" class="edge">
|
||||
<title>agent_interactive_console->agent_auth_token_status</title>
|
||||
<path fill="none" stroke="#333333" d="M431.94,-180.66C429.49,-187.82 426.59,-196.27 423.85,-204.27"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="420.56,-203.07 420.63,-213.67 427.18,-205.34 420.56,-203.07"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console->_usr_local_bin_agent_tui -->
|
||||
<!-- agent_interactive_console->agent -->
|
||||
<g id="edge18" class="edge">
|
||||
<title>agent_interactive_console->agent</title>
|
||||
<path fill="none" stroke="#333333" d="M458.19,-180.66C467.73,-189.02 479.3,-199.13 489.7,-208.24"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="487.13,-210.64 496.96,-214.59 491.74,-205.37 487.13,-210.64"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console->node_zero -->
|
||||
<g id="edge19" class="edge">
|
||||
<title>agent_interactive_console->node_zero</title>
|
||||
<path fill="none" stroke="#333333" d="M401.8,-180.85C382.35,-190.43 358.26,-202.31 337.99,-212.3"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="336.56,-209.1 329.14,-216.66 339.66,-215.38 336.56,-209.1"/>
|
||||
</g>
|
||||
<!-- node_zero->_etc_assisted_node0 -->
|
||||
<g id="edge5" class="edge">
|
||||
<title>node_zero->_etc_assisted_node0</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M317.7,-252.66C328.07,-261.1 340.64,-271.34 351.91,-280.51"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="349.46,-283.03 359.43,-286.63 353.88,-277.6 349.46,-283.03"/>
|
||||
</g>
|
||||
<!-- node_zero->assisted_service_pod -->
|
||||
<g id="edge27" class="edge">
|
||||
<title>node_zero->assisted_service_pod</title>
|
||||
<path fill="none" stroke="#333333" d="M285.11,-252.98C270.29,-277.44 243.67,-321.41 226.42,-349.88"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="223.51,-347.94 221.32,-358.31 229.49,-351.57 223.51,-347.94"/>
|
||||
</g>
|
||||
<!-- oci_eval_user_data -->
|
||||
<g id="node15" class="node">
|
||||
<title>oci_eval_user_data</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M785.25,-36C785.25,-36 716.75,-36 716.75,-36 710.75,-36 704.75,-30 704.75,-24 704.75,-24 704.75,-12 704.75,-12 704.75,-6 710.75,0 716.75,0 716.75,0 785.25,0 785.25,0 791.25,0 797.25,-6 797.25,-12 797.25,-12 797.25,-24 797.25,-24 797.25,-30 791.25,-36 785.25,-36"/>
|
||||
<text text-anchor="middle" x="751" y="-13.75" font-family="Arial" font-size="10.00">oci-eval-user-data</text>
|
||||
</g>
|
||||
<!-- assisted_service_pod->install_status -->
|
||||
<g id="edge30" class="edge">
|
||||
<title>assisted_service_pod->install_status</title>
|
||||
<path fill="none" stroke="#333333" d="M236.97,-396.48C250.61,-405.32 267.34,-416.16 282.05,-425.7"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="279.8,-428.41 290.1,-430.92 283.61,-422.54 279.8,-428.41"/>
|
||||
</g>
|
||||
<!-- assisted_service_pod->agent_add_node -->
|
||||
<!-- assisted_service_pod->agent_import_cluster -->
|
||||
<!-- assisted_service_db -->
|
||||
<g id="node21" class="node">
|
||||
<title>assisted_service_db</title>
|
||||
<path fill="#add8e6" stroke="black" d="M232.12,-468C232.12,-468 153.88,-468 153.88,-468 147.88,-468 141.88,-462 141.88,-456 141.88,-456 141.88,-444 141.88,-444 141.88,-438 147.88,-432 153.88,-432 153.88,-432 232.12,-432 232.12,-432 238.12,-432 244.12,-438 244.12,-444 244.12,-444 244.12,-456 244.12,-456 244.12,-462 238.12,-468 232.12,-468"/>
|
||||
<text text-anchor="middle" x="193" y="-445.75" font-family="Arial" font-size="10.00">assisted-service-db</text>
|
||||
</g>
|
||||
<!-- assisted_service_pod->assisted_service_db -->
|
||||
<g id="edge26" class="edge">
|
||||
<title>assisted_service_pod->assisted_service_db</title>
|
||||
<path fill="none" stroke="#333333" d="M205.8,-396.3C204.01,-403.68 201.87,-412.48 199.86,-420.75"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="196.47,-419.88 197.51,-430.42 203.27,-421.53 196.47,-419.88"/>
|
||||
</g>
|
||||
<!-- assisted_service -->
|
||||
<g id="node22" class="node">
|
||||
<title>assisted_service</title>
|
||||
<path fill="#add8e6" stroke="black" d="M112,-468C112,-468 48,-468 48,-468 42,-468 36,-462 36,-456 36,-456 36,-444 36,-444 36,-438 42,-432 48,-432 48,-432 112,-432 112,-432 118,-432 124,-438 124,-444 124,-444 124,-456 124,-456 124,-462 118,-468 112,-468"/>
|
||||
<text text-anchor="middle" x="80" y="-445.75" font-family="Arial" font-size="10.00">assisted-service</text>
|
||||
</g>
|
||||
<!-- assisted_service_pod->assisted_service -->
|
||||
<g id="edge28" class="edge">
|
||||
<title>assisted_service_pod->assisted_service</title>
|
||||
<path fill="none" stroke="#333333" d="M177.53,-396.48C160.73,-405.53 140.02,-416.68 122.02,-426.38"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="120.53,-423.2 113.39,-431.02 123.85,-429.36 120.53,-423.2"/>
|
||||
</g>
|
||||
<!-- agent_import_cluster->agent_register_infraenv -->
|
||||
<g id="edge21" class="edge">
|
||||
<title>agent_import_cluster->agent_register_infraenv</title>
|
||||
<path fill="none" stroke="#333333" d="M210.24,-540.66C209.94,-547.76 209.58,-556.14 209.24,-564.08"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="205.74,-563.93 208.81,-574.07 212.74,-564.23 205.74,-563.93"/>
|
||||
</g>
|
||||
<!-- agent_register_infraenv->apply_host_config -->
|
||||
<g id="edge24" class="edge">
|
||||
<title>agent_register_infraenv->apply_host_config</title>
|
||||
<path fill="none" stroke="#333333" d="M209.48,-612.3C210.11,-619.59 210.85,-628.27 211.55,-636.46"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="208.06,-636.72 212.4,-646.39 215.04,-636.13 208.06,-636.72"/>
|
||||
</g>
|
||||
<!-- apply_host_config->agent_add_node -->
|
||||
<g id="edge6" class="edge">
|
||||
<title>apply_host_config->agent_add_node</title>
|
||||
<path fill="none" stroke="#333333" d="M214,-684.3C214,-691.48 214,-700.01 214,-708.1"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="210.5,-707.9 214,-717.9 217.5,-707.9 210.5,-707.9"/>
|
||||
</g>
|
||||
<!-- assisted_service->agent_import_cluster -->
|
||||
<g id="edge9" class="edge">
|
||||
<title>assisted_service->agent_import_cluster</title>
|
||||
<path fill="none" stroke="#333333" d="M112.72,-468.48C129.19,-477.28 149.39,-488.08 167.18,-497.58"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="165.53,-500.67 176,-502.3 168.83,-494.5 165.53,-500.67"/>
|
||||
</g>
|
||||
<!-- assisted_service->agent_register_infraenv -->
|
||||
<g id="edge20" class="edge">
|
||||
<title>assisted_service->agent_register_infraenv</title>
|
||||
<path fill="none" stroke="#333333" d="M92.63,-468.35C106.3,-486.75 129.1,-516.37 151,-540 159.86,-549.56 170.14,-559.44 179.51,-568.04"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="176.9,-570.41 186.66,-574.52 181.6,-565.22 176.9,-570.41"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 59 KiB |
337
docs/user/agent/agent_installer_services-install_workflow.svg
Normal file
@@ -0,0 +1,337 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 12.2.1 (20241206.2353)
|
||||
-->
|
||||
<!-- Title: agent_installer_services_install_workflow Pages: 1 -->
|
||||
<svg width="760pt" height="780pt"
|
||||
viewBox="0.00 0.00 760.25 780.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 776)">
|
||||
<title>agent_installer_services_install_workflow</title>
|
||||
<polygon fill="white" stroke="none" points="-4,4 -4,-776 756.25,-776 756.25,4 -4,4"/>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>cluster_assisted_service_pod</title>
|
||||
<polygon fill="none" stroke="#666666" stroke-dasharray="5,2" points="20,-352 20,-764 284,-764 284,-352 20,-352"/>
|
||||
</g>
|
||||
<!-- iscsiadm -->
|
||||
<g id="node1" class="node">
|
||||
<title>iscsiadm</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M628.5,-108C628.5,-108 597.5,-108 597.5,-108 591.5,-108 585.5,-102 585.5,-96 585.5,-96 585.5,-84 585.5,-84 585.5,-78 591.5,-72 597.5,-72 597.5,-72 628.5,-72 628.5,-72 634.5,-72 640.5,-78 640.5,-84 640.5,-84 640.5,-96 640.5,-96 640.5,-102 634.5,-108 628.5,-108"/>
|
||||
<text text-anchor="middle" x="613" y="-85.75" font-family="Arial" font-size="10.00">iscsiadm</text>
|
||||
</g>
|
||||
<!-- iscsistart -->
|
||||
<g id="node2" class="node">
|
||||
<title>iscsistart</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M629.25,-36C629.25,-36 596.75,-36 596.75,-36 590.75,-36 584.75,-30 584.75,-24 584.75,-24 584.75,-12 584.75,-12 584.75,-6 590.75,0 596.75,0 596.75,0 629.25,0 629.25,0 635.25,0 641.25,-6 641.25,-12 641.25,-12 641.25,-24 641.25,-24 641.25,-30 635.25,-36 629.25,-36"/>
|
||||
<text text-anchor="middle" x="613" y="-13.75" font-family="Arial" font-size="10.00">iscsistart</text>
|
||||
</g>
|
||||
<!-- iscsistart->iscsiadm -->
|
||||
<g id="edge29" class="edge">
|
||||
<title>iscsistart->iscsiadm</title>
|
||||
<path fill="none" stroke="#333333" d="M613,-35.95C613,-43.43 613,-52.42 613,-60.86"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="609.5,-60.7 613,-70.7 616.5,-60.7 609.5,-60.7"/>
|
||||
</g>
|
||||
<!-- pre_network_manager_config -->
|
||||
<g id="node3" class="node">
|
||||
<title>pre_network_manager_config</title>
|
||||
<path fill="#add8e6" stroke="black" d="M461.38,-36C461.38,-36 348.62,-36 348.62,-36 342.62,-36 336.62,-30 336.62,-24 336.62,-24 336.62,-12 336.62,-12 336.62,-6 342.62,0 348.62,0 348.62,0 461.38,0 461.38,0 467.38,0 473.38,-6 473.38,-12 473.38,-12 473.38,-24 473.38,-24 473.38,-30 467.38,-36 461.38,-36"/>
|
||||
<text text-anchor="middle" x="405" y="-13.75" font-family="Arial" font-size="10.00">pre-network-manager-config</text>
|
||||
</g>
|
||||
<!-- set_hostname -->
|
||||
<g id="node5" class="node">
|
||||
<title>set_hostname</title>
|
||||
<path fill="#add8e6" stroke="black" d="M554.25,-36C554.25,-36 503.75,-36 503.75,-36 497.75,-36 491.75,-30 491.75,-24 491.75,-24 491.75,-12 491.75,-12 491.75,-6 497.75,0 503.75,0 503.75,0 554.25,0 554.25,0 560.25,0 566.25,-6 566.25,-12 566.25,-12 566.25,-24 566.25,-24 566.25,-30 560.25,-36 554.25,-36"/>
|
||||
<text text-anchor="middle" x="529" y="-13.75" font-family="Arial" font-size="10.00">set-hostname</text>
|
||||
</g>
|
||||
<!-- pre_network_manager_config->set_hostname -->
|
||||
<!-- agent_interactive_console_serial -->
|
||||
<g id="node9" class="node">
|
||||
<title>agent_interactive_console_serial</title>
|
||||
<path fill="#6495ed" stroke="black" stroke-width="2" d="M300.75,-180C300.75,-180 163.25,-180 163.25,-180 157.25,-180 151.25,-174 151.25,-168 151.25,-168 151.25,-156 151.25,-156 151.25,-150 157.25,-144 163.25,-144 163.25,-144 300.75,-144 300.75,-144 306.75,-144 312.75,-150 312.75,-156 312.75,-156 312.75,-168 312.75,-168 312.75,-174 306.75,-180 300.75,-180"/>
|
||||
<text text-anchor="middle" x="232" y="-157.75" font-family="Arial" font-size="10.00">agent-interactive-console-serial@</text>
|
||||
</g>
|
||||
<!-- pre_network_manager_config->agent_interactive_console_serial -->
|
||||
<g id="edge6" class="edge">
|
||||
<title>pre_network_manager_config->agent_interactive_console_serial</title>
|
||||
<path fill="none" stroke="#333333" d="M383.79,-36.41C353.39,-61.36 297.28,-107.42 262.45,-136"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="260.34,-133.21 254.83,-142.26 264.78,-138.62 260.34,-133.21"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console -->
|
||||
<g id="node10" class="node">
|
||||
<title>agent_interactive_console</title>
|
||||
<path fill="#6495ed" stroke="black" stroke-width="2" d="M443,-180C443,-180 343,-180 343,-180 337,-180 331,-174 331,-168 331,-168 331,-156 331,-156 331,-150 337,-144 343,-144 343,-144 443,-144 443,-144 449,-144 455,-150 455,-156 455,-156 455,-168 455,-168 455,-174 449,-180 443,-180"/>
|
||||
<text text-anchor="middle" x="393" y="-157.75" font-family="Arial" font-size="10.00">agent-interactive-console</text>
|
||||
</g>
|
||||
<!-- pre_network_manager_config->agent_interactive_console -->
|
||||
<g id="edge11" class="edge">
|
||||
<title>pre_network_manager_config->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" d="M403.53,-36.41C401.51,-60.26 397.87,-103.39 395.44,-132.11"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="391.97,-131.68 394.61,-141.94 398.94,-132.27 391.97,-131.68"/>
|
||||
</g>
|
||||
<!-- selinux -->
|
||||
<g id="node4" class="node">
|
||||
<title>selinux</title>
|
||||
<path fill="#add8e6" stroke="black" d="M307,-36C307,-36 277,-36 277,-36 271,-36 265,-30 265,-24 265,-24 265,-12 265,-12 265,-6 271,0 277,0 277,0 307,0 307,0 313,0 319,-6 319,-12 319,-12 319,-24 319,-24 319,-30 313,-36 307,-36"/>
|
||||
<text text-anchor="middle" x="292" y="-13.75" font-family="Arial" font-size="10.00">selinux</text>
|
||||
</g>
|
||||
<!-- selinux->pre_network_manager_config -->
|
||||
<!-- selinux->agent_interactive_console_serial -->
|
||||
<g id="edge7" class="edge">
|
||||
<title>selinux->agent_interactive_console_serial</title>
|
||||
<path fill="none" stroke="#333333" d="M264.69,-32.48C261.78,-33.74 258.85,-34.94 256,-36 200.22,-56.78 162.99,-24.59 127,-72 117.33,-84.74 118.61,-94.37 127,-108 134.76,-120.61 146.55,-130.33 159.46,-137.78"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="157.69,-140.8 168.17,-142.35 160.94,-134.6 157.69,-140.8"/>
|
||||
</g>
|
||||
<!-- selinux->agent_interactive_console -->
|
||||
<g id="edge12" class="edge">
|
||||
<title>selinux->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" d="M304.38,-36.41C321.8,-60.9 353.68,-105.71 374.07,-134.39"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="370.99,-136.09 379.64,-142.21 376.69,-132.03 370.99,-136.09"/>
|
||||
</g>
|
||||
<!-- set_hostname->iscsistart -->
|
||||
<!-- set_hostname->agent_interactive_console -->
|
||||
<g id="edge30" class="edge">
|
||||
<title>set_hostname->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" d="M512.32,-36.41C488.67,-61.11 445.2,-106.49 417.77,-135.14"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="415.25,-132.71 410.86,-142.35 420.3,-137.55 415.25,-132.71"/>
|
||||
</g>
|
||||
<!-- agent -->
|
||||
<g id="node11" class="node">
|
||||
<title>agent</title>
|
||||
<path fill="#add8e6" stroke="black" d="M408,-252C408,-252 378,-252 378,-252 372,-252 366,-246 366,-240 366,-240 366,-228 366,-228 366,-222 372,-216 378,-216 378,-216 408,-216 408,-216 414,-216 420,-222 420,-228 420,-228 420,-240 420,-240 420,-246 414,-252 408,-252"/>
|
||||
<text text-anchor="middle" x="393" y="-229.75" font-family="Arial" font-size="10.00">agent</text>
|
||||
</g>
|
||||
<!-- set_hostname->agent -->
|
||||
<g id="edge20" class="edge">
|
||||
<title>set_hostname->agent</title>
|
||||
<path fill="none" stroke="#333333" d="M525.35,-36.05C518.03,-67.22 499.15,-134.4 464,-180 454.66,-192.11 441.87,-202.81 429.71,-211.37"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="427.8,-208.44 421.44,-216.91 431.69,-214.25 427.8,-208.44"/>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0 -->
|
||||
<g id="node6" class="node">
|
||||
<title>_etc_assisted_node0</title>
|
||||
<polygon fill="#fffacd" stroke="black" points="374.75,-324 279.25,-324 279.25,-288 380.75,-288 380.75,-318 374.75,-324"/>
|
||||
<polyline fill="none" stroke="black" points="374.75,-324 374.75,-318"/>
|
||||
<polyline fill="none" stroke="black" points="380.75,-318 374.75,-318"/>
|
||||
<text text-anchor="middle" x="330" y="-301.75" font-family="Arial" font-size="10.00">/etc/assisted/node0</text>
|
||||
</g>
|
||||
<!-- install_status -->
|
||||
<g id="node12" class="node">
|
||||
<title>install_status</title>
|
||||
<path fill="#add8e6" stroke="black" d="M353.75,-468C353.75,-468 306.25,-468 306.25,-468 300.25,-468 294.25,-462 294.25,-456 294.25,-456 294.25,-444 294.25,-444 294.25,-438 300.25,-432 306.25,-432 306.25,-432 353.75,-432 353.75,-432 359.75,-432 365.75,-438 365.75,-444 365.75,-444 365.75,-456 365.75,-456 365.75,-462 359.75,-468 353.75,-468"/>
|
||||
<text text-anchor="middle" x="330" y="-445.75" font-family="Arial" font-size="10.00">install-status</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->install_status -->
|
||||
<g id="edge28" class="edge">
|
||||
<title>_etc_assisted_node0->install_status</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M330,-324.41C330,-348.39 330,-391.86 330,-420.58"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="326.5,-420.38 330,-430.38 333.5,-420.38 326.5,-420.38"/>
|
||||
</g>
|
||||
<!-- assisted_service_pod -->
|
||||
<g id="node15" class="node">
|
||||
<title>assisted_service_pod</title>
|
||||
<path fill="#add8e6" stroke="black" d="M263.75,-396C263.75,-396 180.25,-396 180.25,-396 174.25,-396 168.25,-390 168.25,-384 168.25,-384 168.25,-372 168.25,-372 168.25,-366 174.25,-360 180.25,-360 180.25,-360 263.75,-360 263.75,-360 269.75,-360 275.75,-366 275.75,-372 275.75,-372 275.75,-384 275.75,-384 275.75,-390 269.75,-396 263.75,-396"/>
|
||||
<text text-anchor="middle" x="222" y="-373.75" font-family="Arial" font-size="10.00">assisted-service-pod</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->assisted_service_pod -->
|
||||
<g id="edge26" class="edge">
|
||||
<title>_etc_assisted_node0->assisted_service_pod</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M303.03,-324.48C289.39,-333.32 272.66,-344.16 257.95,-353.7"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="256.39,-350.54 249.9,-358.92 260.2,-356.41 256.39,-350.54"/>
|
||||
</g>
|
||||
<!-- agent_register_cluster -->
|
||||
<g id="node16" class="node">
|
||||
<title>agent_register_cluster</title>
|
||||
<path fill="#add8e6" stroke="black" d="M249.38,-540C249.38,-540 166.62,-540 166.62,-540 160.62,-540 154.62,-534 154.62,-528 154.62,-528 154.62,-516 154.62,-516 154.62,-510 160.62,-504 166.62,-504 166.62,-504 249.38,-504 249.38,-504 255.38,-504 261.38,-510 261.38,-516 261.38,-516 261.38,-528 261.38,-528 261.38,-534 255.38,-540 249.38,-540"/>
|
||||
<text text-anchor="middle" x="208" y="-517.75" font-family="Arial" font-size="10.00">agent-register-cluster</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->agent_register_cluster -->
|
||||
<g id="edge16" class="edge">
|
||||
<title>_etc_assisted_node0->agent_register_cluster</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M343.56,-324.22C366.57,-355.66 407.74,-423.27 375,-468 351.72,-499.81 309.21,-513 272.91,-518.26"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="272.86,-514.74 263.38,-519.47 273.74,-521.69 272.86,-514.74"/>
|
||||
</g>
|
||||
<!-- agent_register_infraenv -->
|
||||
<g id="node17" class="node">
|
||||
<title>agent_register_infraenv</title>
|
||||
<path fill="#add8e6" stroke="black" d="M197,-612C197,-612 109,-612 109,-612 103,-612 97,-606 97,-600 97,-600 97,-588 97,-588 97,-582 103,-576 109,-576 109,-576 197,-576 197,-576 203,-576 209,-582 209,-588 209,-588 209,-600 209,-600 209,-606 203,-612 197,-612"/>
|
||||
<text text-anchor="middle" x="153" y="-589.75" font-family="Arial" font-size="10.00">agent-register-infraenv</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->agent_register_infraenv -->
|
||||
<g id="edge19" class="edge">
|
||||
<title>_etc_assisted_node0->agent_register_infraenv</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M360.05,-324.38C369.93,-331.63 379.93,-340.96 386,-352 410.93,-397.31 420.88,-423.23 395,-468 358.54,-531.08 278.31,-563.51 220.2,-579.33"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="219.52,-575.89 210.73,-581.8 221.29,-582.66 219.52,-575.89"/>
|
||||
</g>
|
||||
<!-- apply_host_config -->
|
||||
<g id="node18" class="node">
|
||||
<title>apply_host_config</title>
|
||||
<path fill="#add8e6" stroke="black" d="M185.38,-684C185.38,-684 120.62,-684 120.62,-684 114.62,-684 108.62,-678 108.62,-672 108.62,-672 108.62,-660 108.62,-660 108.62,-654 114.62,-648 120.62,-648 120.62,-648 185.38,-648 185.38,-648 191.38,-648 197.38,-654 197.38,-660 197.38,-660 197.38,-672 197.38,-672 197.38,-678 191.38,-684 185.38,-684"/>
|
||||
<text text-anchor="middle" x="153" y="-661.75" font-family="Arial" font-size="10.00">apply-host-config</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->apply_host_config -->
|
||||
<g id="edge22" class="edge">
|
||||
<title>_etc_assisted_node0->apply_host_config</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M278.8,-306.72C186.11,-309.2 0,-329.09 0,-449 0,-449 0,-449 0,-523 0,-579.32 56.38,-619.58 100.68,-642.54"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="98.92,-645.57 109.43,-646.91 102.05,-639.31 98.92,-645.57"/>
|
||||
</g>
|
||||
<!-- start_cluster_installation -->
|
||||
<g id="node21" class="node">
|
||||
<title>start_cluster_installation</title>
|
||||
<path fill="#add8e6" stroke="black" d="M230.62,-756C230.62,-756 137.38,-756 137.38,-756 131.38,-756 125.38,-750 125.38,-744 125.38,-744 125.38,-732 125.38,-732 125.38,-726 131.38,-720 137.38,-720 137.38,-720 230.62,-720 230.62,-720 236.62,-720 242.62,-726 242.62,-732 242.62,-732 242.62,-744 242.62,-744 242.62,-750 236.62,-756 230.62,-756"/>
|
||||
<text text-anchor="middle" x="184" y="-733.75" font-family="Arial" font-size="10.00">start-cluster-installation</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->start_cluster_installation -->
|
||||
<g id="edge32" class="edge">
|
||||
<title>_etc_assisted_node0->start_cluster_installation</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M370.1,-324.48C383.78,-331.69 398.5,-340.97 410,-352 446.58,-387.09 470,-398.31 470,-449 470,-449 470,-449 470,-595 470,-691.06 338.96,-722.14 254.28,-732.19"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="253.97,-728.7 244.42,-733.28 254.74,-735.66 253.97,-728.7"/>
|
||||
</g>
|
||||
<!-- _usr_lib_dracut_hooks_pre_pivot_99_agent_copy_files_sh -->
|
||||
<g id="node7" class="node">
|
||||
<title>_usr_lib_dracut_hooks_pre_pivot_99_agent_copy_files_sh</title>
|
||||
<polygon fill="#f5deb3" stroke="black" points="241.25,-36 136.75,-36 136.75,0 247.25,0 247.25,-30 241.25,-36"/>
|
||||
<polyline fill="none" stroke="black" points="241.25,-36 241.25,-30"/>
|
||||
<polyline fill="none" stroke="black" points="247.25,-30 241.25,-30"/>
|
||||
<text text-anchor="middle" x="192" y="-13.75" font-family="Arial" font-size="10.00">99-agent-copy-files.sh</text>
|
||||
</g>
|
||||
<!-- _usr_lib_dracut_hooks_pre_pivot_99_agent_copy_files_sh->selinux -->
|
||||
<!-- _usr_local_bin_agent_tui -->
|
||||
<g id="node8" class="node">
|
||||
<title>_usr_local_bin_agent_tui</title>
|
||||
<polygon fill="#fffacd" stroke="black" points="241.62,-108 136.38,-108 136.38,-72 247.62,-72 247.62,-102 241.62,-108"/>
|
||||
<polyline fill="none" stroke="black" points="241.62,-108 241.62,-102"/>
|
||||
<polyline fill="none" stroke="black" points="247.62,-102 241.62,-102"/>
|
||||
<text text-anchor="middle" x="192" y="-85.75" font-family="Arial" font-size="10.00">/usr/local/bin/agent-tui</text>
|
||||
</g>
|
||||
<!-- _usr_lib_dracut_hooks_pre_pivot_99_agent_copy_files_sh->_usr_local_bin_agent_tui -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>_usr_lib_dracut_hooks_pre_pivot_99_agent_copy_files_sh->_usr_local_bin_agent_tui</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M192,-36.3C192,-43.59 192,-52.27 192,-60.46"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="188.5,-60.38 192,-70.38 195.5,-60.38 188.5,-60.38"/>
|
||||
</g>
|
||||
<!-- _usr_local_bin_agent_tui->agent_interactive_console_serial -->
|
||||
<g id="edge10" class="edge">
|
||||
<title>_usr_local_bin_agent_tui->agent_interactive_console_serial</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M195.97,-108.3C199.57,-115.99 204.61,-125.21 209.85,-133.78"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="206.85,-135.59 215.19,-142.13 212.75,-131.82 206.85,-135.59"/>
|
||||
</g>
|
||||
<!-- _usr_local_bin_agent_tui->agent_interactive_console -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>_usr_local_bin_agent_tui->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M236.27,-108.48C262.24,-117.86 295.54,-129.5 324.78,-139.43"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="323.33,-142.63 333.92,-142.52 325.57,-136 323.33,-142.63"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console_serial->_usr_local_bin_agent_tui -->
|
||||
<!-- agent_interactive_console_serial->agent -->
|
||||
<g id="edge8" class="edge">
|
||||
<title>agent_interactive_console_serial->agent</title>
|
||||
<path fill="none" stroke="#333333" d="M273.04,-180.85C298.36,-191.85 330.6,-205.87 355.28,-216.6"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="353.74,-219.75 364.31,-220.52 356.53,-213.33 353.74,-219.75"/>
|
||||
</g>
|
||||
<!-- node_zero -->
|
||||
<g id="node13" class="node">
|
||||
<title>node_zero</title>
|
||||
<path fill="#add8e6" stroke="black" d="M293.38,-252C293.38,-252 258.62,-252 258.62,-252 252.62,-252 246.62,-246 246.62,-240 246.62,-240 246.62,-228 246.62,-228 246.62,-222 252.62,-216 258.62,-216 258.62,-216 293.38,-216 293.38,-216 299.38,-216 305.38,-222 305.38,-228 305.38,-228 305.38,-240 305.38,-240 305.38,-246 299.38,-252 293.38,-252"/>
|
||||
<text text-anchor="middle" x="276" y="-229.75" font-family="Arial" font-size="10.00">node-zero</text>
|
||||
</g>
|
||||
<!-- agent_interactive_console_serial->node_zero -->
|
||||
<g id="edge9" class="edge">
|
||||
<title>agent_interactive_console_serial->node_zero</title>
|
||||
<path fill="none" stroke="#333333" d="M243.1,-180.66C247.93,-188.35 253.7,-197.53 259.05,-206.03"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="255.96,-207.7 264.25,-214.3 261.89,-203.97 255.96,-207.7"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console->_usr_local_bin_agent_tui -->
|
||||
<!-- agent_interactive_console->agent -->
|
||||
<g id="edge13" class="edge">
|
||||
<title>agent_interactive_console->agent</title>
|
||||
<path fill="none" stroke="#333333" d="M393,-180.66C393,-187.76 393,-196.14 393,-204.08"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="389.5,-204.07 393,-214.07 396.5,-204.07 389.5,-204.07"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console->node_zero -->
|
||||
<g id="edge14" class="edge">
|
||||
<title>agent_interactive_console->node_zero</title>
|
||||
<path fill="none" stroke="#333333" d="M363.17,-180.85C348.37,-189.7 330.32,-200.5 314.48,-209.97"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="313.05,-206.76 306.26,-214.89 316.64,-212.76 313.05,-206.76"/>
|
||||
</g>
|
||||
<!-- node_zero->_etc_assisted_node0 -->
|
||||
<g id="edge5" class="edge">
|
||||
<title>node_zero->_etc_assisted_node0</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M289.35,-252.3C295.56,-260.36 303.08,-270.11 309.96,-279.02"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="307,-280.92 315.88,-286.7 312.54,-276.64 307,-280.92"/>
|
||||
</g>
|
||||
<!-- node_zero->assisted_service_pod -->
|
||||
<g id="edge24" class="edge">
|
||||
<title>node_zero->assisted_service_pod</title>
|
||||
<path fill="none" stroke="#333333" d="M269.38,-252.41C260.18,-276.6 243.43,-320.64 232.52,-349.35"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="229.33,-347.88 229.04,-358.47 235.87,-350.37 229.33,-347.88"/>
|
||||
</g>
|
||||
<!-- oci_eval_user_data -->
|
||||
<g id="node14" class="node">
|
||||
<title>oci_eval_user_data</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M740.25,-36C740.25,-36 671.75,-36 671.75,-36 665.75,-36 659.75,-30 659.75,-24 659.75,-24 659.75,-12 659.75,-12 659.75,-6 665.75,0 671.75,0 671.75,0 740.25,0 740.25,0 746.25,0 752.25,-6 752.25,-12 752.25,-12 752.25,-24 752.25,-24 752.25,-30 746.25,-36 740.25,-36"/>
|
||||
<text text-anchor="middle" x="706" y="-13.75" font-family="Arial" font-size="10.00">oci-eval-user-data</text>
|
||||
</g>
|
||||
<!-- assisted_service_pod->install_status -->
|
||||
<g id="edge27" class="edge">
|
||||
<title>assisted_service_pod->install_status</title>
|
||||
<path fill="none" stroke="#333333" d="M248.97,-396.48C262.61,-405.32 279.34,-416.16 294.05,-425.7"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="291.8,-428.41 302.1,-430.92 295.61,-422.54 291.8,-428.41"/>
|
||||
</g>
|
||||
<!-- assisted_service_pod->agent_register_cluster -->
|
||||
<!-- assisted_service_pod->agent_register_infraenv -->
|
||||
<!-- assisted_service_db -->
|
||||
<g id="node19" class="node">
|
||||
<title>assisted_service_db</title>
|
||||
<path fill="#add8e6" stroke="black" d="M244.12,-468C244.12,-468 165.88,-468 165.88,-468 159.88,-468 153.88,-462 153.88,-456 153.88,-456 153.88,-444 153.88,-444 153.88,-438 159.88,-432 165.88,-432 165.88,-432 244.12,-432 244.12,-432 250.12,-432 256.12,-438 256.12,-444 256.12,-444 256.12,-456 256.12,-456 256.12,-462 250.12,-468 244.12,-468"/>
|
||||
<text text-anchor="middle" x="205" y="-445.75" font-family="Arial" font-size="10.00">assisted-service-db</text>
|
||||
</g>
|
||||
<!-- assisted_service_pod->assisted_service_db -->
|
||||
<g id="edge23" class="edge">
|
||||
<title>assisted_service_pod->assisted_service_db</title>
|
||||
<path fill="none" stroke="#333333" d="M217.8,-396.3C216.01,-403.68 213.87,-412.48 211.86,-420.75"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="208.47,-419.88 209.51,-430.42 215.27,-421.53 208.47,-419.88"/>
|
||||
</g>
|
||||
<!-- assisted_service -->
|
||||
<g id="node20" class="node">
|
||||
<title>assisted_service</title>
|
||||
<path fill="#add8e6" stroke="black" d="M124,-468C124,-468 60,-468 60,-468 54,-468 48,-462 48,-456 48,-456 48,-444 48,-444 48,-438 54,-432 60,-432 60,-432 124,-432 124,-432 130,-432 136,-438 136,-444 136,-444 136,-456 136,-456 136,-462 130,-468 124,-468"/>
|
||||
<text text-anchor="middle" x="92" y="-445.75" font-family="Arial" font-size="10.00">assisted-service</text>
|
||||
</g>
|
||||
<!-- assisted_service_pod->assisted_service -->
|
||||
<g id="edge25" class="edge">
|
||||
<title>assisted_service_pod->assisted_service</title>
|
||||
<path fill="none" stroke="#333333" d="M189.53,-396.48C172.73,-405.53 152.02,-416.68 134.02,-426.38"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="132.53,-423.2 125.39,-431.02 135.85,-429.36 132.53,-423.2"/>
|
||||
</g>
|
||||
<!-- agent_register_cluster->agent_register_infraenv -->
|
||||
<g id="edge18" class="edge">
|
||||
<title>agent_register_cluster->agent_register_infraenv</title>
|
||||
<path fill="none" stroke="#333333" d="M194.4,-540.3C188.08,-548.36 180.42,-558.11 173.41,-567.02"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="170.8,-564.68 167.37,-574.71 176.3,-569 170.8,-564.68"/>
|
||||
</g>
|
||||
<!-- agent_register_infraenv->apply_host_config -->
|
||||
<g id="edge21" class="edge">
|
||||
<title>agent_register_infraenv->apply_host_config</title>
|
||||
<path fill="none" stroke="#333333" d="M153,-612.3C153,-619.59 153,-628.27 153,-636.46"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="149.5,-636.38 153,-646.38 156.5,-636.38 149.5,-636.38"/>
|
||||
</g>
|
||||
<!-- apply_host_config->start_cluster_installation -->
|
||||
<g id="edge31" class="edge">
|
||||
<title>apply_host_config->start_cluster_installation</title>
|
||||
<path fill="none" stroke="#333333" d="M160.66,-684.3C164.04,-691.93 168.09,-701.08 171.87,-709.6"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="168.56,-710.79 175.81,-718.51 174.96,-707.95 168.56,-710.79"/>
|
||||
</g>
|
||||
<!-- assisted_service->agent_register_cluster -->
|
||||
<g id="edge15" class="edge">
|
||||
<title>assisted_service->agent_register_cluster</title>
|
||||
<path fill="none" stroke="#333333" d="M120.97,-468.48C135.75,-477.4 153.93,-488.37 169.83,-497.97"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="167.73,-500.79 178.1,-502.96 171.35,-494.79 167.73,-500.79"/>
|
||||
</g>
|
||||
<!-- assisted_service->agent_register_infraenv -->
|
||||
<g id="edge17" class="edge">
|
||||
<title>assisted_service->agent_register_infraenv</title>
|
||||
<path fill="none" stroke="#333333" d="M99.48,-468.41C109.87,-492.6 128.79,-536.64 141.12,-565.35"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="137.89,-566.69 145.05,-574.5 144.32,-563.93 137.89,-566.69"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 42 KiB |
304
docs/user/agent/agent_installer_services-interactive.svg
Normal file
@@ -0,0 +1,304 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 12.2.1 (20241206.2353)
|
||||
-->
|
||||
<!-- Title: agent_installer_services_interactive_workflow Pages: 1 -->
|
||||
<svg width="718pt" height="636pt"
|
||||
viewBox="0.00 0.00 718.25 636.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 632)">
|
||||
<title>agent_installer_services_interactive_workflow</title>
|
||||
<polygon fill="white" stroke="none" points="-4,4 -4,-632 714.25,-632 714.25,4 -4,4"/>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>cluster_assisted_service_pod</title>
|
||||
<polygon fill="none" stroke="#666666" stroke-dasharray="5,2" points="8,-424 8,-620 252,-620 252,-424 8,-424"/>
|
||||
</g>
|
||||
<!-- agent_extract_tui -->
|
||||
<g id="node1" class="node">
|
||||
<title>agent_extract_tui</title>
|
||||
<path fill="#add8e6" stroke="black" d="M254.5,-108C254.5,-108 193.5,-108 193.5,-108 187.5,-108 181.5,-102 181.5,-96 181.5,-96 181.5,-84 181.5,-84 181.5,-78 187.5,-72 193.5,-72 193.5,-72 254.5,-72 254.5,-72 260.5,-72 266.5,-78 266.5,-84 266.5,-84 266.5,-96 266.5,-96 266.5,-102 260.5,-108 254.5,-108"/>
|
||||
<text text-anchor="middle" x="224" y="-85.75" font-family="Arial" font-size="10.00">agent-extract-tui</text>
|
||||
</g>
|
||||
<!-- _usr_local_bin_agent_tui -->
|
||||
<g id="node9" class="node">
|
||||
<title>_usr_local_bin_agent_tui</title>
|
||||
<polygon fill="#fffacd" stroke="black" points="300.62,-180 195.38,-180 195.38,-144 306.62,-144 306.62,-174 300.62,-180"/>
|
||||
<polyline fill="none" stroke="black" points="300.62,-180 300.62,-174"/>
|
||||
<polyline fill="none" stroke="black" points="306.62,-174 300.62,-174"/>
|
||||
<text text-anchor="middle" x="251" y="-157.75" font-family="Arial" font-size="10.00">/usr/local/bin/agent-tui</text>
|
||||
</g>
|
||||
<!-- agent_extract_tui->_usr_local_bin_agent_tui -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>agent_extract_tui->_usr_local_bin_agent_tui</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M230.67,-108.3C233.58,-115.85 237.07,-124.88 240.32,-133.32"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="236.99,-134.41 243.86,-142.48 243.52,-131.89 236.99,-134.41"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console_serial -->
|
||||
<g id="node10" class="node">
|
||||
<title>agent_interactive_console_serial</title>
|
||||
<path fill="#6495ed" stroke="black" stroke-width="2" d="M258.75,-252C258.75,-252 121.25,-252 121.25,-252 115.25,-252 109.25,-246 109.25,-240 109.25,-240 109.25,-228 109.25,-228 109.25,-222 115.25,-216 121.25,-216 121.25,-216 258.75,-216 258.75,-216 264.75,-216 270.75,-222 270.75,-228 270.75,-228 270.75,-240 270.75,-240 270.75,-246 264.75,-252 258.75,-252"/>
|
||||
<text text-anchor="middle" x="190" y="-229.75" font-family="Arial" font-size="10.00">agent-interactive-console-serial@</text>
|
||||
</g>
|
||||
<!-- agent_extract_tui->agent_interactive_console_serial -->
|
||||
<g id="edge10" class="edge">
|
||||
<title>agent_extract_tui->agent_interactive_console_serial</title>
|
||||
<path fill="none" stroke="#333333" d="M207.54,-108.08C199.35,-117.78 190.3,-130.63 186,-144 179.81,-163.26 180.99,-186.08 183.62,-203.79"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="180.18,-204.38 185.35,-213.63 187.07,-203.18 180.18,-204.38"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console -->
|
||||
<g id="node11" class="node">
|
||||
<title>agent_interactive_console</title>
|
||||
<path fill="#6495ed" stroke="black" stroke-width="2" d="M404,-252C404,-252 304,-252 304,-252 298,-252 292,-246 292,-240 292,-240 292,-228 292,-228 292,-222 298,-216 304,-216 304,-216 404,-216 404,-216 410,-216 416,-222 416,-228 416,-228 416,-240 416,-240 416,-246 410,-252 404,-252"/>
|
||||
<text text-anchor="middle" x="354" y="-229.75" font-family="Arial" font-size="10.00">agent-interactive-console</text>
|
||||
</g>
|
||||
<!-- agent_extract_tui->agent_interactive_console -->
|
||||
<g id="edge6" class="edge">
|
||||
<title>agent_extract_tui->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" d="M266.97,-108.49C284.01,-117.13 302.66,-128.97 316,-144 331.24,-161.17 341.04,-185.37 346.86,-204.2"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="343.45,-205.01 349.57,-213.66 350.18,-203.09 343.45,-205.01"/>
|
||||
</g>
|
||||
<!-- iscsiadm -->
|
||||
<g id="node2" class="node">
|
||||
<title>iscsiadm</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M586.5,-108C586.5,-108 555.5,-108 555.5,-108 549.5,-108 543.5,-102 543.5,-96 543.5,-96 543.5,-84 543.5,-84 543.5,-78 549.5,-72 555.5,-72 555.5,-72 586.5,-72 586.5,-72 592.5,-72 598.5,-78 598.5,-84 598.5,-84 598.5,-96 598.5,-96 598.5,-102 592.5,-108 586.5,-108"/>
|
||||
<text text-anchor="middle" x="571" y="-85.75" font-family="Arial" font-size="10.00">iscsiadm</text>
|
||||
</g>
|
||||
<!-- iscsistart -->
|
||||
<g id="node3" class="node">
|
||||
<title>iscsistart</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M587.25,-36C587.25,-36 554.75,-36 554.75,-36 548.75,-36 542.75,-30 542.75,-24 542.75,-24 542.75,-12 542.75,-12 542.75,-6 548.75,0 554.75,0 554.75,0 587.25,0 587.25,0 593.25,0 599.25,-6 599.25,-12 599.25,-12 599.25,-24 599.25,-24 599.25,-30 593.25,-36 587.25,-36"/>
|
||||
<text text-anchor="middle" x="571" y="-13.75" font-family="Arial" font-size="10.00">iscsistart</text>
|
||||
</g>
|
||||
<!-- iscsistart->iscsiadm -->
|
||||
<g id="edge28" class="edge">
|
||||
<title>iscsistart->iscsiadm</title>
|
||||
<path fill="none" stroke="#333333" d="M571,-35.95C571,-43.43 571,-52.42 571,-60.86"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="567.5,-60.7 571,-70.7 574.5,-60.7 567.5,-60.7"/>
|
||||
</g>
|
||||
<!-- pre_network_manager_config -->
|
||||
<g id="node4" class="node">
|
||||
<title>pre_network_manager_config</title>
|
||||
<path fill="#add8e6" stroke="black" d="M419.38,-36C419.38,-36 306.62,-36 306.62,-36 300.62,-36 294.62,-30 294.62,-24 294.62,-24 294.62,-12 294.62,-12 294.62,-6 300.62,0 306.62,0 306.62,0 419.38,0 419.38,0 425.38,0 431.38,-6 431.38,-12 431.38,-12 431.38,-24 431.38,-24 431.38,-30 425.38,-36 419.38,-36"/>
|
||||
<text text-anchor="middle" x="363" y="-13.75" font-family="Arial" font-size="10.00">pre-network-manager-config</text>
|
||||
</g>
|
||||
<!-- pre_network_manager_config->agent_interactive_console_serial -->
|
||||
<g id="edge8" class="edge">
|
||||
<title>pre_network_manager_config->agent_interactive_console_serial</title>
|
||||
<path fill="none" stroke="#333333" d="M294.25,-36.1C241.45,-49.57 176.88,-66.89 173,-72 143.78,-110.48 161.47,-169.87 176.24,-204.75"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="172.99,-206.05 180.26,-213.77 179.39,-203.21 172.99,-206.05"/>
|
||||
</g>
|
||||
<!-- pre_network_manager_config->agent_interactive_console -->
|
||||
<g id="edge14" class="edge">
|
||||
<title>pre_network_manager_config->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" d="M373.2,-36.5C378.46,-46.53 384.31,-59.56 387,-72 397.13,-118.92 400.19,-133.85 387,-180 384.44,-188.94 379.9,-197.84 374.98,-205.72"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="372.2,-203.58 369.52,-213.83 378,-207.49 372.2,-203.58"/>
|
||||
</g>
|
||||
<!-- selinux -->
|
||||
<g id="node5" class="node">
|
||||
<title>selinux</title>
|
||||
<path fill="#add8e6" stroke="black" d="M141,-36C141,-36 111,-36 111,-36 105,-36 99,-30 99,-24 99,-24 99,-12 99,-12 99,-6 105,0 111,0 111,0 141,0 141,0 147,0 153,-6 153,-12 153,-12 153,-24 153,-24 153,-30 147,-36 141,-36"/>
|
||||
<text text-anchor="middle" x="126" y="-13.75" font-family="Arial" font-size="10.00">selinux</text>
|
||||
</g>
|
||||
<!-- selinux->agent_extract_tui -->
|
||||
<g id="edge5" class="edge">
|
||||
<title>selinux->agent_extract_tui</title>
|
||||
<path fill="none" stroke="#333333" d="M150.48,-36.48C162.61,-45.15 177.45,-55.75 190.61,-65.15"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="188.43,-67.9 198.6,-70.86 192.5,-62.2 188.43,-67.9"/>
|
||||
</g>
|
||||
<!-- selinux->agent_interactive_console_serial -->
|
||||
<g id="edge9" class="edge">
|
||||
<title>selinux->agent_interactive_console_serial</title>
|
||||
<path fill="none" stroke="#333333" d="M119.3,-36.16C108.44,-66.94 90.52,-132.73 115,-180 121.01,-191.61 130.86,-201.22 141.48,-208.92"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="139.4,-211.74 149.67,-214.36 143.28,-205.91 139.4,-211.74"/>
|
||||
</g>
|
||||
<!-- selinux->agent_interactive_console -->
|
||||
<g id="edge15" class="edge">
|
||||
<title>selinux->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" d="M153.35,-32.38C156.25,-33.66 159.17,-34.89 162,-36 211.47,-55.39 231.3,-43.28 276,-72 312.27,-95.31 322.65,-104.99 341,-144 349.79,-162.69 352.97,-185.82 353.99,-203.82"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="350.48,-203.69 354.33,-213.56 357.47,-203.44 350.48,-203.69"/>
|
||||
</g>
|
||||
<!-- set_hostname -->
|
||||
<g id="node6" class="node">
|
||||
<title>set_hostname</title>
|
||||
<path fill="#add8e6" stroke="black" d="M512.25,-36C512.25,-36 461.75,-36 461.75,-36 455.75,-36 449.75,-30 449.75,-24 449.75,-24 449.75,-12 449.75,-12 449.75,-6 455.75,0 461.75,0 461.75,0 512.25,0 512.25,0 518.25,0 524.25,-6 524.25,-12 524.25,-12 524.25,-24 524.25,-24 524.25,-30 518.25,-36 512.25,-36"/>
|
||||
<text text-anchor="middle" x="487" y="-13.75" font-family="Arial" font-size="10.00">set-hostname</text>
|
||||
</g>
|
||||
<!-- set_hostname->agent_interactive_console -->
|
||||
<g id="edge29" class="edge">
|
||||
<title>set_hostname->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" d="M480.15,-36.39C467.69,-66.96 439.38,-131.7 405,-180 398.29,-189.42 389.95,-198.81 381.97,-207"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="379.56,-204.47 374.94,-214 384.5,-209.43 379.56,-204.47"/>
|
||||
</g>
|
||||
<!-- agent -->
|
||||
<g id="node12" class="node">
|
||||
<title>agent</title>
|
||||
<path fill="#add8e6" stroke="black" d="M369,-324C369,-324 339,-324 339,-324 333,-324 327,-318 327,-312 327,-312 327,-300 327,-300 327,-294 333,-288 339,-288 339,-288 369,-288 369,-288 375,-288 381,-294 381,-300 381,-300 381,-312 381,-312 381,-318 375,-324 369,-324"/>
|
||||
<text text-anchor="middle" x="354" y="-301.75" font-family="Arial" font-size="10.00">agent</text>
|
||||
</g>
|
||||
<!-- set_hostname->agent -->
|
||||
<g id="edge21" class="edge">
|
||||
<title>set_hostname->agent</title>
|
||||
<path fill="none" stroke="#333333" d="M486.43,-36.21C484.27,-77.3 473.99,-182.83 425,-252 416,-264.7 403.02,-275.65 390.62,-284.23"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="389.02,-281.09 382.58,-289.5 392.86,-286.95 389.02,-281.09"/>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0 -->
|
||||
<g id="node7" class="node">
|
||||
<title>_etc_assisted_node0</title>
|
||||
<polygon fill="#fffacd" stroke="black" points="325.75,-396 230.25,-396 230.25,-360 331.75,-360 331.75,-390 325.75,-396"/>
|
||||
<polyline fill="none" stroke="black" points="325.75,-396 325.75,-390"/>
|
||||
<polyline fill="none" stroke="black" points="331.75,-390 325.75,-390"/>
|
||||
<text text-anchor="middle" x="281" y="-373.75" font-family="Arial" font-size="10.00">/etc/assisted/node0</text>
|
||||
</g>
|
||||
<!-- install_status -->
|
||||
<g id="node13" class="node">
|
||||
<title>install_status</title>
|
||||
<path fill="#add8e6" stroke="black" d="M321.75,-540C321.75,-540 274.25,-540 274.25,-540 268.25,-540 262.25,-534 262.25,-528 262.25,-528 262.25,-516 262.25,-516 262.25,-510 268.25,-504 274.25,-504 274.25,-504 321.75,-504 321.75,-504 327.75,-504 333.75,-510 333.75,-516 333.75,-516 333.75,-528 333.75,-528 333.75,-534 327.75,-540 321.75,-540"/>
|
||||
<text text-anchor="middle" x="298" y="-517.75" font-family="Arial" font-size="10.00">install-status</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->install_status -->
|
||||
<g id="edge27" class="edge">
|
||||
<title>_etc_assisted_node0->install_status</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M283.08,-396.41C285.95,-420.39 291.16,-463.86 294.6,-492.58"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="291.11,-492.87 295.77,-502.39 298.06,-492.04 291.11,-492.87"/>
|
||||
</g>
|
||||
<!-- assisted_service_pod -->
|
||||
<g id="node16" class="node">
|
||||
<title>assisted_service_pod</title>
|
||||
<path fill="#add8e6" stroke="black" d="M231.75,-468C231.75,-468 148.25,-468 148.25,-468 142.25,-468 136.25,-462 136.25,-456 136.25,-456 136.25,-444 136.25,-444 136.25,-438 142.25,-432 148.25,-432 148.25,-432 231.75,-432 231.75,-432 237.75,-432 243.75,-438 243.75,-444 243.75,-444 243.75,-456 243.75,-456 243.75,-462 237.75,-468 231.75,-468"/>
|
||||
<text text-anchor="middle" x="190" y="-445.75" font-family="Arial" font-size="10.00">assisted-service-pod</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->assisted_service_pod -->
|
||||
<g id="edge25" class="edge">
|
||||
<title>_etc_assisted_node0->assisted_service_pod</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M258.51,-396.3C247.35,-404.89 233.69,-415.39 221.51,-424.76"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="219.54,-421.86 213.75,-430.73 223.81,-427.41 219.54,-421.86"/>
|
||||
</g>
|
||||
<!-- agent_start_ui -->
|
||||
<g id="node17" class="node">
|
||||
<title>agent_start_ui</title>
|
||||
<path fill="#add8e6" stroke="black" d="M224.12,-612C224.12,-612 175.88,-612 175.88,-612 169.88,-612 163.88,-606 163.88,-600 163.88,-600 163.88,-588 163.88,-588 163.88,-582 169.88,-576 175.88,-576 175.88,-576 224.12,-576 224.12,-576 230.12,-576 236.12,-582 236.12,-588 236.12,-588 236.12,-600 236.12,-600 236.12,-606 230.12,-612 224.12,-612"/>
|
||||
<text text-anchor="middle" x="200" y="-589.75" font-family="Arial" font-size="10.00">agent-start-ui</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->agent_start_ui -->
|
||||
<g id="edge20" class="edge">
|
||||
<title>_etc_assisted_node0->agent_start_ui</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M297.72,-396.27C325.61,-427.23 375.5,-493.29 343,-540 321.63,-570.72 280.27,-583.67 247.5,-589.11"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="247.21,-585.62 237.82,-590.52 248.22,-592.55 247.21,-585.62"/>
|
||||
</g>
|
||||
<!-- _etc_assisted_rendezvous_host_env -->
|
||||
<g id="node8" class="node">
|
||||
<title>_etc_assisted_rendezvous_host_env</title>
|
||||
<polygon fill="#fffacd" stroke="black" points="270.62,-36 171.38,-36 171.38,0 276.62,0 276.62,-30 270.62,-36"/>
|
||||
<polyline fill="none" stroke="black" points="270.62,-36 270.62,-30"/>
|
||||
<polyline fill="none" stroke="black" points="276.62,-30 270.62,-30"/>
|
||||
<text text-anchor="middle" x="224" y="-19" font-family="Arial" font-size="10.00">/etc/assisted/</text>
|
||||
<text text-anchor="middle" x="224" y="-8.5" font-family="Arial" font-size="10.00">rendezvous-host.env</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_rendezvous_host_env->agent_extract_tui -->
|
||||
<g id="edge7" class="edge">
|
||||
<title>_etc_assisted_rendezvous_host_env->agent_extract_tui</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M224,-36.3C224,-43.59 224,-52.27 224,-60.46"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="220.5,-60.38 224,-70.38 227.5,-60.38 220.5,-60.38"/>
|
||||
</g>
|
||||
<!-- _usr_local_bin_agent_tui->agent_interactive_console_serial -->
|
||||
<g id="edge13" class="edge">
|
||||
<title>_usr_local_bin_agent_tui->agent_interactive_console_serial</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M230.01,-180.3C222.27,-188.24 213.71,-197.81 206.43,-206.62"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="203.85,-204.23 200.33,-214.23 209.31,-208.61 203.85,-204.23"/>
|
||||
</g>
|
||||
<!-- _usr_local_bin_agent_tui->agent_interactive_console -->
|
||||
<g id="edge18" class="edge">
|
||||
<title>_usr_local_bin_agent_tui->agent_interactive_console</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M270.54,-180.3C282.45,-189 297.99,-199.69 312.47,-209.15"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="310.22,-211.86 320.52,-214.34 314.01,-205.98 310.22,-211.86"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console_serial->_usr_local_bin_agent_tui -->
|
||||
<!-- agent_interactive_console_serial->agent -->
|
||||
<g id="edge11" class="edge">
|
||||
<title>agent_interactive_console_serial->agent</title>
|
||||
<path fill="none" stroke="#333333" d="M231.81,-252.85C257.88,-263.97 291.16,-278.18 316.4,-288.95"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="314.72,-292.04 325.29,-292.75 317.47,-285.6 314.72,-292.04"/>
|
||||
</g>
|
||||
<!-- node_zero -->
|
||||
<g id="node14" class="node">
|
||||
<title>node_zero</title>
|
||||
<path fill="#add8e6" stroke="black" d="M254.38,-324C254.38,-324 219.62,-324 219.62,-324 213.62,-324 207.62,-318 207.62,-312 207.62,-312 207.62,-300 207.62,-300 207.62,-294 213.62,-288 219.62,-288 219.62,-288 254.38,-288 254.38,-288 260.38,-288 266.38,-294 266.38,-300 266.38,-300 266.38,-312 266.38,-312 266.38,-318 260.38,-324 254.38,-324"/>
|
||||
<text text-anchor="middle" x="237" y="-301.75" font-family="Arial" font-size="10.00">node-zero</text>
|
||||
</g>
|
||||
<!-- agent_interactive_console_serial->node_zero -->
|
||||
<g id="edge12" class="edge">
|
||||
<title>agent_interactive_console_serial->node_zero</title>
|
||||
<path fill="none" stroke="#333333" d="M201.86,-252.66C207.02,-260.35 213.18,-269.53 218.89,-278.03"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="215.98,-279.98 224.46,-286.33 221.79,-276.07 215.98,-279.98"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console->_usr_local_bin_agent_tui -->
|
||||
<!-- agent_interactive_console->agent -->
|
||||
<g id="edge16" class="edge">
|
||||
<title>agent_interactive_console->agent</title>
|
||||
<path fill="none" stroke="#333333" d="M354,-252.66C354,-259.76 354,-268.14 354,-276.08"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="350.5,-276.07 354,-286.07 357.5,-276.07 350.5,-276.07"/>
|
||||
</g>
|
||||
<!-- agent_interactive_console->node_zero -->
|
||||
<g id="edge17" class="edge">
|
||||
<title>agent_interactive_console->node_zero</title>
|
||||
<path fill="none" stroke="#333333" d="M324.17,-252.85C309.37,-261.7 291.32,-272.5 275.48,-281.97"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="274.05,-278.76 267.26,-286.89 277.64,-284.76 274.05,-278.76"/>
|
||||
</g>
|
||||
<!-- node_zero->_etc_assisted_node0 -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>node_zero->_etc_assisted_node0</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M247.88,-324.3C252.78,-332.1 258.68,-341.49 264.14,-350.17"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="261.16,-352.01 269.44,-358.61 267.08,-348.29 261.16,-352.01"/>
|
||||
</g>
|
||||
<!-- node_zero->assisted_service_pod -->
|
||||
<g id="edge23" class="edge">
|
||||
<title>node_zero->assisted_service_pod</title>
|
||||
<path fill="none" stroke="#333333" d="M231.24,-324.41C223.27,-348.5 208.78,-392.25 199.28,-420.97"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="195.96,-419.86 196.14,-430.45 202.6,-422.06 195.96,-419.86"/>
|
||||
</g>
|
||||
<!-- oci_eval_user_data -->
|
||||
<g id="node15" class="node">
|
||||
<title>oci_eval_user_data</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M698.25,-36C698.25,-36 629.75,-36 629.75,-36 623.75,-36 617.75,-30 617.75,-24 617.75,-24 617.75,-12 617.75,-12 617.75,-6 623.75,0 629.75,0 629.75,0 698.25,0 698.25,0 704.25,0 710.25,-6 710.25,-12 710.25,-12 710.25,-24 710.25,-24 710.25,-30 704.25,-36 698.25,-36"/>
|
||||
<text text-anchor="middle" x="664" y="-13.75" font-family="Arial" font-size="10.00">oci-eval-user-data</text>
|
||||
</g>
|
||||
<!-- assisted_service_pod->install_status -->
|
||||
<g id="edge26" class="edge">
|
||||
<title>assisted_service_pod->install_status</title>
|
||||
<path fill="none" stroke="#333333" d="M216.97,-468.48C230.61,-477.32 247.34,-488.16 262.05,-497.7"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="259.8,-500.41 270.1,-502.92 263.61,-494.54 259.8,-500.41"/>
|
||||
</g>
|
||||
<!-- assisted_service_pod->agent_start_ui -->
|
||||
<!-- assisted_service_db -->
|
||||
<g id="node18" class="node">
|
||||
<title>assisted_service_db</title>
|
||||
<path fill="#add8e6" stroke="black" d="M126.12,-540C126.12,-540 47.88,-540 47.88,-540 41.88,-540 35.88,-534 35.88,-528 35.88,-528 35.88,-516 35.88,-516 35.88,-510 41.88,-504 47.88,-504 47.88,-504 126.12,-504 126.12,-504 132.12,-504 138.12,-510 138.12,-516 138.12,-516 138.12,-528 138.12,-528 138.12,-534 132.12,-540 126.12,-540"/>
|
||||
<text text-anchor="middle" x="87" y="-517.75" font-family="Arial" font-size="10.00">assisted-service-db</text>
|
||||
</g>
|
||||
<!-- assisted_service_pod->assisted_service_db -->
|
||||
<!-- assisted_service_pod->assisted_service_db -->
|
||||
<g id="edge22" class="edge">
|
||||
<title>assisted_service_pod->assisted_service_db</title>
|
||||
<path fill="none" stroke="#333333" d="M170.46,-468.3C158.37,-477.14 142.53,-488.01 127.86,-497.59"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="126.23,-494.48 119.72,-502.83 130.02,-500.36 126.23,-494.48"/>
|
||||
</g>
|
||||
<!-- assisted_service -->
|
||||
<g id="node19" class="node">
|
||||
<title>assisted_service</title>
|
||||
<path fill="#add8e6" stroke="black" d="M232,-540C232,-540 168,-540 168,-540 162,-540 156,-534 156,-528 156,-528 156,-516 156,-516 156,-510 162,-504 168,-504 168,-504 232,-504 232,-504 238,-504 244,-510 244,-516 244,-516 244,-528 244,-528 244,-534 238,-540 232,-540"/>
|
||||
<text text-anchor="middle" x="200" y="-517.75" font-family="Arial" font-size="10.00">assisted-service</text>
|
||||
</g>
|
||||
<!-- assisted_service_pod->assisted_service -->
|
||||
<g id="edge24" class="edge">
|
||||
<title>assisted_service_pod->assisted_service</title>
|
||||
<path fill="none" stroke="#333333" d="M192.47,-468.3C193.53,-475.68 194.78,-484.48 195.96,-492.75"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="192.46,-492.99 197.34,-502.4 199.39,-492 192.46,-492.99"/>
|
||||
</g>
|
||||
<!-- assisted_service->agent_start_ui -->
|
||||
<g id="edge19" class="edge">
|
||||
<title>assisted_service->agent_start_ui</title>
|
||||
<path fill="none" stroke="#333333" d="M200,-540.3C200,-547.59 200,-556.27 200,-564.46"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="196.5,-564.38 200,-574.38 203.5,-564.38 196.5,-564.38"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 57 KiB |
@@ -0,0 +1,277 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Generated by graphviz version 12.2.1 (20241206.2353)
|
||||
-->
|
||||
<!-- Title: agent_installer_services_unconfigured_ignition Pages: 1 -->
|
||||
<svg width="859pt" height="708pt"
|
||||
viewBox="0.00 0.00 859.25 708.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 704)">
|
||||
<title>agent_installer_services_unconfigured_ignition</title>
|
||||
<polygon fill="white" stroke="none" points="-4,4 -4,-704 855.25,-704 855.25,4 -4,4"/>
|
||||
<g id="clust2" class="cluster">
|
||||
<title>cluster_assisted_service_pod</title>
|
||||
<polygon fill="none" stroke="#666666" stroke-dasharray="5,2" points="363.25,-280 363.25,-692 627.25,-692 627.25,-280 363.25,-280"/>
|
||||
</g>
|
||||
<!-- iscsiadm -->
|
||||
<g id="node1" class="node">
|
||||
<title>iscsiadm</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M43.75,-180C43.75,-180 12.75,-180 12.75,-180 6.75,-180 0.75,-174 0.75,-168 0.75,-168 0.75,-156 0.75,-156 0.75,-150 6.75,-144 12.75,-144 12.75,-144 43.75,-144 43.75,-144 49.75,-144 55.75,-150 55.75,-156 55.75,-156 55.75,-168 55.75,-168 55.75,-174 49.75,-180 43.75,-180"/>
|
||||
<text text-anchor="middle" x="28.25" y="-157.75" font-family="Arial" font-size="10.00">iscsiadm</text>
|
||||
</g>
|
||||
<!-- iscsistart -->
|
||||
<g id="node2" class="node">
|
||||
<title>iscsistart</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M44.5,-108C44.5,-108 12,-108 12,-108 6,-108 0,-102 0,-96 0,-96 0,-84 0,-84 0,-78 6,-72 12,-72 12,-72 44.5,-72 44.5,-72 50.5,-72 56.5,-78 56.5,-84 56.5,-84 56.5,-96 56.5,-96 56.5,-102 50.5,-108 44.5,-108"/>
|
||||
<text text-anchor="middle" x="28.25" y="-85.75" font-family="Arial" font-size="10.00">iscsistart</text>
|
||||
</g>
|
||||
<!-- iscsistart->iscsiadm -->
|
||||
<g id="edge22" class="edge">
|
||||
<title>iscsistart->iscsiadm</title>
|
||||
<path fill="none" stroke="#333333" d="M28.25,-107.95C28.25,-115.43 28.25,-124.42 28.25,-132.86"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="24.75,-132.7 28.25,-142.7 31.75,-132.7 24.75,-132.7"/>
|
||||
</g>
|
||||
<!-- pre_network_manager_config -->
|
||||
<g id="node3" class="node">
|
||||
<title>pre_network_manager_config</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M199.62,-108C199.62,-108 86.87,-108 86.87,-108 80.88,-108 74.88,-102 74.88,-96 74.88,-96 74.88,-84 74.88,-84 74.88,-78 80.88,-72 86.88,-72 86.88,-72 199.62,-72 199.62,-72 205.62,-72 211.62,-78 211.62,-84 211.62,-84 211.62,-96 211.62,-96 211.62,-102 205.62,-108 199.62,-108"/>
|
||||
<text text-anchor="middle" x="143.25" y="-85.75" font-family="Arial" font-size="10.00">pre-network-manager-config</text>
|
||||
</g>
|
||||
<!-- selinux -->
|
||||
<g id="node4" class="node">
|
||||
<title>selinux</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M271.25,-108C271.25,-108 241.25,-108 241.25,-108 235.25,-108 229.25,-102 229.25,-96 229.25,-96 229.25,-84 229.25,-84 229.25,-78 235.25,-72 241.25,-72 241.25,-72 271.25,-72 271.25,-72 277.25,-72 283.25,-78 283.25,-84 283.25,-84 283.25,-96 283.25,-96 283.25,-102 277.25,-108 271.25,-108"/>
|
||||
<text text-anchor="middle" x="256.25" y="-85.75" font-family="Arial" font-size="10.00">selinux</text>
|
||||
</g>
|
||||
<!-- set_hostname -->
|
||||
<g id="node5" class="node">
|
||||
<title>set_hostname</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M363.5,-108C363.5,-108 313,-108 313,-108 307,-108 301,-102 301,-96 301,-96 301,-84 301,-84 301,-78 307,-72 313,-72 313,-72 363.5,-72 363.5,-72 369.5,-72 375.5,-78 375.5,-84 375.5,-84 375.5,-96 375.5,-96 375.5,-102 369.5,-108 363.5,-108"/>
|
||||
<text text-anchor="middle" x="338.25" y="-85.75" font-family="Arial" font-size="10.00">set-hostname</text>
|
||||
</g>
|
||||
<!-- agent -->
|
||||
<g id="node9" class="node">
|
||||
<title>agent</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M366.25,-180C366.25,-180 336.25,-180 336.25,-180 330.25,-180 324.25,-174 324.25,-168 324.25,-168 324.25,-156 324.25,-156 324.25,-150 330.25,-144 336.25,-144 336.25,-144 366.25,-144 366.25,-144 372.25,-144 378.25,-150 378.25,-156 378.25,-156 378.25,-168 378.25,-168 378.25,-174 372.25,-180 366.25,-180"/>
|
||||
<text text-anchor="middle" x="351.25" y="-157.75" font-family="Arial" font-size="10.00">agent</text>
|
||||
</g>
|
||||
<!-- set_hostname->agent -->
|
||||
<g id="edge13" class="edge">
|
||||
<title>set_hostname->agent</title>
|
||||
<path fill="none" stroke="#333333" d="M341.4,-107.95C342.8,-115.51 344.5,-124.63 346.08,-133.15"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="342.59,-133.53 347.86,-142.72 349.47,-132.25 342.59,-133.53"/>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0 -->
|
||||
<g id="node6" class="node">
|
||||
<title>_etc_assisted_node0</title>
|
||||
<polygon fill="#fffacd" stroke="black" points="782,-252 686.5,-252 686.5,-216 788,-216 788,-246 782,-252"/>
|
||||
<polyline fill="none" stroke="black" points="782,-252 782,-246"/>
|
||||
<polyline fill="none" stroke="black" points="788,-246 782,-246"/>
|
||||
<text text-anchor="middle" x="737.25" y="-229.75" font-family="Arial" font-size="10.00">/etc/assisted/node0</text>
|
||||
</g>
|
||||
<!-- install_status -->
|
||||
<g id="node10" class="node">
|
||||
<title>install_status</title>
|
||||
<path fill="#add8e6" stroke="black" d="M697,-396C697,-396 649.5,-396 649.5,-396 643.5,-396 637.5,-390 637.5,-384 637.5,-384 637.5,-372 637.5,-372 637.5,-366 643.5,-360 649.5,-360 649.5,-360 697,-360 697,-360 703,-360 709,-366 709,-372 709,-372 709,-384 709,-384 709,-390 703,-396 697,-396"/>
|
||||
<text text-anchor="middle" x="673.25" y="-373.75" font-family="Arial" font-size="10.00">install-status</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->install_status -->
|
||||
<g id="edge21" class="edge">
|
||||
<title>_etc_assisted_node0->install_status</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M729.4,-252.41C718.45,-276.71 698.48,-321.03 685.54,-349.73"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="682.5,-347.95 681.58,-358.51 688.88,-350.83 682.5,-347.95"/>
|
||||
</g>
|
||||
<!-- assisted_service_pod -->
|
||||
<g id="node14" class="node">
|
||||
<title>assisted_service_pod</title>
|
||||
<path fill="#add8e6" stroke="black" d="M590,-324C590,-324 506.5,-324 506.5,-324 500.5,-324 494.5,-318 494.5,-312 494.5,-312 494.5,-300 494.5,-300 494.5,-294 500.5,-288 506.5,-288 506.5,-288 590,-288 590,-288 596,-288 602,-294 602,-300 602,-300 602,-312 602,-312 602,-318 596,-324 590,-324"/>
|
||||
<text text-anchor="middle" x="548.25" y="-301.75" font-family="Arial" font-size="10.00">assisted-service-pod</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->assisted_service_pod -->
|
||||
<g id="edge19" class="edge">
|
||||
<title>_etc_assisted_node0->assisted_service_pod</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M690.04,-252.48C664.47,-261.96 632.66,-273.74 605.65,-283.74"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="604.76,-280.34 596.6,-287.09 607.19,-286.9 604.76,-280.34"/>
|
||||
</g>
|
||||
<!-- agent_register_cluster -->
|
||||
<g id="node15" class="node">
|
||||
<title>agent_register_cluster</title>
|
||||
<path fill="#add8e6" stroke="black" d="M502.62,-468C502.62,-468 419.88,-468 419.88,-468 413.88,-468 407.88,-462 407.88,-456 407.88,-456 407.88,-444 407.88,-444 407.88,-438 413.88,-432 419.88,-432 419.88,-432 502.62,-432 502.62,-432 508.62,-432 514.62,-438 514.62,-444 514.62,-444 514.62,-456 514.62,-456 514.62,-462 508.62,-468 502.62,-468"/>
|
||||
<text text-anchor="middle" x="461.25" y="-445.75" font-family="Arial" font-size="10.00">agent-register-cluster</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->agent_register_cluster -->
|
||||
<g id="edge9" class="edge">
|
||||
<title>_etc_assisted_node0->agent_register_cluster</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M741.08,-252.43C747.17,-285.16 754.88,-356.08 718.25,-396 692.88,-423.65 593.76,-437.66 526.3,-444.13"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="526.07,-440.64 516.43,-445.05 526.71,-447.61 526.07,-440.64"/>
|
||||
</g>
|
||||
<!-- agent_register_infraenv -->
|
||||
<g id="node16" class="node">
|
||||
<title>agent_register_infraenv</title>
|
||||
<path fill="#add8e6" stroke="black" d="M577.25,-540C577.25,-540 489.25,-540 489.25,-540 483.25,-540 477.25,-534 477.25,-528 477.25,-528 477.25,-516 477.25,-516 477.25,-510 483.25,-504 489.25,-504 489.25,-504 577.25,-504 577.25,-504 583.25,-504 589.25,-510 589.25,-516 589.25,-516 589.25,-528 589.25,-528 589.25,-534 583.25,-540 577.25,-540"/>
|
||||
<text text-anchor="middle" x="533.25" y="-517.75" font-family="Arial" font-size="10.00">agent-register-infraenv</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->agent_register_infraenv -->
|
||||
<g id="edge12" class="edge">
|
||||
<title>_etc_assisted_node0->agent_register_infraenv</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M747.98,-252.26C752.41,-260.36 757.02,-270.34 759.25,-280 771,-330.77 773.02,-353.95 742.25,-396 705.69,-445.96 642.57,-479.66 595.25,-499.36"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="594.15,-496.02 586.2,-503.02 596.78,-502.51 594.15,-496.02"/>
|
||||
</g>
|
||||
<!-- apply_host_config -->
|
||||
<g id="node17" class="node">
|
||||
<title>apply_host_config</title>
|
||||
<path fill="#add8e6" stroke="black" d="M592.62,-612C592.62,-612 527.88,-612 527.88,-612 521.88,-612 515.88,-606 515.88,-600 515.88,-600 515.88,-588 515.88,-588 515.88,-582 521.88,-576 527.88,-576 527.88,-576 592.62,-576 592.62,-576 598.62,-576 604.62,-582 604.62,-588 604.62,-588 604.62,-600 604.62,-600 604.62,-606 598.62,-612 592.62,-612"/>
|
||||
<text text-anchor="middle" x="560.25" y="-589.75" font-family="Arial" font-size="10.00">apply-host-config</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->apply_host_config -->
|
||||
<g id="edge15" class="edge">
|
||||
<title>_etc_assisted_node0->apply_host_config</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M755.26,-252.17C762.81,-260.1 771.22,-269.96 777.25,-280 800.93,-319.42 813.25,-331.02 813.25,-377 813.25,-377 813.25,-377 813.25,-451 813.25,-540.83 690.46,-574.42 615.97,-586.53"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="615.75,-583.02 606.39,-588 616.81,-589.94 615.75,-583.02"/>
|
||||
</g>
|
||||
<!-- start_cluster_installation -->
|
||||
<g id="node20" class="node">
|
||||
<title>start_cluster_installation</title>
|
||||
<path fill="#add8e6" stroke="black" d="M606.88,-684C606.88,-684 513.62,-684 513.62,-684 507.62,-684 501.62,-678 501.62,-672 501.62,-672 501.62,-660 501.62,-660 501.62,-654 507.62,-648 513.62,-648 513.62,-648 606.88,-648 606.88,-648 612.88,-648 618.88,-654 618.88,-660 618.88,-660 618.88,-672 618.88,-672 618.88,-678 612.88,-684 606.88,-684"/>
|
||||
<text text-anchor="middle" x="560.25" y="-661.75" font-family="Arial" font-size="10.00">start-cluster-installation</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_node0->start_cluster_installation -->
|
||||
<g id="edge24" class="edge">
|
||||
<title>_etc_assisted_node0->start_cluster_installation</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M770.3,-252.33C782.09,-259.69 794.78,-269.1 804.25,-280 835.67,-316.16 851.25,-329.09 851.25,-377 851.25,-377 851.25,-377 851.25,-523 851.25,-620.91 716.54,-651.33 630.43,-660.76"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="630.24,-657.26 620.64,-661.76 630.95,-664.23 630.24,-657.26"/>
|
||||
</g>
|
||||
<!-- _etc_assisted_rendezvous_host_env -->
|
||||
<g id="node7" class="node">
|
||||
<title>_etc_assisted_rendezvous_host_env</title>
|
||||
<polygon fill="#fffacd" stroke="black" points="492.88,-108 393.62,-108 393.62,-72 498.88,-72 498.88,-102 492.88,-108"/>
|
||||
<polyline fill="none" stroke="black" points="492.88,-108 492.88,-102"/>
|
||||
<polyline fill="none" stroke="black" points="498.88,-102 492.88,-102"/>
|
||||
<text text-anchor="middle" x="446.25" y="-91" font-family="Arial" font-size="10.00">/etc/assisted/</text>
|
||||
<text text-anchor="middle" x="446.25" y="-80.5" font-family="Arial" font-size="10.00">rendezvous-host.env</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_rendezvous_host_env->agent -->
|
||||
<g id="edge4" class="edge">
|
||||
<title>_etc_assisted_rendezvous_host_env->agent</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M422.77,-108.3C410.83,-117.1 396.14,-127.92 383.19,-137.46"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="381.33,-134.49 375.35,-143.24 385.48,-140.13 381.33,-134.49"/>
|
||||
</g>
|
||||
<!-- node_zero -->
|
||||
<g id="node12" class="node">
|
||||
<title>node_zero</title>
|
||||
<path fill="#add8e6" stroke="black" d="M565.62,-180C565.62,-180 530.88,-180 530.88,-180 524.88,-180 518.88,-174 518.88,-168 518.88,-168 518.88,-156 518.88,-156 518.88,-150 524.88,-144 530.88,-144 530.88,-144 565.62,-144 565.62,-144 571.62,-144 577.62,-150 577.62,-156 577.62,-156 577.62,-168 577.62,-168 577.62,-174 571.62,-180 565.62,-180"/>
|
||||
<text text-anchor="middle" x="548.25" y="-157.75" font-family="Arial" font-size="10.00">node-zero</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_rendezvous_host_env->node_zero -->
|
||||
<g id="edge6" class="edge">
|
||||
<title>_etc_assisted_rendezvous_host_env->node_zero</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M471.73,-108.48C484.48,-117.24 500.1,-127.96 513.9,-137.42"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="511.63,-140.11 521.85,-142.88 515.59,-134.34 511.63,-140.11"/>
|
||||
</g>
|
||||
<!-- assisted_service -->
|
||||
<g id="node19" class="node">
|
||||
<title>assisted_service</title>
|
||||
<path fill="#add8e6" stroke="black" d="M447.25,-396C447.25,-396 383.25,-396 383.25,-396 377.25,-396 371.25,-390 371.25,-384 371.25,-384 371.25,-372 371.25,-372 371.25,-366 377.25,-360 383.25,-360 383.25,-360 447.25,-360 447.25,-360 453.25,-360 459.25,-366 459.25,-372 459.25,-372 459.25,-384 459.25,-384 459.25,-390 453.25,-396 447.25,-396"/>
|
||||
<text text-anchor="middle" x="415.25" y="-373.75" font-family="Arial" font-size="10.00">assisted-service</text>
|
||||
</g>
|
||||
<!-- _etc_assisted_rendezvous_host_env->assisted_service -->
|
||||
<g id="edge5" class="edge">
|
||||
<title>_etc_assisted_rendezvous_host_env->assisted_service</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M444.36,-108.46C439.18,-156.24 424.74,-289.49 418.35,-348.39"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="414.88,-347.94 417.28,-358.26 421.84,-348.7 414.88,-347.94"/>
|
||||
</g>
|
||||
<!-- agent_check_config_image -->
|
||||
<g id="node8" class="node">
|
||||
<title>agent_check_config_image</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M710.38,-180C710.38,-180 608.12,-180 608.12,-180 602.12,-180 596.12,-174 596.12,-168 596.12,-168 596.12,-156 596.12,-156 596.12,-150 602.12,-144 608.12,-144 608.12,-144 710.38,-144 710.38,-144 716.38,-144 722.38,-150 722.38,-156 722.38,-156 722.38,-168 722.38,-168 722.38,-174 716.38,-180 710.38,-180"/>
|
||||
<text text-anchor="middle" x="659.25" y="-157.75" font-family="Arial" font-size="10.00">agent-check-config-image</text>
|
||||
</g>
|
||||
<!-- load_config_iso -->
|
||||
<g id="node11" class="node">
|
||||
<title>load_config_iso</title>
|
||||
<path fill="#6495ed" stroke="black" stroke-width="2" d="M506.25,-36C506.25,-36 386.25,-36 386.25,-36 380.25,-36 374.25,-30 374.25,-24 374.25,-24 374.25,-12 374.25,-12 374.25,-6 380.25,0 386.25,0 386.25,0 506.25,0 506.25,0 512.25,0 518.25,-6 518.25,-12 518.25,-12 518.25,-24 518.25,-24 518.25,-30 512.25,-36 506.25,-36"/>
|
||||
<text text-anchor="middle" x="446.25" y="-13.75" font-family="Arial" font-size="10.00">load-config-iso@</text>
|
||||
</g>
|
||||
<!-- load_config_iso->_etc_assisted_rendezvous_host_env -->
|
||||
<g id="edge3" class="edge">
|
||||
<title>load_config_iso->_etc_assisted_rendezvous_host_env</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M440.3,-36.66C439.58,-43.85 439.34,-52.34 439.6,-60.36"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="436.09,-60.32 440.23,-70.07 443.08,-59.87 436.09,-60.32"/>
|
||||
</g>
|
||||
<!-- load_config_iso->_etc_assisted_rendezvous_host_env -->
|
||||
<!-- node_zero->_etc_assisted_node0 -->
|
||||
<g id="edge7" class="edge">
|
||||
<title>node_zero->_etc_assisted_node0</title>
|
||||
<path fill="none" stroke="#333333" stroke-dasharray="1,5" d="M577.97,-176.21C581.09,-177.52 584.23,-178.81 587.25,-180 616.06,-191.35 648.41,-202.93 675.66,-212.35"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="674.21,-215.55 684.8,-215.49 676.48,-208.93 674.21,-215.55"/>
|
||||
</g>
|
||||
<!-- node_zero->assisted_service_pod -->
|
||||
<g id="edge17" class="edge">
|
||||
<title>node_zero->assisted_service_pod</title>
|
||||
<path fill="none" stroke="#333333" d="M548.25,-180.41C548.25,-204.39 548.25,-247.86 548.25,-276.58"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="544.75,-276.38 548.25,-286.38 551.75,-276.38 544.75,-276.38"/>
|
||||
</g>
|
||||
<!-- oci_eval_user_data -->
|
||||
<g id="node13" class="node">
|
||||
<title>oci_eval_user_data</title>
|
||||
<path fill="#add8e6" stroke="black" stroke-width="0.5" d="M616.5,-36C616.5,-36 548,-36 548,-36 542,-36 536,-30 536,-24 536,-24 536,-12 536,-12 536,-6 542,0 548,0 548,0 616.5,0 616.5,0 622.5,0 628.5,-6 628.5,-12 628.5,-12 628.5,-24 628.5,-24 628.5,-30 622.5,-36 616.5,-36"/>
|
||||
<text text-anchor="middle" x="582.25" y="-13.75" font-family="Arial" font-size="10.00">oci-eval-user-data</text>
|
||||
</g>
|
||||
<!-- assisted_service_pod->install_status -->
|
||||
<g id="edge20" class="edge">
|
||||
<title>assisted_service_pod->install_status</title>
|
||||
<path fill="none" stroke="#333333" d="M579.47,-324.48C595.55,-333.49 615.35,-344.58 632.61,-354.24"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="630.67,-357.17 641.11,-359 634.09,-351.06 630.67,-357.17"/>
|
||||
</g>
|
||||
<!-- assisted_service_pod->agent_register_cluster -->
|
||||
<!-- assisted_service_pod->agent_register_infraenv -->
|
||||
<!-- assisted_service_db -->
|
||||
<g id="node18" class="node">
|
||||
<title>assisted_service_db</title>
|
||||
<path fill="#add8e6" stroke="black" d="M607.38,-396C607.38,-396 529.12,-396 529.12,-396 523.12,-396 517.12,-390 517.12,-384 517.12,-384 517.12,-372 517.12,-372 517.12,-366 523.12,-360 529.12,-360 529.12,-360 607.38,-360 607.38,-360 613.38,-360 619.38,-366 619.38,-372 619.38,-372 619.38,-384 619.38,-384 619.38,-390 613.38,-396 607.38,-396"/>
|
||||
<text text-anchor="middle" x="568.25" y="-373.75" font-family="Arial" font-size="10.00">assisted-service-db</text>
|
||||
</g>
|
||||
<!-- assisted_service_pod->assisted_service_db -->
|
||||
<g id="edge16" class="edge">
|
||||
<title>assisted_service_pod->assisted_service_db</title>
|
||||
<path fill="none" stroke="#333333" d="M553.19,-324.3C555.33,-331.76 557.87,-340.68 560.26,-349.03"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="556.83,-349.79 562.95,-358.44 563.57,-347.86 556.83,-349.79"/>
|
||||
</g>
|
||||
<!-- assisted_service_pod->assisted_service -->
|
||||
<g id="edge18" class="edge">
|
||||
<title>assisted_service_pod->assisted_service</title>
|
||||
<path fill="none" stroke="#333333" d="M515.03,-324.48C497.76,-333.57 476.46,-344.78 457.98,-354.51"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="456.6,-351.28 449.38,-359.03 459.86,-357.47 456.6,-351.28"/>
|
||||
</g>
|
||||
<!-- agent_register_cluster->agent_register_infraenv -->
|
||||
<g id="edge11" class="edge">
|
||||
<title>agent_register_cluster->agent_register_infraenv</title>
|
||||
<path fill="none" stroke="#333333" d="M479.05,-468.3C487.53,-476.55 497.84,-486.57 507.18,-495.65"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="504.71,-498.14 514.32,-502.6 509.59,-493.12 504.71,-498.14"/>
|
||||
</g>
|
||||
<!-- agent_register_infraenv->apply_host_config -->
|
||||
<g id="edge14" class="edge">
|
||||
<title>agent_register_infraenv->apply_host_config</title>
|
||||
<path fill="none" stroke="#333333" d="M539.92,-540.3C542.83,-547.85 546.32,-556.88 549.57,-565.32"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="546.24,-566.41 553.11,-574.48 552.77,-563.89 546.24,-566.41"/>
|
||||
</g>
|
||||
<!-- apply_host_config->start_cluster_installation -->
|
||||
<g id="edge23" class="edge">
|
||||
<title>apply_host_config->start_cluster_installation</title>
|
||||
<path fill="none" stroke="#333333" d="M560.25,-612.3C560.25,-619.59 560.25,-628.27 560.25,-636.46"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="556.75,-636.38 560.25,-646.38 563.75,-636.38 556.75,-636.38"/>
|
||||
</g>
|
||||
<!-- assisted_service->agent_register_cluster -->
|
||||
<g id="edge8" class="edge">
|
||||
<title>assisted_service->agent_register_cluster</title>
|
||||
<path fill="none" stroke="#333333" d="M426.62,-396.3C431.8,-404.19 438.05,-413.7 443.81,-422.45"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="440.76,-424.2 449.18,-430.63 446.61,-420.35 440.76,-424.2"/>
|
||||
</g>
|
||||
<!-- assisted_service->agent_register_infraenv -->
|
||||
<g id="edge10" class="edge">
|
||||
<title>assisted_service->agent_register_infraenv</title>
|
||||
<path fill="none" stroke="#333333" d="M405.28,-396.27C395.68,-415.42 384.6,-446.45 399.25,-468 414.44,-490.35 440.67,-503.27 465.92,-510.75"/>
|
||||
<polygon fill="#333333" stroke="#333333" points="464.99,-514.12 475.56,-513.33 466.81,-507.36 464.99,-514.12"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 20 KiB |
3
docs/user/agent/diagrams/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# Generated .dot files (intermediate products)
|
||||
*.dot
|
||||
__pycache__/
|
||||
37
docs/user/agent/diagrams/Makefile
Normal file
@@ -0,0 +1,37 @@
|
||||
.PHONY: all clean help
|
||||
|
||||
SVG_FILES := ../agent_installer_services-install_workflow.svg \
|
||||
../agent_installer_services-add_nodes_workflow.svg \
|
||||
../agent_installer_services-unconfigured_ignition_and_config_image_flow.svg \
|
||||
../agent_installer_services-interactive.svg
|
||||
DOT_FILES := $(patsubst ../agent_installer_services-%.svg,%.dot,$(SVG_FILES))
|
||||
|
||||
# Find all systemd unit files that the generator depends on
|
||||
SYSTEMD_UNITS := $(wildcard ../../../../data/data/agent/systemd/units/*.service) \
|
||||
$(wildcard ../../../../data/data/agent/systemd/units/*.service.template)
|
||||
|
||||
all: $(SVG_FILES)
|
||||
|
||||
# Generate DOT files from systemd units
|
||||
$(DOT_FILES): generate_diagrams.py $(SYSTEMD_UNITS)
|
||||
python3 generate_diagrams.py
|
||||
|
||||
# Pattern rule: build SVG from DOT file
|
||||
../agent_installer_services-%.svg: %.dot
|
||||
dot -Tsvg $< -o $@
|
||||
|
||||
clean:
|
||||
rm -f $(SVG_FILES) $(DOT_FILES)
|
||||
|
||||
# Help target
|
||||
help:
|
||||
@echo "Available targets:"
|
||||
@echo " all - Generate all SVG diagrams (auto-generates DOT files from systemd units) (default)"
|
||||
@echo " clean - Remove generated SVG and DOT files"
|
||||
@echo " help - Show this help message"
|
||||
@echo ""
|
||||
@echo "The diagrams are auto-generated from systemd units in:"
|
||||
@echo " ../../../../data/data/agent/systemd/units/"
|
||||
@echo ""
|
||||
@echo "Generated files:"
|
||||
@echo " $(SVG_FILES)" | tr ' ' '\n' | sed 's/^/ /'"
|
||||
86
docs/user/agent/diagrams/README.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# Agent Installer Service Diagrams
|
||||
|
||||
This directory contains the auto-generation system for agent installer service workflow diagrams.
|
||||
|
||||
## Structure
|
||||
|
||||
- `generate_diagrams.py` - Python script to auto-generate DOT files from systemd units
|
||||
- `Makefile` - Build script with dependency tracking
|
||||
- `*.dot` - GraphViz DOT source files (generated, not tracked in git)
|
||||
- `.gitignore` - Excludes generated .dot files
|
||||
- `README.md` - This file
|
||||
|
||||
## Diagrams
|
||||
|
||||
The system generates four workflow diagrams:
|
||||
|
||||
1. **install_workflow** - Standard agent-based installation workflow
|
||||
2. **add_nodes_workflow** - Add-nodes workflow (differences highlighted in green)
|
||||
3. **unconfigured_ignition** - Appliance/factory workflow with config image
|
||||
4. **interactive** - Interactive installation workflow using assisted UI
|
||||
|
||||
## Building
|
||||
|
||||
To regenerate the diagrams:
|
||||
|
||||
```bash
|
||||
cd docs/user/agent/diagrams
|
||||
make
|
||||
```
|
||||
|
||||
This single command will:
|
||||
1. Auto-generate `.dot` files from systemd units (if units changed)
|
||||
2. Generate SVG files from the `.dot` files (if `.dot` files changed)
|
||||
|
||||
The diagrams are automatically regenerated when:
|
||||
- Any systemd unit file in `data/data/agent/systemd/units/` changes
|
||||
- The `generate_diagrams.py` script changes
|
||||
|
||||
Output files are created in the parent directory:
|
||||
- `agent_installer_services-install_workflow.svg`
|
||||
- `agent_installer_services-add_nodes_workflow.svg`
|
||||
- `agent_installer_services-unconfigured_ignition_and_config_image_flow.svg`
|
||||
- `agent_installer_services-interactive.svg`
|
||||
|
||||
## How It Works
|
||||
|
||||
The generator parses systemd unit files and extracts:
|
||||
- **Service dependencies**: `Before=` and `After=` directives become edges
|
||||
- **Cluster membership**: `PartOf=` and `BindsTo=` define dashed boxes
|
||||
- **Workflow filters**: `ConditionPathExists` determines which services run in each workflow
|
||||
- **File dependencies**: `ConditionPathExists` on files creates dotted edges
|
||||
|
||||
The system is mostly data-driven with a few hardcoded exceptions:
|
||||
- `load-config-iso@` is triggered by udev (unconfigured_ignition only)
|
||||
- `start-cluster-installation` excluded from interactive (transitive dependency)
|
||||
- `99-agent-copy-files.sh` excluded from interactive (agent-extract-tui provides tui)
|
||||
|
||||
## Diagram Features
|
||||
|
||||
- **Layout**: Bottom-to-top (dependencies flow upward)
|
||||
- **Color coding**:
|
||||
- Light blue - standard services
|
||||
- Dark blue (thick border) - orchestrator services
|
||||
- Thin border - disconnected services
|
||||
- Green border/text - differences in add-nodes workflow
|
||||
- Yellow - configuration files
|
||||
- **Dotted edges**: File creation or conditional dependencies
|
||||
- **Dashed boxes**: Service clusters (PartOf/BindsTo relationships)
|
||||
|
||||
## Requirements
|
||||
|
||||
- GraphViz (`dot` command) must be installed
|
||||
- Fedora/RHEL: `dnf install graphviz`
|
||||
- Ubuntu/Debian: `apt install graphviz`
|
||||
- macOS: `brew install graphviz`
|
||||
- Python 3 (for auto-generation)
|
||||
|
||||
## Cleaning
|
||||
|
||||
To remove all generated files:
|
||||
|
||||
```bash
|
||||
make clean
|
||||
```
|
||||
|
||||
This removes both `.dot` and `.svg` files.
|
||||
796
docs/user/agent/diagrams/generate_diagrams.py
Executable file
@@ -0,0 +1,796 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Generate agent installer service workflow diagrams from systemd unit files.
|
||||
|
||||
Reads systemd unit files from data/data/agent/systemd/units/ and generates
|
||||
GraphViz DOT files showing service dependencies for each workflow.
|
||||
"""
|
||||
|
||||
import re
|
||||
import os
|
||||
from pathlib import Path
|
||||
from typing import Dict, List, Set, Tuple
|
||||
from dataclasses import dataclass, field
|
||||
|
||||
|
||||
@dataclass
|
||||
class SystemdUnit:
|
||||
"""Represents a parsed systemd unit file."""
|
||||
name: str
|
||||
description: str = ""
|
||||
after: List[str] = field(default_factory=list)
|
||||
before: List[str] = field(default_factory=list)
|
||||
requires: List[str] = field(default_factory=list)
|
||||
wants: List[str] = field(default_factory=list)
|
||||
binds_to: List[str] = field(default_factory=list)
|
||||
part_of: List[str] = field(default_factory=list)
|
||||
conflicts: List[str] = field(default_factory=list)
|
||||
condition_path_exists: List[str] = field(default_factory=list)
|
||||
condition_path_not_exists: List[str] = field(default_factory=list)
|
||||
wanted_by: List[str] = field(default_factory=list)
|
||||
is_template: bool = False
|
||||
|
||||
|
||||
class SystemdParser:
|
||||
"""Parse systemd unit files."""
|
||||
|
||||
def __init__(self, units_dir: Path):
|
||||
self.units_dir = units_dir
|
||||
self.units: Dict[str, SystemdUnit] = {}
|
||||
|
||||
def parse_all(self):
|
||||
"""Parse all unit files in the directory."""
|
||||
for file_path in self.units_dir.glob("*.service*"):
|
||||
# Skip template files - we'll handle the base service
|
||||
if file_path.suffix == '.template':
|
||||
# Parse it but with the .template removed from name
|
||||
name = file_path.stem
|
||||
else:
|
||||
name = file_path.name
|
||||
|
||||
unit = self.parse_unit(file_path, name)
|
||||
self.units[name] = unit
|
||||
|
||||
def parse_unit(self, file_path: Path, name: str) -> SystemdUnit:
|
||||
"""Parse a single systemd unit file."""
|
||||
unit = SystemdUnit(name=name)
|
||||
unit.is_template = '@' in name or file_path.suffix == '.template'
|
||||
|
||||
with open(file_path, 'r') as f:
|
||||
content = f.read()
|
||||
|
||||
# Remove Go template syntax for parsing
|
||||
content = re.sub(r'\{\{[^}]+\}\}', '', content)
|
||||
content = re.sub(r'\{\{[^}]+\}\}[^{]*\{\{[^}]+\}\}', '', content, flags=re.DOTALL)
|
||||
|
||||
current_section = None
|
||||
for line in content.splitlines():
|
||||
line = line.strip()
|
||||
|
||||
# Skip comments and empty lines
|
||||
if not line or line.startswith('#') or line.startswith(';'):
|
||||
continue
|
||||
|
||||
# Section headers
|
||||
if line.startswith('[') and line.endswith(']'):
|
||||
current_section = line[1:-1]
|
||||
continue
|
||||
|
||||
# Parse key=value pairs
|
||||
if '=' not in line:
|
||||
continue
|
||||
|
||||
key, value = line.split('=', 1)
|
||||
key = key.strip()
|
||||
value = value.strip()
|
||||
|
||||
# Parse directives
|
||||
if key == 'Description':
|
||||
unit.description = value
|
||||
elif key == 'After':
|
||||
unit.after.extend(self._parse_list(value))
|
||||
elif key == 'Before':
|
||||
unit.before.extend(self._parse_list(value))
|
||||
elif key == 'Requires':
|
||||
unit.requires.extend(self._parse_list(value))
|
||||
elif key == 'Wants':
|
||||
unit.wants.extend(self._parse_list(value))
|
||||
elif key == 'BindsTo':
|
||||
unit.binds_to.extend(self._parse_list(value))
|
||||
elif key == 'PartOf':
|
||||
unit.part_of.extend(self._parse_list(value))
|
||||
elif key == 'Conflicts':
|
||||
unit.conflicts.extend(self._parse_list(value))
|
||||
elif key == 'ConditionPathExists':
|
||||
if value.startswith('!'):
|
||||
unit.condition_path_not_exists.append(value[1:])
|
||||
else:
|
||||
unit.condition_path_exists.append(value)
|
||||
elif key == 'WantedBy' and current_section == 'Install':
|
||||
unit.wanted_by.extend(self._parse_list(value))
|
||||
|
||||
return unit
|
||||
|
||||
def _parse_list(self, value: str) -> List[str]:
|
||||
"""Parse space-separated list of services/targets."""
|
||||
return [item.strip() for item in value.split() if item.strip()]
|
||||
|
||||
|
||||
class WorkflowFilter:
|
||||
"""Filter services by workflow based on conditions."""
|
||||
|
||||
# Workflow discriminators - the key files that distinguish workflows
|
||||
# Other files like /etc/assisted/node0 are created during workflows and aren't discriminators
|
||||
WORKFLOW_DISCRIMINATORS = {
|
||||
'/etc/assisted/add-nodes.env',
|
||||
'/etc/assisted/interactive-ui',
|
||||
'/etc/assisted/rendezvous-host.env',
|
||||
}
|
||||
|
||||
WORKFLOWS = {
|
||||
'install': {
|
||||
# Base workflow - runs when no discriminator files are present
|
||||
'workflow_markers': [],
|
||||
'excluded_markers': ['/etc/assisted/add-nodes.env', '/etc/assisted/interactive-ui',
|
||||
'/etc/assisted/rendezvous-host.env'],
|
||||
},
|
||||
'add_nodes': {
|
||||
'workflow_markers': ['/etc/assisted/add-nodes.env'],
|
||||
'excluded_markers': ['/etc/assisted/interactive-ui', '/etc/assisted/rendezvous-host.env'],
|
||||
},
|
||||
'interactive': {
|
||||
'workflow_markers': ['/etc/assisted/interactive-ui', '/etc/assisted/rendezvous-host.env'],
|
||||
'excluded_markers': ['/etc/assisted/add-nodes.env'],
|
||||
},
|
||||
'unconfigured_ignition': {
|
||||
'workflow_markers': ['/etc/assisted/rendezvous-host.env'],
|
||||
'excluded_markers': ['/etc/assisted/add-nodes.env', '/etc/assisted/interactive-ui'],
|
||||
},
|
||||
}
|
||||
|
||||
def _get_transitive_requirements(self, unit: SystemdUnit, units: Dict[str, SystemdUnit],
|
||||
visited: Set[str] = None) -> Set[str]:
|
||||
"""Get all services transitively required by this unit."""
|
||||
if visited is None:
|
||||
visited = set()
|
||||
|
||||
if unit.name in visited:
|
||||
return set()
|
||||
|
||||
visited.add(unit.name)
|
||||
requirements = set()
|
||||
|
||||
# Add direct requirements
|
||||
for req in unit.requires + unit.binds_to:
|
||||
if req in units:
|
||||
requirements.add(req)
|
||||
# Recursively get requirements of requirements
|
||||
requirements.update(self._get_transitive_requirements(units[req], units, visited))
|
||||
|
||||
return requirements
|
||||
|
||||
def filter_workflow(self, units: Dict[str, SystemdUnit], workflow: str) -> Set[str]:
|
||||
"""Return set of service names for the given workflow.
|
||||
|
||||
A service is included if:
|
||||
1. It has NO conditions on workflow discriminator files (runs in all workflows), OR
|
||||
2. It requires a workflow marker that matches this workflow, OR
|
||||
3. It excludes all markers that this workflow excludes (compatible negative conditions)
|
||||
4. It doesn't transitively require a service that is disabled in this workflow
|
||||
"""
|
||||
config = self.WORKFLOWS[workflow]
|
||||
filtered = set()
|
||||
|
||||
# First pass: determine which services are directly enabled/disabled
|
||||
for name, unit in units.items():
|
||||
# Skip system targets
|
||||
if '.target' in name:
|
||||
continue
|
||||
|
||||
# Hard-coded exclusions based on information outside systemd units
|
||||
# load-config-iso@ is started by udev rule only in unconfigured_ignition
|
||||
if name == 'load-config-iso@.service' and workflow != 'unconfigured_ignition':
|
||||
continue
|
||||
# agent-check-config-image only runs with load-config-iso@
|
||||
if name == 'agent-check-config-image.service' and workflow != 'unconfigured_ignition':
|
||||
continue
|
||||
# agent-interactive-console services are disabled in Go code for unconfigured_ignition workflow
|
||||
if name in ('agent-interactive-console.service', 'agent-interactive-console-serial@.service'):
|
||||
if workflow == 'unconfigured_ignition':
|
||||
continue
|
||||
|
||||
# Check if service has conditions on workflow discriminator files
|
||||
discriminator_conditions_positive = set()
|
||||
discriminator_conditions_negative = set()
|
||||
|
||||
for cond in unit.condition_path_exists:
|
||||
if cond in self.WORKFLOW_DISCRIMINATORS:
|
||||
discriminator_conditions_positive.add(cond)
|
||||
|
||||
for cond in unit.condition_path_not_exists:
|
||||
if cond in self.WORKFLOW_DISCRIMINATORS:
|
||||
discriminator_conditions_negative.add(cond)
|
||||
|
||||
# Case 1: Service has NO conditions on discriminator files - runs in all workflows
|
||||
if not discriminator_conditions_positive and not discriminator_conditions_negative:
|
||||
filtered.add(name)
|
||||
continue
|
||||
|
||||
# Case 2: Service requires workflow markers - ALL positive conditions must be satisfied
|
||||
# For example, agent-extract-tui requires both rendezvous-host.env AND interactive-ui
|
||||
if discriminator_conditions_positive:
|
||||
# Check if ALL required discriminators are present in this workflow's markers
|
||||
all_satisfied = discriminator_conditions_positive.issubset(set(config['workflow_markers']))
|
||||
if all_satisfied:
|
||||
filtered.add(name)
|
||||
continue
|
||||
|
||||
# Case 3: Service excludes markers, check if compatible with this workflow
|
||||
# Service is compatible if it doesn't require any markers this workflow excludes
|
||||
# and it doesn't exclude any markers this workflow requires
|
||||
if discriminator_conditions_negative:
|
||||
conflicts = False
|
||||
|
||||
# Service requires markers that this workflow excludes?
|
||||
for req_marker in discriminator_conditions_positive:
|
||||
if req_marker in config['excluded_markers']:
|
||||
conflicts = True
|
||||
break
|
||||
|
||||
# Service excludes markers that this workflow requires?
|
||||
if not conflicts:
|
||||
for req_marker in config['workflow_markers']:
|
||||
if req_marker in discriminator_conditions_negative:
|
||||
conflicts = True
|
||||
break
|
||||
|
||||
if not conflicts:
|
||||
filtered.add(name)
|
||||
|
||||
# Second pass: remove services that transitively require disabled services
|
||||
disabled = set(units.keys()) - filtered - {name for name in units if '.target' in name}
|
||||
to_remove = set()
|
||||
|
||||
for name in filtered:
|
||||
unit = units[name]
|
||||
transitive_reqs = self._get_transitive_requirements(unit, units)
|
||||
# If any transitive requirement is disabled, this service is also disabled
|
||||
if transitive_reqs & disabled:
|
||||
to_remove.add(name)
|
||||
|
||||
filtered -= to_remove
|
||||
|
||||
return filtered
|
||||
|
||||
|
||||
class GraphVizGenerator:
|
||||
"""Generate GraphViz DOT files from systemd units."""
|
||||
|
||||
# Styling configuration
|
||||
ORCHESTRATOR_SERVICES = {
|
||||
'agent-interactive-console.service',
|
||||
'agent-interactive-console-serial@.service',
|
||||
'load-config-iso@.service',
|
||||
}
|
||||
|
||||
# Files to show in diagrams
|
||||
IMPORTANT_FILES = {
|
||||
'/usr/local/bin/agent-tui',
|
||||
'/usr/lib/dracut/hooks/pre-pivot/99-agent-copy-files.sh',
|
||||
'/etc/assisted/node0',
|
||||
'/etc/assisted/rendezvous-host.env',
|
||||
}
|
||||
|
||||
def __init__(self, units: Dict[str, SystemdUnit], install_services: Set[str] = None):
|
||||
self.units = units
|
||||
self.install_services = install_services or set()
|
||||
|
||||
def _find_reachable_from_pod(self, services: Set[str]) -> Set[str]:
|
||||
"""Find all services reachable from assisted-service-pod via dependencies."""
|
||||
if 'assisted-service-pod.service' not in services:
|
||||
return set()
|
||||
|
||||
reachable = set()
|
||||
to_visit = ['assisted-service-pod.service']
|
||||
|
||||
while to_visit:
|
||||
current = to_visit.pop()
|
||||
if current in reachable:
|
||||
continue
|
||||
reachable.add(current)
|
||||
|
||||
# Follow Before dependencies (what runs before this service)
|
||||
if current in self.units:
|
||||
unit = self.units[current]
|
||||
for dep in unit.before:
|
||||
if dep in services and dep not in reachable:
|
||||
to_visit.append(dep)
|
||||
|
||||
# Follow After dependencies backwards (what this runs after)
|
||||
for dep in unit.after:
|
||||
if dep in services and dep not in reachable:
|
||||
to_visit.append(dep)
|
||||
|
||||
# Also check who lists this service as Before/After
|
||||
for svc_name in services:
|
||||
if svc_name in reachable:
|
||||
continue
|
||||
if svc_name not in self.units:
|
||||
continue
|
||||
other_unit = self.units[svc_name]
|
||||
if current in other_unit.after or current in other_unit.before:
|
||||
if svc_name not in reachable:
|
||||
to_visit.append(svc_name)
|
||||
|
||||
return reachable
|
||||
|
||||
def _compute_workflow_differences(self, workflow: str, services: Set[str]) -> Set[str]:
|
||||
"""Compute services that differ from install workflow."""
|
||||
if workflow != 'add_nodes' or not self.install_services:
|
||||
return set()
|
||||
|
||||
# Services in add-nodes but not in install
|
||||
only_in_add_nodes = services - self.install_services
|
||||
|
||||
# Services that have different conditions or are marked differently
|
||||
differences = set(only_in_add_nodes)
|
||||
|
||||
# Special case: node-zero exists in both but gets an asterisk in add-nodes
|
||||
if 'node-zero.service' in services and 'node-zero.service' in self.install_services:
|
||||
differences.add('node-zero.service')
|
||||
|
||||
return differences
|
||||
|
||||
def generate_workflow(self, workflow: str, services: Set[str]) -> str:
|
||||
"""Generate GraphViz DOT for a workflow."""
|
||||
lines = []
|
||||
|
||||
# Header
|
||||
graph_name = f"agent_installer_services_{workflow}_workflow" if workflow != 'unconfigured_ignition' else "agent_installer_services_unconfigured_ignition"
|
||||
lines.append(f"digraph {graph_name} {{")
|
||||
lines.append(" rankdir=BT;")
|
||||
lines.append(" ranksep=0.5;")
|
||||
lines.append(' node [shape=box, style="rounded,filled", fillcolor="#ADD8E6", fontname="Arial", fontsize=10, penwidth=1];')
|
||||
lines.append(' edge [color="#333333"];')
|
||||
lines.append("")
|
||||
|
||||
# Collect files referenced in conditions
|
||||
files = self._collect_files(services, workflow)
|
||||
|
||||
# Special handling for unconfigured_ignition workflow
|
||||
if workflow == 'unconfigured_ignition' and 'load-config-iso@.service' in services:
|
||||
files.add('/etc/assisted/rendezvous-host.env')
|
||||
|
||||
# Compute disconnected services and workflow differences
|
||||
reachable_from_pod = self._find_reachable_from_pod(services)
|
||||
disconnected = services - reachable_from_pod
|
||||
workflow_differences = self._compute_workflow_differences(workflow, services)
|
||||
|
||||
# Group services by type
|
||||
foundation = self._get_foundation_services(services)
|
||||
initramfs = self._get_initramfs_files(files)
|
||||
clusters = self._find_clusters(services)
|
||||
# Flatten all cluster members to exclude from regular services
|
||||
cluster_members = set()
|
||||
for members in clusters.values():
|
||||
cluster_members.update(members)
|
||||
regular = services - foundation - cluster_members
|
||||
|
||||
# Foundation services
|
||||
if foundation:
|
||||
lines.append(" // Bottom row - foundation services")
|
||||
lines.append(" {")
|
||||
lines.append(' node [fillcolor="#ADD8E6"];')
|
||||
for svc in sorted(foundation):
|
||||
label = svc.replace('.service', '')
|
||||
style = ""
|
||||
# Disconnected services get thin border
|
||||
if svc in disconnected:
|
||||
style = ', penwidth=0.5'
|
||||
# Workflow differences get green styling
|
||||
elif svc in workflow_differences:
|
||||
style = ', color="#006400", fontcolor="#006400", penwidth=2'
|
||||
if svc == 'node-zero.service':
|
||||
label += '*'
|
||||
lines.append(f' {self._service_to_id(svc)} [label="{label}"{style}];')
|
||||
lines.append(" }")
|
||||
lines.append("")
|
||||
|
||||
# Files
|
||||
if files:
|
||||
lines.append(" // Files (document style)")
|
||||
lines.append(' node [shape=note, fillcolor="#FFFACD"];')
|
||||
for file_path in sorted(files):
|
||||
file_id = self._file_to_id(file_path)
|
||||
label = file_path
|
||||
fillcolor = '#FFFACD'
|
||||
if '99-agent-copy-files' in file_path:
|
||||
fillcolor = '#F5DEB3'
|
||||
label = label.replace('/usr/lib/dracut/hooks/pre-pivot/', '') # Shorten for display
|
||||
if 'rendezvous-host.env' in file_path:
|
||||
label = '/etc/assisted/\\nrendezvous-host.env'
|
||||
lines.append(f' {file_id} [label="{label}", fillcolor="{fillcolor}"];')
|
||||
lines.append("")
|
||||
|
||||
# Regular services
|
||||
if regular:
|
||||
lines.append(" // Middle services")
|
||||
lines.append(' node [shape=box, style="rounded,filled", fillcolor="#ADD8E6", penwidth=1];')
|
||||
for svc in sorted(regular):
|
||||
label = svc.replace('.service', '')
|
||||
style = []
|
||||
if svc in self.ORCHESTRATOR_SERVICES:
|
||||
style.append('fillcolor="#6495ED"')
|
||||
style.append('penwidth=2')
|
||||
elif svc in workflow_differences:
|
||||
style.append('color="#006400"')
|
||||
style.append('fontcolor="#006400"')
|
||||
style.append('penwidth=2')
|
||||
if svc == 'node-zero.service':
|
||||
label += '*'
|
||||
elif svc in disconnected:
|
||||
style.append('penwidth=0.5')
|
||||
if svc == 'load-config-iso@.service':
|
||||
style.append('width=2.0')
|
||||
|
||||
style_str = ', ' + ', '.join(style) if style else ''
|
||||
lines.append(f' {self._service_to_id(svc)} [label="{label}"{style_str}];')
|
||||
lines.append("")
|
||||
|
||||
# Clusters (dynamically generated from PartOf relationships)
|
||||
for cluster_idx, (parent_svc, cluster_members) in enumerate(sorted(clusters.items())):
|
||||
parent_id = self._service_to_id(parent_svc)
|
||||
cluster_name = f"cluster_{parent_id}"
|
||||
|
||||
lines.append(f" // Cluster: {parent_svc.replace('.service', '')}")
|
||||
lines.append(f" subgraph {cluster_name} {{")
|
||||
lines.append(' label="";')
|
||||
lines.append(' style=dashed;')
|
||||
lines.append(' color="#666666";')
|
||||
lines.append(' fillcolor="#FFFFFF";')
|
||||
lines.append("")
|
||||
|
||||
for svc in cluster_members:
|
||||
label = svc.replace('.service', '')
|
||||
style = ', fillcolor="#ADD8E6"'
|
||||
if svc in workflow_differences:
|
||||
style = ', fillcolor="#ADD8E6", color="#006400", fontcolor="#006400", penwidth=2'
|
||||
lines.append(f' {self._service_to_id(svc)} [label="{label}"{style}];')
|
||||
lines.append("")
|
||||
|
||||
# Invisible edges for layout (parent to children)
|
||||
if len(cluster_members) > 1:
|
||||
for child in cluster_members[1:3]: # First 2 children
|
||||
child_id = self._service_to_id(child)
|
||||
lines.append(f" {parent_id} -> {child_id} [style=invis];")
|
||||
|
||||
lines.append(" }")
|
||||
lines.append("")
|
||||
|
||||
# Dependencies
|
||||
lines.append(" // Dependencies (bottom to top flow)")
|
||||
lines.append("")
|
||||
lines.extend(self._generate_dependencies(services, files, workflow))
|
||||
|
||||
# Rank constraints
|
||||
lines.append(" // Rank constraints for better layout")
|
||||
lines.extend(self._generate_rank_constraints(services, files, workflow))
|
||||
|
||||
lines.append("}")
|
||||
|
||||
return '\n'.join(lines)
|
||||
|
||||
def _service_to_id(self, service: str) -> str:
|
||||
"""Convert service name to GraphViz identifier."""
|
||||
return service.replace('.service', '').replace('@', '').replace('-', '_')
|
||||
|
||||
def _file_to_id(self, file_path: str) -> str:
|
||||
"""Convert file path to GraphViz identifier."""
|
||||
return file_path.replace('/', '_').replace('.', '_').replace('-', '_')
|
||||
|
||||
def _collect_files(self, services: Set[str], workflow: str) -> Set[str]:
|
||||
"""Collect important file paths referenced by services."""
|
||||
files = set()
|
||||
for svc_name in services:
|
||||
if svc_name not in self.units:
|
||||
continue
|
||||
unit = self.units[svc_name]
|
||||
for path in unit.condition_path_exists + unit.condition_path_not_exists:
|
||||
if path in self.IMPORTANT_FILES:
|
||||
files.add(path)
|
||||
|
||||
# Add dracut copy-files hook if agent-tui is present
|
||||
# In interactive workflow, agent-extract-tui provides agent-tui, not the copy-files hook
|
||||
if '/usr/local/bin/agent-tui' in files and workflow != 'interactive':
|
||||
files.add('/usr/lib/dracut/hooks/pre-pivot/99-agent-copy-files.sh')
|
||||
|
||||
return files
|
||||
|
||||
def _get_foundation_services(self, services: Set[str]) -> Set[str]:
|
||||
"""Get foundation services (bottom row)."""
|
||||
foundation = {
|
||||
'selinux.service',
|
||||
'pre-network-manager-config.service',
|
||||
'set-hostname.service',
|
||||
'iscsistart.service',
|
||||
'iscsiadm.service',
|
||||
'agent-auth-token-status.service', # For add-nodes
|
||||
'agent-extract-tui.service', # For interactive
|
||||
}
|
||||
return foundation & services
|
||||
|
||||
def _get_initramfs_files(self, files: Set[str]) -> Set[str]:
|
||||
"""Get initramfs-related files."""
|
||||
return {f for f in files if 'dracut' in f or 'agent-tui' in f}
|
||||
|
||||
def _find_clusters(self, services: Set[str]) -> Dict[str, List[str]]:
|
||||
"""Find all clusters based on PartOf and BindsTo relationships.
|
||||
Returns dict mapping parent service -> list of child services (including parent itself)."""
|
||||
clusters = {}
|
||||
|
||||
# Find all services that have other services with PartOf or BindsTo pointing to them
|
||||
for svc_name in services:
|
||||
if svc_name not in self.units:
|
||||
continue
|
||||
unit = self.units[svc_name]
|
||||
|
||||
# Check PartOf relationships
|
||||
for part_of_target in unit.part_of:
|
||||
if part_of_target in services:
|
||||
# This service is part of a cluster
|
||||
if part_of_target not in clusters:
|
||||
clusters[part_of_target] = [part_of_target]
|
||||
if svc_name not in clusters[part_of_target]:
|
||||
clusters[part_of_target].append(svc_name)
|
||||
|
||||
# Check BindsTo relationships (similar to PartOf for clustering purposes)
|
||||
for binds_to_target in unit.binds_to:
|
||||
if binds_to_target in services:
|
||||
# This service binds to a cluster parent
|
||||
if binds_to_target not in clusters:
|
||||
clusters[binds_to_target] = [binds_to_target]
|
||||
if svc_name not in clusters[binds_to_target]:
|
||||
clusters[binds_to_target].append(svc_name)
|
||||
|
||||
# Sort members of each cluster for consistent output
|
||||
for parent in clusters:
|
||||
# Keep parent first, then alphabetically sort the rest
|
||||
members = clusters[parent]
|
||||
parent_item = [parent] if parent in members else []
|
||||
others = sorted([s for s in members if s != parent])
|
||||
clusters[parent] = parent_item + others
|
||||
|
||||
return clusters
|
||||
|
||||
def _get_pod_services(self, services: Set[str], workflow: str) -> List[str]:
|
||||
"""Get services that belong in the pod cluster, inferred from PartOf/BindsTo.
|
||||
DEPRECATED: Use _find_clusters instead."""
|
||||
clusters = self._find_clusters(services)
|
||||
# Return the assisted-service-pod cluster if it exists
|
||||
return clusters.get('assisted-service-pod.service', [])
|
||||
|
||||
def _generate_dependencies(self, services: Set[str], files: Set[str], workflow: str) -> List[str]:
|
||||
"""Generate dependency edges."""
|
||||
lines = []
|
||||
edges_added = set()
|
||||
|
||||
# Special handling for initramfs files
|
||||
if '/usr/lib/dracut/hooks/pre-pivot/99-agent-copy-files.sh' in files and '/usr/local/bin/agent-tui' in files:
|
||||
lines.append(" // File preparation (initramfs phase on the left)")
|
||||
copy_id = self._file_to_id('/usr/lib/dracut/hooks/pre-pivot/99-agent-copy-files.sh')
|
||||
tui_id = self._file_to_id('/usr/local/bin/agent-tui')
|
||||
edge1 = (copy_id, tui_id)
|
||||
if edge1 not in edges_added:
|
||||
lines.append(f" {copy_id} -> {tui_id} [style=dotted, weight=10];")
|
||||
edges_added.add(edge1)
|
||||
if 'agent-interactive-console.service' in services:
|
||||
edge2 = (tui_id, 'agent_interactive_console')
|
||||
if edge2 not in edges_added:
|
||||
lines.append(f" {tui_id} -> agent_interactive_console [style=dotted, weight=1];")
|
||||
edges_added.add(edge2)
|
||||
lines.append("")
|
||||
|
||||
# Special handling for unconfigured_ignition workflow
|
||||
# load-config-iso creates rendezvous-host.env which is needed by agent and assisted-service
|
||||
if workflow == 'unconfigured_ignition' and 'load-config-iso@.service' in services:
|
||||
lines.append(" // Config image loading and file creation")
|
||||
rendezvous_file = '/etc/assisted/rendezvous-host.env'
|
||||
if rendezvous_file in files:
|
||||
rendezvous_id = self._file_to_id(rendezvous_file)
|
||||
# load-config-iso creates the file
|
||||
edge = ('load_config_iso', rendezvous_id)
|
||||
if edge not in edges_added:
|
||||
lines.append(f" load_config_iso -> {rendezvous_id} [style=dotted];")
|
||||
edges_added.add(edge)
|
||||
# Services that need this file
|
||||
for svc in ['agent.service', 'assisted-service.service', 'node-zero.service']:
|
||||
if svc in services:
|
||||
svc_id = self._service_to_id(svc)
|
||||
edge = (rendezvous_id, svc_id)
|
||||
if edge not in edges_added:
|
||||
lines.append(f" {rendezvous_id} -> {svc_id} [style=dotted];")
|
||||
edges_added.add(edge)
|
||||
lines.append("")
|
||||
|
||||
# Show that node-zero creates /etc/assisted/node0
|
||||
if 'node-zero.service' in services and '/etc/assisted/node0' in files:
|
||||
node0_id = self._file_to_id('/etc/assisted/node0')
|
||||
edge = ('node_zero', node0_id)
|
||||
if edge not in edges_added:
|
||||
lines.append(" // File creation during workflow")
|
||||
lines.append(f" node_zero -> {node0_id} [style=dotted];")
|
||||
edges_added.add(edge)
|
||||
lines.append("")
|
||||
|
||||
# Show that agent-extract-tui creates /usr/local/bin/agent-tui
|
||||
if 'agent-extract-tui.service' in services and '/usr/local/bin/agent-tui' in files:
|
||||
tui_id = self._file_to_id('/usr/local/bin/agent-tui')
|
||||
edge = ('agent_extract_tui', tui_id)
|
||||
if edge not in edges_added:
|
||||
lines.append(" // TUI binary extraction in interactive workflow")
|
||||
lines.append(f" agent_extract_tui -> {tui_id} [style=dotted];")
|
||||
edges_added.add(edge)
|
||||
lines.append("")
|
||||
|
||||
# Service dependencies from systemd After= and Before= directives
|
||||
dep_lines = []
|
||||
for svc_name in sorted(services):
|
||||
if svc_name not in self.units:
|
||||
continue
|
||||
unit = self.units[svc_name]
|
||||
svc_id = self._service_to_id(svc_name)
|
||||
|
||||
# After dependencies (reverse direction for bottom-up graph)
|
||||
for dep in unit.after:
|
||||
if dep.endswith('.service') and dep in services:
|
||||
dep_id = self._service_to_id(dep)
|
||||
edge = (dep_id, svc_id)
|
||||
if edge not in edges_added:
|
||||
dep_lines.append(f" {dep_id} -> {svc_id};")
|
||||
edges_added.add(edge)
|
||||
|
||||
# Before dependencies (forward direction for bottom-up graph)
|
||||
for dep in unit.before:
|
||||
if dep.endswith('.service') and dep in services:
|
||||
dep_id = self._service_to_id(dep)
|
||||
edge = (svc_id, dep_id)
|
||||
if edge not in edges_added:
|
||||
dep_lines.append(f" {svc_id} -> {dep_id};")
|
||||
edges_added.add(edge)
|
||||
|
||||
# File dependencies
|
||||
for path in unit.condition_path_exists:
|
||||
if path in files:
|
||||
file_id = self._file_to_id(path)
|
||||
edge = (file_id, svc_id)
|
||||
if edge not in edges_added:
|
||||
dep_lines.append(f" {file_id} -> {svc_id} [style=dotted];")
|
||||
edges_added.add(edge)
|
||||
|
||||
if dep_lines:
|
||||
lines.append(" // Service dependencies")
|
||||
lines.extend(dep_lines)
|
||||
lines.append("")
|
||||
|
||||
return lines
|
||||
|
||||
def _generate_rank_constraints(self, services: Set[str], files: Set[str], workflow: str) -> List[str]:
|
||||
"""Generate rank constraints for layout."""
|
||||
lines = []
|
||||
|
||||
# Bottom row
|
||||
foundation = ['selinux', 'pre_network_manager_config', 'set_hostname', 'iscsistart']
|
||||
|
||||
# Add initramfs file if present
|
||||
if '/usr/lib/dracut/hooks/pre-pivot/99-agent-copy-files.sh' in files:
|
||||
copy_id = self._file_to_id('/usr/lib/dracut/hooks/pre-pivot/99-agent-copy-files.sh')
|
||||
foundation.insert(0, copy_id)
|
||||
|
||||
lines.append(" {rank=same; " + "; ".join(foundation) + ";}")
|
||||
|
||||
# Agent-tui file
|
||||
if '/usr/local/bin/agent-tui' in files:
|
||||
tui_id = self._file_to_id('/usr/local/bin/agent-tui')
|
||||
lines.append(f" {{rank=same; {tui_id};}}")
|
||||
|
||||
# Interactive console / load-config-iso
|
||||
if 'agent-interactive-console.service' in services:
|
||||
lines.append(" {rank=same; agent_interactive_console;}")
|
||||
elif 'load-config-iso@.service' in services:
|
||||
lines.append(" {rank=same; load_config_iso;}")
|
||||
|
||||
# Rendezvous-host.env
|
||||
if '/etc/assisted/rendezvous-host.env' in files:
|
||||
env_id = self._file_to_id('/etc/assisted/rendezvous-host.env')
|
||||
lines.append(f" {{rank=same; {env_id};}}")
|
||||
|
||||
# Agent, node-zero
|
||||
middle = []
|
||||
if 'agent.service' in services:
|
||||
middle.append('agent')
|
||||
if 'agent-check-config-image.service' in services:
|
||||
middle.append('agent_check_config_image')
|
||||
if 'node-zero.service' in services:
|
||||
middle.append('node_zero')
|
||||
if middle:
|
||||
lines.append(" {rank=same; " + "; ".join(middle) + ";}")
|
||||
|
||||
# Invisible edges for layout to keep initramfs files on the left
|
||||
if '/usr/local/bin/agent-tui' in files:
|
||||
tui_id = self._file_to_id('/usr/local/bin/agent-tui')
|
||||
if 'agent-interactive-console.service' in services:
|
||||
lines.append(f" agent_interactive_console -> {tui_id} [style=invis, constraint=false];")
|
||||
if 'agent-interactive-console-serial@.service' in services:
|
||||
lines.append(f" agent_interactive_console_serial -> {tui_id} [style=invis, constraint=false];")
|
||||
|
||||
# Force copy-files to be on the far left
|
||||
# Create invisible edges to establish left-to-right ordering in the bottom rank
|
||||
if '/usr/lib/dracut/hooks/pre-pivot/99-agent-copy-files.sh' in files:
|
||||
copy_id = self._file_to_id('/usr/lib/dracut/hooks/pre-pivot/99-agent-copy-files.sh')
|
||||
# Create chain: copy-files → selinux → pre-network-manager-config → ...
|
||||
lines.append(f" {copy_id} -> selinux [style=invis];")
|
||||
# Continue the chain to establish full ordering
|
||||
lines.append(f" selinux -> pre_network_manager_config [style=invis];")
|
||||
lines.append(f" pre_network_manager_config -> set_hostname [style=invis];")
|
||||
if 'iscsistart.service' in services:
|
||||
lines.append(f" set_hostname -> iscsistart [style=invis];")
|
||||
|
||||
# Keep config-image files on the left in unconfigured_ignition workflow
|
||||
if workflow == 'unconfigured_ignition':
|
||||
if 'load-config-iso@.service' in services and '/etc/assisted/rendezvous-host.env' in files:
|
||||
env_id = self._file_to_id('/etc/assisted/rendezvous-host.env')
|
||||
lines.append(f" load_config_iso -> {env_id} [style=invis, constraint=false];")
|
||||
|
||||
return lines
|
||||
|
||||
|
||||
def main():
|
||||
"""Generate all workflow diagrams."""
|
||||
script_dir = Path(__file__).parent
|
||||
# Go up to project root and find units directory
|
||||
project_root = script_dir.parent.parent.parent.parent
|
||||
units_dir = project_root / "data" / "data" / "agent" / "systemd" / "units"
|
||||
|
||||
if not units_dir.exists():
|
||||
print(f"Error: Units directory not found: {units_dir}")
|
||||
return 1
|
||||
|
||||
print(f"Parsing systemd units from: {units_dir}")
|
||||
parser = SystemdParser(units_dir)
|
||||
parser.parse_all()
|
||||
print(f"Parsed {len(parser.units)} unit files")
|
||||
|
||||
# Filter by workflow
|
||||
filter_engine = WorkflowFilter()
|
||||
|
||||
workflows = {
|
||||
'install_workflow': 'install',
|
||||
'add_nodes_workflow': 'add_nodes',
|
||||
'interactive': 'interactive',
|
||||
'unconfigured_ignition_and_config_image_flow': 'unconfigured_ignition',
|
||||
}
|
||||
|
||||
# First get install services for comparison
|
||||
install_services = filter_engine.filter_workflow(parser.units, 'install')
|
||||
generator = GraphVizGenerator(parser.units, install_services)
|
||||
|
||||
for output_name, workflow_key in workflows.items():
|
||||
services = filter_engine.filter_workflow(parser.units, workflow_key)
|
||||
print(f"\nGenerating {output_name}: {len(services)} services")
|
||||
|
||||
dot_content = generator.generate_workflow(workflow_key, services)
|
||||
output_file = script_dir / f"{output_name}.dot"
|
||||
|
||||
with open(output_file, 'w') as f:
|
||||
f.write(dot_content)
|
||||
|
||||
print(f" Written to: {output_file}")
|
||||
|
||||
print("\nGeneration complete!")
|
||||
print("Run 'make' to regenerate PNG files from the updated DOT sources")
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
exit(main())
|
||||