Merge pull request #2915 from scotty-c/master

This commit adds the functionality to run the qemu container detached
This commit is contained in:
Rolf Neugebauer 2018-02-19 12:05:06 +00:00 committed by GitHub
commit d25cf07628
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -40,6 +40,7 @@ type QemuConfig struct {
Memory string
Accel string
Containerized bool
Detached bool
QemuBinPath string
QemuImgPath string
PublishedPorts []string
@ -162,6 +163,7 @@ func runQemu(args []string) {
// Backend configuration
qemuContainerized := flags.Bool("containerized", false, "Run qemu in a container")
qemuCmd := flags.String("qemu", "", "Path to the qemu binary (otherwise look in $PATH)")
qemuDetached := flags.Bool("detached", false, "Set qemu container to run in the background")
// Generate UUID, so that /sys/class/dmi/id/product_uuid is populated
vmUUID := uuid.New()
@ -306,6 +308,7 @@ func runQemu(args []string) {
Memory: *mem,
Accel: *accel,
Containerized: *qemuContainerized,
Detached: *qemuDetached,
QemuBinPath: *qemuCmd,
PublishedPorts: publishFlags,
NetdevConfig: netdevConfig,
@ -363,6 +366,11 @@ func runQemuLocal(config QemuConfig) error {
}
}
// Detached mode is only supported in a container.
if config.Detached == true {
return fmt.Errorf("Detached mode is only supported when running in a container, not locally")
}
qemuCmd := exec.Command(config.QemuBinPath, args...)
// If verbosity is enabled print out the full path/arguments
log.Debugf("%v\n", qemuCmd.Args)
@ -427,6 +435,10 @@ func runQemuContainer(config QemuConfig) error {
dockerArgs = append(dockerArgs, "--device", "/dev/kvm")
}
if config.Detached == true {
dockerArgs = append(dockerArgs, "-d")
}
if config.PublishedPorts != nil && len(config.PublishedPorts) > 0 {
forwardings, err := buildDockerForwardings(config.PublishedPorts)
if err != nil {