mirror of
https://github.com/thousandeyes/thousandeyes-sdk-python.git
synced 2026-08-04 00:46:52 +00:00
354 lines
19 KiB
Python
354 lines
19 KiB
Python
# coding: utf-8
|
|
|
|
"""
|
|
Event Detection API
|
|
|
|
Event detection occurs when ThousandEyes identifies that error signals related to a component (proxy, network node, AS, server etc) have deviated from the baselines established by events. * To determine this, ThousandEyes takes the test results from all accounts groups within an organization, and analyzes that data. * Noisy test results (those that have too many errors in a short window) are removed until they stabilize, and the rest of the results are tagged with the components associated with that test result (for example, proxy, network, or server). * Next, any increase in failures from the test results and each component helps in determining the problem domain and which component may be at fault. * When this failure rate increases beyond a pre-defined threshold (set by the algorithm), an event is triggered and an email notification is sent to the user (if they've enabled email alerts). With the Events API, you can perform the following tasks on the ThousandEyes platform: * **Retrieve Events**: Obtain a list of events and detailed information for each event. For more information about events, see [Event Detection](https://docs.thousandeyes.com/product-documentation/event-detection).
|
|
|
|
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
|
|
Do not edit the class manually.
|
|
""" # noqa: E501
|
|
|
|
|
|
from __future__ import annotations
|
|
import json
|
|
import pprint
|
|
from pydantic import BaseModel, ConfigDict, Field, StrictStr, ValidationError, field_validator
|
|
from typing import Any, List, Optional
|
|
from thousandeyes_sdk.event_detection.models.agent_branch_event_detail import AgentBranchEventDetail
|
|
from thousandeyes_sdk.event_detection.models.agent_event_detail import AgentEventDetail
|
|
from thousandeyes_sdk.event_detection.models.agent_local_event_detail import AgentLocalEventDetail
|
|
from thousandeyes_sdk.event_detection.models.application_event_detail import ApplicationEventDetail
|
|
from thousandeyes_sdk.event_detection.models.dns_event_detail import DnsEventDetail
|
|
from thousandeyes_sdk.event_detection.models.dns_name_event_detail import DnsNameEventDetail
|
|
from thousandeyes_sdk.event_detection.models.dns_server_event_detail import DnsServerEventDetail
|
|
from thousandeyes_sdk.event_detection.models.domain_event_detail import DomainEventDetail
|
|
from thousandeyes_sdk.event_detection.models.gateway_event_detail import GatewayEventDetail
|
|
from thousandeyes_sdk.event_detection.models.name_server_event_detail import NameServerEventDetail
|
|
from thousandeyes_sdk.event_detection.models.network_event_detail import NetworkEventDetail
|
|
from thousandeyes_sdk.event_detection.models.network_pop_event_detail import NetworkPopEventDetail
|
|
from thousandeyes_sdk.event_detection.models.proxy_event_detail import ProxyEventDetail
|
|
from thousandeyes_sdk.event_detection.models.target_event_detail import TargetEventDetail
|
|
from thousandeyes_sdk.event_detection.models.target_network_event_detail import TargetNetworkEventDetail
|
|
from thousandeyes_sdk.event_detection.models.vpn_event_detail import VpnEventDetail
|
|
from thousandeyes_sdk.event_detection.models.wireless_event_detail import WirelessEventDetail
|
|
from pydantic import StrictStr, Field, model_serializer
|
|
from typing import Union, List, Set, Optional, Dict
|
|
from typing_extensions import Literal, Self
|
|
|
|
EVENTDETAIL_ONE_OF_SCHEMAS = ["AgentBranchEventDetail", "AgentEventDetail", "AgentLocalEventDetail", "ApplicationEventDetail", "DnsEventDetail", "DnsNameEventDetail", "DnsServerEventDetail", "DomainEventDetail", "GatewayEventDetail", "NameServerEventDetail", "NetworkEventDetail", "NetworkPopEventDetail", "ProxyEventDetail", "TargetEventDetail", "TargetNetworkEventDetail", "VpnEventDetail", "WirelessEventDetail"]
|
|
|
|
class EventDetail(BaseModel):
|
|
"""
|
|
EventDetail
|
|
"""
|
|
# data type: TargetEventDetail
|
|
oneof_schema_1_validator: Optional[TargetEventDetail] = None
|
|
# data type: TargetNetworkEventDetail
|
|
oneof_schema_2_validator: Optional[TargetNetworkEventDetail] = None
|
|
# data type: ProxyEventDetail
|
|
oneof_schema_3_validator: Optional[ProxyEventDetail] = None
|
|
# data type: DnsEventDetail
|
|
oneof_schema_4_validator: Optional[DnsEventDetail] = None
|
|
# data type: AgentLocalEventDetail
|
|
oneof_schema_5_validator: Optional[AgentLocalEventDetail] = None
|
|
# data type: NetworkEventDetail
|
|
oneof_schema_6_validator: Optional[NetworkEventDetail] = None
|
|
# data type: NetworkPopEventDetail
|
|
oneof_schema_7_validator: Optional[NetworkPopEventDetail] = None
|
|
# data type: AgentEventDetail
|
|
oneof_schema_8_validator: Optional[AgentEventDetail] = None
|
|
# data type: ApplicationEventDetail
|
|
oneof_schema_9_validator: Optional[ApplicationEventDetail] = None
|
|
# data type: WirelessEventDetail
|
|
oneof_schema_10_validator: Optional[WirelessEventDetail] = None
|
|
# data type: GatewayEventDetail
|
|
oneof_schema_11_validator: Optional[GatewayEventDetail] = None
|
|
# data type: DnsServerEventDetail
|
|
oneof_schema_12_validator: Optional[DnsServerEventDetail] = None
|
|
# data type: DnsNameEventDetail
|
|
oneof_schema_13_validator: Optional[DnsNameEventDetail] = None
|
|
# data type: VpnEventDetail
|
|
oneof_schema_14_validator: Optional[VpnEventDetail] = None
|
|
# data type: AgentBranchEventDetail
|
|
oneof_schema_15_validator: Optional[AgentBranchEventDetail] = None
|
|
# data type: DomainEventDetail
|
|
oneof_schema_16_validator: Optional[DomainEventDetail] = None
|
|
# data type: NameServerEventDetail
|
|
oneof_schema_17_validator: Optional[NameServerEventDetail] = None
|
|
actual_instance: Optional[Union[AgentBranchEventDetail, AgentEventDetail, AgentLocalEventDetail, ApplicationEventDetail, DnsEventDetail, DnsNameEventDetail, DnsServerEventDetail, DomainEventDetail, GatewayEventDetail, NameServerEventDetail, NetworkEventDetail, NetworkPopEventDetail, ProxyEventDetail, TargetEventDetail, TargetNetworkEventDetail, VpnEventDetail, WirelessEventDetail]] = None
|
|
one_of_schemas: Set[str] = { "AgentBranchEventDetail", "AgentEventDetail", "AgentLocalEventDetail", "ApplicationEventDetail", "DnsEventDetail", "DnsNameEventDetail", "DnsServerEventDetail", "DomainEventDetail", "GatewayEventDetail", "NameServerEventDetail", "NetworkEventDetail", "NetworkPopEventDetail", "ProxyEventDetail", "TargetEventDetail", "TargetNetworkEventDetail", "VpnEventDetail", "WirelessEventDetail" }
|
|
|
|
model_config = ConfigDict(
|
|
validate_assignment=True,
|
|
protected_namespaces=(),
|
|
)
|
|
|
|
|
|
discriminator_value_class_map: Dict[str, str] = {
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs) -> None:
|
|
if args:
|
|
if len(args) > 1:
|
|
raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`")
|
|
if kwargs:
|
|
raise ValueError("If a position argument is used, keyword arguments cannot be used.")
|
|
super().__init__(actual_instance=args[0])
|
|
else:
|
|
super().__init__(**kwargs)
|
|
|
|
@field_validator('actual_instance')
|
|
def actual_instance_must_validate_oneof(cls, v):
|
|
instance = EventDetail.model_construct()
|
|
error_messages = []
|
|
match = 0
|
|
# validate data type: TargetEventDetail
|
|
if not isinstance(v, TargetEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `TargetEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: TargetNetworkEventDetail
|
|
if not isinstance(v, TargetNetworkEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `TargetNetworkEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: ProxyEventDetail
|
|
if not isinstance(v, ProxyEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `ProxyEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: DnsEventDetail
|
|
if not isinstance(v, DnsEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `DnsEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: AgentLocalEventDetail
|
|
if not isinstance(v, AgentLocalEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `AgentLocalEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: NetworkEventDetail
|
|
if not isinstance(v, NetworkEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `NetworkEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: NetworkPopEventDetail
|
|
if not isinstance(v, NetworkPopEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `NetworkPopEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: AgentEventDetail
|
|
if not isinstance(v, AgentEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `AgentEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: ApplicationEventDetail
|
|
if not isinstance(v, ApplicationEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `ApplicationEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: WirelessEventDetail
|
|
if not isinstance(v, WirelessEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `WirelessEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: GatewayEventDetail
|
|
if not isinstance(v, GatewayEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `GatewayEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: DnsServerEventDetail
|
|
if not isinstance(v, DnsServerEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `DnsServerEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: DnsNameEventDetail
|
|
if not isinstance(v, DnsNameEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `DnsNameEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: VpnEventDetail
|
|
if not isinstance(v, VpnEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `VpnEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: AgentBranchEventDetail
|
|
if not isinstance(v, AgentBranchEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `AgentBranchEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: DomainEventDetail
|
|
if not isinstance(v, DomainEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `DomainEventDetail`")
|
|
else:
|
|
match += 1
|
|
# validate data type: NameServerEventDetail
|
|
if not isinstance(v, NameServerEventDetail):
|
|
error_messages.append(f"Error! Input type `{type(v)}` is not `NameServerEventDetail`")
|
|
else:
|
|
match += 1
|
|
if match > 1:
|
|
# more than 1 match
|
|
raise ValueError("Multiple matches found when setting `actual_instance` in EventDetail with oneOf schemas: AgentBranchEventDetail, AgentEventDetail, AgentLocalEventDetail, ApplicationEventDetail, DnsEventDetail, DnsNameEventDetail, DnsServerEventDetail, DomainEventDetail, GatewayEventDetail, NameServerEventDetail, NetworkEventDetail, NetworkPopEventDetail, ProxyEventDetail, TargetEventDetail, TargetNetworkEventDetail, VpnEventDetail, WirelessEventDetail. Details: " + ", ".join(error_messages))
|
|
elif match == 0:
|
|
# no match
|
|
raise ValueError("No match found when setting `actual_instance` in EventDetail with oneOf schemas: AgentBranchEventDetail, AgentEventDetail, AgentLocalEventDetail, ApplicationEventDetail, DnsEventDetail, DnsNameEventDetail, DnsServerEventDetail, DomainEventDetail, GatewayEventDetail, NameServerEventDetail, NetworkEventDetail, NetworkPopEventDetail, ProxyEventDetail, TargetEventDetail, TargetNetworkEventDetail, VpnEventDetail, WirelessEventDetail. Details: " + ", ".join(error_messages))
|
|
else:
|
|
return v
|
|
|
|
@classmethod
|
|
def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self:
|
|
return cls.from_json(json.dumps(obj))
|
|
|
|
@classmethod
|
|
def from_json(cls, json_str: str) -> Self:
|
|
"""Returns the object represented by the json string"""
|
|
instance = cls.model_construct()
|
|
error_messages = []
|
|
match = 0
|
|
|
|
# deserialize data into TargetEventDetail
|
|
try:
|
|
instance.actual_instance = TargetEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into TargetNetworkEventDetail
|
|
try:
|
|
instance.actual_instance = TargetNetworkEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into ProxyEventDetail
|
|
try:
|
|
instance.actual_instance = ProxyEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into DnsEventDetail
|
|
try:
|
|
instance.actual_instance = DnsEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into AgentLocalEventDetail
|
|
try:
|
|
instance.actual_instance = AgentLocalEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into NetworkEventDetail
|
|
try:
|
|
instance.actual_instance = NetworkEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into NetworkPopEventDetail
|
|
try:
|
|
instance.actual_instance = NetworkPopEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into AgentEventDetail
|
|
try:
|
|
instance.actual_instance = AgentEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into ApplicationEventDetail
|
|
try:
|
|
instance.actual_instance = ApplicationEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into WirelessEventDetail
|
|
try:
|
|
instance.actual_instance = WirelessEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into GatewayEventDetail
|
|
try:
|
|
instance.actual_instance = GatewayEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into DnsServerEventDetail
|
|
try:
|
|
instance.actual_instance = DnsServerEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into DnsNameEventDetail
|
|
try:
|
|
instance.actual_instance = DnsNameEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into VpnEventDetail
|
|
try:
|
|
instance.actual_instance = VpnEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into AgentBranchEventDetail
|
|
try:
|
|
instance.actual_instance = AgentBranchEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into DomainEventDetail
|
|
try:
|
|
instance.actual_instance = DomainEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
# deserialize data into NameServerEventDetail
|
|
try:
|
|
instance.actual_instance = NameServerEventDetail.from_json(json_str)
|
|
match += 1
|
|
except (ValidationError, ValueError) as e:
|
|
error_messages.append(str(e))
|
|
|
|
if match > 1:
|
|
# more than 1 match
|
|
raise ValueError("Multiple matches found when deserializing the JSON string into EventDetail with oneOf schemas: AgentBranchEventDetail, AgentEventDetail, AgentLocalEventDetail, ApplicationEventDetail, DnsEventDetail, DnsNameEventDetail, DnsServerEventDetail, DomainEventDetail, GatewayEventDetail, NameServerEventDetail, NetworkEventDetail, NetworkPopEventDetail, ProxyEventDetail, TargetEventDetail, TargetNetworkEventDetail, VpnEventDetail, WirelessEventDetail. Details: " + ", ".join(error_messages))
|
|
elif match == 0:
|
|
# no match
|
|
raise ValueError("No match found when deserializing the JSON string into EventDetail with oneOf schemas: AgentBranchEventDetail, AgentEventDetail, AgentLocalEventDetail, ApplicationEventDetail, DnsEventDetail, DnsNameEventDetail, DnsServerEventDetail, DomainEventDetail, GatewayEventDetail, NameServerEventDetail, NetworkEventDetail, NetworkPopEventDetail, ProxyEventDetail, TargetEventDetail, TargetNetworkEventDetail, VpnEventDetail, WirelessEventDetail. Details: " + ", ".join(error_messages))
|
|
else:
|
|
return instance
|
|
|
|
@model_serializer(when_used="json")
|
|
def serialize_model(self):
|
|
return json.loads(self.to_json())
|
|
|
|
def to_json(self) -> str:
|
|
"""Returns the JSON representation of the actual instance"""
|
|
if self.actual_instance is None:
|
|
return "null"
|
|
|
|
if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json):
|
|
return self.actual_instance.to_json()
|
|
else:
|
|
return json.dumps(self.actual_instance)
|
|
|
|
def to_dict(self) -> Optional[Union[Dict[str, Any], AgentBranchEventDetail, AgentEventDetail, AgentLocalEventDetail, ApplicationEventDetail, DnsEventDetail, DnsNameEventDetail, DnsServerEventDetail, DomainEventDetail, GatewayEventDetail, NameServerEventDetail, NetworkEventDetail, NetworkPopEventDetail, ProxyEventDetail, TargetEventDetail, TargetNetworkEventDetail, VpnEventDetail, WirelessEventDetail]]:
|
|
"""Returns the dict representation of the actual instance"""
|
|
if self.actual_instance is None:
|
|
return None
|
|
|
|
if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict):
|
|
return self.actual_instance.to_dict()
|
|
else:
|
|
# primitive type
|
|
return self.actual_instance
|
|
|
|
def to_str(self) -> str:
|
|
"""Returns the string representation of the actual instance"""
|
|
return pprint.pformat(self.model_dump())
|
|
|
|
|