From 7857de6a80acc4c71604a82a7a2c6ab8005acf48 Mon Sep 17 00:00:00 2001 From: Honza Pokorny Date: Thu, 25 Apr 2024 15:12:24 -0300 Subject: [PATCH] baremetal: set bootstrap domain arch --- pkg/infrastructure/baremetal/bootstrap.go | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pkg/infrastructure/baremetal/bootstrap.go b/pkg/infrastructure/baremetal/bootstrap.go index 208ea874534..da55592d7cc 100644 --- a/pkg/infrastructure/baremetal/bootstrap.go +++ b/pkg/infrastructure/baremetal/bootstrap.go @@ -276,9 +276,33 @@ func createIgnition(virConn *libvirt.Libvirt, config baremetalConfig, pool libvi return nil } + +func getCapabilities(virConn *libvirt.Libvirt) (libvirtxml.Caps, error) { + var caps libvirtxml.Caps + + capsBytes, err := virConn.Capabilities() + if err != nil { + return caps, err + } + + err = xml.Unmarshal(capsBytes, &caps) + if err != nil { + return caps, err + } + + return caps, nil +} + func createBootstrapDomain(virConn *libvirt.Libvirt, config baremetalConfig, pool libvirt.StoragePool, volume libvirt.StorageVol) error { bootstrapDom := newDomain(fmt.Sprintf("%s-bootstrap", config.ClusterID)) + capabilities, err := getCapabilities(virConn) + if err != nil { + return fmt.Errorf("failed to get libvirt capabilities: %w", err) + } + + bootstrapDom.OS.Type.Arch = capabilities.Host.CPU.Arch + for _, bridge := range config.Bridges { netIface := libvirtxml.DomainInterface{ Model: &libvirtxml.DomainInterfaceModel{