summaryrefslogtreecommitdiff
path: root/doc/uml/hardware_install_activity_diagram.dot
diff options
context:
space:
mode:
Diffstat (limited to 'doc/uml/hardware_install_activity_diagram.dot')
-rw-r--r--doc/uml/hardware_install_activity_diagram.dot209
1 files changed, 209 insertions, 0 deletions
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"];
+ }
+}