mirror of
https://github.com/containers/podman.git
synced 2025-06-20 17:13:43 +08:00
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>
This commit is contained in:

committed by
Matthew Heon

parent
b2f3b28c6a
commit
bf269e634c
@ -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{
|
||||
|
Reference in New Issue
Block a user