test: provide a way to force different boot order in provision library

There's no change to the default behavior. This change is going to be
used with Sidero/Sfyra.

Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
This commit is contained in:
Andrey Smirnov 2021-05-18 20:36:10 +03:00 committed by talos-bot
parent a1c0e99a17
commit 82804414fc
3 changed files with 12 additions and 1 deletions

View File

@ -44,6 +44,7 @@ type LaunchConfig struct {
KernelArgs string
MachineType string
MonitorPath string
DefaultBootOrder string
EnableKVM bool
BootloaderEnabled bool
NodeUUID uuid.UUID
@ -220,7 +221,7 @@ func checkPartitions(config *LaunchConfig) (bool, error) {
//
//nolint:gocyclo
func launchVM(config *LaunchConfig) error {
bootOrder := "cn"
bootOrder := config.DefaultBootOrder
if config.controller.ForcePXEBoot() {
bootOrder = "nc"

View File

@ -100,6 +100,11 @@ func (p *provisioner) createNode(state *vm.State, clusterReq provision.ClusterRe
return provision.NodeInfo{}, fmt.Errorf("error finding listen address for the API: %w", err)
}
defaultBootOrder := "cn"
if nodeReq.DefaultBootOrder != "" {
defaultBootOrder = nodeReq.DefaultBootOrder
}
launchConfig := LaunchConfig{
QemuExecutable: arch.QemuExecutable(),
DiskPaths: diskPaths,
@ -110,6 +115,7 @@ func (p *provisioner) createNode(state *vm.State, clusterReq provision.ClusterRe
PFlashImages: pflashImages,
MonitorPath: state.GetRelativePath(fmt.Sprintf("%s.monitor", nodeReq.Name)),
EnableKVM: opts.TargetArch == runtime.GOARCH,
DefaultBootOrder: defaultBootOrder,
BootloaderEnabled: opts.BootloaderEnabled,
NodeUUID: nodeUUID,
Config: nodeConfig,

View File

@ -143,6 +143,10 @@ type NodeRequest struct {
Ports []string
// SkipInjectingConfig disables reading configuration from http server
SkipInjectingConfig bool
// DefaultBootOrder overrides default boot order "cn" (disk, then network boot).
//
// BootOrder can be forced to be "nc" (PXE boot) via the API in QEMU provisioner.
DefaultBootOrder string
// PXE-booted VMs
PXEBooted bool