From 4584350f6e4338a449e3c115b3c1135a62ffbaa8 Mon Sep 17 00:00:00 2001 From: esendjer Date: Mon, 5 Jun 2023 17:59:47 +0300 Subject: [PATCH 1/2] Makefile binaries target adopted for Mac and Win Signed-off-by: esendjer --- Makefile | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 167bd9a5df..e4ac2214db 100644 --- a/Makefile +++ b/Makefile @@ -215,6 +215,8 @@ all: binaries docs .PHONY: binaries ifeq ($(shell uname -s),FreeBSD) binaries: podman podman-remote ## Build podman and podman-remote binaries +else ifneq (, $(findstring $(GOOS),darwin windows)) +binaries: podman-remote ## Build podman-remote (client) only binaries else binaries: podman podman-remote rootlessport quadlet ## Build podman, podman-remote and rootlessport binaries quadlet endif @@ -224,7 +226,16 @@ endif # at reference-time (due to `=` and not `=:`). _HLP_TGTS_RX = '^[[:print:]]+:.*?\#\# .*$$' _HLP_TGTS_CMD = grep -E $(_HLP_TGTS_RX) $(MAKEFILE_LIST) -_HLP_TGTS_LEN = $(shell $(call err_if_empty,_HLP_TGTS_CMD) | cut -d : -f 1 | wc -L) +_HLP_TGTS_LEN = $(shell $(call err_if_empty,_HLP_TGTS_CMD) | cut -d : -f 1 | wc -L 2>/dev/null || echo "PARSING_ERROR") +# Separated condition for Darwin +ifeq ($(shell uname -s)$(_HLP_TGTS_LEN),DarwinPARSING_ERROR) +ifneq (,$(wildcard /usr/local/bin/gwc)) +_HLP_TGTS_LEN = $(shell $(call err_if_empty,_HLP_TGTS_CMD) | cut -d : -f 1 | gwc -L) +else +$(warning On Darwin (MacOS) installed coreutils is necessary) +$(warning Use 'brew install coreutils' command to install coreutils on your system) +endif +endif _HLPFMT = "%-$(call err_if_empty,_HLP_TGTS_LEN)s %s\n" .PHONY: help help: ## (Default) Print listing of key targets with their descriptions From 1ce53677aafc4d51f282590a9121a10d3a583898 Mon Sep 17 00:00:00 2001 From: esendjer Date: Mon, 5 Jun 2023 18:00:26 +0300 Subject: [PATCH 2/2] fix ignition config creation * the sequence of Ignition config creation was broken, so that the part responsible for propagation of proxy settings has been out of the final ignConfig * e2e test for proxy settings propagation Signed-off-by: esendjer --- pkg/machine/e2e/proxy_test.go | 61 +++++++++++++++++++++++++++++++++++ pkg/machine/ignition.go | 15 +++++---- 2 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 pkg/machine/e2e/proxy_test.go 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 }