Skip to content

Commit e3fd26f

Browse files
committed
more validator updates
1 parent a86ca5c commit e3fd26f

File tree

3 files changed

+232
-17
lines changed

3 files changed

+232
-17
lines changed

redis_enterprise_prometheus/datadog_checks/redis_enterprise_prometheus/config_models/defaults.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,30 @@
44
# ddev -x validate models -s <INTEGRATION_NAME>
55

66

7+
def instance_allow_redirects():
8+
return True
9+
10+
11+
def instance_auth_type():
12+
return 'basic'
13+
14+
15+
def instance_cache_metric_wildcards():
16+
return True
17+
18+
19+
def instance_cache_shared_labels():
20+
return True
21+
22+
23+
def instance_collect_counters_with_distributions():
24+
return False
25+
26+
27+
def instance_collect_histogram_buckets():
28+
return True
29+
30+
731
def instance_disable_generic_tags():
832
return False
933

@@ -12,5 +36,85 @@ def instance_empty_default_hostname():
1236
return False
1337

1438

39+
def instance_enable_health_service_check():
40+
return True
41+
42+
43+
def instance_histogram_buckets_as_distributions():
44+
return False
45+
46+
47+
def instance_ignore_connection_errors():
48+
return False
49+
50+
51+
def instance_kerberos_auth():
52+
return 'disabled'
53+
54+
55+
def instance_kerberos_delegate():
56+
return False
57+
58+
59+
def instance_kerberos_force_initiate():
60+
return False
61+
62+
63+
def instance_log_requests():
64+
return False
65+
66+
1567
def instance_min_collection_interval():
1668
return 15
69+
70+
71+
def instance_non_cumulative_histogram_buckets():
72+
return False
73+
74+
75+
def instance_persist_connections():
76+
return False
77+
78+
79+
def instance_request_size():
80+
return 16
81+
82+
83+
def instance_skip_proxy():
84+
return False
85+
86+
87+
def instance_tag_by_endpoint():
88+
return True
89+
90+
91+
def instance_telemetry():
92+
return False
93+
94+
95+
def instance_timeout():
96+
return 10
97+
98+
99+
def instance_tls_ignore_warning():
100+
return False
101+
102+
103+
def instance_tls_use_host_header():
104+
return False
105+
106+
107+
def instance_tls_verify():
108+
return True
109+
110+
111+
def instance_use_latest_spec():
112+
return False
113+
114+
115+
def instance_use_legacy_auth_encoding():
116+
return True
117+
118+
119+
def instance_use_process_start_time():
120+
return False

redis_enterprise_prometheus/datadog_checks/redis_enterprise_prometheus/config_models/instance.py

Lines changed: 121 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,36 @@
55

66
from __future__ import annotations
77

8-
from typing import Optional
8+
from types import MappingProxyType
9+
from typing import Any, Optional, Union
910

10-
from pydantic import BaseModel, ConfigDict, field_validator, model_validator
11+
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
1112

1213
from datadog_checks.base.utils.functions import identity
1314
from datadog_checks.base.utils.models import validation
1415

1516
from . import defaults, validators
1617

1718

