Skip to content

Commit 5d06f7e

Browse files
committed
Sync config models
1 parent ddb2745 commit 5d06f7e

5 files changed

Lines changed: 240 additions & 0 deletions

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# (C) Datadog, Inc. 2021-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from .instance import InstanceConfig
5+
from .shared import SharedConfig
6+
7+
8+
class ConfigMixin:
9+
_config_model_instance: InstanceConfig
10+
_config_model_shared: SharedConfig
11+
12+
@property
13+
def config(self) -> InstanceConfig:
14+
return self._config_model_instance
15+
16+
@property
17+
def shared_config(self) -> SharedConfig:
18+
return self._config_model_shared
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# (C) Datadog, Inc. 2021-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from datadog_checks.base.utils.models.fields import get_default_field_value
5+
6+
7+
def shared_device_global_exclude(field, value):
8+
return get_default_field_value(field, value)
9+
10+
11+
def shared_file_system_global_exclude(field, value):
12+
return get_default_field_value(field, value)
13+
14+
15+
def shared_mount_point_global_exclude(field, value):
16+
return get_default_field_value(field, value)
17+
18+
19+
def shared_service(field, value):
20+
return get_default_field_value(field, value)
21+
22+
23+
def instance_all_partitions(field, value):
24+
return False
25+
26+
27+
def instance_blkid_cache_file(field, value):
28+
return '/run/blkid/blkid.tab'
29+
30+
31+
def instance_create_mounts(field, value):
32+
return get_default_field_value(field, value)
33+
34+
35+
def instance_device_exclude(field, value):
36+
return get_default_field_value(field, value)
37+
38+
39+
def instance_device_include(field, value):
40+
return get_default_field_value(field, value)
41+
42+
43+
def instance_device_tag_re(field, value):
44+
return get_default_field_value(field, value)
45+
46+
47+
def instance_empty_default_hostname(field, value):
48+
return False
49+
50+
51+
def instance_file_system_exclude(field, value):
52+
return get_default_field_value(field, value)
53+
54+
55+
def instance_file_system_include(field, value):
56+
return get_default_field_value(field, value)
57+
58+
59+
def instance_include_all_devices(field, value):
60+
return True
61+
62+
63+
def instance_min_collection_interval(field, value):
64+
return 15
65+
66+
67+
def instance_min_disk_size(field, value):
68+
return 0
69+
70+
71+
def instance_mount_point_exclude(field, value):
72+
return get_default_field_value(field, value)
73+
74+
75+
def instance_mount_point_include(field, value):
76+
return get_default_field_value(field, value)
77+
78+
79+
def instance_service(field, value):
80+
return get_default_field_value(field, value)
81+
82+
83+
def instance_service_check_rw(field, value):
84+
return False
85+
86+
87+
def instance_tag_by_filesystem(field, value):
88+
return False
89+
90+
91+
def instance_tag_by_label(field, value):
92+
return True
93+
94+
95+
def instance_tags(field, value):
96+
return get_default_field_value(field, value)
97+
98+
99+
def instance_timeout(field, value):
100+
return 5
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# (C) Datadog, Inc. 2021-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from __future__ import annotations
5+
6+
from typing import Any, Mapping, Optional, Sequence
7+
8+
from pydantic import BaseModel, root_validator, validator
9+
10+
from datadog_checks.base.utils.functions import identity
11+
from datadog_checks.base.utils.models import validation
12+
13+
from . import defaults, validators
14+
15+
16+
class CreateMount(BaseModel):
17+
class Config:
18+
allow_mutation = False
19+
20+
host: Optional[str]
21+
mountpoint: Optional[str]
22+
password: Optional[str]
23+
share: Optional[str]
24+
type: Optional[str]
25+
user: Optional[str]
26+
27+
28+
class InstanceConfig(BaseModel):
29+
class Config:
30+
allow_mutation = False
31+
32+
all_partitions: Optional[bool]
33+
blkid_cache_file: Optional[str]
34+
create_mounts: Optional[Sequence[CreateMount]]
35+
device_exclude: Optional[Sequence[str]]
36+
device_include: Optional[Sequence[str]]
37+
device_tag_re: Optional[Mapping[str, Any]]
38+
empty_default_hostname: Optional[bool]
39+
file_system_exclude: Optional[Sequence[str]]
40+
file_system_include: Optional[Sequence[str]]
41+
include_all_devices: Optional[bool]
42+
min_collection_interval: Optional[float]
43+
min_disk_size: Optional[float]
44+
mount_point_exclude: Optional[Sequence[str]]
45+
mount_point_include: Optional[Sequence[str]]
46+
service: Optional[str]
47+
service_check_rw: Optional[bool]
48+
tag_by_filesystem: Optional[bool]
49+
tag_by_label: Optional[bool]
50+
tags: Optional[Sequence[str]]
51+
timeout: Optional[int]
52+
use_mount: bool
53+
54+
@root_validator(pre=True)
55+
def _initial_validation(cls, values):
56+
return validation.core.initialize_config(getattr(validators, 'initialize_instance', identity)(values))
57+
58+
@validator('*', pre=True, always=True)
59+
def _ensure_defaults(cls, v, field):
60+
if v is not None or field.required:
61+
return v
62+
63+
return getattr(defaults, f'instance_{field.name}')(field, v)
64+
65+
@validator('*')
66+
def _run_validations(cls, v, field):
67+
if not v:
68+
return v
69+
70+
return getattr(validators, f'instance_{field.name}', identity)(v, field=field)
71+
72+
@root_validator(pre=False)
73+
def _final_validation(cls, values):
74+
return validation.core.finalize_config(getattr(validators, 'finalize_instance', identity)(values))
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# (C) Datadog, Inc. 2021-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)
4+
from __future__ import annotations
5+
6+
from typing import Optional, Sequence
7+
8+
from pydantic import BaseModel, root_validator, validator
9+
10+
from datadog_checks.base.utils.functions import identity
11+
from datadog_checks.base.utils.models import validation
12+
13+
from . import defaults, validators
14+
15+
16+
class SharedConfig(BaseModel):
17+
class Config:
18+
allow_mutation = False
19+
20+
device_global_exclude: Optional[Sequence[str]]
21+
file_system_global_exclude: Optional[Sequence[str]]
22+
mount_point_global_exclude: Optional[Sequence[str]]
23+
service: Optional[str]
24+
25+
@root_validator(pre=True)
26+
def _initial_validation(cls, values):
27+
return validation.core.initialize_config(getattr(validators, 'initialize_shared', identity)(values))
28+
29+
@validator('*', pre=True, always=True)
30+
def _ensure_defaults(cls, v, field):
31+
if v is not None or field.required:
32+
return v
33+
34+
return getattr(defaults, f'shared_{field.name}')(field, v)
35+
36+
@validator('*')
37+
def _run_validations(cls, v, field):
38+
if not v:
39+
return v
40+
41+
return getattr(validators, f'shared_{field.name}', identity)(v, field=field)
42+
43+
@root_validator(pre=False)
44+
def _final_validation(cls, values):
45+
return validation.core.finalize_config(getattr(validators, 'finalize_shared', identity)(values))
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# (C) Datadog, Inc. 2021-present
2+
# All rights reserved
3+
# Licensed under a 3-clause BSD style license (see LICENSE)

0 commit comments

Comments
 (0)