Skip to content

Commit

Permalink
Synchronize config models (#2088)
Browse files Browse the repository at this point in the history
  • Loading branch information
ofek authored Oct 27, 2023
1 parent 03de711 commit bb090df
Show file tree
Hide file tree
Showing 63 changed files with 2,353 additions and 3,962 deletions.
24 changes: 3 additions & 21 deletions cfssl/datadog_checks/cfssl/config_models/defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,14 @@
# ddev -x validate config -s <INTEGRATION_NAME>
# ddev -x validate models -s <INTEGRATION_NAME>

from datadog_checks.base.utils.models.fields import get_default_field_value


def shared_service(field, value):
return get_default_field_value(field, value)


def instance_disable_generic_tags(field, value):
def instance_disable_generic_tags():
return False


def instance_empty_default_hostname(field, value):
def instance_empty_default_hostname():
return False


def instance_metric_patterns(field, value):
return get_default_field_value(field, value)


def instance_min_collection_interval(field, value):
def instance_min_collection_interval():
return 15


def instance_service(field, value):
return get_default_field_value(field, value)


def instance_tags(field, value):
return get_default_field_value(field, value)
64 changes: 32 additions & 32 deletions cfssl/datadog_checks/cfssl/config_models/instance.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@

from __future__ import annotations

from typing import Optional, Sequence
from typing import Optional

from pydantic import BaseModel, root_validator, validator
from pydantic import BaseModel, ConfigDict, field_validator, model_validator

from datadog_checks.base.utils.functions import identity
from datadog_checks.base.utils.models import validation
Expand All @@ -16,43 +16,43 @@


class MetricPatterns(BaseModel):
class Config:
allow_mutation = False

exclude: Optional[Sequence[str]]
include: Optional[Sequence[str]]
model_config = ConfigDict(
arbitrary_types_allowed=True,
frozen=True,
)
exclude: Optional[tuple[str, ...]] = None
include: Optional[tuple[str, ...]] = None


class InstanceConfig(BaseModel):
class Config:
allow_mutation = False

disable_generic_tags: Optional[bool]
empty_default_hostname: Optional[bool]
metric_patterns: Optional[MetricPatterns]
min_collection_interval: Optional[float]
service: Optional[str]
tags: Optional[Sequence[str]]
model_config = ConfigDict(
validate_default=True,
arbitrary_types_allowed=True,
frozen=True,
)
disable_generic_tags: Optional[bool] = None
empty_default_hostname: Optional[bool] = None
metric_patterns: Optional[MetricPatterns] = None
min_collection_interval: Optional[float] = None
service: Optional[str] = None
tags: Optional[tuple[str, ...]] = None
url: str

@root_validator(pre=True)
@model_validator(mode='before')
def _initial_validation(cls, values):
return validation.core.initialize_config(getattr(validators, 'initialize_instance', identity)(values))

@validator('*', pre=True, always=True)
def _ensure_defaults(cls, v, field):
if v is not None or field.required:
return v

return getattr(defaults, f'instance_{field.name}')(field, v)

@validator('*')
def _run_validations(cls, v, field):
if not v:
return v
@field_validator('*', mode='before')
def _validate(cls, value, info):
field = cls.model_fields[info.field_name]
field_name = field.alias or info.field_name
if field_name in info.context['configured_fields']:
value = getattr(validators, f'instance_{info.field_name}', identity)(value, field=field)
else:
value = getattr(defaults, f'instance_{info.field_name}', lambda: value)()

return getattr(validators, f'instance_{field.name}', identity)(v, field=field)
return validation.utils.make_immutable(value)

@root_validator(pre=False)
def _final_validation(cls, values):
return validation.core.finalize_config(getattr(validators, 'finalize_instance', identity)(values))
@model_validator(mode='after')
def _final_validation(cls, model):
return validation.core.check_model(getattr(validators, 'check_instance', identity)(model))
43 changes: 20 additions & 23 deletions cfssl/datadog_checks/cfssl/config_models/shared.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,38 +7,35 @@

from typing import Optional

from pydantic import BaseModel, root_validator, validator
from pydantic import BaseModel, ConfigDict, field_validator, model_validator

from datadog_checks.base.utils.functions import identity
from datadog_checks.base.utils.models import validation

from . import defaults, validators
from . import validators


class SharedConfig(BaseModel):
class Config:
allow_mutation = False

service: Optional[str]

@root_validator(pre=True)
model_config = ConfigDict(
validate_default=True,
arbitrary_types_allowed=True,
frozen=True,
)
service: Optional[str] = None

@model_validator(mode='before')
def _initial_validation(cls, values):
return validation.core.initialize_config(getattr(validators, 'initialize_shared', identity)(values))

@validator('*', pre=True, always=True)
def _ensure_defaults(cls, v, field):
if v is not None or field.required:
return v

return getattr(defaults, f'shared_{field.name}')(field, v)

@validator('*')
def _run_validations(cls, v, field):
if not v:
return v
@field_validator('*', mode='before')
def _validate(cls, value, info):
field = cls.model_fields[info.field_name]
field_name = field.alias or info.field_name
if field_name in info.context['configured_fields']:
value = getattr(validators, f'shared_{info.field_name}', identity)(value, field=field)

return getattr(validators, f'shared_{field.name}', identity)(v, field=field)
return validation.utils.make_immutable(value)

@root_validator(pre=False)
def _final_validation(cls, values):
return validation.core.finalize_config(getattr(validators, 'finalize_shared', identity)(values))
@model_validator(mode='after')
def _final_validation(cls, model):
return validation.core.check_model(getattr(validators, 'check_shared', identity)(model))
Loading

0 comments on commit bb090df

Please sign in to comment.