From 7705b0b2d6dcc5a738932513d5d62dbf69e860c7 Mon Sep 17 00:00:00 2001 From: Mahnoor Asghar Date: Fri, 26 Jan 2024 13:14:36 +0100 Subject: [PATCH] Remove the sphinxcontrib-seqdiag dependency Remove the sphinxcontrib-seqdiag dependency as the Pillow upgrade to version 10.x (from OpenStack upper constraints) breaks its usage. In the ironic source docs, reference the svg files in the rst files, and keep the .diag files in the doc/source/images/ directory as backup. Closes-Bug: #2026345 Change-Id: I54cea22e963441b729d4201ad9f8a055a65b54f8 --- doc/requirements.txt | 1 - doc/source/admin/agent-token.rst | 49 +--- doc/source/admin/boot-from-volume.rst | 21 +- doc/source/admin/drivers/ilo.rst | 185 +------------- doc/source/conf.py | 5 - .../images/agent-token-with-pxe-ipxe.diag | 18 ++ .../images/agent-token-with-pxe-ipxe.svg | 83 ++++++ .../agent-token-with-virtual-media.diag | 21 ++ .../images/agent-token-with-virtual-media.svg | 101 ++++++++ doc/source/images/boot-from-volume.diag | 16 ++ doc/source/images/boot-from-volume.svg | 82 ++++++ doc/source/images/direct-deploy.diag | 47 ++++ doc/source/images/direct-deploy.svg | 237 ++++++++++++++++++ ...glance-and-swift-for-partition-images.diag | 34 +++ .../glance-and-swift-for-partition-images.svg | 169 +++++++++++++ .../glance-and-swift-whole-disk-images.diag | 33 +++ .../glance-and-swift-whole-disk-images.svg | 162 ++++++++++++ doc/source/images/https-based-deploy.diag | 30 +++ doc/source/images/https-based-deploy.svg | 143 +++++++++++ doc/source/images/standalone-ironic.diag | 30 +++ doc/source/images/standalone-ironic.svg | 143 +++++++++++ doc/source/images/swiftless-deploy.diag | 32 +++ doc/source/images/swiftless-deploy.svg | 158 ++++++++++++ doc/source/user/architecture.rst | 52 +--- ...e-seqdiag-dependency-bfe9daea763dc0a3.yaml | 9 + 25 files changed, 1566 insertions(+), 295 deletions(-) create mode 100644 doc/source/images/agent-token-with-pxe-ipxe.diag create mode 100644 doc/source/images/agent-token-with-pxe-ipxe.svg create mode 100644 doc/source/images/agent-token-with-virtual-media.diag create mode 100644 doc/source/images/agent-token-with-virtual-media.svg create mode 100644 doc/source/images/boot-from-volume.diag create mode 100644 doc/source/images/boot-from-volume.svg create mode 100644 doc/source/images/direct-deploy.diag create mode 100644 doc/source/images/direct-deploy.svg create mode 100644 doc/source/images/glance-and-swift-for-partition-images.diag create mode 100644 doc/source/images/glance-and-swift-for-partition-images.svg create mode 100644 doc/source/images/glance-and-swift-whole-disk-images.diag create mode 100644 doc/source/images/glance-and-swift-whole-disk-images.svg create mode 100644 doc/source/images/https-based-deploy.diag create mode 100644 doc/source/images/https-based-deploy.svg create mode 100644 doc/source/images/standalone-ironic.diag create mode 100644 doc/source/images/standalone-ironic.svg create mode 100644 doc/source/images/swiftless-deploy.diag create mode 100644 doc/source/images/swiftless-deploy.svg create mode 100644 releasenotes/notes/remove-seqdiag-dependency-bfe9daea763dc0a3.yaml diff --git a/doc/requirements.txt b/doc/requirements.txt index d7394a9e69..6c8dcfb889 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -3,5 +3,4 @@ os-api-ref>=1.4.0 # Apache-2.0 reno>=3.1.0 # Apache-2.0 sphinx>=2.0.0,!=2.1.0 # BSD sphinxcontrib-apidoc>=0.2.0 # BSD -sphinxcontrib-seqdiag>=0.8.4 # BSD sphinxcontrib-svg2pdfconverter>=0.1.0 # BSD diff --git a/doc/source/admin/agent-token.rst b/doc/source/admin/agent-token.rst index c8ed5c8b95..94c25cdedb 100644 --- a/doc/source/admin/agent-token.rst +++ b/doc/source/admin/agent-token.rst @@ -61,55 +61,14 @@ token, allowing the agent to authenticate the caller. With Virtual Media ------------------ -.. seqdiag:: - :scale: 80 - - diagram { - API; Conductor; Baremetal; Swift; IPA; - activation = none; - span_height = 1; - edge_length = 250; - default_note_color = white; - default_fontsize = 14; - - Conductor -> Conductor [label = "Generates a random token"]; - Conductor -> Conductor [label = "Generates configuration for IPA ramdisk"]; - Conductor -> Swift [label = "IPA image, with configuration is uploaded"]; - Conductor -> Baremetal [label = "Attach IPA virtual media in Swift as virtual CD"]; - Conductor -> Baremetal [label = "Conductor turns power on"]; - Baremetal -> Swift [label = "Baremetal reads virtual media"]; - Baremetal -> Baremetal [label = "Boots IPA virtual media image"]; - Baremetal -> Baremetal [label = "IPA is started"]; - IPA -> Baremetal [label = "IPA loads configuration and agent token into memory"]; - IPA -> API [label = "Lookup node"]; - API -> IPA [label = "API responds with node UUID and token value of '******'"]; - IPA -> API [label = "Heartbeat with agent token"]; - } +.. figure:: ./../images/agent-token-with-virtual-media.svg + :width: 100% With PXE/iPXE/etc. ------------------ -.. seqdiag:: - :scale: 80 - - diagram { - API; Conductor; Baremetal; iPXE; IPA; - activation = none; - span_height = 1; - edge_length = 250; - default_note_color = white; - default_fontsize = 14; - - Conductor -> Baremetal [label = "Conductor turns power on"]; - Baremetal -> iPXE [label = "Baremetal reads kernel/ramdisk and starts boot"]; - Baremetal -> Baremetal [label = "Boots IPA iPXE image"]; - Baremetal -> Baremetal [label = "IPA is started"]; - IPA -> Baremetal [label = "IPA loads configuration"]; - IPA -> API [label = "Lookup node"]; - API -> Conductor [label = "API requests conductor to generates a random token"]; - API -> IPA [label = "API responds with node UUID and token value"]; - IPA -> API [label = "Heartbeat with agent token"]; - } +.. figure:: ./../images/agent-token-with-pxe-ipxe.svg + :width: 100% Agent Configuration =================== diff --git a/doc/source/admin/boot-from-volume.rst b/doc/source/admin/boot-from-volume.rst index 85496b1fb2..1f4ff1bef4 100644 --- a/doc/source/admin/boot-from-volume.rst +++ b/doc/source/admin/boot-from-volume.rst @@ -21,25 +21,8 @@ In essence, ironic sets the stage for the process, by providing the required information to the boot interface to facilitate the configuration of the the node OR the iPXE boot templates such that the node CAN be booted. -.. seqdiag:: - :scale: 80 - - diagram { - User; API; Conductor; Storage; Boot; Network; Deploy; - activation = none; - span_height = 1; - edge_length = 250; - default_note_color = white; - default_fontsize = 14; - - User -> API [label = "User or intermediate service such as nova supplies volume target configuration."]; - User -> API [label = "Sends deployment request."]; - API -> Conductor [label = "API transmits the action to the conductor service"]; - Conductor -> Storage [label = "Conductor calls the storage_interface to perform attachment of volume to node"]; - Conductor -> Boot [label = "Conductor calls the boot interface signaling preparation of an instance"]; - Conductor -> Network [label = "Conductor attaches the machine to network requested by the user VIF"]; - Conductor -> Deploy [label = "Conductor starts deployment steps which just turn the power on."]; - } +.. figure:: ./../images/boot-from-volume.svg + :width: 100% In this example, the boot interface does the heavy lifting. For drivers the ``irmc`` and ``ilo`` hardware types with hardware type specific boot diff --git a/doc/source/admin/drivers/ilo.rst b/doc/source/admin/drivers/ilo.rst index 5d3bc912d0..0d6b58b5b2 100644 --- a/doc/source/admin/drivers/ilo.rst +++ b/doc/source/admin/drivers/ilo.rst @@ -1099,197 +1099,32 @@ Deploy Process Glance and swift for partition images ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. seqdiag:: - :scale: 80 - - diagram { - Glance; Conductor; Baremetal; Swift; IPA; iLO; - activation = none; - span_height = 1; - edge_length = 250; - default_note_color = white; - default_fontsize = 14; - - Conductor -> iLO [label = "Powers off the node"]; - Conductor -> Glance [label = "Get the metadata for deploy ISO"]; - Glance -> Conductor [label = "Returns the metadata for deploy ISO"]; - Conductor -> Conductor [label = "Generates swift tempURL for deploy ISO"]; - Conductor -> Conductor [label = "Creates the FAT32 image containing ironic API URL and driver name"]; - Conductor -> Swift [label = "Uploads the FAT32 image"]; - Conductor -> Conductor [label = "Generates swift tempURL for FAT32 image"]; - Conductor -> iLO [label = "Attaches the FAT32 image swift tempURL as virtual media floppy"]; - Conductor -> iLO [label = "Attaches the deploy ISO swift tempURL as virtual media CDROM"]; - Conductor -> iLO [label = "Sets one time boot to CDROM"]; - Conductor -> iLO [label = "Reboot the node"]; - iLO -> Swift [label = "Downloads deploy ISO"]; - Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; - IPA -> Conductor [label = "Lookup node"]; - Conductor -> IPA [label = "Provides node UUID"]; - IPA -> Conductor [label = "Heartbeat"]; - Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; - IPA -> Swift [label = "Retrieves the user image on bare metal"]; - IPA -> IPA [label = "Writes user image to root partition"]; - IPA -> IPA [label = "Installs boot loader"]; - IPA -> Conductor [label = "Heartbeat"]; - Conductor -> Baremetal [label = "Sets boot device to disk"]; - Conductor -> IPA [label = "Power off the node"]; - Conductor -> iLO [label = "Power on the node"]; - Baremetal -> Baremetal [label = "Boot user image from disk"]; - } - +.. figure:: ./../../images/glance-and-swift-for-partition-images.svg + :width: 100% Glance and swift with whole-disk images ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. seqdiag:: - :scale: 80 - - diagram { - Glance; Conductor; Baremetal; Swift; IPA; iLO; - activation = none; - span_height = 1; - edge_length = 250; - default_note_color = white; - default_fontsize = 14; - - Conductor -> iLO [label = "Powers off the node"]; - Conductor -> Glance [label = "Get the metadata for deploy ISO"]; - Glance -> Conductor [label = "Returns the metadata for deploy ISO"]; - Conductor -> Conductor [label = "Generates swift tempURL for deploy ISO"]; - Conductor -> Conductor [label = "Creates the FAT32 image containing ironic API URL and driver name"]; - Conductor -> Swift [label = "Uploads the FAT32 image"]; - Conductor -> Conductor [label = "Generates swift tempURL for FAT32 image"]; - Conductor -> iLO [label = "Attaches the FAT32 image swift tempURL as virtual media floppy"]; - Conductor -> iLO [label = "Attaches the deploy ISO swift tempURL as virtual media CDROM"]; - Conductor -> iLO [label = "Sets one time boot to CDROM"]; - Conductor -> iLO [label = "Reboot the node"]; - iLO -> Swift [label = "Downloads deploy ISO"]; - Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; - IPA -> Conductor [label = "Lookup node"]; - Conductor -> IPA [label = "Provides node UUID"]; - IPA -> Conductor [label = "Heartbeat"]; - Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; - IPA -> Swift [label = "Retrieves the user image on bare metal"]; - IPA -> IPA [label = "Writes user image to disk"]; - IPA -> Conductor [label = "Heartbeat"]; - Conductor -> Baremetal [label = "Sets boot device to disk"]; - Conductor -> IPA [label = "Power off the node"]; - Conductor -> iLO [label = "Power on the node"]; - Baremetal -> Baremetal [label = "Boot user image from disk"]; - } +.. figure:: ./../../images/glance-and-swift-whole-disk-images.svg + :width: 100% Swiftless deploy ^^^^^^^^^^^^^^^^ -.. seqdiag:: - :scale: 80 - - diagram { - Glance; Conductor; Baremetal; ConductorWebserver; IPA; iLO; - activation = none; - span_height = 1; - edge_length = 250; - default_note_color = white; - default_fontsize = 14; - - Conductor -> iLO [label = "Powers off the node"]; - Conductor -> Glance [label = "Get the metadata for deploy ISO"]; - Glance -> Conductor [label = "Returns the metadata for deploy ISO"]; - Conductor -> Conductor [label = "Generates swift tempURL for deploy ISO"]; - Conductor -> Conductor [label = "Creates the FAT32 image containing Ironic API URL and driver name"]; - Conductor -> ConductorWebserver [label = "Uploads the FAT32 image"]; - Conductor -> iLO [label = "Attaches the FAT32 image URL as virtual media floppy"]; - Conductor -> iLO [label = "Attaches the deploy ISO swift tempURL as virtual media CDROM"]; - Conductor -> iLO [label = "Sets one time boot to CDROM"]; - Conductor -> iLO [label = "Reboot the node"]; - iLO -> Swift [label = "Downloads deploy ISO"]; - Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; - IPA -> Conductor [label = "Lookup node"]; - Conductor -> IPA [label = "Provides node UUID"]; - IPA -> Conductor [label = "Heartbeat"]; - Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; - IPA -> Swift [label = "Retrieves the user image on bare metal"]; - IPA -> IPA [label = "Writes user image to disk"]; - IPA -> Conductor [label = "Heartbeat"]; - Conductor -> Baremetal [label = "Sets boot device to disk"]; - Conductor -> IPA [label = "Power off the node"]; - Conductor -> Baremetal [label = "Power on the node"]; - Baremetal -> Baremetal [label = "Boot user image from disk"]; - } +.. figure:: ./../../images/swiftless-deploy.svg + :width: 100% HTTP(S) based deploy ^^^^^^^^^^^^^^^^^^^^ -.. seqdiag:: - :scale: 80 - - diagram { - Webserver; Conductor; Baremetal; Swift; IPA; iLO; - activation = none; - span_height = 1; - edge_length = 250; - default_note_color = white; - default_fontsize = 14; - - Conductor -> iLO [label = "Powers off the node"]; - Conductor -> Conductor [label = "Creates the FAT32 image containing ironic API URL and driver name"]; - Conductor -> Swift [label = "Uploads the FAT32 image"]; - Conductor -> Conductor [label = "Generates swift tempURL for FAT32 image"]; - Conductor -> iLO [label = "Attaches the FAT32 image swift tempURL as virtual media floppy"]; - Conductor -> iLO [label = "Attaches the deploy ISO URL as virtual media CDROM"]; - Conductor -> iLO [label = "Sets one time boot to CDROM"]; - Conductor -> iLO [label = "Reboot the node"]; - iLO -> Webserver [label = "Downloads deploy ISO"]; - Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; - IPA -> Conductor [label = "Lookup node"]; - Conductor -> IPA [label = "Provides node UUID"]; - IPA -> Conductor [label = "Heartbeat"]; - Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; - IPA -> Webserver [label = "Retrieves the user image on bare metal"]; - IPA -> IPA [label = "Writes user image to disk"]; - IPA -> Conductor [label = "Heartbeat"]; - Conductor -> Baremetal [label = "Sets boot device to disk"]; - Conductor -> IPA [label = "Power off the node"]; - Conductor -> Baremetal [label = "Power on the node"]; - Baremetal -> Baremetal [label = "Boot user image from disk"]; - } +.. figure:: ./../../images/https-based-deploy.svg + :width: 100% Standalone ironic ^^^^^^^^^^^^^^^^^ -.. seqdiag:: - :scale: 80 - - diagram { - Webserver; Conductor; Baremetal; ConductorWebserver; IPA; iLO; - activation = none; - span_height = 1; - edge_length = 250; - default_note_color = white; - default_fontsize = 14; - - Conductor -> iLO [label = "Powers off the node"]; - Conductor -> Conductor [label = "Creates the FAT32 image containing Ironic API URL and driver name"]; - Conductor -> ConductorWebserver [label = "Uploads the FAT32 image"]; - Conductor -> Conductor [label = "Generates URL for FAT32 image"]; - Conductor -> iLO [label = "Attaches the FAT32 image URL as virtual media floppy"]; - Conductor -> iLO [label = "Attaches the deploy ISO URL as virtual media CDROM"]; - Conductor -> iLO [label = "Sets one time boot to CDROM"]; - Conductor -> iLO [label = "Reboot the node"]; - iLO -> Webserver [label = "Downloads deploy ISO"]; - Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; - IPA -> Conductor [label = "Lookup node"]; - Conductor -> IPA [label = "Provides node UUID"]; - IPA -> Conductor [label = "Heartbeat"]; - Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; - IPA -> Webserver [label = "Retrieves the user image on bare metal"]; - IPA -> IPA [label = "Writes user image to disk"]; - IPA -> Conductor [label = "Heartbeat"]; - Conductor -> Baremetal [label = "Sets boot device to disk"]; - Conductor -> IPA [label = "Power off the node"]; - Conductor -> Baremetal [label = "Power on the node"]; - Baremetal -> Baremetal [label = "Boot user image from disk"]; - } +.. figure:: ./../../images/standalone-ironic.svg + :width: 100% Activating iLO Advanced license as manual clean step ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/source/conf.py b/doc/source/conf.py index 37d00f70dc..21c606b5fe 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -34,7 +34,6 @@ sys.path.insert(0, os.path.join(os.path.abspath('.'), '_exts')) # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = ['sphinx.ext.viewcode', 'sphinx.ext.graphviz', - 'sphinxcontrib.seqdiag', 'sphinxcontrib.apidoc', 'sphinxcontrib.rsvgconverter', 'oslo_config.sphinxext', @@ -163,7 +162,3 @@ latex_documents = [ # Allow deeper levels of nesting for \begin...\end stanzas latex_elements = {'maxlistdepth': 10} - -# -- Options for seqdiag ------------------------------------------------------ - -seqdiag_html_image_format = "SVG" diff --git a/doc/source/images/agent-token-with-pxe-ipxe.diag b/doc/source/images/agent-token-with-pxe-ipxe.diag new file mode 100644 index 0000000000..d451fcdd4c --- /dev/null +++ b/doc/source/images/agent-token-with-pxe-ipxe.diag @@ -0,0 +1,18 @@ +diagram { + API; Conductor; Baremetal; iPXE; IPA; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> Baremetal [label = "Conductor turns power on"]; + Baremetal -> iPXE [label = "Baremetal reads kernel/ramdisk and starts boot"]; + Baremetal -> Baremetal [label = "Boots IPA iPXE image"]; + Baremetal -> Baremetal [label = "IPA is started"]; + IPA -> Baremetal [label = "IPA loads configuration"]; + IPA -> API [label = "Lookup node"]; + API -> Conductor [label = "API requests conductor to generates a random token"]; + API -> IPA [label = "API responds with node UUID and token value"]; + IPA -> API [label = "Heartbeat with agent token"]; +} diff --git a/doc/source/images/agent-token-with-pxe-ipxe.svg b/doc/source/images/agent-token-with-pxe-ipxe.svg new file mode 100644 index 0000000000..24d800bbb7 --- /dev/null +++ b/doc/source/images/agent-token-with-pxe-ipxe.svg @@ -0,0 +1,83 @@ + + + + + + + + + blockdiag + diagram { + API; Conductor; Baremetal; iPXE; IPA; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> Baremetal [label = "Conductor turns power on"]; + Baremetal -> iPXE [label = "Baremetal reads kernel/ramdisk and starts boot"]; + Baremetal -> Baremetal [label = "Boots IPA iPXE image"]; + Baremetal -> Baremetal [label = "IPA is started"]; + IPA -> Baremetal [label = "IPA loads configuration"]; + IPA -> API [label = "Lookup node"]; + API -> Conductor [label = "API requests conductor to generates a random token"]; + API -> IPA [label = "API responds with node UUID and token value"]; + IPA -> API [label = "Heartbeat with agent token"]; +} + + + + + + + + + + + + + API + + Conductor + + Baremetal + + iPXE + + IPA + + + + + + + + + + + + + + + + + + + + + + + Conductor turns power on + Baremetal reads kernel/ramdisk + and starts boot + Boots IPA iPXE ima + ge + IPA is started + IPA loads configuration + Lookup node + API requests conductor to gene + rates a random token + API responds with node UUID and token value + Heartbeat with agent token + diff --git a/doc/source/images/agent-token-with-virtual-media.diag b/doc/source/images/agent-token-with-virtual-media.diag new file mode 100644 index 0000000000..317b4e73c4 --- /dev/null +++ b/doc/source/images/agent-token-with-virtual-media.diag @@ -0,0 +1,21 @@ +diagram { + API; Conductor; Baremetal; Swift; IPA; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> Conductor [label = "Generates a random token"]; + Conductor -> Conductor [label = "Generates configuration for IPA ramdisk"]; + Conductor -> Swift [label = "IPA image, with configuration is uploaded"]; + Conductor -> Baremetal [label = "Attach IPA virtual media in Swift as virtual CD"]; + Conductor -> Baremetal [label = "Conductor turns power on"]; + Baremetal -> Swift [label = "Baremetal reads virtual media"]; + Baremetal -> Baremetal [label = "Boots IPA virtual media image"]; + Baremetal -> Baremetal [label = "IPA is started"]; + IPA -> Baremetal [label = "IPA loads configuration and agent token into memory"]; + IPA -> API [label = "Lookup node"]; + API -> IPA [label = "API responds with node UUID and token value of '******'"]; + IPA -> API [label = "Heartbeat with agent token"]; +} diff --git a/doc/source/images/agent-token-with-virtual-media.svg b/doc/source/images/agent-token-with-virtual-media.svg new file mode 100644 index 0000000000..18ad6cbeb6 --- /dev/null +++ b/doc/source/images/agent-token-with-virtual-media.svg @@ -0,0 +1,101 @@ + + + + + + + + + blockdiag + diagram { + API; Conductor; Baremetal; Swift; IPA; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> Conductor [label = "Generates a random token"]; + Conductor -> Conductor [label = "Generates configuration for IPA ramdisk"]; + Conductor -> Swift [label = "IPA image, with configuration is uploaded"]; + Conductor -> Baremetal [label = "Attach IPA virtual media in Swift as virtual CD"]; + Conductor -> Baremetal [label = "Conductor turns power on"]; + Baremetal -> Swift [label = "Baremetal reads virtual media"]; + Baremetal -> Baremetal [label = "Boots IPA virtual media image"]; + Baremetal -> Baremetal [label = "IPA is started"]; + IPA -> Baremetal [label = "IPA loads configuration and agent token into memory"]; + IPA -> API [label = "Lookup node"]; + API -> IPA [label = "API responds with node UUID and token value of '******'"]; + IPA -> API [label = "Heartbeat with agent token"]; +} + + + + + + + + + + + + + API + + Conductor + + Baremetal + + Swift + + IPA + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Generates a random + token + Generates configur + ation for IPA ramd + isk + IPA image, with configuration is uploaded + Attach IPA virtual media in Sw + ift as virtual CD + Conductor turns power on + Baremetal reads virtual media + Boots IPA virtual + media image + IPA is started + IPA loads configuration and agent token into memory + Lookup node + API responds with node UUID and token value of '******' + Heartbeat with agent token + diff --git a/doc/source/images/boot-from-volume.diag b/doc/source/images/boot-from-volume.diag new file mode 100644 index 0000000000..34dca1d665 --- /dev/null +++ b/doc/source/images/boot-from-volume.diag @@ -0,0 +1,16 @@ +diagram { + User; API; Conductor; Storage; Boot; Network; Deploy; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + User -> API [label = "User or intermediate service such as nova supplies volume target configuration."]; + User -> API [label = "Sends deployment request."]; + API -> Conductor [label = "API transmits the action to the conductor service"]; + Conductor -> Storage [label = "Conductor calls the storage_interface to perform attachment of volume to node"]; + Conductor -> Boot [label = "Conductor calls the boot interface signaling preparation of an instance"]; + Conductor -> Network [label = "Conductor attaches the machine to network requested by the user VIF"]; + Conductor -> Deploy [label = "Conductor starts deployment steps which just turn the power on."]; +} diff --git a/doc/source/images/boot-from-volume.svg b/doc/source/images/boot-from-volume.svg new file mode 100644 index 0000000000..db44e7e32e --- /dev/null +++ b/doc/source/images/boot-from-volume.svg @@ -0,0 +1,82 @@ + + + + + + + + + blockdiag + diagram { + User; API; Conductor; Storage; Boot; Network; Deploy; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + User -> API [label = "User or intermediate service such as nova supplies volume target configuration."]; + User -> API [label = "Sends deployment request."]; + API -> Conductor [label = "API transmits the action to the conductor service"]; + Conductor -> Storage [label = "Conductor calls the storage_interface to perform attachment of volume to node"]; + Conductor -> Boot [label = "Conductor calls the boot interface signaling preparation of an instance"]; + Conductor -> Network [label = "Conductor attaches the machine to network requested by the user VIF"]; + Conductor -> Deploy [label = "Conductor starts deployment steps which just turn the power on."]; +} + + + + + + + + + + + + + + + + + User + + API + + Conductor + + Storage + + Boot + + Network + + Deploy + + + + + + + + + + + + + + + User or intermediate service s + uch as nova supplies volume ta + rget configuration. + Sends deployment request. + API transmits the action to th + e conductor service + Conductor calls the storage_in + terface to perform attachment + of volume to node + Conductor calls the boot interface signaling preparation of an + instance + Conductor attaches the machine to network requested by the user VIF + Conductor starts deployment steps which just turn the power on. + diff --git a/doc/source/images/direct-deploy.diag b/doc/source/images/direct-deploy.diag new file mode 100644 index 0000000000..2a86dd1259 --- /dev/null +++ b/doc/source/images/direct-deploy.diag @@ -0,0 +1,47 @@ +diagram { + Nova; API; Conductor; Neutron; HTTPStore; "TFTP/HTTPd"; Node; + activation = none; + edge_length = 250; + span_height = 1; + default_note_color = white; + default_fontsize = 14; + + Nova -> API [label = "Set instance_info\n(image_source,\nroot_gb, etc.)"]; + Nova -> API [label = "Validate power and deploy\ninterfaces"]; + Nova -> API [label = "Plug VIFs to the node"]; + Nova -> API [label = "Set provision_state,\noptionally pass configdrive"]; + API -> Conductor [label = "do_node_deploy()"]; + Conductor -> Conductor [label = "Validate power and deploy interfaces"]; + Conductor -> HTTPStore [label = "Store configdrive if configdrive_use_swift \noption is set"]; + Conductor -> Node [label = "POWER OFF"]; + Conductor -> Neutron [label = "Attach provisioning network to port(s)"]; + Conductor -> Neutron [label = "Update DHCP boot options"]; + Conductor -> Conductor [label = "Prepare PXE\nenvironment for\ndeployment"]; + Conductor -> Node [label = "Set PXE boot device \nthrough the BMC"]; + Conductor -> Conductor [label = "Cache deploy\nand instance\nkernel and ramdisk"]; + Conductor -> Node [label = "REBOOT"]; + Node -> Neutron [label = "DHCP request"]; + Neutron -> Node [label = "next-server = Conductor"]; + Node -> Node [label = "Runs agent\nramdisk"]; + Node -> API [label = "lookup()"]; + API -> Node [label = "Pass UUID"]; + Node -> API [label = "Heartbeat (UUID)"]; + API -> Conductor [label = "Heartbeat"]; + Conductor -> Node [label = "Continue deploy asynchronously: Pass image, disk info"]; + Node -> HTTPStore [label = "Downloads image, writes to disk, \nwrites configdrive if present"]; + === Heartbeat periodically === + Conductor -> Node [label = "Is deploy done?"]; + Node -> Conductor [label = "Still working..."]; + === ... === + Node -> Conductor [label = "Deploy is done"]; + Conductor -> Node [label = "Install boot loader, if requested"]; + Conductor -> Neutron [label = "Update DHCP boot options"]; + Conductor -> Conductor [label = "Prepare PXE\nenvironment for\ninstance image\nif needed"]; + Conductor -> Node [label = "Set boot device either to PXE or to disk"]; + Conductor -> Node [label = "Collect ramdisk logs"]; + Conductor -> Node [label = "POWER OFF"]; + Conductor -> Neutron [label = "Detach provisioning network\nfrom port(s)"]; + Conductor -> Neutron [label = "Bind tenant port"]; + Conductor -> Node [label = "POWER ON"]; + Conductor -> Conductor [label = "Mark node as\nACTIVE"]; +} diff --git a/doc/source/images/direct-deploy.svg b/doc/source/images/direct-deploy.svg new file mode 100644 index 0000000000..1c01f497f0 --- /dev/null +++ b/doc/source/images/direct-deploy.svg @@ -0,0 +1,237 @@ + + + + + + + + + blockdiag + diagram { + Nova; API; Conductor; Neutron; HTTPStore; "TFTP/HTTPd"; Node; + activation = none; + edge_length = 250; + span_height = 1; + default_note_color = white; + default_fontsize = 14; + + Nova -> API [label = "Set instance_info\n(image_source,\nroot_gb, etc.)"]; + Nova -> API [label = "Validate power and deploy\ninterfaces"]; + Nova -> API [label = "Plug VIFs to the node"]; + Nova -> API [label = "Set provision_state,\noptionally pass configdrive"]; + API -> Conductor [label = "do_node_deploy()"]; + Conductor -> Conductor [label = "Validate power and deploy interfaces"]; + Conductor -> HTTPStore [label = "Store configdrive if configdrive_use_swift \noption is set"]; + Conductor -> Node [label = "POWER OFF"]; + Conductor -> Neutron [label = "Attach provisioning network to port(s)"]; + Conductor -> Neutron [label = "Update DHCP boot options"]; + Conductor -> Conductor [label = "Prepare PXE\nenvironment for\ndeployment"]; + Conductor -> Node [label = "Set PXE boot device \nthrough the BMC"]; + Conductor -> Conductor [label = "Cache deploy\nand instance\nkernel and ramdisk"]; + Conductor -> Node [label = "REBOOT"]; + Node -> Neutron [label = "DHCP request"]; + Neutron -> Node [label = "next-server = Conductor"]; + Node -> Node [label = "Runs agent\nramdisk"]; + Node -> API [label = "lookup()"]; + API -> Node [label = "Pass UUID"]; + Node -> API [label = "Heartbeat (UUID)"]; + API -> Conductor [label = "Heartbeat"]; + Conductor -> Node [label = "Continue deploy asynchronously: Pass image, disk info"]; + Node -> HTTPStore [label = "Downloads image, writes to disk, \nwrites configdrive if present"]; + === Heartbeat periodically === + Conductor -> Node [label = "Is deploy done?"]; + Node -> Conductor [label = "Still working..."]; + === ... === + Node -> Conductor [label = "Deploy is done"]; + Conductor -> Node [label = "Install boot loader, if requested"]; + Conductor -> Neutron [label = "Update DHCP boot options"]; + Conductor -> Conductor [label = "Prepare PXE\nenvironment for\ninstance image\nif needed"]; + Conductor -> Node [label = "Set boot device either to PXE or to disk"]; + Conductor -> Node [label = "Collect ramdisk logs"]; + Conductor -> Node [label = "POWER OFF"]; + Conductor -> Neutron [label = "Detach provisioning network\nfrom port(s)"]; + Conductor -> Neutron [label = "Bind tenant port"]; + Conductor -> Node [label = "POWER ON"]; + Conductor -> Conductor [label = "Mark node as\nACTIVE"]; +} + + + + + + + + + + + + + + + + + Nova + + API + + Conductor + + Neutron + + HTTPStore + + TFTP/HTTPd + + Node + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Set instance_info + (image_source, + root_gb, etc.) + Validate power and deploy + interfaces + Plug VIFs to the node + Set provision_state, + optionally pass configdrive + do_node_deploy() + Validate power and + deploy interfaces + Store configdrive if configdrive_use_swift + option is set + POWER OFF + Attach provisioning network to + port(s) + Update DHCP boot options + Prepare PXE + environment for + deployment + Set PXE boot device + through the BMC + Cache deploy + and instance + kernel and ramdisk + REBOOT + DHCP request + next-server = Conductor + Runs agent + ramdisk + lookup() + Pass UUID + Heartbeat (UUID) + Heartbeat + Continue deploy asynchronously: Pass image, disk info + Downloads image, writes to disk, + writes configdrive if present + Is deploy done? + Still working... + Deploy is done + Install boot loader, if requested + Update DHCP boot options + Prepare PXE + environment for + instance image + if needed + Set boot device either to PXE or to disk + Collect ramdisk logs + POWER OFF + Detach provisioning network + from port(s) + Bind tenant port + POWER ON + Mark node as + ACTIVE + + + + + + Heartbeat periodically + + + + + + ... + diff --git a/doc/source/images/glance-and-swift-for-partition-images.diag b/doc/source/images/glance-and-swift-for-partition-images.diag new file mode 100644 index 0000000000..e22160572b --- /dev/null +++ b/doc/source/images/glance-and-swift-for-partition-images.diag @@ -0,0 +1,34 @@ +diagram { + Glance; Conductor; Baremetal; Swift; IPA; iLO; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> iLO [label = "Powers off the node"]; + Conductor -> Glance [label = "Get the metadata for deploy ISO"]; + Glance -> Conductor [label = "Returns the metadata for deploy ISO"]; + Conductor -> Conductor [label = "Generates swift tempURL for deploy ISO"]; + Conductor -> Conductor [label = "Creates the FAT32 image containing ironic API URL and driver name"]; + Conductor -> Swift [label = "Uploads the FAT32 image"]; + Conductor -> Conductor [label = "Generates swift tempURL for FAT32 image"]; + Conductor -> iLO [label = "Attaches the FAT32 image swift tempURL as virtual media floppy"]; + Conductor -> iLO [label = "Attaches the deploy ISO swift tempURL as virtual media CDROM"]; + Conductor -> iLO [label = "Sets one time boot to CDROM"]; + Conductor -> iLO [label = "Reboot the node"]; + iLO -> Swift [label = "Downloads deploy ISO"]; + Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; + IPA -> Conductor [label = "Lookup node"]; + Conductor -> IPA [label = "Provides node UUID"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; + IPA -> Swift [label = "Retrieves the user image on bare metal"]; + IPA -> IPA [label = "Writes user image to root partition"]; + IPA -> IPA [label = "Installs boot loader"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> Baremetal [label = "Sets boot device to disk"]; + Conductor -> IPA [label = "Power off the node"]; + Conductor -> iLO [label = "Power on the node"]; + Baremetal -> Baremetal [label = "Boot user image from disk"]; +} diff --git a/doc/source/images/glance-and-swift-for-partition-images.svg b/doc/source/images/glance-and-swift-for-partition-images.svg new file mode 100644 index 0000000000..f115c743af --- /dev/null +++ b/doc/source/images/glance-and-swift-for-partition-images.svg @@ -0,0 +1,169 @@ + + + + + + + + + blockdiag + diagram { + Glance; Conductor; Baremetal; Swift; IPA; iLO; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> iLO [label = "Powers off the node"]; + Conductor -> Glance [label = "Get the metadata for deploy ISO"]; + Glance -> Conductor [label = "Returns the metadata for deploy ISO"]; + Conductor -> Conductor [label = "Generates swift tempURL for deploy ISO"]; + Conductor -> Conductor [label = "Creates the FAT32 image containing ironic API URL and driver name"]; + Conductor -> Swift [label = "Uploads the FAT32 image"]; + Conductor -> Conductor [label = "Generates swift tempURL for FAT32 image"]; + Conductor -> iLO [label = "Attaches the FAT32 image swift tempURL as virtual media floppy"]; + Conductor -> iLO [label = "Attaches the deploy ISO swift tempURL as virtual media CDROM"]; + Conductor -> iLO [label = "Sets one time boot to CDROM"]; + Conductor -> iLO [label = "Reboot the node"]; + iLO -> Swift [label = "Downloads deploy ISO"]; + Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; + IPA -> Conductor [label = "Lookup node"]; + Conductor -> IPA [label = "Provides node UUID"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; + IPA -> Swift [label = "Retrieves the user image on bare metal"]; + IPA -> IPA [label = "Writes user image to root partition"]; + IPA -> IPA [label = "Installs boot loader"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> Baremetal [label = "Sets boot device to disk"]; + Conductor -> IPA [label = "Power off the node"]; + Conductor -> iLO [label = "Power on the node"]; + Baremetal -> Baremetal [label = "Boot user image from disk"]; +} + + + + + + + + + + + + + + + Glance + + Conductor + + Baremetal + + Swift + + IPA + + iLO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Powers off the node + Get the metadata for deploy IS + O + Returns the metadata for deplo + y ISO + Generates swift te + mpURL for deploy I + SO + Creates the FAT32 + image containing i + ronic API URL and + driver name + Uploads the FAT32 image + Generates swift te + mpURL for FAT32 im + age + Attaches the FAT32 image swift tempURL as virtual media floppy + Attaches the deploy ISO swift tempURL as virtual media CDROM + Sets one time boot to CDROM + Reboot the node + Downloads deploy ISO + Boots deploy kernel/ramdisk from iLO virtual media CDROM + Lookup node + Provides node UUID + Heartbeat + Sends the user image HTTP(S) URL + Retrieves the user image on ba + re metal + Writes user image + to root partition + Installs boot load + er + Heartbeat + Sets boot device to disk + Power off the node + Power on the node + Boot user image fr + om disk + diff --git a/doc/source/images/glance-and-swift-whole-disk-images.diag b/doc/source/images/glance-and-swift-whole-disk-images.diag new file mode 100644 index 0000000000..4df1dedf69 --- /dev/null +++ b/doc/source/images/glance-and-swift-whole-disk-images.diag @@ -0,0 +1,33 @@ +diagram { + Glance; Conductor; Baremetal; Swift; IPA; iLO; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> iLO [label = "Powers off the node"]; + Conductor -> Glance [label = "Get the metadata for deploy ISO"]; + Glance -> Conductor [label = "Returns the metadata for deploy ISO"]; + Conductor -> Conductor [label = "Generates swift tempURL for deploy ISO"]; + Conductor -> Conductor [label = "Creates the FAT32 image containing ironic API URL and driver name"]; + Conductor -> Swift [label = "Uploads the FAT32 image"]; + Conductor -> Conductor [label = "Generates swift tempURL for FAT32 image"]; + Conductor -> iLO [label = "Attaches the FAT32 image swift tempURL as virtual media floppy"]; + Conductor -> iLO [label = "Attaches the deploy ISO swift tempURL as virtual media CDROM"]; + Conductor -> iLO [label = "Sets one time boot to CDROM"]; + Conductor -> iLO [label = "Reboot the node"]; + iLO -> Swift [label = "Downloads deploy ISO"]; + Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; + IPA -> Conductor [label = "Lookup node"]; + Conductor -> IPA [label = "Provides node UUID"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; + IPA -> Swift [label = "Retrieves the user image on bare metal"]; + IPA -> IPA [label = "Writes user image to disk"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> Baremetal [label = "Sets boot device to disk"]; + Conductor -> IPA [label = "Power off the node"]; + Conductor -> iLO [label = "Power on the node"]; + Baremetal -> Baremetal [label = "Boot user image from disk"]; +} diff --git a/doc/source/images/glance-and-swift-whole-disk-images.svg b/doc/source/images/glance-and-swift-whole-disk-images.svg new file mode 100644 index 0000000000..54bb324e44 --- /dev/null +++ b/doc/source/images/glance-and-swift-whole-disk-images.svg @@ -0,0 +1,162 @@ + + + + + + + + + blockdiag + diagram { + Glance; Conductor; Baremetal; Swift; IPA; iLO; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> iLO [label = "Powers off the node"]; + Conductor -> Glance [label = "Get the metadata for deploy ISO"]; + Glance -> Conductor [label = "Returns the metadata for deploy ISO"]; + Conductor -> Conductor [label = "Generates swift tempURL for deploy ISO"]; + Conductor -> Conductor [label = "Creates the FAT32 image containing ironic API URL and driver name"]; + Conductor -> Swift [label = "Uploads the FAT32 image"]; + Conductor -> Conductor [label = "Generates swift tempURL for FAT32 image"]; + Conductor -> iLO [label = "Attaches the FAT32 image swift tempURL as virtual media floppy"]; + Conductor -> iLO [label = "Attaches the deploy ISO swift tempURL as virtual media CDROM"]; + Conductor -> iLO [label = "Sets one time boot to CDROM"]; + Conductor -> iLO [label = "Reboot the node"]; + iLO -> Swift [label = "Downloads deploy ISO"]; + Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; + IPA -> Conductor [label = "Lookup node"]; + Conductor -> IPA [label = "Provides node UUID"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; + IPA -> Swift [label = "Retrieves the user image on bare metal"]; + IPA -> IPA [label = "Writes user image to disk"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> Baremetal [label = "Sets boot device to disk"]; + Conductor -> IPA [label = "Power off the node"]; + Conductor -> iLO [label = "Power on the node"]; + Baremetal -> Baremetal [label = "Boot user image from disk"]; +} + + + + + + + + + + + + + + + Glance + + Conductor + + Baremetal + + Swift + + IPA + + iLO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Powers off the node + Get the metadata for deploy IS + O + Returns the metadata for deplo + y ISO + Generates swift te + mpURL for deploy I + SO + Creates the FAT32 + image containing i + ronic API URL and + driver name + Uploads the FAT32 image + Generates swift te + mpURL for FAT32 im + age + Attaches the FAT32 image swift tempURL as virtual media floppy + Attaches the deploy ISO swift tempURL as virtual media CDROM + Sets one time boot to CDROM + Reboot the node + Downloads deploy ISO + Boots deploy kernel/ramdisk from iLO virtual media CDROM + Lookup node + Provides node UUID + Heartbeat + Sends the user image HTTP(S) URL + Retrieves the user image on ba + re metal + Writes user image + to disk + Heartbeat + Sets boot device to disk + Power off the node + Power on the node + Boot user image fr + om disk + diff --git a/doc/source/images/https-based-deploy.diag b/doc/source/images/https-based-deploy.diag new file mode 100644 index 0000000000..b020b187f0 --- /dev/null +++ b/doc/source/images/https-based-deploy.diag @@ -0,0 +1,30 @@ +diagram { + Webserver; Conductor; Baremetal; Swift; IPA; iLO; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> iLO [label = "Powers off the node"]; + Conductor -> Conductor [label = "Creates the FAT32 image containing ironic API URL and driver name"]; + Conductor -> Swift [label = "Uploads the FAT32 image"]; + Conductor -> Conductor [label = "Generates swift tempURL for FAT32 image"]; + Conductor -> iLO [label = "Attaches the FAT32 image swift tempURL as virtual media floppy"]; + Conductor -> iLO [label = "Attaches the deploy ISO URL as virtual media CDROM"]; + Conductor -> iLO [label = "Sets one time boot to CDROM"]; + Conductor -> iLO [label = "Reboot the node"]; + iLO -> Webserver [label = "Downloads deploy ISO"]; + Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; + IPA -> Conductor [label = "Lookup node"]; + Conductor -> IPA [label = "Provides node UUID"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; + IPA -> Webserver [label = "Retrieves the user image on bare metal"]; + IPA -> IPA [label = "Writes user image to disk"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> Baremetal [label = "Sets boot device to disk"]; + Conductor -> IPA [label = "Power off the node"]; + Conductor -> Baremetal [label = "Power on the node"]; + Baremetal -> Baremetal [label = "Boot user image from disk"]; +} diff --git a/doc/source/images/https-based-deploy.svg b/doc/source/images/https-based-deploy.svg new file mode 100644 index 0000000000..a430ed2f04 --- /dev/null +++ b/doc/source/images/https-based-deploy.svg @@ -0,0 +1,143 @@ + + + + + + + + + blockdiag + diagram { + Webserver; Conductor; Baremetal; Swift; IPA; iLO; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> iLO [label = "Powers off the node"]; + Conductor -> Conductor [label = "Creates the FAT32 image containing ironic API URL and driver name"]; + Conductor -> Swift [label = "Uploads the FAT32 image"]; + Conductor -> Conductor [label = "Generates swift tempURL for FAT32 image"]; + Conductor -> iLO [label = "Attaches the FAT32 image swift tempURL as virtual media floppy"]; + Conductor -> iLO [label = "Attaches the deploy ISO URL as virtual media CDROM"]; + Conductor -> iLO [label = "Sets one time boot to CDROM"]; + Conductor -> iLO [label = "Reboot the node"]; + iLO -> Webserver [label = "Downloads deploy ISO"]; + Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; + IPA -> Conductor [label = "Lookup node"]; + Conductor -> IPA [label = "Provides node UUID"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; + IPA -> Webserver [label = "Retrieves the user image on bare metal"]; + IPA -> IPA [label = "Writes user image to disk"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> Baremetal [label = "Sets boot device to disk"]; + Conductor -> IPA [label = "Power off the node"]; + Conductor -> Baremetal [label = "Power on the node"]; + Baremetal -> Baremetal [label = "Boot user image from disk"]; +} + + + + + + + + + + + + + + + Webserver + + Conductor + + Baremetal + + Swift + + IPA + + iLO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Powers off the node + Creates the FAT32 + image containing i + ronic API URL and + driver name + Uploads the FAT32 image + Generates swift te + mpURL for FAT32 im + age + Attaches the FAT32 image swift tempURL as virtual media floppy + Attaches the deploy ISO URL as virtual media CDROM + Sets one time boot to CDROM + Reboot the node + Downloads deploy ISO + Boots deploy kernel/ramdisk from iLO virtual media CDROM + Lookup node + Provides node UUID + Heartbeat + Sends the user image HTTP(S) URL + Retrieves the user image on bare metal + Writes user image + to disk + Heartbeat + Sets boot device to disk + Power off the node + Power on the node + Boot user image fr + om disk + diff --git a/doc/source/images/standalone-ironic.diag b/doc/source/images/standalone-ironic.diag new file mode 100644 index 0000000000..4c88600db0 --- /dev/null +++ b/doc/source/images/standalone-ironic.diag @@ -0,0 +1,30 @@ +diagram { + Webserver; Conductor; Baremetal; ConductorWebserver; IPA; iLO; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> iLO [label = "Powers off the node"]; + Conductor -> Conductor [label = "Creates the FAT32 image containing Ironic API URL and driver name"]; + Conductor -> ConductorWebserver [label = "Uploads the FAT32 image"]; + Conductor -> Conductor [label = "Generates URL for FAT32 image"]; + Conductor -> iLO [label = "Attaches the FAT32 image URL as virtual media floppy"]; + Conductor -> iLO [label = "Attaches the deploy ISO URL as virtual media CDROM"]; + Conductor -> iLO [label = "Sets one time boot to CDROM"]; + Conductor -> iLO [label = "Reboot the node"]; + iLO -> Webserver [label = "Downloads deploy ISO"]; + Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; + IPA -> Conductor [label = "Lookup node"]; + Conductor -> IPA [label = "Provides node UUID"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; + IPA -> Webserver [label = "Retrieves the user image on bare metal"]; + IPA -> IPA [label = "Writes user image to disk"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> Baremetal [label = "Sets boot device to disk"]; + Conductor -> IPA [label = "Power off the node"]; + Conductor -> Baremetal [label = "Power on the node"]; + Baremetal -> Baremetal [label = "Boot user image from disk"]; +} diff --git a/doc/source/images/standalone-ironic.svg b/doc/source/images/standalone-ironic.svg new file mode 100644 index 0000000000..76b1dfe333 --- /dev/null +++ b/doc/source/images/standalone-ironic.svg @@ -0,0 +1,143 @@ + + + + + + + + + blockdiag + diagram { + Webserver; Conductor; Baremetal; ConductorWebserver; IPA; iLO; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> iLO [label = "Powers off the node"]; + Conductor -> Conductor [label = "Creates the FAT32 image containing Ironic API URL and driver name"]; + Conductor -> ConductorWebserver [label = "Uploads the FAT32 image"]; + Conductor -> Conductor [label = "Generates URL for FAT32 image"]; + Conductor -> iLO [label = "Attaches the FAT32 image URL as virtual media floppy"]; + Conductor -> iLO [label = "Attaches the deploy ISO URL as virtual media CDROM"]; + Conductor -> iLO [label = "Sets one time boot to CDROM"]; + Conductor -> iLO [label = "Reboot the node"]; + iLO -> Webserver [label = "Downloads deploy ISO"]; + Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; + IPA -> Conductor [label = "Lookup node"]; + Conductor -> IPA [label = "Provides node UUID"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; + IPA -> Webserver [label = "Retrieves the user image on bare metal"]; + IPA -> IPA [label = "Writes user image to disk"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> Baremetal [label = "Sets boot device to disk"]; + Conductor -> IPA [label = "Power off the node"]; + Conductor -> Baremetal [label = "Power on the node"]; + Baremetal -> Baremetal [label = "Boot user image from disk"]; +} + + + + + + + + + + + + + + + Webserver + + Conductor + + Baremetal + + ConductorWebserv + er + + IPA + + iLO + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Powers off the node + Creates the FAT32 + image containing I + ronic API URL and + driver name + Uploads the FAT32 image + Generates URL for + FAT32 image + Attaches the FAT32 image URL as virtual media floppy + Attaches the deploy ISO URL as virtual media CDROM + Sets one time boot to CDROM + Reboot the node + Downloads deploy ISO + Boots deploy kernel/ramdisk from iLO virtual media CDROM + Lookup node + Provides node UUID + Heartbeat + Sends the user image HTTP(S) URL + Retrieves the user image on bare metal + Writes user image + to disk + Heartbeat + Sets boot device to disk + Power off the node + Power on the node + Boot user image fr + om disk + diff --git a/doc/source/images/swiftless-deploy.diag b/doc/source/images/swiftless-deploy.diag new file mode 100644 index 0000000000..eed0e2117b --- /dev/null +++ b/doc/source/images/swiftless-deploy.diag @@ -0,0 +1,32 @@ +diagram { + Glance; Conductor; Baremetal; ConductorWebserver; IPA; iLO; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> iLO [label = "Powers off the node"]; + Conductor -> Glance [label = "Get the metadata for deploy ISO"]; + Glance -> Conductor [label = "Returns the metadata for deploy ISO"]; + Conductor -> Conductor [label = "Generates swift tempURL for deploy ISO"]; + Conductor -> Conductor [label = "Creates the FAT32 image containing Ironic API URL and driver name"]; + Conductor -> ConductorWebserver [label = "Uploads the FAT32 image"]; + Conductor -> iLO [label = "Attaches the FAT32 image URL as virtual media floppy"]; + Conductor -> iLO [label = "Attaches the deploy ISO swift tempURL as virtual media CDROM"]; + Conductor -> iLO [label = "Sets one time boot to CDROM"]; + Conductor -> iLO [label = "Reboot the node"]; + iLO -> Swift [label = "Downloads deploy ISO"]; + Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; + IPA -> Conductor [label = "Lookup node"]; + Conductor -> IPA [label = "Provides node UUID"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; + IPA -> Swift [label = "Retrieves the user image on bare metal"]; + IPA -> IPA [label = "Writes user image to disk"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> Baremetal [label = "Sets boot device to disk"]; + Conductor -> IPA [label = "Power off the node"]; + Conductor -> Baremetal [label = "Power on the node"]; + Baremetal -> Baremetal [label = "Boot user image from disk"]; +} diff --git a/doc/source/images/swiftless-deploy.svg b/doc/source/images/swiftless-deploy.svg new file mode 100644 index 0000000000..a29e3df64c --- /dev/null +++ b/doc/source/images/swiftless-deploy.svg @@ -0,0 +1,158 @@ + + + + + + + + + blockdiag + diagram { + Glance; Conductor; Baremetal; ConductorWebserver; IPA; iLO; + activation = none; + span_height = 1; + edge_length = 250; + default_note_color = white; + default_fontsize = 14; + + Conductor -> iLO [label = "Powers off the node"]; + Conductor -> Glance [label = "Get the metadata for deploy ISO"]; + Glance -> Conductor [label = "Returns the metadata for deploy ISO"]; + Conductor -> Conductor [label = "Generates swift tempURL for deploy ISO"]; + Conductor -> Conductor [label = "Creates the FAT32 image containing Ironic API URL and driver name"]; + Conductor -> ConductorWebserver [label = "Uploads the FAT32 image"]; + Conductor -> iLO [label = "Attaches the FAT32 image URL as virtual media floppy"]; + Conductor -> iLO [label = "Attaches the deploy ISO swift tempURL as virtual media CDROM"]; + Conductor -> iLO [label = "Sets one time boot to CDROM"]; + Conductor -> iLO [label = "Reboot the node"]; + iLO -> Swift [label = "Downloads deploy ISO"]; + Baremetal -> iLO [label = "Boots deploy kernel/ramdisk from iLO virtual media CDROM"]; + IPA -> Conductor [label = "Lookup node"]; + Conductor -> IPA [label = "Provides node UUID"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> IPA [label = "Sends the user image HTTP(S) URL"]; + IPA -> Swift [label = "Retrieves the user image on bare metal"]; + IPA -> IPA [label = "Writes user image to disk"]; + IPA -> Conductor [label = "Heartbeat"]; + Conductor -> Baremetal [label = "Sets boot device to disk"]; + Conductor -> IPA [label = "Power off the node"]; + Conductor -> Baremetal [label = "Power on the node"]; + Baremetal -> Baremetal [label = "Boot user image from disk"]; +} + + + + + + + + + + + + + + + + + Glance + + Conductor + + Baremetal + + ConductorWebserv + er + + IPA + + iLO + + Swift + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Powers off the node + Get the metadata for deploy IS + O + Returns the metadata for deplo + y ISO + Generates swift te + mpURL for deploy I + SO + Creates the FAT32 + image containing I + ronic API URL and + driver name + Uploads the FAT32 image + Attaches the FAT32 image URL as virtual media floppy + Attaches the deploy ISO swift tempURL as virtual media CDROM + Sets one time boot to CDROM + Reboot the node + Downloads deploy ISO + Boots deploy kernel/ramdisk from iLO virtual media CDROM + Lookup node + Provides node UUID + Heartbeat + Sends the user image HTTP(S) URL + Retrieves the user image on bare metal + Writes user image + to disk + Heartbeat + Sets boot device to disk + Power off the node + Power on the node + Boot user image fr + om disk + diff --git a/doc/source/user/architecture.rst b/doc/source/user/architecture.rst index 1b034fbb4b..86d3a5ce30 100644 --- a/doc/source/user/architecture.rst +++ b/doc/source/user/architecture.rst @@ -246,56 +246,8 @@ Example: PXE Boot and Direct Deploy Process This process is how :ref:`direct-deploy` works. -.. seqdiag:: - :scale: 75 - - diagram { - Nova; API; Conductor; Neutron; HTTPStore; "TFTP/HTTPd"; Node; - activation = none; - edge_length = 250; - span_height = 1; - default_note_color = white; - default_fontsize = 14; - - Nova -> API [label = "Set instance_info\n(image_source,\nroot_gb, etc.)"]; - Nova -> API [label = "Validate power and deploy\ninterfaces"]; - Nova -> API [label = "Plug VIFs to the node"]; - Nova -> API [label = "Set provision_state,\noptionally pass configdrive"]; - API -> Conductor [label = "do_node_deploy()"]; - Conductor -> Conductor [label = "Validate power and deploy interfaces"]; - Conductor -> HTTPStore [label = "Store configdrive if configdrive_use_swift \noption is set"]; - Conductor -> Node [label = "POWER OFF"]; - Conductor -> Neutron [label = "Attach provisioning network to port(s)"]; - Conductor -> Neutron [label = "Update DHCP boot options"]; - Conductor -> Conductor [label = "Prepare PXE\nenvironment for\ndeployment"]; - Conductor -> Node [label = "Set PXE boot device \nthrough the BMC"]; - Conductor -> Conductor [label = "Cache deploy\nand instance\nkernel and ramdisk"]; - Conductor -> Node [label = "REBOOT"]; - Node -> Neutron [label = "DHCP request"]; - Neutron -> Node [label = "next-server = Conductor"]; - Node -> Node [label = "Runs agent\nramdisk"]; - Node -> API [label = "lookup()"]; - API -> Node [label = "Pass UUID"]; - Node -> API [label = "Heartbeat (UUID)"]; - API -> Conductor [label = "Heartbeat"]; - Conductor -> Node [label = "Continue deploy asynchronously: Pass image, disk info"]; - Node -> HTTPStore [label = "Downloads image, writes to disk, \nwrites configdrive if present"]; - === Heartbeat periodically === - Conductor -> Node [label = "Is deploy done?"]; - Node -> Conductor [label = "Still working..."]; - === ... === - Node -> Conductor [label = "Deploy is done"]; - Conductor -> Node [label = "Install boot loader, if requested"]; - Conductor -> Neutron [label = "Update DHCP boot options"]; - Conductor -> Conductor [label = "Prepare PXE\nenvironment for\ninstance image\nif needed"]; - Conductor -> Node [label = "Set boot device either to PXE or to disk"]; - Conductor -> Node [label = "Collect ramdisk logs"]; - Conductor -> Node [label = "POWER OFF"]; - Conductor -> Neutron [label = "Detach provisioning network\nfrom port(s)"]; - Conductor -> Neutron [label = "Bind tenant port"]; - Conductor -> Node [label = "POWER ON"]; - Conductor -> Conductor [label = "Mark node as\nACTIVE"]; - } +.. figure:: ./../images/direct-deploy.svg + :width: 100% (From a `talk`_ and `slides`_) diff --git a/releasenotes/notes/remove-seqdiag-dependency-bfe9daea763dc0a3.yaml b/releasenotes/notes/remove-seqdiag-dependency-bfe9daea763dc0a3.yaml new file mode 100644 index 0000000000..5960aff38a --- /dev/null +++ b/releasenotes/notes/remove-seqdiag-dependency-bfe9daea763dc0a3.yaml @@ -0,0 +1,9 @@ +--- +upgrade: + - Removes the sphinxcontrib-seqdiag dependency as the Pillow upgrade to + version 10.x (from OpenStack upper constraints) breaks its usage. seqdiag + has not been maintained for the last 3 years, hence the upgrade causes it + to break. + In the ironic docs (source) rst files, adds references to svg files, and + keeps the svg files in the doc/source/images/ directory, alongside their + associated .diag files as backup. \ No newline at end of file