""" Options: Date: 2024-09-19 23:42:48 Version: 6.50 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: http://services.dev.extremereach.com #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: HealthCheckRequest.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ import datetime import decimal from marshmallow.fields import * from servicestack import * from typing import * from dataclasses import dataclass, field from dataclasses_json import dataclass_json, LetterCase, Undefined, config from enum import Enum, IntEnum class ExecutionMode(IntEnum): BASIC = 1 STANDARD = 2 ADVANCED = 3 class ServerType(IntEnum): APP = 1 SQL = 2 FTP_API = 3 FTP = 4 BATCH = 5 IDENTITY = 6 QC = 7 XCODE_V = 8 XCODE_C = 9 MSG_VAST = 10 ASG_VAST = 11 MONGO = 12 AGENTS = 13 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ServerState: server_name: Optional[str] = None total_ram_in_mb: Optional[Decimal] = None available_ram_in_mb: Optional[Decimal] = None used_cpu_percent: Optional[Decimal] = None class MonitoringStatus(IntEnum): SUCCESS = 1 FAILURE = 2 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class MonitoringResult: monitoring_name: Optional[str] = None status: Optional[MonitoringStatus] = None status_message: Optional[str] = None error_messages: Optional[List[str]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class MonitorSummary: monitor_name: Optional[str] = None status: Optional[MonitoringStatus] = None results: Optional[List[MonitoringResult]] = None error_messages: Optional[List[str]] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class MonitorExecutionMetrics: start_date_time: datetime.datetime = datetime.datetime(1, 1, 1) end_date_time: datetime.datetime = datetime.datetime(1, 1, 1) duration: datetime.timedelta = datetime.timedelta() @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class HealthCheckResponse: server_state: Optional[ServerState] = None status: Optional[MonitoringStatus] = None status_message: Optional[str] = None correlation_id: Optional[str] = None failed_monitor_count: int = 0 monitor_summaries: Optional[List[MonitorSummary]] = None execution_metrics: Optional[MonitorExecutionMetrics] = None # @Route("/healthcheck", "GET") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class HealthCheckRequest(IReturn[HealthCheckResponse]): # @ApiMember(DataType="ExecutionMode", Description="The mode used to determine what level of health check to perform.", IsRequired=true, ParameterType="query") execution_mode: Optional[ExecutionMode] = None """ The mode used to determine what level of health check to perform. """ # @ApiMember(DataType="ServerType", Description="The type of server that will be used to determine which monitors will be run.", IsRequired=true, ParameterType="query") server_type: Optional[ServerType] = None """ The type of server that will be used to determine which monitors will be run. """ # @ApiMember(DataType="boolean", Description="Indicates whether or not to include server state information in the response.", ParameterType="query") include_server_state_information: bool = False """ Indicates whether or not to include server state information in the response. """ # @ApiMember(DataType="boolean", Description="Indicates whether or not to suppress returning error codes. This will always return a 200 code to the caller, which is required for PRTG to process the JSON response properly.", ParameterType="query") suppress_error_codes: bool = False """ Indicates whether or not to suppress returning error codes. This will always return a 200 code to the caller, which is required for PRTG to process the JSON response properly. """ # @ApiMember(DataType="boolean", Description="Indicates whether or not to suppress deployment-related errors.", ParameterType="query") suppress_deployment_errors: bool = False """ Indicates whether or not to suppress deployment-related errors. """