From 640ff61422bc0ee3966941b93d9889ddbbd38d77 Mon Sep 17 00:00:00 2001 From: ckonstanski Date: Thu, 30 Jul 2026 18:17:14 -0600 Subject: more files --- doc/uml/hardware_install_activity_diagram.dot | 209 ++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 doc/uml/hardware_install_activity_diagram.dot (limited to 'doc/uml/hardware_install_activity_diagram.dot') diff --git a/doc/uml/hardware_install_activity_diagram.dot b/doc/uml/hardware_install_activity_diagram.dot new file mode 100644 index 0000000..446773f --- /dev/null +++ b/doc/uml/hardware_install_activity_diagram.dot @@ -0,0 +1,209 @@ +// This is a graphviz file. To generate a diagram from this source, +// you must first install graphviz (available from homebrew). Then run +// the following command: +// +// dot -Tpng -o hardware_install_activity_diagram.png hardware_install_activity_diagram.dot + +digraph G { + graph [fontsize = 14, penwidth = 0, rankdir = LR]; + node [shape = "rect"]; + edge [fontzize = 9, arrowhead = "empty"]; + + subgraph cluster_activity { + label = "CaaS/PaaS Hardware Installation"; + color = black; + start_automation [shape = "circle", style = "filled", color = "grey", label = "Start\nautomation"]; + start_server_install [shape = "circle", style = "filled", color = "grey", label = "Start\nphysical server\ninstallation"]; + start_monitoring [shape = "circle", style = "filled", color = "grey", label = "Start\nmonitoring"]; + end_monitoring_fail [shape = "doublecircle", style = "filled", color = "brown1", label = "Monitoring\nCRIT"]; + start_firmware_upgrade [shape = "circle", style = "filled", color = "grey", label = "Schedule\nIntel NIC\nfirmware\nupgrade"]; + start_wr_install [shape = "circle", style = "filled", color = "grey", label = "Schedule\nWind River\ninstallation"]; + end_schedulewr_fail [shape = "doublecircle", style = "filled", color = "brown1", label = "Wind River\ninstallation\nfailed"]; + end_schedulefirmware_fail [shape = "doublecircle", style = "filled", color = "brown1", label = "NIC\nfirmware\nupgrade\nfailed"]; + start_orchestration [shape = "doublecircle", style = "filled", color = "grey", label = "Start\norchestration"]; + + subgraph cluster_hardwareinstall { + label = "Install hardware"; + penwidth = 1; + color = "chocolate1"; + + subgraph cluster_dataimport { + label = "Data import"; + dataimport_password_import [label = "Import HP passwords"]; + dataimport_ciq_import [label = "Import CIQ"]; + dataimport_icinga_batch [label = "Icinga job is sent to ansible-queue"]; + } + + subgraph cluster_serialnumber { + label = "Link serial numbers/passwords to CIQ"; + serialnumber_server_hostalive_p [shape = "diamond", label = "Server pingble\nfrom model_check?"]; + serialnumber_collect_vendor [label = "Icinga passes vendor,\nserial number and\nBMC IP to middleware"]; + serialnumber_link_blade [label = "Middleware links\nblade to server"]; + } + + subgraph cluster_biosconfig { + label = "Configure passwords, DNS, icinga and BIOS"; + biosconfig_generate_password [label = "Middleware generates\nunique BMC passwords"]; + biosconfig_bmc_batch [label = "BMC job is sent\nto ansible-queue"]; + biosconfig_dns_batch [label = "DNS job is sent\nto ansible-queue"]; + } + } + + subgraph cluster_icingamonitoring { + label = "Monitor hardware"; + penwidth = 1; + color = "deepskyblue"; + + subgraph cluster_macnic { + label = "Collect BMC MAC and NIC firmware version"; + macnic_bmc_push_pxe_mac [label = "BMC playbook pushes\nMAC address and\nNIC firmware version\nto middleware"]; + macnic_icinga_monitoring [label = "icinga job is sent\nto ansible-queue"]; + macnic_poll_monitoring [label = "icinga_poll job is sent\nto ansible-queue"]; + } + + subgraph cluster_nicfirmware { + label = "Intel NIC firmware version"; + firmware_upgrade_p [shape = "diamond", label = "Is\nan Intel NIC\nfirmware upgrade\nneeded?"]; + } + } + + subgraph cluster_firmwarescheduler { + label = "Intel NIC firmware upgrade"; + penwidth = 1; + color = "darkorchid1"; + + subgraph cluster_schedulefirmwareschedule { + label = "Schedule"; + schedulefirmwareschedule_schedule [label = "Schedule firmware\nupgrade"]; + } + + subgraph cluster_schedulefirmwarerun { + label = "Run"; + schedulefirmwarerun_run [label = "firmware upgrade\njob is sent\nto ansible-queue"]; + } + + subgraph cluster_schedulefirmwareresults { + label = "Results"; + schedulefirmwareresults_p [shape = "diamond", label = "Did firmware\ninstall successfully?"]; + } + } + + subgraph cluster_wrscheduler { + label = "Schedule Wind River installation"; + penwidth = 1; + color = "darkolivegreen4"; + + subgraph cluster_schedulewrschedule { + label = "Schedule"; + schedulewrschedule_schedule [label = "Schedule Wind\nRiver install"]; + } + + subgraph cluster_schedulewrrun { + label = "Run"; + schedulewrrun_run [label = "Wind River\ninstall job is sent\nto ansible-queue"]; + } + + subgraph cluster_schedulewrresults { + label = "Results"; + schedulewrresults_p [shape = "diamond", label = "Did Wind River\ninstall successfully?"]; + } + + subgraph cluster_schedulewrorchestration { + label = "Orchestration"; + schedulewrorchestration_orch [label = "Call\norchestration\nendpoint"]; + } + } + + subgraph cluster_ansiblequeue { + label = "ansible-queue"; + penwidth = 1; + color = "yellow3"; + + subgraph cluster_icingaplaybook { + label = "Icinga queue"; + icingaplaybook_run [label = "Manage ansible host_vars\nand run playbook"]; + } + + subgraph cluster_icingapollplaybook { + label = "Icinga Poll queue"; + icingapollplaybook_run [label = "Manage ansible host_vars\nand run playbook"]; + icingapollplaybook_report [label = "Playbook informs\nmiddleware of result"]; + } + + subgraph cluster_bmcplaybook { + label = "BMC queue"; + bmcplaybook_run_1 [label = "Manage ansible host_vars\nand run playbook"]; + bmcplaybook_run_2 [label = "Manage ansible host_vars\nand run playbook"]; + } + + subgraph cluster_dnsplaybook { + label = "DNS queue"; + dnsplaybook_run [label = "Manage ansible host_vars\nand run playbook"]; + } + + subgraph cluster_firmwareplaybook { + label = "NIC queue"; + firmwareplaybook_run [label = "Manage ansible host_vars\nand run playbook"]; + firmwareplaybook_report [label = "Playbook informs\nmiddleware of result"]; + } + + subgraph cluster_wrplaybook { + label = "Wind River queue"; + wrplaybook_run [label = "Manage ansible host_vars\nand run playbook"]; + wrplaybook_report [label = "Playbook informs\nmiddleware of result"]; + } + } + + subgraph cluster_legend { + label = "Legend"; + penwidth = 1; + node [shape = "rect", style = "filled"]; + legend_hardware [label = "Hardware", fillcolor = "chocolate1"]; + legend_monitoring [label = "Monitoring", fillcolor = "deepskyblue"]; + legend_firmware [label = "NIC firmware", fillcolor = "darkorchid1"]; + legend_wr [label = "Wind River", fillcolor = "darkolivegreen4"]; + legend_ansible [label = "ansible-queue", fillcolor = "yellow3"]; + } + + start_automation -> dataimport_password_import [color = "chocolate1"]; + dataimport_password_import -> dataimport_ciq_import [color = "chocolate1"]; + dataimport_ciq_import -> dataimport_icinga_batch [color = "chocolate1"]; + dataimport_icinga_batch -> icingaplaybook_run [color = "chocolate1"]; + dataimport_icinga_batch -> serialnumber_server_hostalive_p [color = "chocolate1"]; + start_server_install -> serialnumber_server_hostalive_p [color = "chocolate1"]; + serialnumber_server_hostalive_p -> serialnumber_server_hostalive_p [color = "chocolate1", label = "No"]; + serialnumber_server_hostalive_p -> serialnumber_collect_vendor [color = "chocolate1", label = "Yes"]; + serialnumber_collect_vendor -> serialnumber_link_blade [color = "chocolate1"]; + serialnumber_link_blade -> biosconfig_generate_password [color = "chocolate1"]; + biosconfig_generate_password -> biosconfig_dns_batch [color = "chocolate1"]; + biosconfig_generate_password -> biosconfig_bmc_batch [color = "chocolate1"]; + schedulefirmwareschedule_schedule -> schedulefirmwarerun_run [color = "darkorchid1"]; + schedulefirmwarerun_run -> firmwareplaybook_run [color = "darkorchid1"]; + firmwareplaybook_run -> firmwareplaybook_report [color = "yellow3"]; + firmwareplaybook_report -> schedulefirmwareresults_p [color = "darkorchid1"]; + schedulefirmwareresults_p -> end_schedulefirmware_fail [color = "darkorchid1", label = "No"]; + schedulefirmwareresults_p -> start_wr_install [color = "darkorchid1", label = "Yes"]; + biosconfig_bmc_batch -> bmcplaybook_run_1 [color = "chocolate1"]; + biosconfig_dns_batch -> dnsplaybook_run [color = "chocolate1"]; + bmcplaybook_run_1 -> start_monitoring [color = "deepskyblue"]; + start_monitoring -> macnic_bmc_push_pxe_mac [color = "deepskyblue"]; + macnic_bmc_push_pxe_mac -> macnic_icinga_monitoring [color = "deepskyblue"]; + macnic_bmc_push_pxe_mac -> macnic_poll_monitoring [color = "deepskyblue"]; + macnic_icinga_monitoring -> icingaplaybook_run [color = "deepskyblue"]; + macnic_poll_monitoring -> icingapollplaybook_run [color = "deepskyblue"]; + icingapollplaybook_run -> icingapollplaybook_report [color = "yellow3"]; + icingapollplaybook_report -> firmware_upgrade_p [color = "deepskyblue", label = "Cleared"]; + icingapollplaybook_report -> end_monitoring_fail [color = "deepskyblue", label = "Not cleared"]; + firmware_upgrade_p -> start_firmware_upgrade [color = "deepskyblue", label = "Yes"]; + firmware_upgrade_p -> start_wr_install [color = "deepskyblue", label = "No"]; + start_firmware_upgrade -> schedulefirmwareschedule_schedule [color = "darkorchid1"]; + start_wr_install -> schedulewrschedule_schedule [color = "darkolivegreen4"]; + schedulewrschedule_schedule -> schedulewrrun_run [color = "darkolivegreen4"]; + schedulewrrun_run -> wrplaybook_run [color = "darkolivegreen4"]; + wrplaybook_run -> wrplaybook_report [color = "yellow3"]; + wrplaybook_report -> schedulewrresults_p [color = "darkolivegreen4"]; + schedulewrresults_p -> end_schedulewr_fail [color = "darkolivegreen4", label = "No"]; + schedulewrresults_p -> schedulewrorchestration_orch [color = "darkolivegreen4", label = "Yes"]; + schedulewrorchestration_orch -> start_orchestration [color = "darkolivegreen4"]; + } +} -- cgit v1.3