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,551 @@
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 InputEdgePrometheusType(str, Enum, metaclass=utils.OpenEnumMeta):
15
+ EDGE_PROMETHEUS = "edge_prometheus"
16
+
17
+
18
+ class InputEdgePrometheusConnectionTypedDict(TypedDict):
19
+ output: str
20
+ pipeline: NotRequired[str]
21
+
22
+
23
+ class InputEdgePrometheusConnection(BaseModel):
24
+ output: str
25
+
26
+ pipeline: Optional[str] = None
27
+
28
+
29
+ class InputEdgePrometheusMode(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 InputEdgePrometheusPqCompression(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 InputEdgePrometheusPqTypedDict(TypedDict):
44
+ mode: NotRequired[InputEdgePrometheusMode]
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[InputEdgePrometheusPqCompression]
57
+ r"""Codec to use to compress the persisted data"""
58
+
59
+
60
+ class InputEdgePrometheusPq(BaseModel):
61
+ mode: Annotated[
62
+ Optional[InputEdgePrometheusMode], PlainValidator(validate_open_enum(False))
63
+ ] = InputEdgePrometheusMode.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[InputEdgePrometheusPqCompression],
89
+ PlainValidator(validate_open_enum(False)),
90
+ ] = InputEdgePrometheusPqCompression.NONE
91
+ r"""Codec to use to compress the persisted data"""
92
+
93
+
94
+ class InputEdgePrometheusDiscoveryType(str, Enum, metaclass=utils.OpenEnumMeta):
95
+ r"""Target discovery mechanism. Use static to manually enter a list of targets."""
96
+
97
+ STATIC = "static"
98
+ DNS = "dns"
99
+ EC2 = "ec2"
100
+ K8S_NODE = "k8s-node"
101
+ K8S_PODS = "k8s-pods"
102
+
103
+
104
+ class InputEdgePrometheusPersistenceCompression(
105
+ str, Enum, metaclass=utils.OpenEnumMeta
106
+ ):
107
+ r"""Data compression format. Default is gzip."""
108
+
109
+ NONE = "none"
110
+ GZIP = "gzip"
111
+
112
+
113
+ class InputEdgePrometheusDiskSpoolingTypedDict(TypedDict):
114
+ enable: NotRequired[bool]
115
+ r"""Spool events on disk for Cribl Edge and Search. Default is disabled."""
116
+ time_window: NotRequired[str]
117
+ r"""Time period for grouping spooled events. Default is 10m."""
118
+ max_data_size: NotRequired[str]
119
+ r"""Maximum disk space that can be consumed before older buckets are deleted. Examples: 420MB, 4GB. Default is 1GB."""
120
+ max_data_time: NotRequired[str]
121
+ r"""Maximum amount of time to retain data before older buckets are deleted. Examples: 2h, 4d. Default is 24h."""
122
+ compress: NotRequired[InputEdgePrometheusPersistenceCompression]
123
+ r"""Data compression format. Default is gzip."""
124
+
125
+
126
+ class InputEdgePrometheusDiskSpooling(BaseModel):
127
+ enable: Optional[bool] = False
128
+ r"""Spool events on disk for Cribl Edge and Search. Default is disabled."""
129
+
130
+ time_window: Annotated[Optional[str], pydantic.Field(alias="timeWindow")] = "10m"
131
+ r"""Time period for grouping spooled events. Default is 10m."""
132
+
133
+ max_data_size: Annotated[Optional[str], pydantic.Field(alias="maxDataSize")] = "1GB"
134
+ r"""Maximum disk space that can be consumed before older buckets are deleted. Examples: 420MB, 4GB. Default is 1GB."""
135
+
136
+ max_data_time: Annotated[Optional[str], pydantic.Field(alias="maxDataTime")] = "24h"
137
+ r"""Maximum amount of time to retain data before older buckets are deleted. Examples: 2h, 4d. Default is 24h."""
138
+
139
+ compress: Annotated[
140
+ Optional[InputEdgePrometheusPersistenceCompression],
141
+ PlainValidator(validate_open_enum(False)),
142
+ ] = InputEdgePrometheusPersistenceCompression.GZIP
143
+ r"""Data compression format. Default is gzip."""
144
+
145
+
146
+ class InputEdgePrometheusMetadatumTypedDict(TypedDict):
147
+ name: str
148
+ value: str
149
+ r"""JavaScript expression to compute field's value, enclosed in quotes or backticks. (Can evaluate to a constant.)"""
150
+
151
+
152
+ class InputEdgePrometheusMetadatum(BaseModel):
153
+ name: str
154
+
155
+ value: str
156
+ r"""JavaScript expression to compute field's value, enclosed in quotes or backticks. (Can evaluate to a constant.)"""
157
+
158
+
159
+ class InputEdgePrometheusAuthTypeAuthenticationMethod(
160
+ str, Enum, metaclass=utils.OpenEnumMeta
161
+ ):
162
+ r"""Enter credentials directly, or select a stored secret"""
163
+
164
+ MANUAL = "manual"
165
+ SECRET = "secret"
166
+ KUBERNETES = "kubernetes"
167
+
168
+
169
+ class TargetProtocol(str, Enum, metaclass=utils.OpenEnumMeta):
170
+ r"""Protocol to use when collecting metrics"""
171
+
172
+ HTTP = "http"
173
+ HTTPS = "https"
174
+
175
+
176
+ class TargetTypedDict(TypedDict):
177
+ host: str
178
+ r"""Name of host from which to pull metrics."""
179
+ protocol: NotRequired[TargetProtocol]
180
+ r"""Protocol to use when collecting metrics"""
181
+ port: NotRequired[float]
182
+ r"""The port number in the metrics URL for discovered targets."""
183
+ path: NotRequired[str]
184
+ r"""Path to use when collecting metrics from discovered targets"""
185
+
186
+
187
+ class Target(BaseModel):
188
+ host: str
189
+ r"""Name of host from which to pull metrics."""
190
+
191
+ protocol: Annotated[
192
+ Optional[TargetProtocol], PlainValidator(validate_open_enum(False))
193
+ ] = TargetProtocol.HTTP
194
+ r"""Protocol to use when collecting metrics"""
195
+
196
+ port: Optional[float] = 9090
197
+ r"""The port number in the metrics URL for discovered targets."""
198
+
199
+ path: Optional[str] = "/metrics"
200
+ r"""Path to use when collecting metrics from discovered targets"""
201
+
202
+
203
+ class InputEdgePrometheusRecordType(str, Enum, metaclass=utils.OpenEnumMeta):
204
+ r"""DNS Record type to resolve"""
205
+
206
+ SRV = "SRV"
207
+ A = "A"
208
+ AAAA = "AAAA"
209
+
210
+
211
+ class ScrapeProtocolProtocol(str, Enum, metaclass=utils.OpenEnumMeta):
212
+ r"""Protocol to use when collecting metrics"""
213
+
214
+ HTTP = "http"
215
+ HTTPS = "https"
216
+
217
+
218
+ class InputEdgePrometheusSearchFilterTypedDict(TypedDict):
219
+ name: str
220
+ 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"""
221
+ values: List[str]
222
+ r"""Search Filter Values, if empty only \"running\" EC2 instances will be returned"""
223
+
224
+
225
+ class InputEdgePrometheusSearchFilter(BaseModel):
226
+ name: Annotated[str, pydantic.Field(alias="Name")]
227
+ 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"""
228
+
229
+ values: Annotated[List[str], pydantic.Field(alias="Values")]
230
+ r"""Search Filter Values, if empty only \"running\" EC2 instances will be returned"""
231
+
232
+
233
+ class InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod(
234
+ str, Enum, metaclass=utils.OpenEnumMeta
235
+ ):
236
+ r"""AWS authentication method. Choose Auto to use IAM roles."""
237
+
238
+ AUTO = "auto"
239
+ MANUAL = "manual"
240
+ SECRET = "secret"
241
+
242
+
243
+ class InputEdgePrometheusSignatureVersion(str, Enum, metaclass=utils.OpenEnumMeta):
244
+ r"""Signature version to use for signing EC2 requests"""
245
+
246
+ V2 = "v2"
247
+ V4 = "v4"
248
+
249
+
250
+ class PodFilterTypedDict(TypedDict):
251
+ filter_: str
252
+ r"""JavaScript expression applied to pods objects. Return 'true' to include it."""
253
+ description: NotRequired[str]
254
+ r"""Optional description of this rule's purpose"""
255
+
256
+
257
+ class PodFilter(BaseModel):
258
+ filter_: Annotated[str, pydantic.Field(alias="filter")]
259
+ r"""JavaScript expression applied to pods objects. Return 'true' to include it."""
260
+
261
+ description: Optional[str] = None
262
+ r"""Optional description of this rule's purpose"""
263
+
264
+
265
+ class InputEdgePrometheusTypedDict(TypedDict):
266
+ type: InputEdgePrometheusType
267
+ id: NotRequired[str]
268
+ r"""Unique ID for this input"""
269
+ disabled: NotRequired[bool]
270
+ pipeline: NotRequired[str]
271
+ r"""Pipeline to process data from this Source before sending it through the Routes"""
272
+ send_to_routes: NotRequired[bool]
273
+ r"""Select whether to send data to Routes, or directly to Destinations."""
274
+ environment: NotRequired[str]
275
+ r"""Optionally, enable this config only on a specified Git branch. If empty, will be enabled everywhere."""
276
+ pq_enabled: NotRequired[bool]
277
+ 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)."""
278
+ streamtags: NotRequired[List[str]]
279
+ r"""Tags for filtering and grouping in @{product}"""
280
+ connections: NotRequired[List[InputEdgePrometheusConnectionTypedDict]]
281
+ r"""Direct connections to Destinations, and optionally via a Pipeline or a Pack"""
282
+ pq: NotRequired[InputEdgePrometheusPqTypedDict]
283
+ dimension_list: NotRequired[List[str]]
284
+ r"""Other dimensions to include in events"""
285
+ discovery_type: NotRequired[InputEdgePrometheusDiscoveryType]
286
+ r"""Target discovery mechanism. Use static to manually enter a list of targets."""
287
+ interval: NotRequired[float]
288
+ r"""How often in seconds to scrape targets for metrics."""
289
+ timeout: NotRequired[float]
290
+ r"""Timeout, in milliseconds, before aborting HTTP connection attempts; 1-60000 or 0 to disable"""
291
+ persistence: NotRequired[InputEdgePrometheusDiskSpoolingTypedDict]
292
+ metadata: NotRequired[List[InputEdgePrometheusMetadatumTypedDict]]
293
+ r"""Fields to add to events from this input"""
294
+ auth_type: NotRequired[InputEdgePrometheusAuthTypeAuthenticationMethod]
295
+ r"""Enter credentials directly, or select a stored secret"""
296
+ description: NotRequired[str]
297
+ targets: NotRequired[List[TargetTypedDict]]
298
+ name_list: NotRequired[List[str]]
299
+ r"""List of DNS names to resolve"""
300
+ record_type: NotRequired[InputEdgePrometheusRecordType]
301
+ r"""DNS Record type to resolve"""
302
+ scrape_protocol: NotRequired[ScrapeProtocolProtocol]
303
+ r"""Protocol to use when collecting metrics"""
304
+ scrape_path: NotRequired[str]
305
+ r"""Path to use when collecting metrics from discovered targets"""
306
+ use_public_ip: NotRequired[bool]
307
+ r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
308
+ scrape_port: NotRequired[float]
309
+ r"""The port number in the metrics URL for discovered targets."""
310
+ search_filter: NotRequired[List[InputEdgePrometheusSearchFilterTypedDict]]
311
+ r"""EC2 Instance Search Filter"""
312
+ aws_authentication_method: NotRequired[
313
+ InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod
314
+ ]
315
+ r"""AWS authentication method. Choose Auto to use IAM roles."""
316
+ aws_secret_key: NotRequired[str]
317
+ region: NotRequired[str]
318
+ r"""Region where the EC2 is located"""
319
+ endpoint: NotRequired[str]
320
+ r"""EC2 service endpoint. If empty, defaults to the AWS Region-specific endpoint. Otherwise, it must point to EC2-compatible endpoint."""
321
+ signature_version: NotRequired[InputEdgePrometheusSignatureVersion]
322
+ r"""Signature version to use for signing EC2 requests"""
323
+ reuse_connections: NotRequired[bool]
324
+ r"""Reuse connections between requests, which can improve performance"""
325
+ reject_unauthorized: NotRequired[bool]
326
+ r"""Reject certificates that cannot be verified against a valid CA, such as self-signed certificates"""
327
+ enable_assume_role: NotRequired[bool]
328
+ r"""Use Assume Role credentials to access EC2"""
329
+ assume_role_arn: NotRequired[str]
330
+ r"""Amazon Resource Name (ARN) of the role to assume"""
331
+ assume_role_external_id: NotRequired[str]
332
+ r"""External ID to use when assuming role"""
333
+ duration_seconds: NotRequired[float]
334
+ 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)."""
335
+ scrape_protocol_expr: NotRequired[str]
336
+ r"""Protocol to use when collecting metrics"""
337
+ scrape_port_expr: NotRequired[str]
338
+ r"""The port number in the metrics URL for discovered targets."""
339
+ scrape_path_expr: NotRequired[str]
340
+ r"""Path to use when collecting metrics from discovered targets"""
341
+ pod_filter: NotRequired[List[PodFilterTypedDict]]
342
+ r"""Add rules to decide which pods to discover for metrics.
343
+ Pods are searched if no rules are given or of all the rules'
344
+ expressions evaluate to true.
345
+
346
+ """
347
+ username: NotRequired[str]
348
+ r"""Username for Prometheus Basic authentication"""
349
+ password: NotRequired[str]
350
+ r"""Password for Prometheus Basic authentication"""
351
+ credentials_secret: NotRequired[str]
352
+ r"""Select or create a secret that references your credentials"""
353
+
354
+
355
+ class InputEdgePrometheus(BaseModel):
356
+ type: Annotated[InputEdgePrometheusType, PlainValidator(validate_open_enum(False))]
357
+
358
+ id: Optional[str] = None
359
+ r"""Unique ID for this input"""
360
+
361
+ disabled: Optional[bool] = False
362
+
363
+ pipeline: Optional[str] = None
364
+ r"""Pipeline to process data from this Source before sending it through the Routes"""
365
+
366
+ send_to_routes: Annotated[Optional[bool], pydantic.Field(alias="sendToRoutes")] = (
367
+ True
368
+ )
369
+ r"""Select whether to send data to Routes, or directly to Destinations."""
370
+
371
+ environment: Optional[str] = None
372
+ r"""Optionally, enable this config only on a specified Git branch. If empty, will be enabled everywhere."""
373
+
374
+ pq_enabled: Annotated[Optional[bool], pydantic.Field(alias="pqEnabled")] = False
375
+ 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)."""
376
+
377
+ streamtags: Optional[List[str]] = None
378
+ r"""Tags for filtering and grouping in @{product}"""
379
+
380
+ connections: Optional[List[InputEdgePrometheusConnection]] = None
381
+ r"""Direct connections to Destinations, and optionally via a Pipeline or a Pack"""
382
+
383
+ pq: Optional[InputEdgePrometheusPq] = None
384
+
385
+ dimension_list: Annotated[
386
+ Optional[List[str]], pydantic.Field(alias="dimensionList")
387
+ ] = None
388
+ r"""Other dimensions to include in events"""
389
+
390
+ discovery_type: Annotated[
391
+ Annotated[
392
+ Optional[InputEdgePrometheusDiscoveryType],
393
+ PlainValidator(validate_open_enum(False)),
394
+ ],
395
+ pydantic.Field(alias="discoveryType"),
396
+ ] = InputEdgePrometheusDiscoveryType.STATIC
397
+ r"""Target discovery mechanism. Use static to manually enter a list of targets."""
398
+
399
+ interval: Optional[float] = 15
400
+ r"""How often in seconds to scrape targets for metrics."""
401
+
402
+ timeout: Optional[float] = 5000
403
+ r"""Timeout, in milliseconds, before aborting HTTP connection attempts; 1-60000 or 0 to disable"""
404
+
405
+ persistence: Optional[InputEdgePrometheusDiskSpooling] = None
406
+
407
+ metadata: Optional[List[InputEdgePrometheusMetadatum]] = None
408
+ r"""Fields to add to events from this input"""
409
+
410
+ auth_type: Annotated[
411
+ Annotated[
412
+ Optional[InputEdgePrometheusAuthTypeAuthenticationMethod],
413
+ PlainValidator(validate_open_enum(False)),
414
+ ],
415
+ pydantic.Field(alias="authType"),
416
+ ] = InputEdgePrometheusAuthTypeAuthenticationMethod.MANUAL
417
+ r"""Enter credentials directly, or select a stored secret"""
418
+
419
+ description: Optional[str] = None
420
+
421
+ targets: Optional[List[Target]] = None
422
+
423
+ name_list: Annotated[Optional[List[str]], pydantic.Field(alias="nameList")] = None
424
+ r"""List of DNS names to resolve"""
425
+
426
+ record_type: Annotated[
427
+ Annotated[
428
+ Optional[InputEdgePrometheusRecordType],
429
+ PlainValidator(validate_open_enum(False)),
430
+ ],
431
+ pydantic.Field(alias="recordType"),
432
+ ] = InputEdgePrometheusRecordType.SRV
433
+ r"""DNS Record type to resolve"""
434
+
435
+ scrape_protocol: Annotated[
436
+ Annotated[
437
+ Optional[ScrapeProtocolProtocol], PlainValidator(validate_open_enum(False))
438
+ ],
439
+ pydantic.Field(alias="scrapeProtocol"),
440
+ ] = ScrapeProtocolProtocol.HTTP
441
+ r"""Protocol to use when collecting metrics"""
442
+
443
+ scrape_path: Annotated[Optional[str], pydantic.Field(alias="scrapePath")] = (
444
+ "/metrics"
445
+ )
446
+ r"""Path to use when collecting metrics from discovered targets"""
447
+
448
+ use_public_ip: Annotated[Optional[bool], pydantic.Field(alias="usePublicIp")] = True
449
+ r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
450
+
451
+ scrape_port: Annotated[Optional[float], pydantic.Field(alias="scrapePort")] = 9090
452
+ r"""The port number in the metrics URL for discovered targets."""
453
+
454
+ search_filter: Annotated[
455
+ Optional[List[InputEdgePrometheusSearchFilter]],
456
+ pydantic.Field(alias="searchFilter"),
457
+ ] = None
458
+ r"""EC2 Instance Search Filter"""
459
+
460
+ aws_authentication_method: Annotated[
461
+ Annotated[
462
+ Optional[InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod],
463
+ PlainValidator(validate_open_enum(False)),
464
+ ],
465
+ pydantic.Field(alias="awsAuthenticationMethod"),
466
+ ] = InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod.AUTO
467
+ r"""AWS authentication method. Choose Auto to use IAM roles."""
468
+
469
+ aws_secret_key: Annotated[Optional[str], pydantic.Field(alias="awsSecretKey")] = (
470
+ None
471
+ )
472
+
473
+ region: Optional[str] = None
474
+ r"""Region where the EC2 is located"""
475
+
476
+ endpoint: Optional[str] = None
477
+ r"""EC2 service endpoint. If empty, defaults to the AWS Region-specific endpoint. Otherwise, it must point to EC2-compatible endpoint."""
478
+
479
+ signature_version: Annotated[
480
+ Annotated[
481
+ Optional[InputEdgePrometheusSignatureVersion],
482
+ PlainValidator(validate_open_enum(False)),
483
+ ],
484
+ pydantic.Field(alias="signatureVersion"),
485
+ ] = InputEdgePrometheusSignatureVersion.V4
486
+ r"""Signature version to use for signing EC2 requests"""
487
+
488
+ reuse_connections: Annotated[
489
+ Optional[bool], pydantic.Field(alias="reuseConnections")
490
+ ] = True
491
+ r"""Reuse connections between requests, which can improve performance"""
492
+
493
+ reject_unauthorized: Annotated[
494
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
495
+ ] = True
496
+ r"""Reject certificates that cannot be verified against a valid CA, such as self-signed certificates"""
497
+
498
+ enable_assume_role: Annotated[
499
+ Optional[bool], pydantic.Field(alias="enableAssumeRole")
500
+ ] = False
501
+ r"""Use Assume Role credentials to access EC2"""
502
+
503
+ assume_role_arn: Annotated[Optional[str], pydantic.Field(alias="assumeRoleArn")] = (
504
+ None
505
+ )
506
+ r"""Amazon Resource Name (ARN) of the role to assume"""
507
+
508
+ assume_role_external_id: Annotated[
509
+ Optional[str], pydantic.Field(alias="assumeRoleExternalId")
510
+ ] = None
511
+ r"""External ID to use when assuming role"""
512
+
513
+ duration_seconds: Annotated[
514
+ Optional[float], pydantic.Field(alias="durationSeconds")
515
+ ] = 3600
516
+ 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)."""
517
+
518
+ scrape_protocol_expr: Annotated[
519
+ Optional[str], pydantic.Field(alias="scrapeProtocolExpr")
520
+ ] = "metadata.annotations['prometheus.io/scheme'] || 'http'"
521
+ r"""Protocol to use when collecting metrics"""
522
+
523
+ scrape_port_expr: Annotated[
524
+ Optional[str], pydantic.Field(alias="scrapePortExpr")
525
+ ] = "metadata.annotations['prometheus.io/port'] || 9090"
526
+ r"""The port number in the metrics URL for discovered targets."""
527
+
528
+ scrape_path_expr: Annotated[
529
+ Optional[str], pydantic.Field(alias="scrapePathExpr")
530
+ ] = "metadata.annotations['prometheus.io/path'] || '/metrics'"
531
+ r"""Path to use when collecting metrics from discovered targets"""
532
+
533
+ pod_filter: Annotated[
534
+ Optional[List[PodFilter]], pydantic.Field(alias="podFilter")
535
+ ] = None
536
+ r"""Add rules to decide which pods to discover for metrics.
537
+ Pods are searched if no rules are given or of all the rules'
538
+ expressions evaluate to true.
539
+
540
+ """
541
+
542
+ username: Optional[str] = None
543
+ r"""Username for Prometheus Basic authentication"""
544
+
545
+ password: Optional[str] = None
546
+ r"""Password for Prometheus Basic authentication"""
547
+
548
+ credentials_secret: Annotated[
549
+ Optional[str], pydantic.Field(alias="credentialsSecret")
550
+ ] = None
551
+ r"""Select or create a secret that references your credentials"""