cribl-control-plane 0.0.13__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.

Files changed (197) hide show
  1. cribl_control_plane/__init__.py +17 -0
  2. cribl_control_plane/_hooks/__init__.py +5 -0
  3. cribl_control_plane/_hooks/clientcredentials.py +211 -0
  4. cribl_control_plane/_hooks/registration.py +13 -0
  5. cribl_control_plane/_hooks/sdkhooks.py +81 -0
  6. cribl_control_plane/_hooks/types.py +112 -0
  7. cribl_control_plane/_version.py +15 -0
  8. cribl_control_plane/auth_sdk.py +184 -0
  9. cribl_control_plane/basesdk.py +358 -0
  10. cribl_control_plane/errors/__init__.py +60 -0
  11. cribl_control_plane/errors/apierror.py +38 -0
  12. cribl_control_plane/errors/criblcontrolplaneerror.py +26 -0
  13. cribl_control_plane/errors/error.py +24 -0
  14. cribl_control_plane/errors/healthstatus_error.py +38 -0
  15. cribl_control_plane/errors/no_response_error.py +13 -0
  16. cribl_control_plane/errors/responsevalidationerror.py +25 -0
  17. cribl_control_plane/health.py +166 -0
  18. cribl_control_plane/httpclient.py +126 -0
  19. cribl_control_plane/models/__init__.py +7305 -0
  20. cribl_control_plane/models/addhectokenrequest.py +34 -0
  21. cribl_control_plane/models/authtoken.py +13 -0
  22. cribl_control_plane/models/createinputhectokenbyidop.py +45 -0
  23. cribl_control_plane/models/createinputop.py +24 -0
  24. cribl_control_plane/models/createoutputop.py +24 -0
  25. cribl_control_plane/models/createoutputtestbyidop.py +46 -0
  26. cribl_control_plane/models/criblevent.py +14 -0
  27. cribl_control_plane/models/deleteinputbyidop.py +37 -0
  28. cribl_control_plane/models/deleteoutputbyidop.py +37 -0
  29. cribl_control_plane/models/deleteoutputpqbyidop.py +36 -0
  30. cribl_control_plane/models/getinputbyidop.py +37 -0
  31. cribl_control_plane/models/getoutputbyidop.py +37 -0
  32. cribl_control_plane/models/getoutputpqbyidop.py +36 -0
  33. cribl_control_plane/models/getoutputsamplesbyidop.py +37 -0
  34. cribl_control_plane/models/healthstatus.py +36 -0
  35. cribl_control_plane/models/input.py +199 -0
  36. cribl_control_plane/models/inputappscope.py +448 -0
  37. cribl_control_plane/models/inputazureblob.py +308 -0
  38. cribl_control_plane/models/inputcollection.py +208 -0
  39. cribl_control_plane/models/inputconfluentcloud.py +585 -0
  40. cribl_control_plane/models/inputcribl.py +165 -0
  41. cribl_control_plane/models/inputcriblhttp.py +341 -0
  42. cribl_control_plane/models/inputcribllakehttp.py +342 -0
  43. cribl_control_plane/models/inputcriblmetrics.py +175 -0
  44. cribl_control_plane/models/inputcribltcp.py +299 -0
  45. cribl_control_plane/models/inputcrowdstrike.py +410 -0
  46. cribl_control_plane/models/inputdatadogagent.py +364 -0
  47. cribl_control_plane/models/inputdatagen.py +180 -0
  48. cribl_control_plane/models/inputedgeprometheus.py +551 -0
  49. cribl_control_plane/models/inputelastic.py +494 -0
  50. cribl_control_plane/models/inputeventhub.py +360 -0
  51. cribl_control_plane/models/inputexec.py +213 -0
  52. cribl_control_plane/models/inputfile.py +259 -0
  53. cribl_control_plane/models/inputfirehose.py +341 -0
  54. cribl_control_plane/models/inputgooglepubsub.py +247 -0
  55. cribl_control_plane/models/inputgrafana_union.py +1247 -0
  56. cribl_control_plane/models/inputhttp.py +403 -0
  57. cribl_control_plane/models/inputhttpraw.py +407 -0
  58. cribl_control_plane/models/inputjournalfiles.py +208 -0
  59. cribl_control_plane/models/inputkafka.py +581 -0
  60. cribl_control_plane/models/inputkinesis.py +363 -0
  61. cribl_control_plane/models/inputkubeevents.py +182 -0
  62. cribl_control_plane/models/inputkubelogs.py +256 -0
  63. cribl_control_plane/models/inputkubemetrics.py +233 -0
  64. cribl_control_plane/models/inputloki.py +468 -0
  65. cribl_control_plane/models/inputmetrics.py +290 -0
  66. cribl_control_plane/models/inputmodeldriventelemetry.py +274 -0
  67. cribl_control_plane/models/inputmsk.py +654 -0
  68. cribl_control_plane/models/inputnetflow.py +224 -0
  69. cribl_control_plane/models/inputoffice365mgmt.py +384 -0
  70. cribl_control_plane/models/inputoffice365msgtrace.py +449 -0
  71. cribl_control_plane/models/inputoffice365service.py +377 -0
  72. cribl_control_plane/models/inputopentelemetry.py +516 -0
  73. cribl_control_plane/models/inputprometheus.py +464 -0
  74. cribl_control_plane/models/inputprometheusrw.py +470 -0
  75. cribl_control_plane/models/inputrawudp.py +207 -0
  76. cribl_control_plane/models/inputs3.py +416 -0
  77. cribl_control_plane/models/inputs3inventory.py +440 -0
  78. cribl_control_plane/models/inputsecuritylake.py +425 -0
  79. cribl_control_plane/models/inputsnmp.py +274 -0
  80. cribl_control_plane/models/inputsplunk.py +387 -0
  81. cribl_control_plane/models/inputsplunkhec.py +478 -0
  82. cribl_control_plane/models/inputsplunksearch.py +537 -0
  83. cribl_control_plane/models/inputsqs.py +320 -0
  84. cribl_control_plane/models/inputsyslog_union.py +759 -0
  85. cribl_control_plane/models/inputsystemmetrics.py +533 -0
  86. cribl_control_plane/models/inputsystemstate.py +417 -0
  87. cribl_control_plane/models/inputtcp.py +359 -0
  88. cribl_control_plane/models/inputtcpjson.py +334 -0
  89. cribl_control_plane/models/inputwef.py +498 -0
  90. cribl_control_plane/models/inputwindowsmetrics.py +457 -0
  91. cribl_control_plane/models/inputwineventlogs.py +222 -0
  92. cribl_control_plane/models/inputwiz.py +334 -0
  93. cribl_control_plane/models/inputzscalerhec.py +439 -0
  94. cribl_control_plane/models/listinputop.py +24 -0
  95. cribl_control_plane/models/listoutputop.py +24 -0
  96. cribl_control_plane/models/logininfo.py +16 -0
  97. cribl_control_plane/models/output.py +229 -0
  98. cribl_control_plane/models/outputazureblob.py +471 -0
  99. cribl_control_plane/models/outputazuredataexplorer.py +660 -0
  100. cribl_control_plane/models/outputazureeventhub.py +321 -0
  101. cribl_control_plane/models/outputazurelogs.py +386 -0
  102. cribl_control_plane/models/outputclickhouse.py +650 -0
  103. cribl_control_plane/models/outputcloudwatch.py +273 -0
  104. cribl_control_plane/models/outputconfluentcloud.py +591 -0
  105. cribl_control_plane/models/outputcriblhttp.py +494 -0
  106. cribl_control_plane/models/outputcribllake.py +396 -0
  107. cribl_control_plane/models/outputcribltcp.py +387 -0
  108. cribl_control_plane/models/outputcrowdstrikenextgensiem.py +410 -0
  109. cribl_control_plane/models/outputdatadog.py +472 -0
  110. cribl_control_plane/models/outputdataset.py +437 -0
  111. cribl_control_plane/models/outputdefault.py +55 -0
  112. cribl_control_plane/models/outputdevnull.py +50 -0
  113. cribl_control_plane/models/outputdiskspool.py +89 -0
  114. cribl_control_plane/models/outputdls3.py +560 -0
  115. cribl_control_plane/models/outputdynatracehttp.py +454 -0
  116. cribl_control_plane/models/outputdynatraceotlp.py +486 -0
  117. cribl_control_plane/models/outputelastic.py +494 -0
  118. cribl_control_plane/models/outputelasticcloud.py +407 -0
  119. cribl_control_plane/models/outputexabeam.py +297 -0
  120. cribl_control_plane/models/outputfilesystem.py +357 -0
  121. cribl_control_plane/models/outputgooglechronicle.py +486 -0
  122. cribl_control_plane/models/outputgooglecloudlogging.py +557 -0
  123. cribl_control_plane/models/outputgooglecloudstorage.py +499 -0
  124. cribl_control_plane/models/outputgooglepubsub.py +274 -0
  125. cribl_control_plane/models/outputgrafanacloud_union.py +1024 -0
  126. cribl_control_plane/models/outputgraphite.py +225 -0
  127. cribl_control_plane/models/outputhoneycomb.py +369 -0
  128. cribl_control_plane/models/outputhumiohec.py +389 -0
  129. cribl_control_plane/models/outputinfluxdb.py +523 -0
  130. cribl_control_plane/models/outputkafka.py +581 -0
  131. cribl_control_plane/models/outputkinesis.py +312 -0
  132. cribl_control_plane/models/outputloki.py +425 -0
  133. cribl_control_plane/models/outputminio.py +512 -0
  134. cribl_control_plane/models/outputmsk.py +654 -0
  135. cribl_control_plane/models/outputnetflow.py +80 -0
  136. cribl_control_plane/models/outputnewrelic.py +424 -0
  137. cribl_control_plane/models/outputnewrelicevents.py +401 -0
  138. cribl_control_plane/models/outputopentelemetry.py +669 -0
  139. cribl_control_plane/models/outputprometheus.py +485 -0
  140. cribl_control_plane/models/outputring.py +121 -0
  141. cribl_control_plane/models/outputrouter.py +83 -0
  142. cribl_control_plane/models/outputs3.py +556 -0
  143. cribl_control_plane/models/outputsamplesresponse.py +14 -0
  144. cribl_control_plane/models/outputsecuritylake.py +505 -0
  145. cribl_control_plane/models/outputsentinel.py +488 -0
  146. cribl_control_plane/models/outputsentineloneaisiem.py +505 -0
  147. cribl_control_plane/models/outputservicenow.py +543 -0
  148. cribl_control_plane/models/outputsignalfx.py +369 -0
  149. cribl_control_plane/models/outputsnmp.py +80 -0
  150. cribl_control_plane/models/outputsns.py +274 -0
  151. cribl_control_plane/models/outputsplunk.py +383 -0
  152. cribl_control_plane/models/outputsplunkhec.py +434 -0
  153. cribl_control_plane/models/outputsplunklb.py +558 -0
  154. cribl_control_plane/models/outputsqs.py +328 -0
  155. cribl_control_plane/models/outputstatsd.py +224 -0
  156. cribl_control_plane/models/outputstatsdext.py +225 -0
  157. cribl_control_plane/models/outputsumologic.py +378 -0
  158. cribl_control_plane/models/outputsyslog.py +415 -0
  159. cribl_control_plane/models/outputtcpjson.py +413 -0
  160. cribl_control_plane/models/outputtestrequest.py +15 -0
  161. cribl_control_plane/models/outputtestresponse.py +29 -0
  162. cribl_control_plane/models/outputwavefront.py +369 -0
  163. cribl_control_plane/models/outputwebhook.py +689 -0
  164. cribl_control_plane/models/outputxsiam.py +415 -0
  165. cribl_control_plane/models/schemeclientoauth.py +24 -0
  166. cribl_control_plane/models/security.py +36 -0
  167. cribl_control_plane/models/updatehectokenrequest.py +31 -0
  168. cribl_control_plane/models/updateinputbyidop.py +44 -0
  169. cribl_control_plane/models/updateinputhectokenbyidandtokenop.py +52 -0
  170. cribl_control_plane/models/updateoutputbyidop.py +44 -0
  171. cribl_control_plane/outputs.py +1615 -0
  172. cribl_control_plane/py.typed +1 -0
  173. cribl_control_plane/sdk.py +164 -0
  174. cribl_control_plane/sdkconfiguration.py +36 -0
  175. cribl_control_plane/sources.py +1355 -0
  176. cribl_control_plane/types/__init__.py +21 -0
  177. cribl_control_plane/types/basemodel.py +39 -0
  178. cribl_control_plane/utils/__init__.py +187 -0
  179. cribl_control_plane/utils/annotations.py +55 -0
  180. cribl_control_plane/utils/datetimes.py +23 -0
  181. cribl_control_plane/utils/enums.py +74 -0
  182. cribl_control_plane/utils/eventstreaming.py +238 -0
  183. cribl_control_plane/utils/forms.py +223 -0
  184. cribl_control_plane/utils/headers.py +136 -0
  185. cribl_control_plane/utils/logger.py +27 -0
  186. cribl_control_plane/utils/metadata.py +118 -0
  187. cribl_control_plane/utils/queryparams.py +205 -0
  188. cribl_control_plane/utils/requestbodies.py +66 -0
  189. cribl_control_plane/utils/retries.py +217 -0
  190. cribl_control_plane/utils/security.py +207 -0
  191. cribl_control_plane/utils/serializers.py +249 -0
  192. cribl_control_plane/utils/unmarshal_json_response.py +24 -0
  193. cribl_control_plane/utils/url.py +155 -0
  194. cribl_control_plane/utils/values.py +137 -0
  195. cribl_control_plane-0.0.13.dist-info/METADATA +489 -0
  196. cribl_control_plane-0.0.13.dist-info/RECORD +197 -0
  197. cribl_control_plane-0.0.13.dist-info/WHEEL +4 -0
