From 0b7a7e73b5b7c372f89a0cc804938298cdd2d138 Mon Sep 17 00:00:00 2001 From: Gaurav Talreja Date: Fri, 10 Jul 2026 14:49:54 +0530 Subject: [PATCH 1/7] Add deploy_network_type for upstream-pr-install JT execution Signed-off-by: Gaurav Talreja --- robottelo/hosts.py | 1 + 1 file changed, 1 insertion(+) diff --git a/robottelo/hosts.py b/robottelo/hosts.py index 9fab16fb85f..de213160233 100644 --- a/robottelo/hosts.py +++ b/robottelo/hosts.py @@ -2150,6 +2150,7 @@ def install_satellite_foremanctl( job_template='upstream-pr-install', target_vm=self.name, pull_requests=pull_requests, + deploy_network_type=settings.server.network_type, ).execute() # Install podman (required for foremanctl container operations) From 27e6ab7a69e447902bc0c72062f8ac856b0ecd63 Mon Sep 17 00:00:00 2001 From: Gaurav Talreja Date: Mon, 13 Jul 2026 19:15:21 +0530 Subject: [PATCH 2/7] Add IPv6 proxy for podman pull from registry to foremanctl install step Signed-off-by: Gaurav Talreja --- robottelo/hosts.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/robottelo/hosts.py b/robottelo/hosts.py index de213160233..030067a55fc 100644 --- a/robottelo/hosts.py +++ b/robottelo/hosts.py @@ -2138,6 +2138,8 @@ def install_satellite_foremanctl( # Add IPv6 proxy for IPv6 communication self.enable_ipv6_dnf_and_rhsm_proxy() self.enable_ipv6_system_proxy() + # Add IPv6 proxy for podman to pull from container registry + self.enable_ipv6_podman_proxy() # Enable RHEL and Satellite repos self.register_to_cdn() self.setup_rhel_repos() From 0bcefdb38bd631af367e302dc9ca770610761b75 Mon Sep 17 00:00:00 2001 From: Gaurav Talreja Date: Tue, 14 Jul 2026 02:33:35 +0530 Subject: [PATCH 3/7] Ensure /etc/containers exists for IPv6 podman proxy setup before foremanctl runs Signed-off-by: Gaurav Talreja --- robottelo/hosts.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/robottelo/hosts.py b/robottelo/hosts.py index 030067a55fc..a9e20082964 100644 --- a/robottelo/hosts.py +++ b/robottelo/hosts.py @@ -919,6 +919,8 @@ def enable_ipv6_podman_proxy(self): if not self.network_type.has_ipv4: container_cfg = '/etc/containers/containers.conf' proxy_url = settings.http_proxy.http_proxy_ipv6_url + # Ensure /etc/containers exists if podman is not installed + assert self.execute('rpm -q podman || mkdir -p /etc/containers').status == 0 if self.execute(f'grep -q "https_proxy" {container_cfg}').status != 0: assert ( self.execute( From 7d8d348d3a83d819ef81262c8e29ff2549328064 Mon Sep 17 00:00:00 2001 From: Gaurav Talreja Date: Tue, 14 Jul 2026 06:32:20 +0530 Subject: [PATCH 4/7] Add no_proxy=localhost to container proxy config for IPv6 deployments On IPv6-only hosts, candlepin healthcheck routes through the HTTP proxy and gets 503, causing systemd to timeout and kill the service. Signed-off-by: Gaurav Talreja --- robottelo/hosts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/robottelo/hosts.py b/robottelo/hosts.py index a9e20082964..6dbd0828c59 100644 --- a/robottelo/hosts.py +++ b/robottelo/hosts.py @@ -924,7 +924,7 @@ def enable_ipv6_podman_proxy(self): if self.execute(f'grep -q "https_proxy" {container_cfg}').status != 0: assert ( self.execute( - f'echo -e "[engine]\\nenv = [\'https_proxy={proxy_url}\']" >> {container_cfg}' + f'echo -e "[engine]\\nenv = [\'https_proxy={proxy_url}\', \'no_proxy=localhost\']" >> {container_cfg}' ).status == 0 ) From 3560417a9d2dbd3e3f558b6ba360bfb1e5fb98bd Mon Sep 17 00:00:00 2001 From: Gaurav Talreja Date: Tue, 14 Jul 2026 22:02:06 +0530 Subject: [PATCH 5/7] Replace enable_ipv6_podman_proxy with ensure_podman_installed Signed-off-by: Gaurav Talreja --- robottelo/hosts.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/robottelo/hosts.py b/robottelo/hosts.py index 6dbd0828c59..d38c431b5da 100644 --- a/robottelo/hosts.py +++ b/robottelo/hosts.py @@ -919,8 +919,6 @@ def enable_ipv6_podman_proxy(self): if not self.network_type.has_ipv4: container_cfg = '/etc/containers/containers.conf' proxy_url = settings.http_proxy.http_proxy_ipv6_url - # Ensure /etc/containers exists if podman is not installed - assert self.execute('rpm -q podman || mkdir -p /etc/containers').status == 0 if self.execute(f'grep -q "https_proxy" {container_cfg}').status != 0: assert ( self.execute( @@ -2140,8 +2138,8 @@ def install_satellite_foremanctl( # Add IPv6 proxy for IPv6 communication self.enable_ipv6_dnf_and_rhsm_proxy() self.enable_ipv6_system_proxy() - # Add IPv6 proxy for podman to pull from container registry - self.enable_ipv6_podman_proxy() + # Add IPv6 proxy for podman to pull from registry & install podman if not pre-installed + self.ensure_podman_installed(enable_ipv6_proxy=True) # Enable RHEL and Satellite repos self.register_to_cdn() self.setup_rhel_repos() From 128d8bff37da8a555b979a2699a6cfda015e885c Mon Sep 17 00:00:00 2001 From: Gaurav Talreja Date: Tue, 14 Jul 2026 22:36:14 +0530 Subject: [PATCH 6/7] Add http_proxy=false to container proxy config to match the docs Disabling automatic proxy forwarding via http_proxy=false in containers section. Signed-off-by: Gaurav Talreja --- robottelo/hosts.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/robottelo/hosts.py b/robottelo/hosts.py index d38c431b5da..e4dd901f32f 100644 --- a/robottelo/hosts.py +++ b/robottelo/hosts.py @@ -920,12 +920,12 @@ def enable_ipv6_podman_proxy(self): container_cfg = '/etc/containers/containers.conf' proxy_url = settings.http_proxy.http_proxy_ipv6_url if self.execute(f'grep -q "https_proxy" {container_cfg}').status != 0: - assert ( - self.execute( - f'echo -e "[engine]\\nenv = [\'https_proxy={proxy_url}\', \'no_proxy=localhost\']" >> {container_cfg}' - ).status - == 0 + proxy_env = ( + '[engine]\\nenv = [' + f'\\"https_proxy={proxy_url}\\"]\\n' + '[containers]\\nhttp_proxy=false' ) + assert self.execute(f'echo -e "{proxy_env}" >> {container_cfg}').status == 0 def disable_rhsm_proxy(self): """Disables HTTP proxy for subscription manager""" From bee080122285f7a8c46e73fc6a299d2b541386ee Mon Sep 17 00:00:00 2001 From: Gaurav Talreja Date: Wed, 15 Jul 2026 15:47:23 +0530 Subject: [PATCH 7/7] Fix test_foremanctl_deploy_certificate_cname for IPv6 Signed-off-by: Gaurav Talreja --- tests/foreman/installer/test_install_foremanctl.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/foreman/installer/test_install_foremanctl.py b/tests/foreman/installer/test_install_foremanctl.py index 4bda3be7942..96910affd29 100644 --- a/tests/foreman/installer/test_install_foremanctl.py +++ b/tests/foreman/installer/test_install_foremanctl.py @@ -274,9 +274,8 @@ def test_foremanctl_deploy_certificate_cname(module_sat_ready_rhel): assert result.status == 0, ( f'foremanctl deploy with --certificate-cname failed:\n{result.stderr}' ) - result = satellite.execute( - 'curl --fail --silent --show-error --head ' + 'curl --noproxy "*" --fail --silent --show-error --head ' f'--cacert {FOREMANCTL_CERTS_DIR}/ca.crt ' f'--resolve "{cname}:443:127.0.0.1" ' f'https://{cname}/users/login'