diff --git a/postgres/changelog.d/18047.added b/postgres/changelog.d/18047.added new file mode 100644 index 0000000000000..b55f8acdb82c5 --- /dev/null +++ b/postgres/changelog.d/18047.added @@ -0,0 +1 @@ +Added warning when ssl option for Postgres check is invalid diff --git a/postgres/datadog_checks/postgres/config.py b/postgres/datadog_checks/postgres/config.py index 7437033f7206a..276f5a7b68555 100644 --- a/postgres/datadog_checks/postgres/config.py +++ b/postgres/datadog_checks/postgres/config.py @@ -31,7 +31,7 @@ class PostgresConfig: GAUGE = AgentCheck.gauge MONOTONIC = AgentCheck.monotonic_count - def __init__(self, instance, init_config): + def __init__(self, instance, init_config, check): self.host = instance.get('host', '') if not self.host: raise ConfigurationError('Specify a Postgres host to connect to.') @@ -75,6 +75,9 @@ def __init__(self, instance, init_config): ssl = instance.get('ssl', "allow") if ssl in SSL_MODES: self.ssl_mode = ssl + else: + check.warning(f"Invalid ssl option '{ssl}', should be one of {SSL_MODES}. Defaulting to 'allow'.") + self.ssl_mode = "allow" self.ssl_cert = instance.get('ssl_cert', None) self.ssl_root_cert = instance.get('ssl_root_cert', None) diff --git a/postgres/datadog_checks/postgres/postgres.py b/postgres/datadog_checks/postgres/postgres.py index 081385f11793e..7a8d83316c30e 100644 --- a/postgres/datadog_checks/postgres/postgres.py +++ b/postgres/datadog_checks/postgres/postgres.py @@ -112,7 +112,7 @@ def __init__(self, name, init_config, instances): "DEPRECATION NOTICE: The managed_identity option is deprecated and will be removed in a future version." " Please use the new azure.managed_authentication option instead." ) - self._config = PostgresConfig(self.instance, self.init_config) + self._config = PostgresConfig(self.instance, self.init_config, self) self.cloud_metadata = self._config.cloud_metadata self.tags = self._config.tags # Keep a copy of the tags without the internal resource tags so they can be used for paths that don't diff --git a/postgres/tests/conftest.py b/postgres/tests/conftest.py index 390d95cdbc54a..91ad37bdde6ab 100644 --- a/postgres/tests/conftest.py +++ b/postgres/tests/conftest.py @@ -106,13 +106,13 @@ def pg_replica_logical(): @pytest.fixture def metrics_cache(pg_instance): - config = PostgresConfig(instance=pg_instance, init_config={}) + config = PostgresConfig(instance=pg_instance, init_config={}, check={'warning': print}) return PostgresMetricsCache(config) @pytest.fixture def metrics_cache_replica(pg_replica_instance): - config = PostgresConfig(instance=pg_replica_instance, init_config={}) + config = PostgresConfig(instance=pg_replica_instance, init_config={}, check={'warning': print}) return PostgresMetricsCache(config) diff --git a/postgres/tests/test_metrics_cache.py b/postgres/tests/test_metrics_cache.py index efb1067263ecf..4507e2c6d06a8 100644 --- a/postgres/tests/test_metrics_cache.py +++ b/postgres/tests/test_metrics_cache.py @@ -28,7 +28,7 @@ ], ) def test_aurora_replication_metrics(pg_instance, version, is_aurora, expected_metrics): - config = PostgresConfig(instance=pg_instance, init_config={}) + config = PostgresConfig(instance=pg_instance, init_config={}, check={'warning': print}) cache = PostgresMetricsCache(config) replication_metrics = cache.get_replication_metrics(version, is_aurora) assert replication_metrics == expected_metrics @@ -50,7 +50,7 @@ def test_dbm_enabled_conn_metric(pg_instance, version, is_dbm_enabled, expected_ pg_instance['dbm'] = is_dbm_enabled pg_instance['collect_resources'] = {'enabled': False} pg_instance['collect_database_size_metrics'] = False - config = PostgresConfig(instance=pg_instance, init_config={}) + config = PostgresConfig(instance=pg_instance, init_config={}, check={'warning': print}) cache = PostgresMetricsCache(config) instance_metrics = cache.get_instance_metrics(version) assert instance_metrics['metrics'] == expected_metrics