@@ -0,0 +1,464 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from cribl_control_plane import utils
5
+ from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
7
+ from enum import Enum
8
+ import pydantic
9
+ from pydantic.functional_validators import PlainValidator
10
+ from typing import List, Optional
11
+ from typing_extensions import Annotated, NotRequired, TypedDict
12
+
13
+
14
+ class InputPrometheusType(str, Enum, metaclass=utils.OpenEnumMeta):
15
+ PROMETHEUS = "prometheus"
16
+
17
+
18
+ class InputPrometheusConnectionTypedDict(TypedDict):
19
+ output: str
20
+ pipeline: NotRequired[str]
21
+
22
+
23
+ class InputPrometheusConnection(BaseModel):
24
+ output: str
25
+
26
+ pipeline: Optional[str] = None
27
+
28
+
29
+ class InputPrometheusMode(str, Enum, metaclass=utils.OpenEnumMeta):
30
+ r"""With Smart mode, PQ will write events to the filesystem only when it detects backpressure from the processing engine. With Always On mode, PQ will always write events directly to the queue before forwarding them to the processing engine."""
31
+
32
+ SMART = "smart"
33
+ ALWAYS = "always"
34
+
35
+
36
+ class InputPrometheusCompression(str, Enum, metaclass=utils.OpenEnumMeta):
37
+ r"""Codec to use to compress the persisted data"""
38
+
39
+ NONE = "none"
40
+ GZIP = "gzip"
41
+
42
+
43
+ class InputPrometheusPqTypedDict(TypedDict):
44
+ mode: NotRequired[InputPrometheusMode]
45
+ r"""With Smart mode, PQ will write events to the filesystem only when it detects backpressure from the processing engine. With Always On mode, PQ will always write events directly to the queue before forwarding them to the processing engine."""
46
+ max_buffer_size: NotRequired[float]
47
+ r"""The maximum number of events to hold in memory before writing the events to disk"""
48
+ commit_frequency: NotRequired[float]
49
+ r"""The number of events to send downstream before committing that Stream has read them"""
50
+ max_file_size: NotRequired[str]
51
+ r"""The maximum size to store in each queue file before closing and optionally compressing. Enter a numeral with units of KB, MB, etc."""
52
+ max_size: NotRequired[str]
53
+ r"""The maximum disk space that the queue can consume (as an average per Worker Process) before queueing stops. Enter a numeral with units of KB, MB, etc."""
54
+ path: NotRequired[str]
55
+ r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/inputs/<input-id>"""
56
+ compress: NotRequired[InputPrometheusCompression]
57
+ r"""Codec to use to compress the persisted data"""
58
+
59
+
60
+ class InputPrometheusPq(BaseModel):
61
+ mode: Annotated[
62
+ Optional[InputPrometheusMode], PlainValidator(validate_open_enum(False))
63
+ ] = InputPrometheusMode.ALWAYS
64
+ r"""With Smart mode, PQ will write events to the filesystem only when it detects backpressure from the processing engine. With Always On mode, PQ will always write events directly to the queue before forwarding them to the processing engine."""
65
+
66
+ max_buffer_size: Annotated[
67
+ Optional[float], pydantic.Field(alias="maxBufferSize")
68
+ ] = 1000
69
+ r"""The maximum number of events to hold in memory before writing the events to disk"""
70
+
71
+ commit_frequency: Annotated[
72
+ Optional[float], pydantic.Field(alias="commitFrequency")
73
+ ] = 42
74
+ r"""The number of events to send downstream before committing that Stream has read them"""
75
+
76
+ max_file_size: Annotated[Optional[str], pydantic.Field(alias="maxFileSize")] = (
77
+ "1 MB"
78
+ )
79
+ r"""The maximum size to store in each queue file before closing and optionally compressing. Enter a numeral with units of KB, MB, etc."""
80
+
81
+ max_size: Annotated[Optional[str], pydantic.Field(alias="maxSize")] = "5GB"
82
+ r"""The maximum disk space that the queue can consume (as an average per Worker Process) before queueing stops. Enter a numeral with units of KB, MB, etc."""
83
+
84
+ path: Optional[str] = "$CRIBL_HOME/state/queues"
85
+ r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/inputs/<input-id>"""
86
+
87
+ compress: Annotated[
88
+ Optional[InputPrometheusCompression], PlainValidator(validate_open_enum(False))
89
+ ] = InputPrometheusCompression.NONE
90
+ r"""Codec to use to compress the persisted data"""
91
+
92
+
93
+ class InputPrometheusDiscoveryType(str, Enum, metaclass=utils.OpenEnumMeta):
94
+ r"""Target discovery mechanism. Use static to manually enter a list of targets."""
95
+
96
+ STATIC = "static"
97
+ DNS = "dns"
98
+ EC2 = "ec2"
99
+
100
+
101
+ class InputPrometheusLogLevel(str, Enum, metaclass=utils.OpenEnumMeta):
102
+ r"""Collector runtime Log Level"""
103
+
104
+ ERROR = "error"
105
+ WARN = "warn"
106
+ INFO = "info"
107
+ DEBUG = "debug"
108
+
109
+
110
+ class InputPrometheusMetadatumTypedDict(TypedDict):
111
+ name: str
112
+ value: str
113
+ r"""JavaScript expression to compute field's value, enclosed in quotes or backticks. (Can evaluate to a constant.)"""
114
+
115
+
116
+ class InputPrometheusMetadatum(BaseModel):
117
+ name: str
118
+
119
+ value: str
120
+ r"""JavaScript expression to compute field's value, enclosed in quotes or backticks. (Can evaluate to a constant.)"""
121
+
122
+
123
+ class InputPrometheusAuthTypeAuthenticationMethod(
124
+ str, Enum, metaclass=utils.OpenEnumMeta
125
+ ):
126
+ r"""Enter credentials directly, or select a stored secret"""
127
+
128
+ MANUAL = "manual"
129
+ SECRET = "secret"
130
+
131
+
132
+ class InputPrometheusRecordType(str, Enum, metaclass=utils.OpenEnumMeta):
133
+ r"""DNS Record type to resolve"""
134
+
135
+ SRV = "SRV"
136
+ A = "A"
137
+ AAAA = "AAAA"
138
+
139
+
140
+ class MetricsProtocol(str, Enum, metaclass=utils.OpenEnumMeta):
141
+ r"""Protocol to use when collecting metrics"""
142
+
143
+ HTTP = "http"
144
+ HTTPS = "https"
145
+
146
+
147
+ class InputPrometheusSearchFilterTypedDict(TypedDict):
148
+ name: str
149
+ r"""Search filter attribute name, see: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html for more information. Attributes can be manually entered if not present in the drop down list"""
150
+ values: List[str]
151
+ r"""Search Filter Values, if empty only \"running\" EC2 instances will be returned"""
152
+
153
+
154
+ class InputPrometheusSearchFilter(BaseModel):
155
+ name: Annotated[str, pydantic.Field(alias="Name")]
156
+ r"""Search filter attribute name, see: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html for more information. Attributes can be manually entered if not present in the drop down list"""
157
+
158
+ values: Annotated[List[str], pydantic.Field(alias="Values")]
159
+ r"""Search Filter Values, if empty only \"running\" EC2 instances will be returned"""
160
+
161
+
162
+ class InputPrometheusAwsAuthenticationMethodAuthenticationMethod(
163
+ str, Enum, metaclass=utils.OpenEnumMeta
164
+ ):
165
+ r"""AWS authentication method. Choose Auto to use IAM roles."""
166
+
167
+ AUTO = "auto"
168
+ MANUAL = "manual"
169
+ SECRET = "secret"
170
+
171
+
172
+ class InputPrometheusSignatureVersion(str, Enum, metaclass=utils.OpenEnumMeta):
173
+ r"""Signature version to use for signing EC2 requests"""
174
+
175
+ V2 = "v2"
176
+ V4 = "v4"
177
+
178
+
179
+ class InputPrometheusTypedDict(TypedDict):
180
+ type: InputPrometheusType
181
+ id: NotRequired[str]
182
+ r"""Unique ID for this input"""
183
+ disabled: NotRequired[bool]
184
+ pipeline: NotRequired[str]
185
+ r"""Pipeline to process data from this Source before sending it through the Routes"""
186
+ send_to_routes: NotRequired[bool]
187
+ r"""Select whether to send data to Routes, or directly to Destinations."""
188
+ environment: NotRequired[str]
189
+ r"""Optionally, enable this config only on a specified Git branch. If empty, will be enabled everywhere."""
190
+ pq_enabled: NotRequired[bool]
191
+ r"""Use a disk queue to minimize data loss when connected services block. See [Cribl Docs](https://docs.cribl.io/stream/persistent-queues) for PQ defaults (Cribl-managed Cloud Workers) and configuration options (on-prem and hybrid Workers)."""
192
+ streamtags: NotRequired[List[str]]
193
+ r"""Tags for filtering and grouping in @{product}"""
194
+ connections: NotRequired[List[InputPrometheusConnectionTypedDict]]
195
+ r"""Direct connections to Destinations, and optionally via a Pipeline or a Pack"""
196
+ pq: NotRequired[InputPrometheusPqTypedDict]
197
+ dimension_list: NotRequired[List[str]]
198
+ r"""Other dimensions to include in events"""
199
+ discovery_type: NotRequired[InputPrometheusDiscoveryType]
200
+ r"""Target discovery mechanism. Use static to manually enter a list of targets."""
201
+ interval: NotRequired[float]
202
+ r"""How often in minutes to scrape targets for metrics, 60 must be evenly divisible by the value or save will fail."""
203
+ log_level: NotRequired[InputPrometheusLogLevel]
204
+ r"""Collector runtime Log Level"""
205
+ reject_unauthorized: NotRequired[bool]
206
+ r"""Reject certificates that cannot be verified against a valid CA, such as self-signed certificates"""
207
+ keep_alive_time: NotRequired[float]
208
+ r"""How often workers should check in with the scheduler to keep job subscription alive"""
209
+ job_timeout: NotRequired[str]
210
+ r"""Maximum time the job is allowed to run (e.g., 30, 45s or 15m). Units are seconds, if not specified. Enter 0 for unlimited time."""
211
+ max_missed_keep_alives: NotRequired[float]
212
+ r"""The number of Keep Alive Time periods before an inactive worker will have its job subscription revoked."""
213
+ ttl: NotRequired[str]
214
+ r"""Time to keep the job's artifacts on disk after job completion. This also affects how long a job is listed in the Job Inspector."""
215
+ ignore_group_jobs_limit: NotRequired[bool]
216
+ r"""When enabled, this job's artifacts are not counted toward the Worker Group's finished job artifacts limit. Artifacts will be removed only after the Collector's configured time to live."""
217
+ metadata: NotRequired[List[InputPrometheusMetadatumTypedDict]]
218
+ r"""Fields to add to events from this input"""
219
+ auth_type: NotRequired[InputPrometheusAuthTypeAuthenticationMethod]
220
+ r"""Enter credentials directly, or select a stored secret"""
221
+ description: NotRequired[str]
222
+ target_list: NotRequired[List[str]]
223
+ r"""List of Prometheus targets to pull metrics from. Values can be in URL or host[:port] format. For example: http://localhost:9090/metrics, localhost:9090, or localhost. In cases where just host[:port] is specified, the endpoint will resolve to 'http://host[:port]/metrics'."""
224
+ name_list: NotRequired[List[str]]
225
+ r"""List of DNS names to resolve"""
226
+ record_type: NotRequired[InputPrometheusRecordType]
227
+ r"""DNS Record type to resolve"""
228
+ scrape_protocol: NotRequired[MetricsProtocol]
229
+ r"""Protocol to use when collecting metrics"""
230
+ scrape_path: NotRequired[str]
231
+ r"""Path to use when collecting metrics from discovered targets"""
232
+ use_public_ip: NotRequired[bool]
233
+ r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
234
+ scrape_port: NotRequired[float]
235
+ r"""The port number in the metrics URL for discovered targets."""
236
+ search_filter: NotRequired[List[InputPrometheusSearchFilterTypedDict]]
237
+ r"""EC2 Instance Search Filter"""
238
+ aws_authentication_method: NotRequired[
239
+ InputPrometheusAwsAuthenticationMethodAuthenticationMethod
240
+ ]
241
+ r"""AWS authentication method. Choose Auto to use IAM roles."""
242
+ aws_secret_key: NotRequired[str]
243
+ region: NotRequired[str]
244
+ r"""Region where the EC2 is located"""
245
+ endpoint: NotRequired[str]
246
+ r"""EC2 service endpoint. If empty, defaults to the AWS Region-specific endpoint. Otherwise, it must point to EC2-compatible endpoint."""
247
+ signature_version: NotRequired[InputPrometheusSignatureVersion]
248
+ r"""Signature version to use for signing EC2 requests"""
249
+ reuse_connections: NotRequired[bool]
250
+ r"""Reuse connections between requests, which can improve performance"""
251
+ enable_assume_role: NotRequired[bool]
252
+ r"""Use Assume Role credentials to access EC2"""
253
+ assume_role_arn: NotRequired[str]
254
+ r"""Amazon Resource Name (ARN) of the role to assume"""
255
+ assume_role_external_id: NotRequired[str]
256
+ r"""External ID to use when assuming role"""
257
+ duration_seconds: NotRequired[float]
258
+ r"""Duration of the assumed role's session, in seconds. Minimum is 900 (15 minutes), default is 3600 (1 hour), and maximum is 43200 (12 hours)."""
259
+ username: NotRequired[str]
260
+ r"""Username for Prometheus Basic authentication"""
261
+ password: NotRequired[str]
262
+ r"""Password for Prometheus Basic authentication"""
263
+ credentials_secret: NotRequired[str]
264
+ r"""Select or create a secret that references your credentials"""
265
+
266
+
267
+ class InputPrometheus(BaseModel):
268
+ type: Annotated[InputPrometheusType, PlainValidator(validate_open_enum(False))]
269
+
270
+ id: Optional[str] = None
271
+ r"""Unique ID for this input"""
272
+
273
+ disabled: Optional[bool] = False
274
+
275
+ pipeline: Optional[str] = None
276
+ r"""Pipeline to process data from this Source before sending it through the Routes"""
277
+
278
+ send_to_routes: Annotated[Optional[bool], pydantic.Field(alias="sendToRoutes")] = (
279
+ True
280
+ )
281
+ r"""Select whether to send data to Routes, or directly to Destinations."""
282
+
283
+ environment: Optional[str] = None
284
+ r"""Optionally, enable this config only on a specified Git branch. If empty, will be enabled everywhere."""
285
+
286
+ pq_enabled: Annotated[Optional[bool], pydantic.Field(alias="pqEnabled")] = False
287
+ r"""Use a disk queue to minimize data loss when connected services block. See [Cribl Docs](https://docs.cribl.io/stream/persistent-queues) for PQ defaults (Cribl-managed Cloud Workers) and configuration options (on-prem and hybrid Workers)."""
288
+
289
+ streamtags: Optional[List[str]] = None
290
+ r"""Tags for filtering and grouping in @{product}"""
291
+
292
+ connections: Optional[List[InputPrometheusConnection]] = None
293
+ r"""Direct connections to Destinations, and optionally via a Pipeline or a Pack"""
294
+
295
+ pq: Optional[InputPrometheusPq] = None
296
+
297
+ dimension_list: Annotated[
298
+ Optional[List[str]], pydantic.Field(alias="dimensionList")
299
+ ] = None
300
+ r"""Other dimensions to include in events"""
301
+
302
+ discovery_type: Annotated[
303
+ Annotated[
304
+ Optional[InputPrometheusDiscoveryType],
305
+ PlainValidator(validate_open_enum(False)),
306
+ ],
307
+ pydantic.Field(alias="discoveryType"),
308
+ ] = InputPrometheusDiscoveryType.STATIC
309
+ r"""Target discovery mechanism. Use static to manually enter a list of targets."""
310
+
311
+ interval: Optional[float] = 15
312
+ r"""How often in minutes to scrape targets for metrics, 60 must be evenly divisible by the value or save will fail."""
313
+
314
+ log_level: Annotated[
315
+ Annotated[
316
+ Optional[InputPrometheusLogLevel], PlainValidator(validate_open_enum(False))
317
+ ],
318
+ pydantic.Field(alias="logLevel"),
319
+ ] = InputPrometheusLogLevel.INFO
320
+ r"""Collector runtime Log Level"""
321
+
322
+ reject_unauthorized: Annotated[
323
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
324
+ ] = True
325
+ r"""Reject certificates that cannot be verified against a valid CA, such as self-signed certificates"""
326
+
327
+ keep_alive_time: Annotated[
328
+ Optional[float], pydantic.Field(alias="keepAliveTime")
329
+ ] = 30
330
+ r"""How often workers should check in with the scheduler to keep job subscription alive"""
331
+
332
+ job_timeout: Annotated[Optional[str], pydantic.Field(alias="jobTimeout")] = "0"
333
+ r"""Maximum time the job is allowed to run (e.g., 30, 45s or 15m). Units are seconds, if not specified. Enter 0 for unlimited time."""
334
+
335
+ max_missed_keep_alives: Annotated[
336
+ Optional[float], pydantic.Field(alias="maxMissedKeepAlives")
337
+ ] = 3
338
+ r"""The number of Keep Alive Time periods before an inactive worker will have its job subscription revoked."""
339
+
340
+ ttl: Optional[str] = "4h"
341
+ r"""Time to keep the job's artifacts on disk after job completion. This also affects how long a job is listed in the Job Inspector."""
342
+
343
+ ignore_group_jobs_limit: Annotated[
344
+ Optional[bool], pydantic.Field(alias="ignoreGroupJobsLimit")
345
+ ] = False
346
+ r"""When enabled, this job's artifacts are not counted toward the Worker Group's finished job artifacts limit. Artifacts will be removed only after the Collector's configured time to live."""
347
+
348
+ metadata: Optional[List[InputPrometheusMetadatum]] = None
349
+ r"""Fields to add to events from this input"""
350
+
351
+ auth_type: Annotated[
352
+ Annotated[
353
+ Optional[InputPrometheusAuthTypeAuthenticationMethod],
354
+ PlainValidator(validate_open_enum(False)),
355
+ ],
356
+ pydantic.Field(alias="authType"),
357
+ ] = InputPrometheusAuthTypeAuthenticationMethod.MANUAL
358
+ r"""Enter credentials directly, or select a stored secret"""
359
+
360
+ description: Optional[str] = None
361
+
362
+ target_list: Annotated[Optional[List[str]], pydantic.Field(alias="targetList")] = (
363
+ None
364
+ )
365
+ r"""List of Prometheus targets to pull metrics from. Values can be in URL or host[:port] format. For example: http://localhost:9090/metrics, localhost:9090, or localhost. In cases where just host[:port] is specified, the endpoint will resolve to 'http://host[:port]/metrics'."""
366
+
367
+ name_list: Annotated[Optional[List[str]], pydantic.Field(alias="nameList")] = None
368
+ r"""List of DNS names to resolve"""
369
+
370
+ record_type: Annotated[
371
+ Annotated[
372
+ Optional[InputPrometheusRecordType],
373
+ PlainValidator(validate_open_enum(False)),
374
+ ],
375
+ pydantic.Field(alias="recordType"),
376
+ ] = InputPrometheusRecordType.SRV
377
+ r"""DNS Record type to resolve"""
378
+
379
+ scrape_protocol: Annotated[
380
+ Annotated[Optional[MetricsProtocol], PlainValidator(validate_open_enum(False))],
381
+ pydantic.Field(alias="scrapeProtocol"),
382
+ ] = MetricsProtocol.HTTP
383
+ r"""Protocol to use when collecting metrics"""
384
+
385
+ scrape_path: Annotated[Optional[str], pydantic.Field(alias="scrapePath")] = (
386
+ "/metrics"
387
+ )
388
+ r"""Path to use when collecting metrics from discovered targets"""
389
+
390
+ use_public_ip: Annotated[Optional[bool], pydantic.Field(alias="usePublicIp")] = True
391
+ r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
392
+
393
+ scrape_port: Annotated[Optional[float], pydantic.Field(alias="scrapePort")] = 9090
394
+ r"""The port number in the metrics URL for discovered targets."""
395
+
396
+ search_filter: Annotated[
397
+ Optional[List[InputPrometheusSearchFilter]],
398
+ pydantic.Field(alias="searchFilter"),
399
+ ] = None
400
+ r"""EC2 Instance Search Filter"""
401
+
402
+ aws_authentication_method: Annotated[
403
+ Annotated[
404
+ Optional[InputPrometheusAwsAuthenticationMethodAuthenticationMethod],
405
+ PlainValidator(validate_open_enum(False)),
406
+ ],
407
+ pydantic.Field(alias="awsAuthenticationMethod"),
408
+ ] = InputPrometheusAwsAuthenticationMethodAuthenticationMethod.AUTO
409
+ r"""AWS authentication method. Choose Auto to use IAM roles."""
410
+
411
+ aws_secret_key: Annotated[Optional[str], pydantic.Field(alias="awsSecretKey")] = (
412
+ None
413
+ )
414
+
415
+ region: Optional[str] = None
416
+ r"""Region where the EC2 is located"""
417
+
418
+ endpoint: Optional[str] = None
419
+ r"""EC2 service endpoint. If empty, defaults to the AWS Region-specific endpoint. Otherwise, it must point to EC2-compatible endpoint."""
420
+
421
+ signature_version: Annotated[
422
+ Annotated[
423
+ Optional[InputPrometheusSignatureVersion],
424
+ PlainValidator(validate_open_enum(False)),
425
+ ],
426
+ pydantic.Field(alias="signatureVersion"),
427
+ ] = InputPrometheusSignatureVersion.V4
428
+ r"""Signature version to use for signing EC2 requests"""
429
+
430
+ reuse_connections: Annotated[
431
+ Optional[bool], pydantic.Field(alias="reuseConnections")
432
+ ] = True
433
+ r"""Reuse connections between requests, which can improve performance"""
434
+
435
+ enable_assume_role: Annotated[
436
+ Optional[bool], pydantic.Field(alias="enableAssumeRole")
437
+ ] = False
438
+ r"""Use Assume Role credentials to access EC2"""
439
+
440
+ assume_role_arn: Annotated[Optional[str], pydantic.Field(alias="assumeRoleArn")] = (
441
+ None
442
+ )
443
+ r"""Amazon Resource Name (ARN) of the role to assume"""
444
+
445
+ assume_role_external_id: Annotated[
446
+ Optional[str], pydantic.Field(alias="assumeRoleExternalId")
447
+ ] = None
448
+ r"""External ID to use when assuming role"""
449
+
450
+ duration_seconds: Annotated[
451
+ Optional[float], pydantic.Field(alias="durationSeconds")
452
+ ] = 3600
453
+ r"""Duration of the assumed role's session, in seconds. Minimum is 900 (15 minutes), default is 3600 (1 hour), and maximum is 43200 (12 hours)."""
454
+
455
+ username: Optional[str] = None
456
+ r"""Username for Prometheus Basic authentication"""
457
+
458
+ password: Optional[str] = None
459
+ r"""Password for Prometheus Basic authentication"""
460
+
461
+ credentials_secret: Annotated[
462
+ Optional[str], pydantic.Field(alias="credentialsSecret")
463
+ ] = None
464
+ r"""Select or create a secret that references your credentials"""