Skip to content

Commit

Permalink
Parse env vars for qemu cmd line config
Browse files Browse the repository at this point in the history
Signed-off-by: Darko Draskovic <darko.draskovic@gmail.com>
  • Loading branch information
darkodraskovic committed Aug 7, 2023
1 parent f6d5b61 commit ada7cb9
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 89 deletions.
6 changes: 6 additions & 0 deletions cmd/manager/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ const (
envPrefixHTTP = "MANAGER_HTTP_"
envPrefixGRPC = "MANAGER_GRPC_"
envPrefixAgentGRPC = "AGENT_GRPC_"
envPrefixQemu = "MANAGER_QEMU_"
defSvcGRPCPort = "7001"
defSvcHTTPPort = "9021"
)
Expand Down Expand Up @@ -103,6 +104,11 @@ func main() {

logger.Info("Successfully connected to agent grpc server " + agentGRPCClient.Secure())

qemuConfig := manager.Config{}
if err := env.Parse(&qemuConfig, env.Options{Prefix: envPrefixQemu}); err != nil {
logger.Fatal(fmt.Sprintf("failed to load %s QEMU configuration : %s", svcName, err))
}

svc := newService(libvirtConn, agentClient, logger, tracer)

var httpServerConfig = server.Config{Port: defSvcHTTPPort}
Expand Down
69 changes: 0 additions & 69 deletions cmd/manager/xml/copy.bkp.xml

This file was deleted.

60 changes: 40 additions & 20 deletions manager/libvirt.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,26 @@ import (
libvirt "github.com/digitalocean/go-libvirt"
)

type Config struct {
HDAFile string `env:"HDA_FILE" envDefault:"cmd/manager/img/focal-server-cloudimg-amd64.qcow2"`
GuestSizeInMB int `env:"GUEST_SIZE_IN_MB" envDefault:"4096"`
SevGuest int `env:"SEV_GUEST" envDefault:"1"`
SmpNCPUs int `env:"SMP_NCPUS" envDefault:"4"`
Console string `env:"CONSOLE" envDefault:"serial"`
VNCPort string `env:"VNC_PORT"`
UseVirtio int `env:"USE_VIRTIO" envDefault:"1"`
UEFIBiosCode string `env:"UEFI_BIOS_CODE" envDefault:"/usr/share/OVMF/OVMF_CODE.fd"`
UEFIBiosVarsOrig string `env:"UEFI_BIOS_VARS_ORIG" envDefault:"/usr/share/OVMF/OVMF_VARS.fd"`
UEFIBiosVarsCopy string `env:"UEFI_BIOS_VARS_COPY" envDefault:"cmd/manager/img/OVMF_VARS.fd"`
CBitPos int `env:"CBITPOS" envDefault:"51"`
HostHTTPPort int `env:"HOST_HTTP_PORT" envDefault:"9301"`
GuestHTTPPort int `env:"GUEST_HTTP_PORT" envDefault:"9031"`
HostGRPCPort int `env:"HOST_GRPC_PORT" envDefault:"7020"`
GuestGRPCPort int `env:"GUEST_GRPC_PORT" envDefault:"7002"`
EnableFileLog int `env:"ENABLE_FILE_LOG" envDefault:"0"`
ExecQemuCmdLine int `env:"EXEC_QEMU_CMDLINE" envDefault:"1"`
}

var re = regexp.MustCompile(`'([^']*)'`)

const bootTime = 5 * time.Second
Expand Down Expand Up @@ -42,26 +62,26 @@ func createDomain(libvirtConn *libvirt.Libvirt, poolXML string, volXML string, d
}
pool_exists:

// _, err = libvirtConn.StorageVolCreateXML(pool, volXML, 0)
// if err != nil {
// lvErr := err.(libvirt.Error)
// if lvErr.Code == 90 {
// name, err := entityName(lvErr.Message)
// if err != nil {
// return libvirt.Domain{}, err
// }
// _, err = libvirtConn.StorageVolLookupByName(pool, name)
// if err != nil {
// return libvirt.Domain{}, err
// }

// goto vol_exists
// }

// return libvirt.Domain{}, err
// }

// vol_exists:
_, err = libvirtConn.StorageVolCreateXML(pool, volXML, 0)
if err != nil {
lvErr := err.(libvirt.Error)
if lvErr.Code == 90 {
name, err := entityName(lvErr.Message)
if err != nil {
return libvirt.Domain{}, err
}
_, err = libvirtConn.StorageVolLookupByName(pool, name)
if err != nil {
return libvirt.Domain{}, err
}

goto vol_exists
}

return libvirt.Domain{}, err
}

vol_exists:

dom, err := libvirtConn.DomainDefineXMLFlags(domXML, 0)
if err != nil {
Expand Down

0 comments on commit ada7cb9

Please sign in to comment.