From ProviderSettings.schema.yaml (kronos/ProviderSettings.schema
)
---
$id: https://skeleton.botmd.io/kronos/ProviderSettings.schema
$schema: https://json-schema.org/draft-07/schema
title: Provider Settings
description: >-
`Provider.settings` are used to store task provider-specific settings.
type: object
required: []
additionalProperties: false
properties:
retry_strategy:
$ref: "#/definitions/retry_strategy"
#end retry_strategy
execution:
$ref: "#/definitions/execution"
#end execution
anydesk:
$ref: "#/definitions/anydesk"
#end anydesk
#end properties
definitions:
retry_strategy:
title: Retry Strategy
description: >-
The retry strategy determines what to do in the event of an unsuccessful execution.
After each attempt failure, `k`, we wait for `2^k * retry_backoff * jitter` seconds before trying the next attempt.
The default retry strategy is no retrying.
type: object
required: [max_retries]
additionalProperties: false
properties:
max_retries:
title: Max Retries
description: Maximum number of attempts at retrying. A `max_retries` of `2` implies that there will be at most 3 executions of the task. Note that this is required and must be an integer so unlimited retries are not possible.
type: integer
minimum: 0
maximum: 5
#end max_retries
retry_backoff:
title: Retry Backoff
description: The backoff factor. Defaults to `1`.
type: number
exclusiveMinimum: 0
maximum: 600
retry_backoff_max:
title: Retry Backoff Max
description: The maximum wait time regardless of retries and jitters. Defaults to `600`.
type: number
exclusiveMinimum: 0
maximum: 3600
retry_jitter:
title: Retry Jitter
description: If `true`, a uniform random multiplier between 0.75 and 1.25 will be multiplied to the wait time to avoid herd issues. Defaults to `true`.
type: boolean
#end retry_strategy
execution:
title: Execution
description: These settings are used during execution to monitor the health and performance of kronos tasks.
type: object
required: []
additionalProperties: false
properties:
delete_if_no_next_execution:
title: Delete If No Next Execution
description: Delete the task if the task has no more next execution. Defaults to `true`.
type: boolean
fail_if_queued_too_long:
title: Fail If Queued Too Long
description: Fail if the task spent longer than `failif_queued_too_long` seconds in the `QUEUED` status. This is useful is the task has a "freshness" requirement. Defaults to infinite time.
type: number
exclusiveMinimum: 0
warn_if_queued_too_long:
title: Warn If Queued Too Long
description: Warn if the task spent longer than `warn_if_queued_too_long` seconds in the `QUEUED` status. Defaults to `60` seconds.
type: number
exclusiveMinimum: 0
warn_if_execute_too_long:
title: Warn If Execute Too Long
description: Warn if the task spent longer than `warn_if_execute_too_long` seconds in the `EXECUTE` status. Defaults to `60` seconds.
type: number
exclusiveMinimum: 0
log_critical_if_failed:
title: Log Critical If Failed
description: Legacy option replaced by `report_incident_if_failed`.
type: boolean
report_incident_if_failed:
title: Report Incident If Failed
description: Reports an incident when the task execution failed and there are no more retries available. Defaults to `false`.
type: boolean
max_concurrent_executions:
title: Max Concurrent Executions
description: Maximum number of concurrent executions of the same task. When the maximum concurrent executions is reached, the task will be skipped with a warning message. Defaults to `0`, meaning unlimited concurrent executions.
type: integer
minimum: 0
default_queue:
title: Default Queue
description: Default queue to use for the task. Defaults to `long`.
enum: [long, short]
time_limit:
title: Time Limit
description: Overrides the default time limit (in seconds) for the task. Defaults to `0`, meaning use default.
type: integer
minimum: 0
#end properties
#end execution
anydesk:
title: AnyDesk
description: Settings for the AnyDesk healthcheck provider.
type: object
required: [license_id, api_key, heartbeat_key, client_ids]
additionalProperties: false
properties:
license_id:
title: License ID
description: The AnyDesk license ID.
type: string
minLength: 1
api_key:
title: API Key
description: The AnyDesk API key.
type: string
minLength: 1
heartbeat_key:
title: Heartbeat Key
description: The key of the BetterUptime heartbeat to use. The heartbeat will only be sent if all the monitored clients are online.
type: string
minLength: 1
client_ids:
title: Client IDS
description: IDs of AnyDesk clients to monitor.
type: array
items:
type: string
minLength: 1
#end properties
#end anydesk
#end definitions