-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
288 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# (C) Datadog, Inc. 2021-present | ||
# All rights reserved | ||
# Licensed under a 3-clause BSD style license (see LICENSE) | ||
from .instance import InstanceConfig | ||
from .shared import SharedConfig | ||
|
||
|
||
class ConfigMixin: | ||
_config_model_instance: InstanceConfig | ||
_config_model_shared: SharedConfig | ||
|
||
@property | ||
def config(self) -> InstanceConfig: | ||
return self._config_model_instance | ||
|
||
@property | ||
def shared_config(self) -> SharedConfig: | ||
return self._config_model_shared |
120 changes: 120 additions & 0 deletions
120
vsphere/datadog_checks/vsphere/config_models/defaults.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
# (C) Datadog, Inc. 2021-present | ||
# All rights reserved | ||
# Licensed under a 3-clause BSD style license (see LICENSE) | ||
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_attributes_prefix(field, value): | ||
return '' | ||
|
||
|
||
def instance_batch_property_collector_size(field, value): | ||
return 500 | ||
|
||
|
||
def instance_batch_tags_collector_size(field, value): | ||
return 200 | ||
|
||
|
||
def instance_collect_attributes(field, value): | ||
return False | ||
|
||
|
||
def instance_collect_events(field, value): | ||
return True | ||
|
||
|
||
def instance_collect_events_only(field, value): | ||
return False | ||
|
||
|
||
def instance_collect_per_instance_filters(field, value): | ||
return get_default_field_value(field, value) | ||
|
||
|
||
def instance_collect_tags(field, value): | ||
return False | ||
|
||
|
||
def instance_collection_level(field, value): | ||
return 1 | ||
|
||
|
||
def instance_collection_type(field, value): | ||
return 'realtime' | ||
|
||
|
||
def instance_excluded_host_tags(field, value): | ||
return get_default_field_value(field, value) | ||
|
||
|
||
def instance_include_datastore_cluster_folder_tag(field, value): | ||
return True | ||
|
||
|
||
def instance_max_historical_metrics(field, value): | ||
return 256 | ||
|
||
|
||
def instance_metric_filters(field, value): | ||
return get_default_field_value(field, value) | ||
|
||
|
||
def instance_metrics_per_query(field, value): | ||
return 50 | ||
|
||
|
||
def instance_min_collection_interval(field, value): | ||
return 15 | ||
|
||
|
||
def instance_refresh_infrastructure_cache_interval(field, value): | ||
return 300 | ||
|
||
|
||
def instance_refresh_metrics_metadata_cache_interval(field, value): | ||
return 1800 | ||
|
||
|
||
def instance_resource_filters(field, value): | ||
return get_default_field_value(field, value) | ||
|
||
|
||
def instance_service(field, value): | ||
return get_default_field_value(field, value) | ||
|
||
|
||
def instance_ssl_capath(field, value): | ||
return get_default_field_value(field, value) | ||
|
||
|
||
def instance_ssl_verify(field, value): | ||
return True | ||
|
||
|
||
def instance_tags(field, value): | ||
return get_default_field_value(field, value) | ||
|
||
|
||
def instance_tags_prefix(field, value): | ||
return '' | ||
|
||
|
||
def instance_threads_count(field, value): | ||
return 4 | ||
|
||
|
||
def instance_tls_ignore_warning(field, value): | ||
return False | ||
|
||
|
||
def instance_use_collect_events_fallback(field, value): | ||
return False | ||
|
||
|
||
def instance_use_guest_hostname(field, value): | ||
return False |
105 changes: 105 additions & 0 deletions
105
vsphere/datadog_checks/vsphere/config_models/instance.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
# (C) Datadog, Inc. 2021-present | ||
# All rights reserved | ||
# Licensed under a 3-clause BSD style license (see LICENSE) | ||
from __future__ import annotations | ||
|
||
from typing import Optional, Sequence | ||
|
||
from pydantic import BaseModel, root_validator, validator | ||
|
||
from datadog_checks.base.utils.functions import identity | ||
from datadog_checks.base.utils.models import validation | ||
|
||
from . import defaults, validators | ||
|
||
|
||
class CollectPerInstanceFilters(BaseModel): | ||
class Config: | ||
allow_mutation = False | ||
|
||
cluster: Optional[Sequence[str]] | ||
datastore: Optional[Sequence[str]] | ||
host: Optional[Sequence[str]] | ||
vm: Optional[Sequence[str]] | ||
|
||
|
||
class MetricFilters(BaseModel): | ||
class Config: | ||
allow_mutation = False | ||
|
||
cluster: Optional[Sequence[str]] | ||
datacenter: Optional[Sequence[str]] | ||
datastore: Optional[Sequence[str]] | ||
host: Optional[Sequence[str]] | ||
vm: Optional[Sequence[str]] | ||
|
||
|
||
class ResourceFilter(BaseModel): | ||
class Config: | ||
allow_mutation = False | ||
|
||
patterns: Optional[Sequence[str]] | ||
property: Optional[str] | ||
resource: Optional[str] | ||
type: Optional[str] | ||
|
||
|
||
class InstanceConfig(BaseModel): | ||
class Config: | ||
allow_mutation = False | ||
|
||
attributes_prefix: Optional[str] | ||
batch_property_collector_size: Optional[int] | ||
batch_tags_collector_size: Optional[int] | ||
collect_attributes: Optional[bool] | ||
collect_events: Optional[bool] | ||
collect_events_only: Optional[bool] | ||
collect_per_instance_filters: Optional[CollectPerInstanceFilters] | ||
collect_tags: Optional[bool] | ||
collection_level: Optional[int] | ||
collection_type: Optional[str] | ||
empty_default_hostname: bool | ||
excluded_host_tags: Optional[Sequence[str]] | ||
host: str | ||
include_datastore_cluster_folder_tag: Optional[bool] | ||
max_historical_metrics: Optional[int] | ||
metric_filters: Optional[MetricFilters] | ||
metrics_per_query: Optional[int] | ||
min_collection_interval: Optional[float] | ||
password: str | ||
refresh_infrastructure_cache_interval: Optional[int] | ||
refresh_metrics_metadata_cache_interval: Optional[int] | ||
resource_filters: Optional[Sequence[ResourceFilter]] | ||
service: Optional[str] | ||
ssl_capath: Optional[str] | ||
ssl_verify: Optional[bool] | ||
tags: Optional[Sequence[str]] | ||
tags_prefix: Optional[str] | ||
threads_count: Optional[int] | ||
tls_ignore_warning: Optional[bool] | ||
use_collect_events_fallback: Optional[bool] | ||
use_guest_hostname: Optional[bool] | ||
use_legacy_check_version: bool | ||
username: str | ||
|
||
@root_validator(pre=True) | ||
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 | ||
|
||
return getattr(validators, f'instance_{field.name}', identity)(v, field=field) | ||
|
||
@root_validator(pre=False) | ||
def _final_validation(cls, values): | ||
return validation.core.finalize_config(getattr(validators, 'finalize_instance', identity)(values)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# (C) Datadog, Inc. 2021-present | ||
# All rights reserved | ||
# Licensed under a 3-clause BSD style license (see LICENSE) | ||
from __future__ import annotations | ||
|
||
from typing import Optional | ||
|
||
from pydantic import BaseModel, root_validator, validator | ||
|
||
from datadog_checks.base.utils.functions import identity | ||
from datadog_checks.base.utils.models import validation | ||
|
||
from . import defaults, validators | ||
|
||
|
||
class SharedConfig(BaseModel): | ||
class Config: | ||
allow_mutation = False | ||
|
||
service: Optional[str] | ||
|
||
@root_validator(pre=True) | ||
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 | ||
|
||
return getattr(validators, f'shared_{field.name}', identity)(v, field=field) | ||
|
||
@root_validator(pre=False) | ||
def _final_validation(cls, values): | ||
return validation.core.finalize_config(getattr(validators, 'finalize_shared', identity)(values)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# (C) Datadog, Inc. 2021-present | ||
# All rights reserved | ||
# Licensed under a 3-clause BSD style license (see LICENSE) |