diff options
author | Paul Holzinger <pholzing@redhat.com> | 2022-07-11 16:43:48 +0200 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2022-07-26 13:02:39 -0400 |
commit | bf269e634caee2022e99189de8337bd7fcd8f0e7 (patch) | |
tree | f3bd4b152097a5bc9eabc3d545f9c09f50c54ee2 /pkg | |
parent | b2f3b28c6a4548e0982f2ead9cc4f3acc8f27f82 (diff) | |
download | podman-bf269e634caee2022e99189de8337bd7fcd8f0e7.tar.gz podman-bf269e634caee2022e99189de8337bd7fcd8f0e7.tar.bz2 podman-bf269e634caee2022e99189de8337bd7fcd8f0e7.zip |
podman machine: do not commit proxies into config file
qemu fails when the same `fw_cfg` options is used more than once.
Since the current logic always adds a new option on each machine load
this will fail on the second start.
We can fix this by checking if the option is already set and replace but
I think it is easier to just not commit the option in the config and add
it dynamically on start. User that hit this bug have to recreate the
machine.
[NO NEW TESTS NEEDED]
Fixes #14636
Fixes #14837
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/machine/qemu/machine.go | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/pkg/machine/qemu/machine.go b/pkg/machine/qemu/machine.go index 6134e69e1..3b57455c4 100644 --- a/pkg/machine/qemu/machine.go +++ b/pkg/machine/qemu/machine.go @@ -240,20 +240,6 @@ func (p *Provider) LoadVMByName(name string) (machine.VM, error) { return nil, err } - // It is here for providing the ability to propagate - // proxy settings (e.g. HTTP_PROXY and others) on a start - // and avoid a need of re-creating/re-initiating a VM - if proxyOpts := machine.GetProxyVariables(); len(proxyOpts) > 0 { - proxyStr := "name=opt/com.coreos/environment,string=" - var proxies string - for k, v := range proxyOpts { - proxies = fmt.Sprintf("%s%s=\"%s\"|", proxies, k, v) - } - proxyStr = fmt.Sprintf("%s%s", proxyStr, base64.StdEncoding.EncodeToString([]byte(proxies))) - vm.CmdLine = append(vm.CmdLine, "-fw_cfg", proxyStr) - } - - logrus.Debug(vm.CmdLine) return vm, nil } @@ -573,15 +559,29 @@ func (v *MachineVM) Start(name string, _ machine.StartOptions) error { attr := new(os.ProcAttr) files := []*os.File{dnr, dnw, dnw, fd} attr.Files = files - logrus.Debug(v.CmdLine) cmdLine := v.CmdLine + // It is here for providing the ability to propagate + // proxy settings (e.g. HTTP_PROXY and others) on a start + // and avoid a need of re-creating/re-initiating a VM + if proxyOpts := machine.GetProxyVariables(); len(proxyOpts) > 0 { + proxyStr := "name=opt/com.coreos/environment,string=" + var proxies string + for k, v := range proxyOpts { + proxies = fmt.Sprintf("%s%s=\"%s\"|", proxies, k, v) + } + proxyStr = fmt.Sprintf("%s%s", proxyStr, base64.StdEncoding.EncodeToString([]byte(proxies))) + cmdLine = append(cmdLine, "-fw_cfg", proxyStr) + } + // Disable graphic window when not in debug mode // Done in start, so we're not suck with the debug level we used on init if !logrus.IsLevelEnabled(logrus.DebugLevel) { cmdLine = append(cmdLine, "-display", "none") } + logrus.Debugf("qemu cmd: %v", cmdLine) + stderrBuf := &bytes.Buffer{} cmd := &exec.Cmd{ |