From 19927f6b412d05fc822fb067cc1b31ff018c42e1 Mon Sep 17 00:00:00 2001 From: Rich Megginson Date: Wed, 11 Mar 2026 11:21:17 -0600 Subject: [PATCH] test: support an external proxy This PR allows to specify an external global proxy for testing purposes. The format of `SR_RHC_EXTERNAL_PROXY` is scheme://hostname.port e.g. `http://my.hostname.com:3128` Signed-off-by: Rich Megginson --- tests/tasks/check_candlepin.yml | 2 ++ tests/tasks/setup_test_data.yml | 33 ++++++++++++++++++++++++ tests/tests_environments.yml | 2 ++ tests/tests_insights_ansible_host.yml | 5 ++-- tests/tests_insights_autoupdate.yml | 1 + tests/tests_insights_client_register.yml | 3 +++ tests/tests_insights_display_name.yml | 3 ++- tests/tests_insights_remediation.yml | 1 + tests/tests_insights_tags.yml | 1 + tests/tests_proxy.yml | 2 ++ tests/tests_register_unregister.yml | 7 +++++ tests/tests_release.yml | 8 ++++++ tests/tests_repositories.yml | 1 + 13 files changed, 66 insertions(+), 3 deletions(-) diff --git a/tests/tasks/check_candlepin.yml b/tests/tasks/check_candlepin.yml index 2a7fa42e..461b2230 100644 --- a/tests/tasks/check_candlepin.yml +++ b/tests/tasks/check_candlepin.yml @@ -5,3 +5,5 @@ url: "https://{{ lsr_rhc_test_data.candlepin_host }}:{{ lsr_rhc_test_data.candlepin_port }}{{ lsr_rhc_test_data.candlepin_prefix }}" # yamllint disable-line method: HEAD validate_certs: false + environment: "{{ {'http_proxy': __rhc_external_proxy_url, 'https_proxy': __rhc_external_proxy_url} + if __rhc_external_proxy_url | length > 0 else {} }}" diff --git a/tests/tasks/setup_test_data.yml b/tests/tasks/setup_test_data.yml index 44c01ae9..5a1eea0d 100644 --- a/tests/tasks/setup_test_data.yml +++ b/tests/tasks/setup_test_data.yml @@ -37,3 +37,36 @@ - name: Set flag to indicate system is ostree set_fact: __rhc_is_ostree: "{{ __ostree_booted_stat.stat.exists }}" + +- name: Set flag to indicate use of external proxy + set_fact: + __rhc_use_external_proxy: "{{ lookup('env', 'SR_RHC_EXTERNAL_PROXY') | length > 0 }}" + __rhc_external_proxy_url: "{{ lookup('env', 'SR_RHC_EXTERNAL_PROXY') }}" + +- name: Set rhc_external_proxy to empty when external proxy is not used + set_fact: + rhc_external_proxy: {} + when: not __rhc_use_external_proxy + +- name: Handle external proxy + when: __rhc_use_external_proxy + block: + - name: Parse and set rhc_external_proxy + set_fact: + rhc_external_proxy: + scheme: "{{ __rhc_external_proxy_url | urlsplit('scheme') }}" + hostname: "{{ __rhc_external_proxy_url | urlsplit('hostname') }}" + port: "{{ (__rhc_external_proxy_url | urlsplit('port')) | default('') | string }}" + + # unfortunately this doesn't work in all cases, so we have to add the environment + # explicitly to the check_candlepin.yml task as well + - name: Add proxy vars to bashrc + lineinfile: + path: /root/.bashrc + regexp: "^export https?=" + line: "{{ item }}" + create: true + mode: "0644" + loop: + - export http_proxy={{ __rhc_external_proxy_url }} + - export https_proxy={{ __rhc_external_proxy_url }} diff --git a/tests/tests_environments.yml b/tests/tests_environments.yml index f4e5161f..e725c1ae 100644 --- a/tests/tests_environments.yml +++ b/tests/tests_environments.yml @@ -51,6 +51,7 @@ rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" rhc_environments: - "{{ lsr_rhc_test_data.env_nonworking }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Unreachable task fail: @@ -80,6 +81,7 @@ insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" rhc_environments: "{{ lsr_rhc_test_data.envs_register }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" # 'subscription-manager environments' has a '--list' option only # in RHEL 8.6+ and greater (incl. RHEL 9+) diff --git a/tests/tests_insights_ansible_host.yml b/tests/tests_insights_ansible_host.yml index 655901f2..091154f7 100644 --- a/tests/tests_insights_ansible_host.yml +++ b/tests/tests_insights_ansible_host.yml @@ -31,6 +31,7 @@ prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Check ansible_host is set to 'host' in config file command: @@ -89,7 +90,7 @@ state: absent check_mode: true register: __test_ansible_host_absent - failed_when: __test_ansible_host_absent.found + failed_when: __test_ansible_host_absent.found != 0 - name: Test ansible_host is removed during insights unregistration block: @@ -117,7 +118,7 @@ state: absent check_mode: true register: __test_ansible_host_removed - failed_when: __test_ansible_host_removed.found + failed_when: __test_ansible_host_removed.found != 0 always: - name: Unregister diff --git a/tests/tests_insights_autoupdate.yml b/tests/tests_insights_autoupdate.yml index 9d963714..58158d8f 100644 --- a/tests/tests_insights_autoupdate.yml +++ b/tests/tests_insights_autoupdate.yml @@ -31,6 +31,7 @@ prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Check that auto_update is true in config file command: diff --git a/tests/tests_insights_client_register.yml b/tests/tests_insights_client_register.yml index 42b16132..a12e8a28 100644 --- a/tests/tests_insights_client_register.yml +++ b/tests/tests_insights_client_register.yml @@ -28,6 +28,7 @@ prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Register insights (noop) include_role: @@ -47,6 +48,7 @@ prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Get insights UUID include_tasks: tasks/get_insights_uuid.yml @@ -73,6 +75,7 @@ insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_state: reconnect rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Get rhsm UUID include_tasks: tasks/get_rhsm_uuid.yml diff --git a/tests/tests_insights_display_name.yml b/tests/tests_insights_display_name.yml index a20d08e9..ba7a09ff 100644 --- a/tests/tests_insights_display_name.yml +++ b/tests/tests_insights_display_name.yml @@ -31,6 +31,7 @@ prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Check display_name is set to 'name' in config file command: @@ -99,7 +100,7 @@ state: absent check_mode: true register: __test_display_name_removed - failed_when: __test_display_name_removed.found + failed_when: __test_display_name_removed.found != 0 always: - name: Unregister diff --git a/tests/tests_insights_remediation.yml b/tests/tests_insights_remediation.yml index 08b88d4e..a703c481 100644 --- a/tests/tests_insights_remediation.yml +++ b/tests/tests_insights_remediation.yml @@ -41,6 +41,7 @@ prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Set the fact for the systemd service set_fact: diff --git a/tests/tests_insights_tags.yml b/tests/tests_insights_tags.yml index 3a200542..6dd53225 100644 --- a/tests/tests_insights_tags.yml +++ b/tests/tests_insights_tags.yml @@ -32,6 +32,7 @@ prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Get state of insights tags.yaml file include_tasks: tasks/get_insights_tags.yml diff --git a/tests/tests_proxy.yml b/tests/tests_proxy.yml index 1d6def45..0592cafe 100644 --- a/tests/tests_proxy.yml +++ b/tests/tests_proxy.yml @@ -331,9 +331,11 @@ vars: rhc_state: absent + # skip this test if external proxy is used - name: Register (without proxy) include_role: name: linux-system-roles.rhc + when: not __rhc_use_external_proxy vars: rhc_auth: login: diff --git a/tests/tests_register_unregister.yml b/tests/tests_register_unregister.yml index b49df273..448fb55f 100644 --- a/tests/tests_register_unregister.yml +++ b/tests/tests_register_unregister.yml @@ -30,6 +30,7 @@ port: "{{ lsr_rhc_test_data.candlepin_port }}" prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Unreachable task fail: msg: The above task must fail @@ -55,6 +56,7 @@ prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Register (noop) include_role: @@ -73,6 +75,7 @@ prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Get rhsm UUID include_tasks: tasks/get_rhsm_uuid.yml @@ -99,6 +102,7 @@ insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_state: reconnect rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Get rhsm UUID include_tasks: tasks/get_rhsm_uuid.yml @@ -134,6 +138,7 @@ prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Unreachable task fail: @@ -159,6 +164,7 @@ prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Register (using activation keys, noop) include_role: @@ -176,6 +182,7 @@ prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}" insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" always: - name: Unregister include_role: diff --git a/tests/tests_release.yml b/tests/tests_release.yml index b586ae28..0c26ff12 100644 --- a/tests/tests_release.yml +++ b/tests/tests_release.yml @@ -40,6 +40,7 @@ insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" rhc_release: "{{ lsr_rhc_test_data.release }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Get set release include_tasks: tasks/get_release.yml @@ -56,6 +57,7 @@ rhc_insights: state: absent rhc_release: {"state":"absent"} + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Get set release include_tasks: tasks/get_release.yml @@ -72,6 +74,7 @@ rhc_insights: state: absent rhc_release: {"state":"absent"} + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Check invalid releases cannot be set block: @@ -84,6 +87,7 @@ # look like a valid release number, hopefully it will never # be used! rhc_release: "1.99" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Unreachable task fail: @@ -101,6 +105,7 @@ rhc_insights: state: absent rhc_release: "{{ lsr_rhc_test_data.release }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Get set release include_tasks: tasks/get_release.yml @@ -117,6 +122,7 @@ rhc_insights: state: absent rhc_release: "{{ lsr_rhc_test_data.release }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Register (forced, without release) include_role: @@ -137,6 +143,7 @@ rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" rhc_release: {"state":"absent"} rhc_state: reconnect + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Get set release include_tasks: tasks/get_release.yml @@ -165,6 +172,7 @@ rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" rhc_release: "{{ lsr_rhc_test_data.release }}" rhc_state: reconnect + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Get set release include_tasks: tasks/get_release.yml diff --git a/tests/tests_repositories.yml b/tests/tests_repositories.yml index 26a0e4f2..792fe365 100644 --- a/tests/tests_repositories.yml +++ b/tests/tests_repositories.yml @@ -30,6 +30,7 @@ insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}" rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}" rhc_repositories: "{{ lsr_rhc_test_data.repositories }}" + rhc_proxy: "{{ rhc_external_proxy | default({}) }}" - name: Get enabled repositories include_tasks: tasks/list_repositories.yml