mirror of
https://github.com/containers/podman.git
synced 2025-06-21 01:19:15 +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
|
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
|
return vm, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -573,15 +559,29 @@ func (v *MachineVM) Start(name string, _ machine.StartOptions) error {
|
|||||||
attr := new(os.ProcAttr)
|
attr := new(os.ProcAttr)
|
||||||
files := []*os.File{dnr, dnw, dnw, fd}
|
files := []*os.File{dnr, dnw, dnw, fd}
|
||||||
attr.Files = files
|
attr.Files = files
|
||||||
logrus.Debug(v.CmdLine)
|
|
||||||
cmdLine := 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
|
// Disable graphic window when not in debug mode
|
||||||
// Done in start, so we're not suck with the debug level we used on init
|
// Done in start, so we're not suck with the debug level we used on init
|
||||||
if !logrus.IsLevelEnabled(logrus.DebugLevel) {
|
if !logrus.IsLevelEnabled(logrus.DebugLevel) {
|
||||||
cmdLine = append(cmdLine, "-display", "none")
|
cmdLine = append(cmdLine, "-display", "none")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logrus.Debugf("qemu cmd: %v", cmdLine)
|
||||||
|
|
||||||
stderrBuf := &bytes.Buffer{}
|
stderrBuf := &bytes.Buffer{}
|
||||||
|
|
||||||
cmd := &exec.Cmd{
|
cmd := &exec.Cmd{
|
||||||
|
Reference in New Issue
Block a user