diff --git a/pkg/machine/e2e/proxy_test.go b/pkg/machine/e2e/proxy_test.go new file mode 100644 index 0000000000..b5393832d7 --- /dev/null +++ b/pkg/machine/e2e/proxy_test.go @@ -0,0 +1,61 @@ +package e2e_test + +import ( + "os" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + . "github.com/onsi/gomega/gexec" +) + +var _ = Describe("podman machine proxy settings propagation", func() { + var ( + mb *machineTestBuilder + testDir string + ) + + BeforeEach(func() { + testDir, mb = setup() + }) + AfterEach(func() { + teardown(originalHomeDir, testDir, mb) + }) + + It("ssh to running machine and check proxy settings", func() { + name := randomString() + i := new(initMachine) + session, err := mb.setName(name).setCmd(i.withImagePath(mb.imagePath)).run() + Expect(err).ToNot(HaveOccurred()) + Expect(session).To(Exit(0)) + + defer func() { + httpProxyEnv := os.Getenv("HTTP_PROXY") + httpsProxyEnv := os.Getenv("HTTPS_PROXY") + if httpProxyEnv != "" { + os.Unsetenv("HTTP_PROXY") + } + if httpsProxyEnv != "" { + os.Unsetenv("HTTPS_PROXY") + } + }() + proxyURL := "http://abcdefghijklmnopqrstuvwxyz-proxy" + os.Setenv("HTTP_PROXY", proxyURL) + os.Setenv("HTTPS_PROXY", proxyURL) + + s := new(startMachine) + startSession, err := mb.setName(name).setCmd(s).run() + Expect(err).ToNot(HaveOccurred()) + Expect(startSession).To(Exit(0)) + + sshProxy := sshMachine{} + sshSession, err := mb.setName(name).setCmd(sshProxy.withSSHCommand([]string{"printenv", "HTTP_PROXY"})).run() + Expect(err).ToNot(HaveOccurred()) + Expect(sshSession).To(Exit(0)) + Expect(sshSession.outputToString()).To(ContainSubstring(proxyURL)) + + sshSession, err = mb.setName(name).setCmd(sshProxy.withSSHCommand([]string{"printenv", "HTTPS_PROXY"})).run() + Expect(err).ToNot(HaveOccurred()) + Expect(sshSession).To(Exit(0)) + Expect(sshSession.outputToString()).To(ContainSubstring(proxyURL)) + }) +}) diff --git a/pkg/machine/ignition.go b/pkg/machine/ignition.go index 95059324a3..f5cf5e29bf 100644 --- a/pkg/machine/ignition.go +++ b/pkg/machine/ignition.go @@ -206,12 +206,6 @@ WantedBy=sysinit.target Contents: &deMoby, }, }} - ignConfig := Config{ - Ignition: ignVersion, - Passwd: ignPassword, - Storage: ignStorage, - Systemd: ignSystemd, - } // Only qemu has the qemu firmware environment setting if ign.VMType == QemuVirt { @@ -222,7 +216,14 @@ WantedBy=sysinit.target } ignSystemd.Units = append(ignSystemd.Units, qemuUnit) } - ign.Cfg = ignConfig + // Only after all checks are done + // it's ready create the ingConfig + ign.Cfg = Config{ + Ignition: ignVersion, + Passwd: ignPassword, + Storage: ignStorage, + Systemd: ignSystemd, + } return nil }