@startuml

actor admin
participant "UEFI Node" as bootnode
participant "QIP DHCP" as dhcp
participant "pxeserv01.psi.ch" as pxeserver
participant "boot00.psi.ch" as sysdb
participant "repo01.psi.ch" as reposerver

admin -> bootnode : boots up

hnote over bootnode
    EFI
endhnote
bootnode -> dhcp : DHCP request
dhcp -> bootnode : IP + PXE boot location
bootnode -> pxeserver : load PXE kernel tftp:/tftpboot/shimx64.efi
bootnode -> pxeserver : load PXE kernel tftp:/tftpboot/grubx64.efi


hnote over bootnode
    GRUB
endhnote
bootnode -> pxeserver : load PXE config tftp:/tftpboot/grub.cfg-01-$MAC
note right
    By manually setting a MAC or IP config the
    boot menu can be customised or shortcut.
end note
bootnode -> pxeserver : load PXE config tftp:/tftpboot/grub.cfg-$HEX-IP
bootnode -> pxeserver : load PXE config tftp:/tftpboot/grub.cfg
bootnode -> sysdb : load GRUB menu http:/grub/v1/config?mac=$MAC
note right
    Default selection by sydb boot
    property "local" or "netboot",
    later automatically starts the
    installer configured in sysdb
    attribute "ipxe_installer".
    Manually selectable are other
    version of RHEL 7 and
    "Windows and Tools Menus".
endnote

admin -> bootnode :  selects "Windows and Tools Menus"
note left
    Now the automatic installation kicks in,
    but here we show the manual detour over iPXE.
end note

bootnode -> pxeserver : load iPXE kernel tftp:/tftpboot/ipxe.efi
note right
    https://git.psi.ch/linux-infra/ipxe-build
    The following steps are by embed/pxe.ipxe
end note

hnote over bootnode
    iPXE
endhnote
bootnode -> dhcp : DHCP request
dhcp -> bootnode : IP
bootnode -> sysdb : load iPXE menu http:/ipxe/v1/config?mac=$MAC
note right
    Default selection by sydb boot
    property "local" or "netboot",
    later automatically starts the
    installer configured in sysdb
    attribute "ipxe_installer".
    Manually selectable are all
    Red Hat 7 versions and Red Hat 8
    alpha test version to install,
    Windows, a selection of tools
    and "HP SPP".
endnote
bootnode -> reposerver : load initrd http:/iso/rhel-server-7.9-x86_64-dvd/images/pxeboot/initrd.img
note left
    Automatic installation in GRUB
    directly jumps here without iPXE
end note
bootnode -> reposerver : load kernel http:/iso/rhel-server-7.9-x86_64-dvd/images/pxeboot/vmlinuz

hnote over bootnode
    Linux kernel
endhnote
bootnode -> reposerver : installation media http:/iso/rhel-server-7.9-x86_64-dvd/
bootnode -> sysdb : kickstart file http:/kickstart/v1/config?fqdn=$HOSTNAME&instrepo=rhel-server-7.9-x86_64-dvd

@enduml