19+
class AuthToken(BaseModel):
20+
model_config = ConfigDict(
21+
arbitrary_types_allowed=True,
22+
frozen=True,
23+
)
24+
reader: Optional[MappingProxyType[str, Any]] = None
25+
writer: Optional[MappingProxyType[str, Any]] = None
26+
27+
28+
class ExtraMetrics(BaseModel):
29+
model_config = ConfigDict(
30+
arbitrary_types_allowed=True,
31+
extra='allow',
32+
frozen=True,
33+
)
34+
name: Optional[str] = None
35+
type: Optional[str] = None
36+
37+
1838
class MetricPatterns(BaseModel):
1939
model_config = ConfigDict(
2040
arbitrary_types_allowed=True,
@@ -24,34 +44,125 @@ class MetricPatterns(BaseModel):
2444
include: Optional[tuple[str, ...]] = None
2545

2646

47+
class Metrics(BaseModel):
48+
model_config = ConfigDict(
49+
arbitrary_types_allowed=True,
50+
extra='allow',
51+
frozen=True,
52+
)
53+
name: Optional[str] = None
54+
type: Optional[str] = None
55+
56+
57+
class Proxy(BaseModel):
58+
model_config = ConfigDict(
59+
arbitrary_types_allowed=True,
60+
frozen=True,
61+
)
62+
http: Optional[str] = None
63+
https: Optional[str] = None
64+
no_proxy: Optional[tuple[str, ...]] = None
65+
66+
67+
class ShareLabels(BaseModel):
68+
model_config = ConfigDict(
69+
arbitrary_types_allowed=True,
70+
frozen=True,
71+
)
72+
labels: Optional[tuple[str, ...]] = None
73+
match: Optional[tuple[str, ...]] = None
74+
75+
2776
class InstanceConfig(BaseModel):
2877
model_config = ConfigDict(
2978
validate_default=True,
3079
arbitrary_types_allowed=True,
3180
frozen=True,
3281
)
82+
allow_redirects: Optional[bool] = None
83+
auth_token: Optional[AuthToken] = None
84+
auth_type: Optional[str] = None
85+
aws_host: Optional[str] = None
86+
aws_region: Optional[str] = None
87+
aws_service: Optional[str] = None
88+
cache_metric_wildcards: Optional[bool] = None
89+
cache_shared_labels: Optional[bool] = None
90+
collect_counters_with_distributions: Optional[bool] = None
91+
collect_histogram_buckets: Optional[bool] = None
92+
connect_timeout: Optional[float] = None
3393
disable_generic_tags: Optional[bool] = None
3494
empty_default_hostname: Optional[bool] = None
95+
enable_health_service_check: Optional[bool] = None
96+
exclude_labels: Optional[tuple[str, ...]] = None
97+
exclude_metrics: Optional[tuple[str, ...]] = None
98+
exclude_metrics_by_labels: Optional[MappingProxyType[str, Union[bool, tuple[str, ...]]]] = None
99+
extra_headers: Optional[MappingProxyType[str, Any]] = None
100+
extra_metrics: Optional[tuple[Union[str, MappingProxyType[str, Union[str, ExtraMetrics]]], ...]] = None
101+
headers: Optional[MappingProxyType[str, Any]] = None
102+
histogram_buckets_as_distributions: Optional[bool] = None
103+
hostname_format: Optional[str] = None
104+
hostname_label: Optional[str] = None
105+
ignore_connection_errors: Optional[bool] = None
106+
ignore_tags: Optional[tuple[str, ...]] = None
107+
include_labels: Optional[tuple[str, ...]] = None
108+
kerberos_auth: Optional[str] = None
109+
kerberos_cache: Optional[str] = None
110+
kerberos_delegate: Optional[bool] = None
111+
kerberos_force_initiate: Optional[bool] = None
112+
kerberos_hostname: Optional[str] = None
113+
kerberos_keytab: Optional[str] = None
114+
kerberos_principal: Optional[str] = None
115+
log_requests: Optional[bool] = None
35116
metric_patterns: Optional[MetricPatterns] = None
117+
metrics: Optional[tuple[Union[str, MappingProxyType[str, Union[str, Metrics]]], ...]] = None
36118
min_collection_interval: Optional[float] = None
119+
namespace: Optional[str] = Field(None, pattern='\\w*')
120+
non_cumulative_histogram_buckets: Optional[bool] = None
121+
ntlm_domain: Optional[str] = None
122+
openmetrics_endpoint: str
123+
password: Optional[str] = None
124+
persist_connections: Optional[bool] = None
125+
proxy: Optional[Proxy] = None
126+
raw_line_filters: Optional[tuple[str, ...]] = None
127+
raw_metric_prefix: Optional[str] = None
128+
read_timeout: Optional[float] = None
129+
rename_labels: Optional[MappingProxyType[str, Any]] = None
130+
request_size: Optional[float] = None
37131
service: Optional[str] = None
132+
share_labels: Optional[MappingProxyType[str, Union[bool, ShareLabels]]] = None
133+
skip_proxy: Optional[bool] = None
134+
tag_by_endpoint: Optional[bool] = None
38135
tags: Optional[tuple[str, ...]] = None
136+
telemetry: Optional[bool] = None
137+
timeout: Optional[float] = None
138+
tls_ca_cert: Optional[str] = None
139+
tls_cert: Optional[str] = None
140+
tls_ciphers: Optional[tuple[str, ...]] = None
141+
tls_ignore_warning: Optional[bool] = None
142+
tls_private_key: Optional[str] = None
143+
tls_protocols_allowed: Optional[tuple[str, ...]] = None
144+
tls_use_host_header: Optional[bool] = None
145+
tls_verify: Optional[bool] = None
146+
use_latest_spec: Optional[bool] = None
147+
use_legacy_auth_encoding: Optional[bool] = None
148+
use_process_start_time: Optional[bool] = None
149+
username: Optional[str] = None
39150

40-
@model_validator(mode="before")
151+
@model_validator(mode='before')
41152
def _initial_validation(cls, values):
42-
return validation.core.initialize_config(getattr(validators, "initialize_instance", identity)(values))
153+
return validation.core.initialize_config(getattr(validators, 'initialize_instance', identity)(values))
43154

44-
@field_validator("*", mode="before")
155+
@field_validator('*', mode='before')
45156
def _validate(cls, value, info):
46157
field = cls.model_fields[info.field_name]
47158
field_name = field.alias or info.field_name
48-
if field_name in info.context["configured_fields"]:
49-
value = getattr(validators, f"instance_{info.field_name}", identity)(value, field=field)
159+
if field_name in info.context['configured_fields']:
160+
value = getattr(validators, f'instance_{info.field_name}', identity)(value, field=field)
50161
else:
51-
value = getattr(defaults, f"instance_{info.field_name}", lambda: value)()
162+
value = getattr(defaults, f'instance_{info.field_name}', lambda: value)()
52163

53164
return validation.utils.make_immutable(value)
54165

55-
@model_validator(mode="after")
166+
@model_validator(mode='after')
56167
def _final_validation(cls, model):
57-
return validation.core.check_model(getattr(validators, "check_instance", identity)(model))
168+
return validation.core.check_model(getattr(validators, 'check_instance', identity)(model))

redis_enterprise_prometheus/datadog_checks/redis_enterprise_prometheus/config_models/shared.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,19 @@ class SharedConfig(BaseModel):
2323
)
2424
service: Optional[str] = None
2525

26-
@model_validator(mode="before")
26+
@model_validator(mode='before')
2727
def _initial_validation(cls, values):
28-
return validation.core.initialize_config(getattr(validators, "initialize_shared", identity)(values))
28+
return validation.core.initialize_config(getattr(validators, 'initialize_shared', identity)(values))
2929

30-
@field_validator("*", mode="before")
30+
@field_validator('*', mode='before')
3131
def _validate(cls, value, info):
3232
field = cls.model_fields[info.field_name]
3333
field_name = field.alias or info.field_name
34-
if field_name in info.context["configured_fields"]:
35-
value = getattr(validators, f"shared_{info.field_name}", identity)(value, field=field)
34+
if field_name in info.context['configured_fields']:
35+
value = getattr(validators, f'shared_{info.field_name}', identity)(value, field=field)
3636

3737
return validation.utils.make_immutable(value)
3838

39-
@model_validator(mode="after")
39+
@model_validator(mode='after')
4040
def _final_validation(cls, model):
41-
return validation.core.check_model(getattr(validators, "check_shared", identity)(model))
41+
return validation.core.check_model(getattr(validators, 'check_shared', identity)(model))

0 commit comments

Comments
 (0)