cribl-control-plane 0.0.38__py3-none-any.whl → 0.4.0a6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cribl-control-plane might be problematic. Click here for more details.
- cribl_control_plane/_hooks/clientcredentials.py +92 -42
- cribl_control_plane/_version.py +4 -4
- cribl_control_plane/acl.py +5 -3
- cribl_control_plane/auth_sdk.py +6 -3
- cribl_control_plane/basesdk.py +11 -1
- cribl_control_plane/commits.py +7 -5
- cribl_control_plane/destinations.py +6 -4
- cribl_control_plane/destinations_pq.py +2 -2
- cribl_control_plane/errors/__init__.py +23 -8
- cribl_control_plane/errors/apierror.py +2 -0
- cribl_control_plane/errors/criblcontrolplaneerror.py +11 -7
- cribl_control_plane/errors/error.py +4 -2
- cribl_control_plane/errors/healthserverstatus_error.py +41 -0
- cribl_control_plane/errors/no_response_error.py +5 -1
- cribl_control_plane/errors/responsevalidationerror.py +2 -0
- cribl_control_plane/groups_configs.py +8 -3
- cribl_control_plane/groups_sdk.py +64 -38
- cribl_control_plane/health.py +22 -12
- cribl_control_plane/httpclient.py +0 -1
- cribl_control_plane/lakedatasets.py +40 -12
- cribl_control_plane/models/__init__.py +1180 -54
- cribl_control_plane/models/authtoken.py +5 -1
- cribl_control_plane/models/{routecloneconf.py → branchinfo.py} +4 -4
- cribl_control_plane/models/cacheconnection.py +30 -2
- cribl_control_plane/models/cacheconnectionbackfillstatus.py +2 -1
- cribl_control_plane/models/cloudprovider.py +2 -1
- cribl_control_plane/models/configgroup.py +66 -11
- cribl_control_plane/models/configgroupcloud.py +17 -3
- cribl_control_plane/models/createconfiggroupbyproductop.py +27 -9
- cribl_control_plane/models/createinputhectokenbyidop.py +6 -5
- cribl_control_plane/models/createroutesappendbyidop.py +2 -2
- cribl_control_plane/models/createversionpushop.py +5 -5
- cribl_control_plane/models/createversionrevertop.py +2 -2
- cribl_control_plane/models/createversionundoop.py +3 -3
- cribl_control_plane/models/cribllakedataset.py +22 -2
- cribl_control_plane/models/cribllakedatasetupdate.py +95 -0
- cribl_control_plane/models/datasetmetadata.py +18 -2
- cribl_control_plane/models/deleteconfiggroupbyproductandidop.py +18 -2
- cribl_control_plane/models/deleteoutputpqbyidop.py +5 -5
- cribl_control_plane/models/deletepipelinebyidop.py +2 -2
- cribl_control_plane/models/difffiles.py +171 -0
- cribl_control_plane/models/distributedsummary.py +6 -0
- cribl_control_plane/models/getconfiggroupaclbyproductandidop.py +24 -2
- cribl_control_plane/models/getconfiggroupaclteamsbyproductandidop.py +24 -2
- cribl_control_plane/models/getconfiggroupbyproductandidop.py +14 -1
- cribl_control_plane/models/getconfiggroupconfigversionbyproductandidop.py +18 -2
- cribl_control_plane/models/getoutputpqbyidop.py +6 -5
- cribl_control_plane/models/getpipelinebyidop.py +2 -2
- cribl_control_plane/models/getroutesbyidop.py +2 -2
- cribl_control_plane/models/getsummaryop.py +18 -2
- cribl_control_plane/models/getversionbranchop.py +6 -5
- cribl_control_plane/models/getversioncountop.py +6 -5
- cribl_control_plane/models/getversiondiffop.py +6 -5
- cribl_control_plane/models/getversionshowop.py +6 -5
- cribl_control_plane/models/gitcountresult.py +13 -0
- cribl_control_plane/models/gitdiffresult.py +16 -0
- cribl_control_plane/models/gitinfo.py +14 -3
- cribl_control_plane/models/gitshowresult.py +19 -0
- cribl_control_plane/models/groupcreaterequest.py +171 -0
- cribl_control_plane/models/hbcriblinfo.py +39 -3
- cribl_control_plane/models/healthserverstatus.py +55 -0
- cribl_control_plane/models/heartbeatmetadata.py +3 -0
- cribl_control_plane/models/input.py +83 -78
- cribl_control_plane/models/inputappscope.py +126 -30
- cribl_control_plane/models/inputazureblob.py +62 -6
- cribl_control_plane/models/inputcloudflarehec.py +513 -0
- cribl_control_plane/models/inputcollection.py +47 -4
- cribl_control_plane/models/inputconfluentcloud.py +254 -30
- cribl_control_plane/models/inputcribl.py +47 -4
- cribl_control_plane/models/inputcriblhttp.py +121 -30
- cribl_control_plane/models/inputcribllakehttp.py +122 -30
- cribl_control_plane/models/inputcriblmetrics.py +48 -4
- cribl_control_plane/models/inputcribltcp.py +122 -24
- cribl_control_plane/models/inputcrowdstrike.py +92 -10
- cribl_control_plane/models/inputdatadogagent.py +98 -24
- cribl_control_plane/models/inputdatagen.py +47 -4
- cribl_control_plane/models/inputedgeprometheus.py +210 -50
- cribl_control_plane/models/inputelastic.py +167 -36
- cribl_control_plane/models/inputeventhub.py +209 -6
- cribl_control_plane/models/inputexec.py +59 -6
- cribl_control_plane/models/inputfile.py +78 -10
- cribl_control_plane/models/inputfirehose.py +97 -24
- cribl_control_plane/models/inputgooglepubsub.py +67 -6
- cribl_control_plane/models/inputgrafana.py +251 -71
- cribl_control_plane/models/inputhttp.py +97 -24
- cribl_control_plane/models/inputhttpraw.py +97 -24
- cribl_control_plane/models/inputjournalfiles.py +48 -4
- cribl_control_plane/models/inputkafka.py +248 -26
- cribl_control_plane/models/inputkinesis.py +130 -14
- cribl_control_plane/models/inputkubeevents.py +47 -4
- cribl_control_plane/models/inputkubelogs.py +61 -8
- cribl_control_plane/models/inputkubemetrics.py +61 -8
- cribl_control_plane/models/inputloki.py +113 -34
- cribl_control_plane/models/inputmetrics.py +97 -24
- cribl_control_plane/models/inputmodeldriventelemetry.py +107 -26
- cribl_control_plane/models/inputmsk.py +141 -30
- cribl_control_plane/models/inputnetflow.py +47 -4
- cribl_control_plane/models/inputoffice365mgmt.py +112 -14
- cribl_control_plane/models/inputoffice365msgtrace.py +114 -16
- cribl_control_plane/models/inputoffice365service.py +114 -16
- cribl_control_plane/models/inputopentelemetry.py +143 -32
- cribl_control_plane/models/inputprometheus.py +193 -44
- cribl_control_plane/models/inputprometheusrw.py +114 -27
- cribl_control_plane/models/inputrawudp.py +47 -4
- cribl_control_plane/models/inputs3.py +78 -8
- cribl_control_plane/models/inputs3inventory.py +92 -10
- cribl_control_plane/models/inputsecuritylake.py +93 -10
- cribl_control_plane/models/inputsnmp.py +68 -6
- cribl_control_plane/models/inputsplunk.py +130 -28
- cribl_control_plane/models/inputsplunkhec.py +111 -25
- cribl_control_plane/models/inputsplunksearch.py +108 -14
- cribl_control_plane/models/inputsqs.py +99 -16
- cribl_control_plane/models/inputsyslog.py +189 -47
- cribl_control_plane/models/inputsystemmetrics.py +202 -32
- cribl_control_plane/models/inputsystemstate.py +61 -8
- cribl_control_plane/models/inputtcp.py +122 -26
- cribl_control_plane/models/inputtcpjson.py +112 -26
- cribl_control_plane/models/inputwef.py +121 -15
- cribl_control_plane/models/inputwindowsmetrics.py +186 -33
- cribl_control_plane/models/inputwineventlogs.py +93 -11
- cribl_control_plane/models/inputwiz.py +78 -8
- cribl_control_plane/models/inputwizwebhook.py +97 -24
- cribl_control_plane/models/inputzscalerhec.py +111 -25
- cribl_control_plane/models/jobinfo.py +34 -0
- cribl_control_plane/models/jobstatus.py +48 -0
- cribl_control_plane/models/lakedatasetmetrics.py +17 -0
- cribl_control_plane/models/lakehouseconnectiontype.py +2 -1
- cribl_control_plane/models/listconfiggroupbyproductop.py +14 -1
- cribl_control_plane/models/logininfo.py +3 -3
- cribl_control_plane/models/masterworkerentry.py +17 -2
- cribl_control_plane/models/nodeactiveupgradestatus.py +2 -1
- cribl_control_plane/models/nodefailedupgradestatus.py +2 -1
- cribl_control_plane/models/nodeprovidedinfo.py +11 -1
- cribl_control_plane/models/nodeskippedupgradestatus.py +2 -1
- cribl_control_plane/models/nodeupgradestate.py +2 -1
- cribl_control_plane/models/nodeupgradestatus.py +51 -5
- cribl_control_plane/models/outpostnodeinfo.py +16 -0
- cribl_control_plane/models/output.py +104 -90
- cribl_control_plane/models/outputazureblob.py +171 -18
- cribl_control_plane/models/outputazuredataexplorer.py +514 -90
- cribl_control_plane/models/outputazureeventhub.py +315 -31
- cribl_control_plane/models/outputazurelogs.py +145 -26
- cribl_control_plane/models/outputchronicle.py +532 -0
- cribl_control_plane/models/outputclickhouse.py +205 -34
- cribl_control_plane/models/outputcloudflarer2.py +632 -0
- cribl_control_plane/models/outputcloudwatch.py +129 -23
- cribl_control_plane/models/outputconfluentcloud.py +384 -57
- cribl_control_plane/models/outputcriblhttp.py +199 -32
- cribl_control_plane/models/outputcribllake.py +156 -16
- cribl_control_plane/models/outputcribltcp.py +194 -29
- cribl_control_plane/models/outputcrowdstrikenextgensiem.py +172 -28
- cribl_control_plane/models/outputdatabricks.py +501 -0
- cribl_control_plane/models/outputdatadog.py +199 -31
- cribl_control_plane/models/outputdataset.py +181 -29
- cribl_control_plane/models/outputdiskspool.py +17 -2
- cribl_control_plane/models/outputdls3.py +233 -24
- cribl_control_plane/models/outputdynatracehttp.py +208 -34
- cribl_control_plane/models/outputdynatraceotlp.py +210 -36
- cribl_control_plane/models/outputelastic.py +199 -30
- cribl_control_plane/models/outputelasticcloud.py +171 -26
- cribl_control_plane/models/outputexabeam.py +96 -10
- cribl_control_plane/models/outputfilesystem.py +139 -14
- cribl_control_plane/models/outputgooglechronicle.py +216 -35
- cribl_control_plane/models/outputgooglecloudlogging.py +174 -31
- cribl_control_plane/models/outputgooglecloudstorage.py +215 -24
- cribl_control_plane/models/outputgooglepubsub.py +131 -23
- cribl_control_plane/models/outputgrafanacloud.py +376 -74
- cribl_control_plane/models/outputgraphite.py +128 -25
- cribl_control_plane/models/outputhoneycomb.py +145 -26
- cribl_control_plane/models/outputhumiohec.py +162 -28
- cribl_control_plane/models/outputinfluxdb.py +165 -28
- cribl_control_plane/models/outputkafka.py +375 -52
- cribl_control_plane/models/outputkinesis.py +165 -27
- cribl_control_plane/models/outputloki.py +164 -34
- cribl_control_plane/models/outputmicrosoftfabric.py +540 -0
- cribl_control_plane/models/outputminio.py +225 -25
- cribl_control_plane/models/outputmsk.py +267 -54
- cribl_control_plane/models/outputnewrelic.py +171 -29
- cribl_control_plane/models/outputnewrelicevents.py +163 -28
- cribl_control_plane/models/outputopentelemetry.py +240 -40
- cribl_control_plane/models/outputprometheus.py +145 -26
- cribl_control_plane/models/outputring.py +49 -8
- cribl_control_plane/models/outputs3.py +233 -26
- cribl_control_plane/models/outputsecuritylake.py +179 -18
- cribl_control_plane/models/outputsentinel.py +172 -29
- cribl_control_plane/models/outputsentineloneaisiem.py +181 -35
- cribl_control_plane/models/outputservicenow.py +223 -38
- cribl_control_plane/models/outputsignalfx.py +145 -26
- cribl_control_plane/models/outputsns.py +143 -25
- cribl_control_plane/models/outputsplunk.py +206 -36
- cribl_control_plane/models/outputsplunkhec.py +238 -26
- cribl_control_plane/models/outputsplunklb.py +253 -43
- cribl_control_plane/models/outputsqs.py +163 -33
- cribl_control_plane/models/outputstatsd.py +127 -25
- cribl_control_plane/models/outputstatsdext.py +128 -25
- cribl_control_plane/models/outputsumologic.py +146 -25
- cribl_control_plane/models/outputsyslog.py +318 -46
- cribl_control_plane/models/outputtcpjson.py +186 -32
- cribl_control_plane/models/outputwavefront.py +145 -26
- cribl_control_plane/models/outputwebhook.py +211 -33
- cribl_control_plane/models/outputxsiam.py +143 -26
- cribl_control_plane/models/packinfo.py +8 -5
- cribl_control_plane/models/packinstallinfo.py +11 -8
- cribl_control_plane/models/productscore.py +2 -1
- cribl_control_plane/models/rbacresource.py +2 -1
- cribl_control_plane/models/resourcepolicy.py +15 -2
- cribl_control_plane/models/routeconf.py +3 -4
- cribl_control_plane/models/runnablejob.py +27 -0
- cribl_control_plane/models/runnablejobcollection.py +669 -0
- cribl_control_plane/models/runnablejobexecutor.py +368 -0
- cribl_control_plane/models/runnablejobscheduledsearch.py +286 -0
- cribl_control_plane/models/updateconfiggroupbyproductandidop.py +19 -2
- cribl_control_plane/models/updateconfiggroupdeploybyproductandidop.py +19 -2
- cribl_control_plane/models/updatecribllakedatasetbylakeidandidop.py +9 -5
- cribl_control_plane/models/updateinputhectokenbyidandtokenop.py +6 -5
- cribl_control_plane/models/updatepacksop.py +25 -0
- cribl_control_plane/models/updatepipelinebyidop.py +6 -6
- cribl_control_plane/models/updateroutesbyidop.py +2 -2
- cribl_control_plane/models/uploadpackresponse.py +13 -0
- cribl_control_plane/models/workertypes.py +2 -1
- cribl_control_plane/nodes.py +5 -3
- cribl_control_plane/packs.py +202 -7
- cribl_control_plane/pipelines.py +18 -18
- cribl_control_plane/routes_sdk.py +22 -22
- cribl_control_plane/sdk.py +19 -6
- cribl_control_plane/sources.py +5 -3
- cribl_control_plane/tokens.py +23 -15
- cribl_control_plane/utils/__init__.py +15 -3
- cribl_control_plane/utils/annotations.py +32 -8
- cribl_control_plane/utils/eventstreaming.py +10 -0
- cribl_control_plane/utils/retries.py +69 -5
- cribl_control_plane/utils/unmarshal_json_response.py +15 -1
- cribl_control_plane/versions.py +11 -6
- {cribl_control_plane-0.0.38.dist-info → cribl_control_plane-0.4.0a6.dist-info}/METADATA +69 -23
- cribl_control_plane-0.4.0a6.dist-info/RECORD +336 -0
- {cribl_control_plane-0.0.38.dist-info → cribl_control_plane-0.4.0a6.dist-info}/WHEEL +1 -1
- cribl_control_plane-0.4.0a6.dist-info/licenses/LICENSE +201 -0
- cribl_control_plane/errors/healthstatus_error.py +0 -32
- cribl_control_plane/models/appmode.py +0 -13
- cribl_control_plane/models/healthstatus.py +0 -33
- cribl_control_plane-0.0.38.dist-info/RECORD +0 -315
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
+
from cribl_control_plane import models, utils
|
|
4
5
|
from cribl_control_plane.types import BaseModel
|
|
6
|
+
from cribl_control_plane.utils import validate_open_enum
|
|
5
7
|
from enum import Enum
|
|
6
8
|
import pydantic
|
|
9
|
+
from pydantic import field_serializer
|
|
10
|
+
from pydantic.functional_validators import PlainValidator
|
|
7
11
|
from typing import List, Optional
|
|
8
12
|
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
9
13
|
|
|
@@ -12,64 +16,87 @@ class OutputCriblLakeType(str, Enum):
|
|
|
12
16
|
CRIBL_LAKE = "cribl_lake"
|
|
13
17
|
|
|
14
18
|
|
|
15
|
-
class OutputCriblLakeSignatureVersion(str, Enum):
|
|
19
|
+
class OutputCriblLakeSignatureVersion(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
16
20
|
r"""Signature version to use for signing S3 requests"""
|
|
17
21
|
|
|
18
22
|
V2 = "v2"
|
|
19
23
|
V4 = "v4"
|
|
20
24
|
|
|
21
25
|
|
|
22
|
-
class OutputCriblLakeObjectACL(str, Enum):
|
|
26
|
+
class OutputCriblLakeObjectACL(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
23
27
|
r"""Object ACL to assign to uploaded objects"""
|
|
24
28
|
|
|
29
|
+
# Private
|
|
25
30
|
PRIVATE = "private"
|
|
31
|
+
# Public Read Only
|
|
26
32
|
PUBLIC_READ = "public-read"
|
|
33
|
+
# Public Read/Write
|
|
27
34
|
PUBLIC_READ_WRITE = "public-read-write"
|
|
35
|
+
# Authenticated Read Only
|
|
28
36
|
AUTHENTICATED_READ = "authenticated-read"
|
|
37
|
+
# AWS EC2 AMI Read Only
|
|
29
38
|
AWS_EXEC_READ = "aws-exec-read"
|
|
39
|
+
# Bucket Owner Read Only
|
|
30
40
|
BUCKET_OWNER_READ = "bucket-owner-read"
|
|
41
|
+
# Bucket Owner Full Control
|
|
31
42
|
BUCKET_OWNER_FULL_CONTROL = "bucket-owner-full-control"
|
|
32
43
|
|
|
33
44
|
|
|
34
|
-
class OutputCriblLakeStorageClass(str, Enum):
|
|
45
|
+
class OutputCriblLakeStorageClass(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
35
46
|
r"""Storage class to select for uploaded objects"""
|
|
36
47
|
|
|
48
|
+
# Standard
|
|
37
49
|
STANDARD = "STANDARD"
|
|
50
|
+
# Reduced Redundancy Storage
|
|
38
51
|
REDUCED_REDUNDANCY = "REDUCED_REDUNDANCY"
|
|
52
|
+
# Standard, Infrequent Access
|
|
39
53
|
STANDARD_IA = "STANDARD_IA"
|
|
54
|
+
# One Zone, Infrequent Access
|
|
40
55
|
ONEZONE_IA = "ONEZONE_IA"
|
|
56
|
+
# Intelligent Tiering
|
|
41
57
|
INTELLIGENT_TIERING = "INTELLIGENT_TIERING"
|
|
58
|
+
# Glacier Flexible Retrieval
|
|
42
59
|
GLACIER = "GLACIER"
|
|
60
|
+
# Glacier Instant Retrieval
|
|
43
61
|
GLACIER_IR = "GLACIER_IR"
|
|
62
|
+
# Glacier Deep Archive
|
|
44
63
|
DEEP_ARCHIVE = "DEEP_ARCHIVE"
|
|
45
64
|
|
|
46
65
|
|
|
47
|
-
class OutputCriblLakeServerSideEncryptionForUploadedObjects(
|
|
66
|
+
class OutputCriblLakeServerSideEncryptionForUploadedObjects(
|
|
67
|
+
str, Enum, metaclass=utils.OpenEnumMeta
|
|
68
|
+
):
|
|
69
|
+
# Amazon S3 Managed Key
|
|
48
70
|
AES256 = "AES256"
|
|
71
|
+
# AWS KMS Managed Key
|
|
49
72
|
AWS_KMS = "aws:kms"
|
|
50
73
|
|
|
51
74
|
|
|
52
|
-
class OutputCriblLakeBackpressureBehavior(str, Enum):
|
|
75
|
+
class OutputCriblLakeBackpressureBehavior(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
53
76
|
r"""How to handle events when all receivers are exerting backpressure"""
|
|
54
77
|
|
|
78
|
+
# Block
|
|
55
79
|
BLOCK = "block"
|
|
80
|
+
# Drop
|
|
56
81
|
DROP = "drop"
|
|
57
82
|
|
|
58
83
|
|
|
59
|
-
class OutputCriblLakeDiskSpaceProtection(str, Enum):
|
|
84
|
+
class OutputCriblLakeDiskSpaceProtection(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
60
85
|
r"""How to handle events when disk space is below the global 'Min free disk space' limit"""
|
|
61
86
|
|
|
87
|
+
# Block
|
|
62
88
|
BLOCK = "block"
|
|
89
|
+
# Drop
|
|
63
90
|
DROP = "drop"
|
|
64
91
|
|
|
65
92
|
|
|
66
|
-
class AwsAuthenticationMethod(str, Enum):
|
|
93
|
+
class AwsAuthenticationMethod(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
67
94
|
AUTO = "auto"
|
|
68
95
|
AUTO_RPC = "auto_rpc"
|
|
69
96
|
MANUAL = "manual"
|
|
70
97
|
|
|
71
98
|
|
|
72
|
-
class OutputCriblLakeFormat(str, Enum):
|
|
99
|
+
class OutputCriblLakeFormat(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
73
100
|
JSON = "json"
|
|
74
101
|
PARQUET = "parquet"
|
|
75
102
|
DDSS = "ddss"
|
|
@@ -144,6 +171,8 @@ class OutputCriblLakeTypedDict(TypedDict):
|
|
|
144
171
|
r"""If a file fails to move to its final destination after the maximum number of retries, move it to a designated directory to prevent further errors"""
|
|
145
172
|
on_disk_full_backpressure: NotRequired[OutputCriblLakeDiskSpaceProtection]
|
|
146
173
|
r"""How to handle events when disk space is below the global 'Min free disk space' limit"""
|
|
174
|
+
force_close_on_shutdown: NotRequired[bool]
|
|
175
|
+
r"""Force all staged files to close during an orderly Node shutdown. This triggers immediate upload of in-progress data — regardless of idle time, file age, or size thresholds — to minimize data loss."""
|
|
147
176
|
max_file_open_time_sec: NotRequired[float]
|
|
148
177
|
r"""Maximum amount of time to write to a file. Files open for longer than this will be closed and moved to final output location."""
|
|
149
178
|
max_file_idle_time_sec: NotRequired[float]
|
|
@@ -159,6 +188,8 @@ class OutputCriblLakeTypedDict(TypedDict):
|
|
|
159
188
|
description: NotRequired[str]
|
|
160
189
|
empty_dir_cleanup_sec: NotRequired[float]
|
|
161
190
|
r"""How frequently, in seconds, to clean up empty directories"""
|
|
191
|
+
directory_batch_size: NotRequired[float]
|
|
192
|
+
r"""Number of directories to process in each batch during cleanup of empty directories. Minimum is 10, maximum is 10000. Higher values may require more memory."""
|
|
162
193
|
deadletter_path: NotRequired[str]
|
|
163
194
|
r"""Storage location for files that fail to reach their final destination after maximum retries are exceeded"""
|
|
164
195
|
max_retry_num: NotRequired[float]
|
|
@@ -200,7 +231,10 @@ class OutputCriblLake(BaseModel):
|
|
|
200
231
|
r"""S3 service endpoint. If empty, defaults to the AWS Region-specific endpoint. Otherwise, it must point to S3-compatible endpoint."""
|
|
201
232
|
|
|
202
233
|
signature_version: Annotated[
|
|
203
|
-
|
|
234
|
+
Annotated[
|
|
235
|
+
Optional[OutputCriblLakeSignatureVersion],
|
|
236
|
+
PlainValidator(validate_open_enum(False)),
|
|
237
|
+
],
|
|
204
238
|
pydantic.Field(alias="signatureVersion"),
|
|
205
239
|
] = OutputCriblLakeSignatureVersion.V4
|
|
206
240
|
r"""Signature version to use for signing S3 requests"""
|
|
@@ -249,17 +283,28 @@ class OutputCriblLake(BaseModel):
|
|
|
249
283
|
r"""Lake dataset to send the data to."""
|
|
250
284
|
|
|
251
285
|
object_acl: Annotated[
|
|
252
|
-
|
|
286
|
+
Annotated[
|
|
287
|
+
Optional[OutputCriblLakeObjectACL],
|
|
288
|
+
PlainValidator(validate_open_enum(False)),
|
|
289
|
+
],
|
|
290
|
+
pydantic.Field(alias="objectACL"),
|
|
253
291
|
] = OutputCriblLakeObjectACL.PRIVATE
|
|
254
292
|
r"""Object ACL to assign to uploaded objects"""
|
|
255
293
|
|
|
256
294
|
storage_class: Annotated[
|
|
257
|
-
|
|
295
|
+
Annotated[
|
|
296
|
+
Optional[OutputCriblLakeStorageClass],
|
|
297
|
+
PlainValidator(validate_open_enum(False)),
|
|
298
|
+
],
|
|
299
|
+
pydantic.Field(alias="storageClass"),
|
|
258
300
|
] = None
|
|
259
301
|
r"""Storage class to select for uploaded objects"""
|
|
260
302
|
|
|
261
303
|
server_side_encryption: Annotated[
|
|
262
|
-
|
|
304
|
+
Annotated[
|
|
305
|
+
Optional[OutputCriblLakeServerSideEncryptionForUploadedObjects],
|
|
306
|
+
PlainValidator(validate_open_enum(False)),
|
|
307
|
+
],
|
|
263
308
|
pydantic.Field(alias="serverSideEncryption"),
|
|
264
309
|
] = None
|
|
265
310
|
|
|
@@ -300,7 +345,10 @@ class OutputCriblLake(BaseModel):
|
|
|
300
345
|
r"""Buffer size used to write to a file"""
|
|
301
346
|
|
|
302
347
|
on_backpressure: Annotated[
|
|
303
|
-
|
|
348
|
+
Annotated[
|
|
349
|
+
Optional[OutputCriblLakeBackpressureBehavior],
|
|
350
|
+
PlainValidator(validate_open_enum(False)),
|
|
351
|
+
],
|
|
304
352
|
pydantic.Field(alias="onBackpressure"),
|
|
305
353
|
] = OutputCriblLakeBackpressureBehavior.BLOCK
|
|
306
354
|
r"""How to handle events when all receivers are exerting backpressure"""
|
|
@@ -311,11 +359,19 @@ class OutputCriblLake(BaseModel):
|
|
|
311
359
|
r"""If a file fails to move to its final destination after the maximum number of retries, move it to a designated directory to prevent further errors"""
|
|
312
360
|
|
|
313
361
|
on_disk_full_backpressure: Annotated[
|
|
314
|
-
|
|
362
|
+
Annotated[
|
|
363
|
+
Optional[OutputCriblLakeDiskSpaceProtection],
|
|
364
|
+
PlainValidator(validate_open_enum(False)),
|
|
365
|
+
],
|
|
315
366
|
pydantic.Field(alias="onDiskFullBackpressure"),
|
|
316
367
|
] = OutputCriblLakeDiskSpaceProtection.BLOCK
|
|
317
368
|
r"""How to handle events when disk space is below the global 'Min free disk space' limit"""
|
|
318
369
|
|
|
370
|
+
force_close_on_shutdown: Annotated[
|
|
371
|
+
Optional[bool], pydantic.Field(alias="forceCloseOnShutdown")
|
|
372
|
+
] = False
|
|
373
|
+
r"""Force all staged files to close during an orderly Node shutdown. This triggers immediate upload of in-progress data — regardless of idle time, file age, or size thresholds — to minimize data loss."""
|
|
374
|
+
|
|
319
375
|
max_file_open_time_sec: Annotated[
|
|
320
376
|
Optional[float], pydantic.Field(alias="maxFileOpenTimeSec")
|
|
321
377
|
] = 300
|
|
@@ -337,12 +393,17 @@ class OutputCriblLake(BaseModel):
|
|
|
337
393
|
r"""Maximum number of files that can be waiting for upload before backpressure is applied"""
|
|
338
394
|
|
|
339
395
|
aws_authentication_method: Annotated[
|
|
340
|
-
|
|
396
|
+
Annotated[
|
|
397
|
+
Optional[AwsAuthenticationMethod], PlainValidator(validate_open_enum(False))
|
|
398
|
+
],
|
|
341
399
|
pydantic.Field(alias="awsAuthenticationMethod"),
|
|
342
400
|
] = AwsAuthenticationMethod.AUTO
|
|
343
401
|
|
|
344
402
|
format_: Annotated[
|
|
345
|
-
|
|
403
|
+
Annotated[
|
|
404
|
+
Optional[OutputCriblLakeFormat], PlainValidator(validate_open_enum(False))
|
|
405
|
+
],
|
|
406
|
+
pydantic.Field(alias="format"),
|
|
346
407
|
] = None
|
|
347
408
|
|
|
348
409
|
max_concurrent_file_parts: Annotated[
|
|
@@ -357,6 +418,11 @@ class OutputCriblLake(BaseModel):
|
|
|
357
418
|
] = 300
|
|
358
419
|
r"""How frequently, in seconds, to clean up empty directories"""
|
|
359
420
|
|
|
421
|
+
directory_batch_size: Annotated[
|
|
422
|
+
Optional[float], pydantic.Field(alias="directoryBatchSize")
|
|
423
|
+
] = 1000
|
|
424
|
+
r"""Number of directories to process in each batch during cleanup of empty directories. Minimum is 10, maximum is 10000. Higher values may require more memory."""
|
|
425
|
+
|
|
360
426
|
deadletter_path: Annotated[
|
|
361
427
|
Optional[str], pydantic.Field(alias="deadletterPath")
|
|
362
428
|
] = "$CRIBL_HOME/state/outputs/dead-letter"
|
|
@@ -364,3 +430,77 @@ class OutputCriblLake(BaseModel):
|
|
|
364
430
|
|
|
365
431
|
max_retry_num: Annotated[Optional[float], pydantic.Field(alias="maxRetryNum")] = 20
|
|
366
432
|
r"""The maximum number of times a file will attempt to move to its final destination before being dead-lettered"""
|
|
433
|
+
|
|
434
|
+
@field_serializer("signature_version")
|
|
435
|
+
def serialize_signature_version(self, value):
|
|
436
|
+
if isinstance(value, str):
|
|
437
|
+
try:
|
|
438
|
+
return models.OutputCriblLakeSignatureVersion(value)
|
|
439
|
+
except ValueError:
|
|
440
|
+
return value
|
|
441
|
+
return value
|
|
442
|
+
|
|
443
|
+
@field_serializer("object_acl")
|
|
444
|
+
def serialize_object_acl(self, value):
|
|
445
|
+
if isinstance(value, str):
|
|
446
|
+
try:
|
|
447
|
+
return models.OutputCriblLakeObjectACL(value)
|
|
448
|
+
except ValueError:
|
|
449
|
+
return value
|
|
450
|
+
return value
|
|
451
|
+
|
|
452
|
+
@field_serializer("storage_class")
|
|
453
|
+
def serialize_storage_class(self, value):
|
|
454
|
+
if isinstance(value, str):
|
|
455
|
+
try:
|
|
456
|
+
return models.OutputCriblLakeStorageClass(value)
|
|
457
|
+
except ValueError:
|
|
458
|
+
return value
|
|
459
|
+
return value
|
|
460
|
+
|
|
461
|
+
@field_serializer("server_side_encryption")
|
|
462
|
+
def serialize_server_side_encryption(self, value):
|
|
463
|
+
if isinstance(value, str):
|
|
464
|
+
try:
|
|
465
|
+
return models.OutputCriblLakeServerSideEncryptionForUploadedObjects(
|
|
466
|
+
value
|
|
467
|
+
)
|
|
468
|
+
except ValueError:
|
|
469
|
+
return value
|
|
470
|
+
return value
|
|
471
|
+
|
|
472
|
+
@field_serializer("on_backpressure")
|
|
473
|
+
def serialize_on_backpressure(self, value):
|
|
474
|
+
if isinstance(value, str):
|
|
475
|
+
try:
|
|
476
|
+
return models.OutputCriblLakeBackpressureBehavior(value)
|
|
477
|
+
except ValueError:
|
|
478
|
+
return value
|
|
479
|
+
return value
|
|
480
|
+
|
|
481
|
+
@field_serializer("on_disk_full_backpressure")
|
|
482
|
+
def serialize_on_disk_full_backpressure(self, value):
|
|
483
|
+
if isinstance(value, str):
|
|
484
|
+
try:
|
|
485
|
+
return models.OutputCriblLakeDiskSpaceProtection(value)
|
|
486
|
+
except ValueError:
|
|
487
|
+
return value
|
|
488
|
+
return value
|
|
489
|
+
|
|
490
|
+
@field_serializer("aws_authentication_method")
|
|
491
|
+
def serialize_aws_authentication_method(self, value):
|
|
492
|
+
if isinstance(value, str):
|
|
493
|
+
try:
|
|
494
|
+
return models.AwsAuthenticationMethod(value)
|
|
495
|
+
except ValueError:
|
|
496
|
+
return value
|
|
497
|
+
return value
|
|
498
|
+
|
|
499
|
+
@field_serializer("format_")
|
|
500
|
+
def serialize_format_(self, value):
|
|
501
|
+
if isinstance(value, str):
|
|
502
|
+
try:
|
|
503
|
+
return models.OutputCriblLakeFormat(value)
|
|
504
|
+
except ValueError:
|
|
505
|
+
return value
|
|
506
|
+
return value
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
+
from cribl_control_plane import models, utils
|
|
4
5
|
from cribl_control_plane.types import BaseModel
|
|
6
|
+
from cribl_control_plane.utils import validate_open_enum
|
|
5
7
|
from enum import Enum
|
|
6
8
|
import pydantic
|
|
9
|
+
from pydantic import field_serializer
|
|
10
|
+
from pydantic.functional_validators import PlainValidator
|
|
7
11
|
from typing import List, Optional
|
|
8
12
|
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
9
13
|
|
|
@@ -12,21 +16,23 @@ class OutputCriblTCPType(str, Enum):
|
|
|
12
16
|
CRIBL_TCP = "cribl_tcp"
|
|
13
17
|
|
|
14
18
|
|
|
15
|
-
class OutputCriblTCPCompression(str, Enum):
|
|
19
|
+
class OutputCriblTCPCompression(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
16
20
|
r"""Codec to use to compress the data before sending"""
|
|
17
21
|
|
|
22
|
+
# None
|
|
18
23
|
NONE = "none"
|
|
24
|
+
# Gzip
|
|
19
25
|
GZIP = "gzip"
|
|
20
26
|
|
|
21
27
|
|
|
22
|
-
class OutputCriblTCPMinimumTLSVersion(str, Enum):
|
|
28
|
+
class OutputCriblTCPMinimumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
23
29
|
TL_SV1 = "TLSv1"
|
|
24
30
|
TL_SV1_1 = "TLSv1.1"
|
|
25
31
|
TL_SV1_2 = "TLSv1.2"
|
|
26
32
|
TL_SV1_3 = "TLSv1.3"
|
|
27
33
|
|
|
28
34
|
|
|
29
|
-
class OutputCriblTCPMaximumTLSVersion(str, Enum):
|
|
35
|
+
class OutputCriblTCPMaximumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
30
36
|
TL_SV1 = "TLSv1"
|
|
31
37
|
TL_SV1_1 = "TLSv1.1"
|
|
32
38
|
TL_SV1_2 = "TLSv1.2"
|
|
@@ -86,23 +92,70 @@ class OutputCriblTCPTLSSettingsClientSide(BaseModel):
|
|
|
86
92
|
r"""Passphrase to use to decrypt private key"""
|
|
87
93
|
|
|
88
94
|
min_version: Annotated[
|
|
89
|
-
|
|
95
|
+
Annotated[
|
|
96
|
+
Optional[OutputCriblTCPMinimumTLSVersion],
|
|
97
|
+
PlainValidator(validate_open_enum(False)),
|
|
98
|
+
],
|
|
99
|
+
pydantic.Field(alias="minVersion"),
|
|
90
100
|
] = None
|
|
91
101
|
|
|
92
102
|
max_version: Annotated[
|
|
93
|
-
|
|
103
|
+
Annotated[
|
|
104
|
+
Optional[OutputCriblTCPMaximumTLSVersion],
|
|
105
|
+
PlainValidator(validate_open_enum(False)),
|
|
106
|
+
],
|
|
107
|
+
pydantic.Field(alias="maxVersion"),
|
|
94
108
|
] = None
|
|
95
109
|
|
|
110
|
+
@field_serializer("min_version")
|
|
111
|
+
def serialize_min_version(self, value):
|
|
112
|
+
if isinstance(value, str):
|
|
113
|
+
try:
|
|
114
|
+
return models.OutputCriblTCPMinimumTLSVersion(value)
|
|
115
|
+
except ValueError:
|
|
116
|
+
return value
|
|
117
|
+
return value
|
|
118
|
+
|
|
119
|
+
@field_serializer("max_version")
|
|
120
|
+
def serialize_max_version(self, value):
|
|
121
|
+
if isinstance(value, str):
|
|
122
|
+
try:
|
|
123
|
+
return models.OutputCriblTCPMaximumTLSVersion(value)
|
|
124
|
+
except ValueError:
|
|
125
|
+
return value
|
|
126
|
+
return value
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
class OutputCriblTCPAuthTokenTypedDict(TypedDict):
|
|
130
|
+
token_secret: str
|
|
131
|
+
r"""Select or create a stored text secret"""
|
|
132
|
+
enabled: NotRequired[bool]
|
|
133
|
+
description: NotRequired[str]
|
|
134
|
+
r"""Optional token description"""
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class OutputCriblTCPAuthToken(BaseModel):
|
|
138
|
+
token_secret: Annotated[str, pydantic.Field(alias="tokenSecret")]
|
|
139
|
+
r"""Select or create a stored text secret"""
|
|
140
|
+
|
|
141
|
+
enabled: Optional[bool] = True
|
|
142
|
+
|
|
143
|
+
description: Optional[str] = None
|
|
144
|
+
r"""Optional token description"""
|
|
145
|
+
|
|
96
146
|
|
|
97
|
-
class OutputCriblTCPBackpressureBehavior(str, Enum):
|
|
147
|
+
class OutputCriblTCPBackpressureBehavior(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
98
148
|
r"""How to handle events when all receivers are exerting backpressure"""
|
|
99
149
|
|
|
150
|
+
# Block
|
|
100
151
|
BLOCK = "block"
|
|
152
|
+
# Drop
|
|
101
153
|
DROP = "drop"
|
|
154
|
+
# Persistent Queue
|
|
102
155
|
QUEUE = "queue"
|
|
103
156
|
|
|
104
157
|
|
|
105
|
-
class OutputCriblTCPTLS(str, Enum):
|
|
158
|
+
class OutputCriblTCPTLS(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
106
159
|
r"""Whether to inherit TLS configs from group setting or disable TLS"""
|
|
107
160
|
|
|
108
161
|
INHERIT = "inherit"
|
|
@@ -129,7 +182,9 @@ class OutputCriblTCPHost(BaseModel):
|
|
|
129
182
|
port: Optional[float] = 10300
|
|
130
183
|
r"""The port to connect to on the provided host"""
|
|
131
184
|
|
|
132
|
-
tls:
|
|
185
|
+
tls: Annotated[
|
|
186
|
+
Optional[OutputCriblTCPTLS], PlainValidator(validate_open_enum(False))
|
|
187
|
+
] = OutputCriblTCPTLS.INHERIT
|
|
133
188
|
r"""Whether to inherit TLS configs from group setting or disable TLS"""
|
|
134
189
|
|
|
135
190
|
servername: Optional[str] = None
|
|
@@ -138,29 +193,45 @@ class OutputCriblTCPHost(BaseModel):
|
|
|
138
193
|
weight: Optional[float] = 1
|
|
139
194
|
r"""Assign a weight (>0) to each endpoint to indicate its traffic-handling capability"""
|
|
140
195
|
|
|
196
|
+
@field_serializer("tls")
|
|
197
|
+
def serialize_tls(self, value):
|
|
198
|
+
if isinstance(value, str):
|
|
199
|
+
try:
|
|
200
|
+
return models.OutputCriblTCPTLS(value)
|
|
201
|
+
except ValueError:
|
|
202
|
+
return value
|
|
203
|
+
return value
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
class OutputCriblTCPMode(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
207
|
+
r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
|
|
208
|
+
|
|
209
|
+
# Error
|
|
210
|
+
ERROR = "error"
|
|
211
|
+
# Backpressure
|
|
212
|
+
ALWAYS = "always"
|
|
213
|
+
# Always On
|
|
214
|
+
BACKPRESSURE = "backpressure"
|
|
215
|
+
|
|
141
216
|
|
|
142
|
-
class OutputCriblTCPPqCompressCompression(str, Enum):
|
|
217
|
+
class OutputCriblTCPPqCompressCompression(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
143
218
|
r"""Codec to use to compress the persisted data"""
|
|
144
219
|
|
|
220
|
+
# None
|
|
145
221
|
NONE = "none"
|
|
222
|
+
# Gzip
|
|
146
223
|
GZIP = "gzip"
|
|
147
224
|
|
|
148
225
|
|
|
149
|
-
class OutputCriblTCPQueueFullBehavior(str, Enum):
|
|
226
|
+
class OutputCriblTCPQueueFullBehavior(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
150
227
|
r"""How to handle events when the queue is exerting backpressure (full capacity or low disk). 'Block' is the same behavior as non-PQ blocking. 'Drop new data' throws away incoming data, while leaving the contents of the PQ unchanged."""
|
|
151
228
|
|
|
229
|
+
# Block
|
|
152
230
|
BLOCK = "block"
|
|
231
|
+
# Drop new data
|
|
153
232
|
DROP = "drop"
|
|
154
233
|
|
|
155
234
|
|
|
156
|
-
class OutputCriblTCPMode(str, Enum):
|
|
157
|
-
r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
|
|
158
|
-
|
|
159
|
-
ERROR = "error"
|
|
160
|
-
BACKPRESSURE = "backpressure"
|
|
161
|
-
ALWAYS = "always"
|
|
162
|
-
|
|
163
|
-
|
|
164
235
|
class OutputCriblTCPPqControlsTypedDict(TypedDict):
|
|
165
236
|
pass
|
|
166
237
|
|
|
@@ -196,6 +267,8 @@ class OutputCriblTCPTypedDict(TypedDict):
|
|
|
196
267
|
r"""Amount of time (milliseconds) to wait for a write to complete before assuming connection is dead"""
|
|
197
268
|
token_ttl_minutes: NotRequired[float]
|
|
198
269
|
r"""The number of minutes before the internally generated authentication token expires, valid values between 1 and 60"""
|
|
270
|
+
auth_tokens: NotRequired[List[OutputCriblTCPAuthTokenTypedDict]]
|
|
271
|
+
r"""Shared secrets to be used by connected environments to authorize connections. These tokens should also be installed in Cribl TCP Source in Cribl.Cloud."""
|
|
199
272
|
exclude_fields: NotRequired[List[str]]
|
|
200
273
|
r"""Fields to exclude from the event. By default, all internal fields except `__output` are sent. Example: `cribl_pipe`, `c*`. Wildcards supported."""
|
|
201
274
|
on_backpressure: NotRequired[OutputCriblTCPBackpressureBehavior]
|
|
@@ -215,6 +288,16 @@ class OutputCriblTCPTypedDict(TypedDict):
|
|
|
215
288
|
r"""How far back in time to keep traffic stats for load balancing purposes"""
|
|
216
289
|
max_concurrent_senders: NotRequired[float]
|
|
217
290
|
r"""Maximum number of concurrent connections (per Worker Process). A random set of IPs will be picked on every DNS resolution period. Use 0 for unlimited."""
|
|
291
|
+
pq_strict_ordering: NotRequired[bool]
|
|
292
|
+
r"""Use FIFO (first in, first out) processing. Disable to forward new events to receivers before queue is flushed."""
|
|
293
|
+
pq_rate_per_sec: NotRequired[float]
|
|
294
|
+
r"""Throttling rate (in events per second) to impose while writing to Destinations from PQ. Defaults to 0, which disables throttling."""
|
|
295
|
+
pq_mode: NotRequired[OutputCriblTCPMode]
|
|
296
|
+
r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
|
|
297
|
+
pq_max_buffer_size: NotRequired[float]
|
|
298
|
+
r"""The maximum number of events to hold in memory before writing the events to disk"""
|
|
299
|
+
pq_max_backpressure_sec: NotRequired[float]
|
|
300
|
+
r"""How long (in seconds) to wait for backpressure to resolve before engaging the queue"""
|
|
218
301
|
pq_max_file_size: NotRequired[str]
|
|
219
302
|
r"""The maximum size to store in each queue file before closing and optionally compressing (KB, MB, etc.)"""
|
|
220
303
|
pq_max_size: NotRequired[str]
|
|
@@ -225,8 +308,6 @@ class OutputCriblTCPTypedDict(TypedDict):
|
|
|
225
308
|
r"""Codec to use to compress the persisted data"""
|
|
226
309
|
pq_on_backpressure: NotRequired[OutputCriblTCPQueueFullBehavior]
|
|
227
310
|
r"""How to handle events when the queue is exerting backpressure (full capacity or low disk). 'Block' is the same behavior as non-PQ blocking. 'Drop new data' throws away incoming data, while leaving the contents of the PQ unchanged."""
|
|
228
|
-
pq_mode: NotRequired[OutputCriblTCPMode]
|
|
229
|
-
r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
|
|
230
311
|
pq_controls: NotRequired[OutputCriblTCPPqControlsTypedDict]
|
|
231
312
|
|
|
232
313
|
|
|
@@ -255,7 +336,9 @@ class OutputCriblTCP(BaseModel):
|
|
|
255
336
|
)
|
|
256
337
|
r"""Use load-balanced destinations"""
|
|
257
338
|
|
|
258
|
-
compression:
|
|
339
|
+
compression: Annotated[
|
|
340
|
+
Optional[OutputCriblTCPCompression], PlainValidator(validate_open_enum(False))
|
|
341
|
+
] = OutputCriblTCPCompression.GZIP
|
|
259
342
|
r"""Codec to use to compress the data before sending"""
|
|
260
343
|
|
|
261
344
|
log_failed_requests: Annotated[
|
|
@@ -285,13 +368,21 @@ class OutputCriblTCP(BaseModel):
|
|
|
285
368
|
] = 60
|
|
286
369
|
r"""The number of minutes before the internally generated authentication token expires, valid values between 1 and 60"""
|
|
287
370
|
|
|
371
|
+
auth_tokens: Annotated[
|
|
372
|
+
Optional[List[OutputCriblTCPAuthToken]], pydantic.Field(alias="authTokens")
|
|
373
|
+
] = None
|
|
374
|
+
r"""Shared secrets to be used by connected environments to authorize connections. These tokens should also be installed in Cribl TCP Source in Cribl.Cloud."""
|
|
375
|
+
|
|
288
376
|
exclude_fields: Annotated[
|
|
289
377
|
Optional[List[str]], pydantic.Field(alias="excludeFields")
|
|
290
378
|
] = None
|
|
291
379
|
r"""Fields to exclude from the event. By default, all internal fields except `__output` are sent. Example: `cribl_pipe`, `c*`. Wildcards supported."""
|
|
292
380
|
|
|
293
381
|
on_backpressure: Annotated[
|
|
294
|
-
|
|
382
|
+
Annotated[
|
|
383
|
+
Optional[OutputCriblTCPBackpressureBehavior],
|
|
384
|
+
PlainValidator(validate_open_enum(False)),
|
|
385
|
+
],
|
|
295
386
|
pydantic.Field(alias="onBackpressure"),
|
|
296
387
|
] = OutputCriblTCPBackpressureBehavior.BLOCK
|
|
297
388
|
r"""How to handle events when all receivers are exerting backpressure"""
|
|
@@ -325,6 +416,34 @@ class OutputCriblTCP(BaseModel):
|
|
|
325
416
|
] = 0
|
|
326
417
|
r"""Maximum number of concurrent connections (per Worker Process). A random set of IPs will be picked on every DNS resolution period. Use 0 for unlimited."""
|
|
327
418
|
|
|
419
|
+
pq_strict_ordering: Annotated[
|
|
420
|
+
Optional[bool], pydantic.Field(alias="pqStrictOrdering")
|
|
421
|
+
] = True
|
|
422
|
+
r"""Use FIFO (first in, first out) processing. Disable to forward new events to receivers before queue is flushed."""
|
|
423
|
+
|
|
424
|
+
pq_rate_per_sec: Annotated[
|
|
425
|
+
Optional[float], pydantic.Field(alias="pqRatePerSec")
|
|
426
|
+
] = 0
|
|
427
|
+
r"""Throttling rate (in events per second) to impose while writing to Destinations from PQ. Defaults to 0, which disables throttling."""
|
|
428
|
+
|
|
429
|
+
pq_mode: Annotated[
|
|
430
|
+
Annotated[
|
|
431
|
+
Optional[OutputCriblTCPMode], PlainValidator(validate_open_enum(False))
|
|
432
|
+
],
|
|
433
|
+
pydantic.Field(alias="pqMode"),
|
|
434
|
+
] = OutputCriblTCPMode.ERROR
|
|
435
|
+
r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
|
|
436
|
+
|
|
437
|
+
pq_max_buffer_size: Annotated[
|
|
438
|
+
Optional[float], pydantic.Field(alias="pqMaxBufferSize")
|
|
439
|
+
] = 42
|
|
440
|
+
r"""The maximum number of events to hold in memory before writing the events to disk"""
|
|
441
|
+
|
|
442
|
+
pq_max_backpressure_sec: Annotated[
|
|
443
|
+
Optional[float], pydantic.Field(alias="pqMaxBackpressureSec")
|
|
444
|
+
] = 30
|
|
445
|
+
r"""How long (in seconds) to wait for backpressure to resolve before engaging the queue"""
|
|
446
|
+
|
|
328
447
|
pq_max_file_size: Annotated[
|
|
329
448
|
Optional[str], pydantic.Field(alias="pqMaxFileSize")
|
|
330
449
|
] = "1 MB"
|
|
@@ -339,22 +458,68 @@ class OutputCriblTCP(BaseModel):
|
|
|
339
458
|
r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/<output-id>."""
|
|
340
459
|
|
|
341
460
|
pq_compress: Annotated[
|
|
342
|
-
|
|
461
|
+
Annotated[
|
|
462
|
+
Optional[OutputCriblTCPPqCompressCompression],
|
|
463
|
+
PlainValidator(validate_open_enum(False)),
|
|
464
|
+
],
|
|
343
465
|
pydantic.Field(alias="pqCompress"),
|
|
344
466
|
] = OutputCriblTCPPqCompressCompression.NONE
|
|
345
467
|
r"""Codec to use to compress the persisted data"""
|
|
346
468
|
|
|
347
469
|
pq_on_backpressure: Annotated[
|
|
348
|
-
|
|
470
|
+
Annotated[
|
|
471
|
+
Optional[OutputCriblTCPQueueFullBehavior],
|
|
472
|
+
PlainValidator(validate_open_enum(False)),
|
|
473
|
+
],
|
|
349
474
|
pydantic.Field(alias="pqOnBackpressure"),
|
|
350
475
|
] = OutputCriblTCPQueueFullBehavior.BLOCK
|
|
351
476
|
r"""How to handle events when the queue is exerting backpressure (full capacity or low disk). 'Block' is the same behavior as non-PQ blocking. 'Drop new data' throws away incoming data, while leaving the contents of the PQ unchanged."""
|
|
352
477
|
|
|
353
|
-
pq_mode: Annotated[Optional[OutputCriblTCPMode], pydantic.Field(alias="pqMode")] = (
|
|
354
|
-
OutputCriblTCPMode.ERROR
|
|
355
|
-
)
|
|
356
|
-
r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
|
|
357
|
-
|
|
358
478
|
pq_controls: Annotated[
|
|
359
479
|
Optional[OutputCriblTCPPqControls], pydantic.Field(alias="pqControls")
|
|
360
480
|
] = None
|
|
481
|
+
|
|
482
|
+
@field_serializer("compression")
|
|
483
|
+
def serialize_compression(self, value):
|
|
484
|
+
if isinstance(value, str):
|
|
485
|
+
try:
|
|
486
|
+
return models.OutputCriblTCPCompression(value)
|
|
487
|
+
except ValueError:
|
|
488
|
+
return value
|
|
489
|
+
return value
|
|
490
|
+
|
|
491
|
+
@field_serializer("on_backpressure")
|
|
492
|
+
def serialize_on_backpressure(self, value):
|
|
493
|
+
if isinstance(value, str):
|
|
494
|
+
try:
|
|
495
|
+
return models.OutputCriblTCPBackpressureBehavior(value)
|
|
496
|
+
except ValueError:
|
|
497
|
+
return value
|
|
498
|
+
return value
|
|
499
|
+
|
|
500
|
+
@field_serializer("pq_mode")
|
|
501
|
+
def serialize_pq_mode(self, value):
|
|
502
|
+
if isinstance(value, str):
|
|
503
|
+
try:
|
|
504
|
+
return models.OutputCriblTCPMode(value)
|
|
505
|
+
except ValueError:
|
|
506
|
+
return value
|
|
507
|
+
return value
|
|
508
|
+
|
|
509
|
+
@field_serializer("pq_compress")
|
|
510
|
+
def serialize_pq_compress(self, value):
|
|
511
|
+
if isinstance(value, str):
|
|
512
|
+
try:
|
|
513
|
+
return models.OutputCriblTCPPqCompressCompression(value)
|
|
514
|
+
except ValueError:
|
|
515
|
+
return value
|
|
516
|
+
return value
|
|
517
|
+
|
|
518
|
+
@field_serializer("pq_on_backpressure")
|
|
519
|
+
def serialize_pq_on_backpressure(self, value):
|
|
520
|
+
if isinstance(value, str):
|
|
521
|
+
try:
|
|
522
|
+
return models.OutputCriblTCPQueueFullBehavior(value)
|
|
523
|
+
except ValueError:
|
|
524
|
+
return value
|
|
525
|
+
return value
|