From 6f12a5ba45d60b20db27d76ea3edfbbfd70417a0 Mon Sep 17 00:00:00 2001 From: pullan1 Date: Thu, 18 Jun 2026 19:05:55 +0530 Subject: [PATCH 1/4] rhel subscription validation fix Signed-off-by: pullan1 --- input_validation/validate_config.yml | 9 +++++++-- local_repo/local_repo.yml | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/input_validation/validate_config.yml b/input_validation/validate_config.yml index dc9dfa3913..f3d5469f8a 100644 --- a/input_validation/validate_config.yml +++ b/input_validation/validate_config.yml @@ -50,6 +50,11 @@ tags: - always tasks: + - name: Enable subscription check when validate_config.yml is run directly + ansible.builtin.set_fact: + run_subscription_check: true + when: run_subscription_check is not defined and omnia_run_tags is not defined + - name: Run subscription validation tasks when: "'local_repo' in (omnia_run_tags | default(ansible_run_tags | default([]) | list)) or 'all' in (ansible_run_tags | default([]) | list)" block: @@ -94,7 +99,7 @@ ansible.builtin.include_role: name: validate_subscription tasks_from: check_rhel_subscription.yml - when: "'local_repo' in (hostvars['localhost']['omnia_run_tags'] | default([]))" + when: "hostvars['localhost']['run_subscription_check'] | default(false) | bool" - name: Configure RHEL repository URLs hosts: localhost @@ -107,7 +112,7 @@ ansible.builtin.include_role: name: validate_subscription tasks_from: configure_rhel_os_urls.yml - when: "'local_repo' in (omnia_run_tags | default([]))" + when: "run_subscription_check | default(false) | bool" - name: Validate omnia input config hosts: localhost diff --git a/local_repo/local_repo.yml b/local_repo/local_repo.yml index d4bb1d488d..e6fea817a0 100644 --- a/local_repo/local_repo.yml +++ b/local_repo/local_repo.yml @@ -29,6 +29,10 @@ omnia_run_tags: "{{ (ansible_run_tags | default([]) | list + ['local_repo']) | unique }}" cacheable: true + - name: Enable subscription check for local_repo + ansible.builtin.set_fact: + run_subscription_check: true + - name: Include metadata vars ansible.builtin.include_vars: "/opt/omnia/.data/oim_metadata.yml" register: include_metadata From cd7d682c77c93a7500e228d6ea520f1e2e875a9c Mon Sep 17 00:00:00 2001 From: pullan1 Date: Fri, 19 Jun 2026 17:26:40 +0530 Subject: [PATCH 2/4] removed loal_repo tag Signed-off-by: pullan1 --- prepare_oim/prepare_oim.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prepare_oim/prepare_oim.yml b/prepare_oim/prepare_oim.yml index 4a9c969499..d6f98be624 100644 --- a/prepare_oim/prepare_oim.yml +++ b/prepare_oim/prepare_oim.yml @@ -32,7 +32,7 @@ {{ ( ansible_run_tags | default([]) | list + - ['prepare_oim', 'local_repo', 'discovery', 'provision'] + ['prepare_oim', 'discovery', 'provision'] ) | unique }} cacheable: true From 7f604c10b0af2030f3d995c8673502176a3c9d43 Mon Sep 17 00:00:00 2001 From: pullan1 Date: Mon, 22 Jun 2026 16:25:22 +0530 Subject: [PATCH 3/4] pulp image upgrade from 3.80 to 3.113(stable version) Signed-off-by: pullan1 --- .../library/module_utils/local_repo/config.py | 20 +++++++++---------- common/vars/image_vars.yml | 2 +- .../deploy_containers/pulp/vars/main.yml | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/common/library/module_utils/local_repo/config.py b/common/library/module_utils/local_repo/config.py index e3a1031528..4bce5e64ca 100644 --- a/common/library/module_utils/local_repo/config.py +++ b/common/library/module_utils/local_repo/config.py @@ -164,22 +164,22 @@ pulp_container_commands = { "create_container_repo": "pulp container repository create --name %s", "show_container_repo": "pulp container repository show --name %s", - "create_container_remote": "pulp container remote create --name %s --url %s --upstream-name %s --policy %s --include-tags '[\"%s\"]'", - "create_container_remote_for_digest": "pulp container remote create --name %s --url %s --upstream-name %s --policy %s", - "create_user_remote_tag": "pulp container remote create --name %s --url %s --upstream-name %s --policy %s --include-tags '[\"%s\"]' --ca-cert %s --client-key %s --tls-validation false", - "update_user_remote_tag": "pulp container remote update --name %s --url %s --upstream-name %s --policy %s --include-tags '%s' --ca-cert %s --client-key %s --tls-validation false", - "update_user_remote_digest": "pulp container remote update --name %s --url %s --upstream-name %s --policy %s --ca-cert %s --client-key %s --tls-validation false", - "create_user_remote_digest": "pulp container remote create --name %s --url %s --upstream-name %s --policy %s --ca-cert %s --client-key %s --tls-validation false", - "update_remote_for_digest": "pulp container remote update --name %s --url %s --upstream-name %s --policy %s", - "update_container_remote": "pulp container remote update --name %s --url %s --upstream-name %s --policy %s --include-tags '%s'", + "create_container_remote": "pulp container remote create --name %s --url %s --upstream-name %s --policy %s --include-tags '[\"%s\"]' --exclude-tags '[\"*sha256*.sig\"]'", + "create_container_remote_for_digest": "pulp container remote create --name %s --url %s --upstream-name %s --policy %s --exclude-tags '[\"*sha256*.sig\"]'", + "create_user_remote_tag": "pulp container remote create --name %s --url %s --upstream-name %s --policy %s --include-tags '[\"%s\"]' --exclude-tags '[\"*sha256*.sig\"]' --ca-cert %s --client-key %s --tls-validation false", + "update_user_remote_tag": "pulp container remote update --name %s --url %s --upstream-name %s --policy %s --include-tags '%s' --exclude-tags '[\"*sha256*.sig\"]' --ca-cert %s --client-key %s --tls-validation false", + "update_user_remote_digest": "pulp container remote update --name %s --url %s --upstream-name %s --policy %s --exclude-tags '[\"*sha256*.sig\"]' --ca-cert %s --client-key %s --tls-validation false", + "create_user_remote_digest": "pulp container remote create --name %s --url %s --upstream-name %s --policy %s --exclude-tags '[\"*sha256*.sig\"]' --ca-cert %s --client-key %s --tls-validation false", + "update_remote_for_digest": "pulp container remote update --name %s --url %s --upstream-name %s --policy %s --exclude-tags '[\"*sha256*.sig\"]'", + "update_container_remote": "pulp container remote update --name %s --url %s --upstream-name %s --policy %s --include-tags '%s' --exclude-tags '[\"*sha256*.sig\"]'", "show_container_remote": "pulp container remote show --name %s", "show_container_distribution": "pulp container distribution show --name %s", "sync_container_repository": "pulp container repository sync --name %s --remote %s", "distribute_container_repository": "pulp container distribution create --name %s --repository %s --base-path %s", "update_container_distribution": "pulp container distribution update --name %s --repository %s --base-path %s", "list_container_remote_tags": "pulp container remote list --name %s --field include_tags", - "create_container_remote_auth": "pulp container remote create --name %s --url %s --upstream-name %s --policy %s --include-tags '%s' --username %s --password '%s'", - "update_container_remote_auth": "pulp container remote update --name %s --url %s --upstream-name %s --policy %s --include-tags '%s' --username %s --password '%s'", + "create_container_remote_auth": "pulp container remote create --name %s --url %s --upstream-name %s --policy %s --include-tags '%s' --exclude-tags '[\"*sha256*.sig\"]' --username %s --password '%s'", + "update_container_remote_auth": "pulp container remote update --name %s --url %s --upstream-name %s --policy %s --include-tags '%s' --exclude-tags '[\"*sha256*.sig\"]' --username %s --password '%s'", # Cleanup commands "delete_repository": "pulp container repository destroy --name %s", "delete_remote": "pulp container remote destroy --name %s", diff --git a/common/vars/image_vars.yml b/common/vars/image_vars.yml index dd7a9ee7fc..1915ac6673 100644 --- a/common/vars/image_vars.yml +++ b/common/vars/image_vars.yml @@ -16,7 +16,7 @@ # Usage: get_container_image_list.yml container_tag: "latest" squid_tag: "6.6-24.04_beta" -pulp_tag: "3.80" +pulp_tag: "3.113" mysql_tag: "9.3.0" prometheus_tag: "v3.4.1" activemq_tag: "5.15.9" diff --git a/prepare_oim/roles/deploy_containers/pulp/vars/main.yml b/prepare_oim/roles/deploy_containers/pulp/vars/main.yml index da17b168d3..f5935b79fb 100644 --- a/prepare_oim/roles/deploy_containers/pulp/vars/main.yml +++ b/prepare_oim/roles/deploy_containers/pulp/vars/main.yml @@ -25,7 +25,7 @@ device_name: "/dev/fuse:/dev/fuse:rwm" pulp_container_name: "pulp" pulp_protocol_https: true # Tag is fixed for the Pulp container image as of 10-06-2025 -pulp_image: "docker.io/pulp/pulp:3.80" +pulp_image: "docker.io/pulp/pulp:3.113" # Usage: deployment_prereq.yml - pull image retries pull_image_retries: 5 From 5c52e039a4fa305200f9be9cf955d34b24e9c9ee Mon Sep 17 00:00:00 2001 From: priti-parate <140157516+priti-parate@users.noreply.github.com> Date: Mon, 22 Jun 2026 17:31:45 +0530 Subject: [PATCH 4/4] Merge pull request #4781 from priti-parate/pub/q2_upgrade update input file name in error message --- .../common_utils/en_us_validation_msg.py | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/common/library/module_utils/input_validation/common_utils/en_us_validation_msg.py b/common/library/module_utils/input_validation/common_utils/en_us_validation_msg.py index dbaa2acc94..bf63fecbd1 100644 --- a/common/library/module_utils/input_validation/common_utils/en_us_validation_msg.py +++ b/common/library/module_utils/input_validation/common_utils/en_us_validation_msg.py @@ -367,13 +367,13 @@ def switch_snmp3_username_fail_msg(min_username_length, max_length): # PowerScale telemetry validation messages POWERSCALE_VICTORIA_REQUIRED_MSG = ( "PowerScale telemetry requires VictoriaMetrics to be deployed. " - "When telemetry_sources.powerscale.metrics_enabled is true, " + "When telemetry_sources.powerscale.metrics_enabled is true in telemetry_config.yml, " "'victoria_metrics' must be included in collection_targets " "(e.g., 'victoria_metrics' or 'victoria_metrics,victoria_logs')." ) POWERSCALE_VICTORIA_LOGS_REQUIRED_MSG = ( "PowerScale logs collection requires VictoriaLogs to be deployed. " - "When telemetry_sources.powerscale.logs_enabled is true, " + "When telemetry_sources.powerscale.logs_enabled is true in telemetry_config.yml, " "'victoria_logs' must be included in collection_targets " "(e.g., 'victoria_metrics,victoria_logs')." ) @@ -386,15 +386,15 @@ def switch_snmp3_username_fail_msg(min_username_length, max_length): "PowerScale telemetry requires a service cluster." ) POWERSCALE_CONFIGURATIONS_MISSING_MSG = ( - "powerscale_configurations section is required when " + "powerscale_configurations section is required in telemetry_config.yml when " "telemetry_sources.powerscale.metrics_enabled is true. " "It must contain csm_observability_values_file_path." ) POWERSCALE_OTEL_STORAGE_SIZE_INVALID_MSG = ( - "must be a non-empty string in format 'XGi' (e.g., '5Gi')" + "must be a non-empty string in format 'XGi' (e.g., '5Gi') in telemetry_config.yml" ) POWERSCALE_CSM_VALUES_PATH_REQUIRED_MSG = ( - "csm_observability_values_file_path is required when " + "csm_observability_values_file_path is required in telemetry_config.yml when " "telemetry_sources.powerscale.metrics_enabled is true. " "Please provide the path to the CSM Observability values.yaml file." ) @@ -402,34 +402,34 @@ def powerscale_csm_values_not_found_msg(path): """Returns error message when CSM Observability values.yaml file is not found.""" return ( f"CSM Observability values.yaml file not found at '{path}'. " - "Please verify the file path is correct." + "Please verify the file path is correct in telemetry_config.yml (csm_observability_values_file_path)." ) POWERSCALE_CSM_VALUES_INVALID_YAML_MSG = ( - "CSM Observability values.yaml must contain a valid YAML dictionary." + "CSM Observability values.yaml (path specified in telemetry_config.yml) must contain a valid YAML dictionary." ) def powerscale_csm_values_parse_error_msg(error): """Returns error message when CSM Observability values.yaml fails to parse.""" return f"Failed to parse CSM Observability values.yaml: {error}" POWERSCALE_CSM_VALUES_MISSING_KARAVI_SECTION_MSG = ( - "CSM Observability values.yaml is missing 'karaviMetricsPowerscale' section." + "CSM Observability values.yaml (path specified in telemetry_config.yml) is missing 'karaviMetricsPowerscale' section." ) POWERSCALE_CSM_METRICS_IMAGE_MISSING_MSG = ( - "CSM Metrics PowerScale image is required in CSM Observability values.yaml." + "CSM Metrics PowerScale image is required in CSM Observability values.yaml (path specified in telemetry_config.yml)." ) POWERSCALE_OTEL_COLLECTOR_IMAGE_MISSING_MSG = ( - "OTEL Collector image is required in CSM Observability values.yaml." + "OTEL Collector image is required in CSM Observability values.yaml (path specified in telemetry_config.yml)." ) ADDITIONAL_METRIC_ENDPOINTS_URL_EMPTY_MSG = ( - "Each additional_metric_remote_write_endpoint must have a non-empty 'url' field." + "Each additional_metric_remote_write_endpoint in telemetry_config.yml must have a non-empty 'url' field." ) ADDITIONAL_METRIC_ENDPOINTS_URL_INVALID_MSG = ( - "URL must start with 'http://' or 'https://'." + "URL in telemetry_config.yml must start with 'http://' or 'https://'." ) ADDITIONAL_LOG_ENDPOINTS_URL_EMPTY_MSG = ( - "Each additional_log_write_endpoint must have a non-empty 'url' field." + "Each additional_log_write_endpoint in telemetry_config.yml must have a non-empty 'url' field." ) ADDITIONAL_LOG_ENDPOINTS_URL_INVALID_MSG = ( - "URL must start with 'http://' or 'https://'." + "URL in telemetry_config.yml must start with 'http://' or 'https://'." ) def powerscale_image_version_mismatch_msg(image_name, values_image, service_k8s_image): """Returns error message when CSM values.yaml image version doesn't match service_k8s (versioned).""" @@ -457,13 +457,13 @@ def powerscale_image_version_mismatch_msg(image_name, values_image, service_k8s_ "PowerScale telemetry requires a service cluster." ) POWERSCALE_CONFIGURATIONS_MISSING_MSG = ( - "powerscale_configurations section is required and must contain powerscale_telemetry_support." + "powerscale_configurations section is required in telemetry_config.yml and must contain powerscale_telemetry_support." ) POWERSCALE_OTEL_STORAGE_SIZE_INVALID_MSG = ( - "must be a non-empty string in format 'XGi' (e.g., '5Gi')" + "must be a non-empty string in format 'XGi' (e.g., '5Gi') in telemetry_config.yml" ) POWERSCALE_CSM_VALUES_PATH_REQUIRED_MSG = ( - "csm_observability_values_file_path is required when powerscale_configurations.powerscale_telemetry_support is true. " + "csm_observability_values_file_path is required in telemetry_config.yml when powerscale_configurations.powerscale_telemetry_support is true. " "Please provide the path to the CSM Observability values.yaml file." ) POWERSCALE_AUTH_PROXY_HOST_MISSING_MSG = ( @@ -475,28 +475,28 @@ def powerscale_csm_values_not_found_msg(path): """Returns error message when CSM Observability values.yaml file is not found.""" return ( f"CSM Observability values.yaml file not found at '{path}'. " - "Please verify the file path is correct." + "Please verify the file path is correct in telemetry_config.yml (csm_observability_values_file_path)." ) POWERSCALE_CSM_VALUES_INVALID_YAML_MSG = ( - "CSM Observability values.yaml must contain a valid YAML dictionary." + "CSM Observability values.yaml (path specified in telemetry_config.yml) must contain a valid YAML dictionary." ) def powerscale_csm_values_parse_error_msg(error): """Returns error message when CSM Observability values.yaml fails to parse.""" return f"Failed to parse CSM Observability values.yaml: {error}" POWERSCALE_CSM_VALUES_MISSING_KARAVI_SECTION_MSG = ( - "CSM Observability values.yaml is missing 'karaviMetricsPowerscale' section." + "CSM Observability values.yaml (path specified in telemetry_config.yml) is missing 'karaviMetricsPowerscale' section." ) POWERSCALE_CSM_METRICS_IMAGE_MISSING_MSG = ( - "CSM Metrics PowerScale image is required in CSM Observability values.yaml." + "CSM Metrics PowerScale image is required in CSM Observability values.yaml (path specified in telemetry_config.yml)." ) POWERSCALE_OTEL_COLLECTOR_IMAGE_MISSING_MSG = ( - "OTEL Collector image is required in CSM Observability values.yaml." + "OTEL Collector image is required in CSM Observability values.yaml (path specified in telemetry_config.yml)." ) POWERSCALE_ADDITIONAL_ENDPOINTS_URL_EMPTY_MSG = ( - "Each additional_remote_write_endpoint must have a non-empty 'url' field." + "Each additional_remote_write_endpoint in telemetry_config.yml must have a non-empty 'url' field." ) POWERSCALE_ADDITIONAL_ENDPOINTS_URL_INVALID_MSG = ( - "URL must start with 'http://' or 'https://'." + "URL in telemetry_config.yml must start with 'http://' or 'https://'." ) def powerscale_image_version_mismatch_msg(image_name, values_image, service_k8s_image): """Returns error message when CSM values.yaml image version doesn't match service_k8s.json."""