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.""" 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/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 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