cribl-control-plane 0.2.1rc6__py3-none-any.whl → 0.2.1rc8__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 (103) hide show
  1. cribl_control_plane/_version.py +4 -4
  2. cribl_control_plane/lakedatasets.py +28 -0
  3. cribl_control_plane/models/__init__.py +124 -5
  4. cribl_control_plane/models/cribllakedataset.py +4 -0
  5. cribl_control_plane/models/cribllakedatasetupdate.py +4 -0
  6. cribl_control_plane/models/input.py +15 -15
  7. cribl_control_plane/models/inputappscope.py +20 -16
  8. cribl_control_plane/models/inputconfluentcloud.py +110 -0
  9. cribl_control_plane/models/inputcriblhttp.py +20 -16
  10. cribl_control_plane/models/inputcribllakehttp.py +20 -16
  11. cribl_control_plane/models/inputcribltcp.py +20 -16
  12. cribl_control_plane/models/inputdatadogagent.py +20 -16
  13. cribl_control_plane/models/inputedgeprometheus.py +44 -36
  14. cribl_control_plane/models/inputelastic.py +44 -27
  15. cribl_control_plane/models/inputeventhub.py +118 -0
  16. cribl_control_plane/models/inputfile.py +10 -5
  17. cribl_control_plane/models/inputfirehose.py +20 -16
  18. cribl_control_plane/models/inputgrafana.py +39 -31
  19. cribl_control_plane/models/inputhttp.py +20 -16
  20. cribl_control_plane/models/inputhttpraw.py +20 -16
  21. cribl_control_plane/models/inputkafka.py +108 -0
  22. cribl_control_plane/models/inputloki.py +20 -16
  23. cribl_control_plane/models/inputmetrics.py +20 -16
  24. cribl_control_plane/models/inputmodeldriventelemetry.py +20 -16
  25. cribl_control_plane/models/inputopentelemetry.py +19 -15
  26. cribl_control_plane/models/inputprometheus.py +44 -36
  27. cribl_control_plane/models/inputprometheusrw.py +20 -16
  28. cribl_control_plane/models/inputsplunk.py +20 -16
  29. cribl_control_plane/models/inputsplunkhec.py +19 -15
  30. cribl_control_plane/models/inputsyslog.py +39 -31
  31. cribl_control_plane/models/inputsystemmetrics.py +20 -10
  32. cribl_control_plane/models/inputtcp.py +30 -16
  33. cribl_control_plane/models/inputtcpjson.py +20 -16
  34. cribl_control_plane/models/inputwindowsmetrics.py +20 -10
  35. cribl_control_plane/models/inputwineventlogs.py +14 -0
  36. cribl_control_plane/models/inputwizwebhook.py +20 -16
  37. cribl_control_plane/models/inputzscalerhec.py +19 -15
  38. cribl_control_plane/models/jobinfo.py +10 -4
  39. cribl_control_plane/models/jobstatus.py +24 -3
  40. cribl_control_plane/models/lakedatasetmetrics.py +17 -0
  41. cribl_control_plane/models/output.py +21 -21
  42. cribl_control_plane/models/outputazureblob.py +7 -0
  43. cribl_control_plane/models/outputazuredataexplorer.py +283 -93
  44. cribl_control_plane/models/outputazureeventhub.py +169 -21
  45. cribl_control_plane/models/outputazurelogs.py +49 -21
  46. cribl_control_plane/models/outputchronicle.py +49 -21
  47. cribl_control_plane/models/outputclickhouse.py +49 -21
  48. cribl_control_plane/models/outputcloudwatch.py +49 -21
  49. cribl_control_plane/models/outputconfluentcloud.py +169 -22
  50. cribl_control_plane/models/outputcriblhttp.py +49 -21
  51. cribl_control_plane/models/outputcribltcp.py +49 -21
  52. cribl_control_plane/models/outputcrowdstrikenextgensiem.py +50 -22
  53. cribl_control_plane/models/outputdatabricks.py +7 -0
  54. cribl_control_plane/models/outputdatadog.py +49 -21
  55. cribl_control_plane/models/outputdataset.py +49 -21
  56. cribl_control_plane/models/outputdls3.py +7 -0
  57. cribl_control_plane/models/outputdynatracehttp.py +49 -21
  58. cribl_control_plane/models/outputdynatraceotlp.py +49 -21
  59. cribl_control_plane/models/outputelastic.py +74 -21
  60. cribl_control_plane/models/outputelasticcloud.py +74 -21
  61. cribl_control_plane/models/outputfilesystem.py +7 -0
  62. cribl_control_plane/models/outputgooglechronicle.py +65 -22
  63. cribl_control_plane/models/outputgooglecloudlogging.py +50 -22
  64. cribl_control_plane/models/outputgooglecloudstorage.py +7 -0
  65. cribl_control_plane/models/outputgooglepubsub.py +49 -21
  66. cribl_control_plane/models/outputgrafanacloud.py +98 -42
  67. cribl_control_plane/models/outputgraphite.py +49 -21
  68. cribl_control_plane/models/outputhoneycomb.py +49 -21
  69. cribl_control_plane/models/outputhumiohec.py +49 -21
  70. cribl_control_plane/models/outputinfluxdb.py +49 -21
  71. cribl_control_plane/models/outputkafka.py +164 -19
  72. cribl_control_plane/models/outputkinesis.py +56 -21
  73. cribl_control_plane/models/outputloki.py +47 -19
  74. cribl_control_plane/models/outputminio.py +7 -0
  75. cribl_control_plane/models/outputmsk.py +56 -19
  76. cribl_control_plane/models/outputnewrelic.py +49 -21
  77. cribl_control_plane/models/outputnewrelicevents.py +50 -22
  78. cribl_control_plane/models/outputopentelemetry.py +49 -21
  79. cribl_control_plane/models/outputprometheus.py +49 -21
  80. cribl_control_plane/models/outputs3.py +7 -0
  81. cribl_control_plane/models/outputsentinel.py +49 -21
  82. cribl_control_plane/models/outputsentineloneaisiem.py +50 -22
  83. cribl_control_plane/models/outputservicenow.py +49 -21
  84. cribl_control_plane/models/outputsignalfx.py +49 -21
  85. cribl_control_plane/models/outputsns.py +47 -19
  86. cribl_control_plane/models/outputsplunk.py +49 -21
  87. cribl_control_plane/models/outputsplunkhec.py +124 -21
  88. cribl_control_plane/models/outputsplunklb.py +49 -21
  89. cribl_control_plane/models/outputsqs.py +47 -19
  90. cribl_control_plane/models/outputstatsd.py +49 -21
  91. cribl_control_plane/models/outputstatsdext.py +49 -21
  92. cribl_control_plane/models/outputsumologic.py +49 -21
  93. cribl_control_plane/models/outputsyslog.py +129 -99
  94. cribl_control_plane/models/outputtcpjson.py +49 -21
  95. cribl_control_plane/models/outputwavefront.py +49 -21
  96. cribl_control_plane/models/outputwebhook.py +49 -21
  97. cribl_control_plane/models/outputxsiam.py +47 -19
  98. cribl_control_plane/models/runnablejobcollection.py +12 -8
  99. cribl_control_plane/models/runnablejobexecutor.py +12 -8
  100. cribl_control_plane/models/runnablejobscheduledsearch.py +12 -8
  101. {cribl_control_plane-0.2.1rc6.dist-info → cribl_control_plane-0.2.1rc8.dist-info}/METADATA +25 -7
  102. {cribl_control_plane-0.2.1rc6.dist-info → cribl_control_plane-0.2.1rc8.dist-info}/RECORD +103 -102
  103. {cribl_control_plane-0.2.1rc6.dist-info → cribl_control_plane-0.2.1rc8.dist-info}/WHEEL +0 -0
@@ -237,6 +237,19 @@ class ScrapeProtocolProtocol(str, Enum, metaclass=utils.OpenEnumMeta):
237
237
  HTTPS = "https"
238
238
 
239
239
 
240
+ class InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod(
241
+ str, Enum, metaclass=utils.OpenEnumMeta
242
+ ):
243
+ r"""AWS authentication method. Choose Auto to use IAM roles."""
244
+
245
+ # Auto
246
+ AUTO = "auto"
247
+ # Manual
248
+ MANUAL = "manual"
249
+ # Secret Key pair
250
+ SECRET = "secret"
251
+
252
+
240
253
  class InputEdgePrometheusSearchFilterTypedDict(TypedDict):
241
254
  name: str
242
255
  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"""
@@ -252,19 +265,6 @@ class InputEdgePrometheusSearchFilter(BaseModel):
252
265
  r"""Search Filter Values, if empty only \"running\" EC2 instances will be returned"""
253
266
 
254
267
 
255
- class InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod(
256
- str, Enum, metaclass=utils.OpenEnumMeta
257
- ):
258
- r"""AWS authentication method. Choose Auto to use IAM roles."""
259
-
260
- # Auto
261
- AUTO = "auto"
262
- # Manual
263
- MANUAL = "manual"
264
- # Secret Key pair
265
- SECRET = "secret"
266
-
267
-
268
268
  class InputEdgePrometheusSignatureVersion(str, Enum, metaclass=utils.OpenEnumMeta):
269
269
  r"""Signature version to use for signing EC2 requests"""
270
270
 
@@ -320,24 +320,27 @@ class InputEdgePrometheusTypedDict(TypedDict):
320
320
  r"""Enter credentials directly, or select a stored secret"""
321
321
  description: NotRequired[str]
322
322
  targets: NotRequired[List[TargetTypedDict]]
323
- name_list: NotRequired[List[str]]
324
- r"""List of DNS names to resolve"""
325
323
  record_type: NotRequired[InputEdgePrometheusRecordType]
326
324
  r"""DNS Record type to resolve"""
325
+ scrape_port: NotRequired[float]
326
+ r"""The port number in the metrics URL for discovered targets."""
327
+ name_list: NotRequired[List[str]]
328
+ r"""List of DNS names to resolve"""
327
329
  scrape_protocol: NotRequired[ScrapeProtocolProtocol]
328
330
  r"""Protocol to use when collecting metrics"""
329
331
  scrape_path: NotRequired[str]
330
332
  r"""Path to use when collecting metrics from discovered targets"""
331
- use_public_ip: NotRequired[bool]
332
- r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
333
- scrape_port: NotRequired[float]
334
- r"""The port number in the metrics URL for discovered targets."""
335
- search_filter: NotRequired[List[InputEdgePrometheusSearchFilterTypedDict]]
336
- r"""EC2 Instance Search Filter"""
337
333
  aws_authentication_method: NotRequired[
338
334
  InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod
339
335
  ]
340
336
  r"""AWS authentication method. Choose Auto to use IAM roles."""
337
+ aws_api_key: NotRequired[str]
338
+ aws_secret: NotRequired[str]
339
+ r"""Select or create a stored secret that references your access key and secret key"""
340
+ use_public_ip: NotRequired[bool]
341
+ r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
342
+ search_filter: NotRequired[List[InputEdgePrometheusSearchFilterTypedDict]]
343
+ r"""EC2 Instance Search Filter"""
341
344
  aws_secret_key: NotRequired[str]
342
345
  region: NotRequired[str]
343
346
  r"""Region where the EC2 is located"""
@@ -445,9 +448,6 @@ class InputEdgePrometheus(BaseModel):
445
448
 
446
449
  targets: Optional[List[Target]] = None
447
450
 
448
- name_list: Annotated[Optional[List[str]], pydantic.Field(alias="nameList")] = None
449
- r"""List of DNS names to resolve"""
450
-
451
451
  record_type: Annotated[
452
452
  Annotated[
453
453
  Optional[InputEdgePrometheusRecordType],
@@ -457,6 +457,12 @@ class InputEdgePrometheus(BaseModel):
457
457
  ] = InputEdgePrometheusRecordType.SRV
458
458
  r"""DNS Record type to resolve"""
459
459
 
460
+ scrape_port: Annotated[Optional[float], pydantic.Field(alias="scrapePort")] = 9090
461
+ r"""The port number in the metrics URL for discovered targets."""
462
+
463
+ name_list: Annotated[Optional[List[str]], pydantic.Field(alias="nameList")] = None
464
+ r"""List of DNS names to resolve"""
465
+
460
466
  scrape_protocol: Annotated[
461
467
  Annotated[
462
468
  Optional[ScrapeProtocolProtocol], PlainValidator(validate_open_enum(False))
@@ -470,18 +476,6 @@ class InputEdgePrometheus(BaseModel):
470
476
  )
471
477
  r"""Path to use when collecting metrics from discovered targets"""
472
478
 
473
- use_public_ip: Annotated[Optional[bool], pydantic.Field(alias="usePublicIp")] = True
474
- r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
475
-
476
- scrape_port: Annotated[Optional[float], pydantic.Field(alias="scrapePort")] = 9090
477
- r"""The port number in the metrics URL for discovered targets."""
478
-
479
- search_filter: Annotated[
480
- Optional[List[InputEdgePrometheusSearchFilter]],
481
- pydantic.Field(alias="searchFilter"),
482
- ] = None
483
- r"""EC2 Instance Search Filter"""
484
-
485
479
  aws_authentication_method: Annotated[
486
480
  Annotated[
487
481
  Optional[InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod],
@@ -491,6 +485,20 @@ class InputEdgePrometheus(BaseModel):
491
485
  ] = InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod.AUTO
492
486
  r"""AWS authentication method. Choose Auto to use IAM roles."""
493
487
 
488
+ aws_api_key: Annotated[Optional[str], pydantic.Field(alias="awsApiKey")] = None
489
+
490
+ aws_secret: Annotated[Optional[str], pydantic.Field(alias="awsSecret")] = None
491
+ r"""Select or create a stored secret that references your access key and secret key"""
492
+
493
+ use_public_ip: Annotated[Optional[bool], pydantic.Field(alias="usePublicIp")] = True
494
+ r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
495
+
496
+ search_filter: Annotated[
497
+ Optional[List[InputEdgePrometheusSearchFilter]],
498
+ pydantic.Field(alias="searchFilter"),
499
+ ] = None
500
+ r"""EC2 Instance Search Filter"""
501
+
494
502
  aws_secret_key: Annotated[Optional[str], pydantic.Field(alias="awsSecretKey")] = (
495
503
  None
496
504
  )
@@ -7,7 +7,7 @@ from cribl_control_plane.utils import validate_open_enum
7
7
  from enum import Enum
8
8
  import pydantic
9
9
  from pydantic.functional_validators import PlainValidator
10
- from typing import Any, List, Optional
10
+ from typing import List, Optional
11
11
  from typing_extensions import Annotated, NotRequired, TypedDict
12
12
 
13
13
 
@@ -123,6 +123,12 @@ class InputElasticMaximumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
123
123
 
124
124
  class InputElasticTLSSettingsServerSideTypedDict(TypedDict):
125
125
  disabled: NotRequired[bool]
126
+ request_cert: NotRequired[bool]
127
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
128
+ reject_unauthorized: NotRequired[bool]
129
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
130
+ common_name_regex: NotRequired[str]
131
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
126
132
  certificate_name: NotRequired[str]
127
133
  r"""The name of the predefined certificate"""
128
134
  priv_key_path: NotRequired[str]
@@ -133,10 +139,6 @@ class InputElasticTLSSettingsServerSideTypedDict(TypedDict):
133
139
  r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
134
140
  ca_path: NotRequired[str]
135
141
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
136
- request_cert: NotRequired[bool]
137
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
138
- reject_unauthorized: NotRequired[Any]
139
- common_name_regex: NotRequired[Any]
140
142
  min_version: NotRequired[InputElasticMinimumTLSVersion]
141
143
  max_version: NotRequired[InputElasticMaximumTLSVersion]
142
144
 
@@ -144,6 +146,19 @@ class InputElasticTLSSettingsServerSideTypedDict(TypedDict):
144
146
  class InputElasticTLSSettingsServerSide(BaseModel):
145
147
  disabled: Optional[bool] = True
146
148
 
149
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
150
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
151
+
152
+ reject_unauthorized: Annotated[
153
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
154
+ ] = True
155
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
156
+
157
+ common_name_regex: Annotated[
158
+ Optional[str], pydantic.Field(alias="commonNameRegex")
159
+ ] = "/.*/"
160
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
161
+
147
162
  certificate_name: Annotated[
148
163
  Optional[str], pydantic.Field(alias="certificateName")
149
164
  ] = None
@@ -161,17 +176,6 @@ class InputElasticTLSSettingsServerSide(BaseModel):
161
176
  ca_path: Annotated[Optional[str], pydantic.Field(alias="caPath")] = None
162
177
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
163
178
 
164
- request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
165
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
166
-
167
- reject_unauthorized: Annotated[
168
- Optional[Any], pydantic.Field(alias="rejectUnauthorized")
169
- ] = None
170
-
171
- common_name_regex: Annotated[
172
- Optional[Any], pydantic.Field(alias="commonNameRegex")
173
- ] = None
174
-
175
179
  min_version: Annotated[
176
180
  Annotated[
177
181
  Optional[InputElasticMinimumTLSVersion],
@@ -246,6 +250,12 @@ class InputElasticAuthenticationMethod(str, Enum, metaclass=utils.OpenEnumMeta):
246
250
  class InputElasticProxyModeTypedDict(TypedDict):
247
251
  enabled: NotRequired[bool]
248
252
  r"""Enable proxying of non-bulk API requests to an external Elastic server. Enable this only if you understand the implications. See [Cribl Docs](https://docs.cribl.io/stream/sources-elastic/#proxy-mode) for more details."""
253
+ auth_type: NotRequired[InputElasticAuthenticationMethod]
254
+ r"""Enter credentials directly, or select a stored secret"""
255
+ username: NotRequired[str]
256
+ password: NotRequired[str]
257
+ credentials_secret: NotRequired[str]
258
+ r"""Select or create a secret that references your credentials"""
249
259
  url: NotRequired[str]
250
260
  r"""URL of the Elastic server to proxy non-bulk requests to, such as http://elastic:9200"""
251
261
  reject_unauthorized: NotRequired[bool]
@@ -254,14 +264,30 @@ class InputElasticProxyModeTypedDict(TypedDict):
254
264
  r"""List of headers to remove from the request to proxy"""
255
265
  timeout_sec: NotRequired[float]
256
266
  r"""Amount of time, in seconds, to wait for a proxy request to complete before canceling it"""
257
- auth_type: NotRequired[InputElasticAuthenticationMethod]
258
- r"""Enter credentials directly, or select a stored secret"""
259
267
 
260
268
 
261
269
  class InputElasticProxyMode(BaseModel):
262
270
  enabled: Optional[bool] = False
263
271
  r"""Enable proxying of non-bulk API requests to an external Elastic server. Enable this only if you understand the implications. See [Cribl Docs](https://docs.cribl.io/stream/sources-elastic/#proxy-mode) for more details."""
264
272
 
273
+ auth_type: Annotated[
274
+ Annotated[
275
+ Optional[InputElasticAuthenticationMethod],
276
+ PlainValidator(validate_open_enum(False)),
277
+ ],
278
+ pydantic.Field(alias="authType"),
279
+ ] = InputElasticAuthenticationMethod.NONE
280
+ r"""Enter credentials directly, or select a stored secret"""
281
+
282
+ username: Optional[str] = None
283
+
284
+ password: Optional[str] = None
285
+
286
+ credentials_secret: Annotated[
287
+ Optional[str], pydantic.Field(alias="credentialsSecret")
288
+ ] = None
289
+ r"""Select or create a secret that references your credentials"""
290
+
265
291
  url: Optional[str] = None
266
292
  r"""URL of the Elastic server to proxy non-bulk requests to, such as http://elastic:9200"""
267
293
 
@@ -278,15 +304,6 @@ class InputElasticProxyMode(BaseModel):
278
304
  timeout_sec: Annotated[Optional[float], pydantic.Field(alias="timeoutSec")] = 60
279
305
  r"""Amount of time, in seconds, to wait for a proxy request to complete before canceling it"""
280
306
 
281
- auth_type: Annotated[
282
- Annotated[
283
- Optional[InputElasticAuthenticationMethod],
284
- PlainValidator(validate_open_enum(False)),
285
- ],
286
- pydantic.Field(alias="authType"),
287
- ] = InputElasticAuthenticationMethod.NONE
288
- r"""Enter credentials directly, or select a stored secret"""
289
-
290
307
 
291
308
  class InputElasticTypedDict(TypedDict):
292
309
  type: InputElasticType
@@ -107,6 +107,15 @@ class InputEventhubPq(BaseModel):
107
107
  ] = None
108
108
 
109
109
 
110
+ class InputEventhubAuthTypeAuthenticationMethod(
111
+ str, Enum, metaclass=utils.OpenEnumMeta
112
+ ):
113
+ r"""Enter password directly, or select a stored secret"""
114
+
115
+ MANUAL = "manual"
116
+ SECRET = "secret"
117
+
118
+
110
119
  class InputEventhubSASLMechanism(str, Enum, metaclass=utils.OpenEnumMeta):
111
120
  # PLAIN
112
121
  PLAIN = "plain"
@@ -114,11 +123,57 @@ class InputEventhubSASLMechanism(str, Enum, metaclass=utils.OpenEnumMeta):
114
123
  OAUTHBEARER = "oauthbearer"
115
124
 
116
125
 
126
+ class InputEventhubClientSecretAuthTypeAuthenticationMethod(
127
+ str, Enum, metaclass=utils.OpenEnumMeta
128
+ ):
129
+ MANUAL = "manual"
130
+ SECRET = "secret"
131
+ CERTIFICATE = "certificate"
132
+
133
+
134
+ class InputEventhubMicrosoftEntraIDAuthenticationEndpoint(
135
+ str, Enum, metaclass=utils.OpenEnumMeta
136
+ ):
137
+ r"""Endpoint used to acquire authentication tokens from Azure"""
138
+
139
+ HTTPS_LOGIN_MICROSOFTONLINE_COM = "https://login.microsoftonline.com"
140
+ HTTPS_LOGIN_MICROSOFTONLINE_US = "https://login.microsoftonline.us"
141
+ HTTPS_LOGIN_PARTNER_MICROSOFTONLINE_CN = "https://login.partner.microsoftonline.cn"
142
+
143
+
117
144
  class InputEventhubAuthenticationTypedDict(TypedDict):
118
145
  r"""Authentication parameters to use when connecting to brokers. Using TLS is highly recommended."""
119
146
 
120
147
  disabled: NotRequired[bool]
148
+ auth_type: NotRequired[InputEventhubAuthTypeAuthenticationMethod]
149
+ r"""Enter password directly, or select a stored secret"""
150
+ password: NotRequired[str]
151
+ r"""Connection-string primary key, or connection-string secondary key, from the Event Hubs workspace"""
152
+ text_secret: NotRequired[str]
153
+ r"""Select or create a stored text secret"""
121
154
  mechanism: NotRequired[InputEventhubSASLMechanism]
155
+ username: NotRequired[str]
156
+ r"""The username for authentication. For Event Hubs, this should always be $ConnectionString."""
157
+ client_secret_auth_type: NotRequired[
158
+ InputEventhubClientSecretAuthTypeAuthenticationMethod
159
+ ]
160
+ client_secret: NotRequired[str]
161
+ r"""client_secret to pass in the OAuth request parameter"""
162
+ client_text_secret: NotRequired[str]
163
+ r"""Select or create a stored text secret"""
164
+ certificate_name: NotRequired[str]
165
+ r"""Select or create a stored certificate"""
166
+ cert_path: NotRequired[str]
167
+ priv_key_path: NotRequired[str]
168
+ passphrase: NotRequired[str]
169
+ oauth_endpoint: NotRequired[InputEventhubMicrosoftEntraIDAuthenticationEndpoint]
170
+ r"""Endpoint used to acquire authentication tokens from Azure"""
171
+ client_id: NotRequired[str]
172
+ r"""client_id to pass in the OAuth request parameter"""
173
+ tenant_id: NotRequired[str]
174
+ r"""Directory ID (tenant identifier) in Azure Active Directory"""
175
+ scope: NotRequired[str]
176
+ r"""Scope to pass in the OAuth request parameter"""
122
177
 
123
178
 
124
179
  class InputEventhubAuthentication(BaseModel):
@@ -126,10 +181,73 @@ class InputEventhubAuthentication(BaseModel):
126
181
 
127
182
  disabled: Optional[bool] = False
128
183
 
184
+ auth_type: Annotated[
185
+ Annotated[
186
+ Optional[InputEventhubAuthTypeAuthenticationMethod],
187
+ PlainValidator(validate_open_enum(False)),
188
+ ],
189
+ pydantic.Field(alias="authType"),
190
+ ] = InputEventhubAuthTypeAuthenticationMethod.MANUAL
191
+ r"""Enter password directly, or select a stored secret"""
192
+
193
+ password: Optional[str] = None
194
+ r"""Connection-string primary key, or connection-string secondary key, from the Event Hubs workspace"""
195
+
196
+ text_secret: Annotated[Optional[str], pydantic.Field(alias="textSecret")] = None
197
+ r"""Select or create a stored text secret"""
198
+
129
199
  mechanism: Annotated[
130
200
  Optional[InputEventhubSASLMechanism], PlainValidator(validate_open_enum(False))
131
201
  ] = InputEventhubSASLMechanism.PLAIN
132
202
 
203
+ username: Optional[str] = "$ConnectionString"
204
+ r"""The username for authentication. For Event Hubs, this should always be $ConnectionString."""
205
+
206
+ client_secret_auth_type: Annotated[
207
+ Annotated[
208
+ Optional[InputEventhubClientSecretAuthTypeAuthenticationMethod],
209
+ PlainValidator(validate_open_enum(False)),
210
+ ],
211
+ pydantic.Field(alias="clientSecretAuthType"),
212
+ ] = InputEventhubClientSecretAuthTypeAuthenticationMethod.MANUAL
213
+
214
+ client_secret: Annotated[Optional[str], pydantic.Field(alias="clientSecret")] = None
215
+ r"""client_secret to pass in the OAuth request parameter"""
216
+
217
+ client_text_secret: Annotated[
218
+ Optional[str], pydantic.Field(alias="clientTextSecret")
219
+ ] = None
220
+ r"""Select or create a stored text secret"""
221
+
222
+ certificate_name: Annotated[
223
+ Optional[str], pydantic.Field(alias="certificateName")
224
+ ] = None
225
+ r"""Select or create a stored certificate"""
226
+
227
+ cert_path: Annotated[Optional[str], pydantic.Field(alias="certPath")] = None
228
+
229
+ priv_key_path: Annotated[Optional[str], pydantic.Field(alias="privKeyPath")] = None
230
+
231
+ passphrase: Optional[str] = None
232
+
233
+ oauth_endpoint: Annotated[
234
+ Annotated[
235
+ Optional[InputEventhubMicrosoftEntraIDAuthenticationEndpoint],
236
+ PlainValidator(validate_open_enum(False)),
237
+ ],
238
+ pydantic.Field(alias="oauthEndpoint"),
239
+ ] = InputEventhubMicrosoftEntraIDAuthenticationEndpoint.HTTPS_LOGIN_MICROSOFTONLINE_COM
240
+ r"""Endpoint used to acquire authentication tokens from Azure"""
241
+
242
+ client_id: Annotated[Optional[str], pydantic.Field(alias="clientId")] = None
243
+ r"""client_id to pass in the OAuth request parameter"""
244
+
245
+ tenant_id: Annotated[Optional[str], pydantic.Field(alias="tenantId")] = None
246
+ r"""Directory ID (tenant identifier) in Azure Active Directory"""
247
+
248
+ scope: Optional[str] = None
249
+ r"""Scope to pass in the OAuth request parameter"""
250
+
133
251
 
134
252
  class InputEventhubTLSSettingsClientSideTypedDict(TypedDict):
135
253
  disabled: NotRequired[bool]
@@ -110,10 +110,10 @@ class InputFilePq(BaseModel):
110
110
  class InputFileMode(str, Enum, metaclass=utils.OpenEnumMeta):
111
111
  r"""Choose how to discover files to monitor"""
112
112
 
113
- # Auto
114
- AUTO = "auto"
115
113
  # Manual
116
114
  MANUAL = "manual"
115
+ # Auto
116
+ AUTO = "auto"
117
117
 
118
118
 
119
119
  class InputFileMetadatumTypedDict(TypedDict):
@@ -157,8 +157,10 @@ class InputFileTypedDict(TypedDict):
157
157
  r"""Read only new entries at the end of all files discovered at next startup. @{product} will then read newly discovered files from the head. Disable this to resume reading all files from head."""
158
158
  idle_timeout: NotRequired[float]
159
159
  r"""Time, in seconds, before an idle file is closed"""
160
+ min_age_dur: NotRequired[str]
161
+ r"""The minimum age of files to monitor. Format examples: 30s, 15m, 1h. Age is relative to file modification time. Leave empty to apply no age filters."""
160
162
  max_age_dur: NotRequired[str]
161
- r"""The maximum age of files to monitor. Format examples: 60s, 4h, 3d, 1w. Age is relative to file modification time. Leave empty to apply no age filters."""
163
+ r"""The maximum age of event timestamps to collect. Format examples: 60s, 4h, 3d, 1w. Can be used in conjuction with \"Check file modification times\". Leave empty to apply no age filters."""
162
164
  check_file_mod_time: NotRequired[bool]
163
165
  r"""Skip files with modification times earlier than the maximum age duration"""
164
166
  force_text: NotRequired[bool]
@@ -215,7 +217,7 @@ class InputFile(BaseModel):
215
217
 
216
218
  mode: Annotated[
217
219
  Optional[InputFileMode], PlainValidator(validate_open_enum(False))
218
- ] = InputFileMode.AUTO
220
+ ] = InputFileMode.MANUAL
219
221
  r"""Choose how to discover files to monitor"""
220
222
 
221
223
  interval: Optional[float] = 10
@@ -230,8 +232,11 @@ class InputFile(BaseModel):
230
232
  idle_timeout: Annotated[Optional[float], pydantic.Field(alias="idleTimeout")] = 300
231
233
  r"""Time, in seconds, before an idle file is closed"""
232
234
 
235
+ min_age_dur: Annotated[Optional[str], pydantic.Field(alias="minAgeDur")] = None
236
+ r"""The minimum age of files to monitor. Format examples: 30s, 15m, 1h. Age is relative to file modification time. Leave empty to apply no age filters."""
237
+
233
238
  max_age_dur: Annotated[Optional[str], pydantic.Field(alias="maxAgeDur")] = None
234
- r"""The maximum age of files to monitor. Format examples: 60s, 4h, 3d, 1w. Age is relative to file modification time. Leave empty to apply no age filters."""
239
+ r"""The maximum age of event timestamps to collect. Format examples: 60s, 4h, 3d, 1w. Can be used in conjuction with \"Check file modification times\". Leave empty to apply no age filters."""
235
240
 
236
241
  check_file_mod_time: Annotated[
237
242
  Optional[bool], pydantic.Field(alias="checkFileModTime")
@@ -7,7 +7,7 @@ from cribl_control_plane.utils import validate_open_enum
7
7
  from enum import Enum
8
8
  import pydantic
9
9
  from pydantic.functional_validators import PlainValidator
10
- from typing import Any, List, Optional
10
+ from typing import List, Optional
11
11
  from typing_extensions import Annotated, NotRequired, TypedDict
12
12
 
13
13
 
@@ -123,6 +123,12 @@ class InputFirehoseMaximumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
123
123
 
124
124
  class InputFirehoseTLSSettingsServerSideTypedDict(TypedDict):
125
125
  disabled: NotRequired[bool]
126
+ request_cert: NotRequired[bool]
127
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
128
+ reject_unauthorized: NotRequired[bool]
129
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
130
+ common_name_regex: NotRequired[str]
131
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
126
132
  certificate_name: NotRequired[str]
127
133
  r"""The name of the predefined certificate"""
128
134
  priv_key_path: NotRequired[str]
@@ -133,10 +139,6 @@ class InputFirehoseTLSSettingsServerSideTypedDict(TypedDict):
133
139
  r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
134
140
  ca_path: NotRequired[str]
135
141
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
136
- request_cert: NotRequired[bool]
137
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
138
- reject_unauthorized: NotRequired[Any]
139
- common_name_regex: NotRequired[Any]
140
142
  min_version: NotRequired[InputFirehoseMinimumTLSVersion]
141
143
  max_version: NotRequired[InputFirehoseMaximumTLSVersion]
142
144
 
@@ -144,6 +146,19 @@ class InputFirehoseTLSSettingsServerSideTypedDict(TypedDict):
144
146
  class InputFirehoseTLSSettingsServerSide(BaseModel):
145
147
  disabled: Optional[bool] = True
146
148
 
149
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
150
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
151
+
152
+ reject_unauthorized: Annotated[
153
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
154
+ ] = True
155
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
156
+
157
+ common_name_regex: Annotated[
158
+ Optional[str], pydantic.Field(alias="commonNameRegex")
159
+ ] = "/.*/"
160
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
161
+
147
162
  certificate_name: Annotated[
148
163
  Optional[str], pydantic.Field(alias="certificateName")
149
164
  ] = None
@@ -161,17 +176,6 @@ class InputFirehoseTLSSettingsServerSide(BaseModel):
161
176
  ca_path: Annotated[Optional[str], pydantic.Field(alias="caPath")] = None
162
177
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
163
178
 
164
- request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
165
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
166
-
167
- reject_unauthorized: Annotated[
168
- Optional[Any], pydantic.Field(alias="rejectUnauthorized")
169
- ] = None
170
-
171
- common_name_regex: Annotated[
172
- Optional[Any], pydantic.Field(alias="commonNameRegex")
173
- ] = None
174
-
175
179
  min_version: Annotated[
176
180
  Annotated[
177
181
  Optional[InputFirehoseMinimumTLSVersion],
@@ -7,7 +7,7 @@ from cribl_control_plane.utils import validate_open_enum
7
7
  from enum import Enum
8
8
  import pydantic
9
9
  from pydantic.functional_validators import PlainValidator
10
- from typing import Any, List, Optional, Union
10
+ from typing import List, Optional, Union
11
11
  from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
12
12
 
13
13
 
@@ -123,6 +123,12 @@ class InputGrafanaMaximumTLSVersion2(str, Enum, metaclass=utils.OpenEnumMeta):
123
123
 
124
124
  class InputGrafanaTLSSettingsServerSide2TypedDict(TypedDict):
125
125
  disabled: NotRequired[bool]
126
+ request_cert: NotRequired[bool]
127
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
128
+ reject_unauthorized: NotRequired[bool]
129
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
130
+ common_name_regex: NotRequired[str]
131
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
126
132
  certificate_name: NotRequired[str]
127
133
  r"""The name of the predefined certificate"""
128
134
  priv_key_path: NotRequired[str]
@@ -133,10 +139,6 @@ class InputGrafanaTLSSettingsServerSide2TypedDict(TypedDict):
133
139
  r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
134
140
  ca_path: NotRequired[str]
135
141
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
136
- request_cert: NotRequired[bool]
137
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
138
- reject_unauthorized: NotRequired[Any]
139
- common_name_regex: NotRequired[Any]
140
142
  min_version: NotRequired[InputGrafanaMinimumTLSVersion2]
141
143
  max_version: NotRequired[InputGrafanaMaximumTLSVersion2]
142
144
 
@@ -144,6 +146,19 @@ class InputGrafanaTLSSettingsServerSide2TypedDict(TypedDict):
144
146
  class InputGrafanaTLSSettingsServerSide2(BaseModel):
145
147
  disabled: Optional[bool] = True
146
148
 
149
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
150
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
151
+
152
+ reject_unauthorized: Annotated[
153
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
154
+ ] = True
155
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
156
+
157
+ common_name_regex: Annotated[
158
+ Optional[str], pydantic.Field(alias="commonNameRegex")
159
+ ] = "/.*/"
160
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
161
+
147
162
  certificate_name: Annotated[
148
163
  Optional[str], pydantic.Field(alias="certificateName")
149
164
  ] = None
@@ -161,17 +176,6 @@ class InputGrafanaTLSSettingsServerSide2(BaseModel):
161
176
  ca_path: Annotated[Optional[str], pydantic.Field(alias="caPath")] = None
162
177
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
163
178
 
164
- request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
165
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
166
-
167
- reject_unauthorized: Annotated[
168
- Optional[Any], pydantic.Field(alias="rejectUnauthorized")
169
- ] = None
170
-
171
- common_name_regex: Annotated[
172
- Optional[Any], pydantic.Field(alias="commonNameRegex")
173
- ] = None
174
-
175
179
  min_version: Annotated[
176
180
  Annotated[
177
181
  Optional[InputGrafanaMinimumTLSVersion2],
@@ -753,6 +757,12 @@ class InputGrafanaMaximumTLSVersion1(str, Enum, metaclass=utils.OpenEnumMeta):
753
757
 
754
758
  class InputGrafanaTLSSettingsServerSide1TypedDict(TypedDict):
755
759
  disabled: NotRequired[bool]
760
+ request_cert: NotRequired[bool]
761
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
762
+ reject_unauthorized: NotRequired[bool]
763
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
764
+ common_name_regex: NotRequired[str]
765
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
756
766
  certificate_name: NotRequired[str]
757
767
  r"""The name of the predefined certificate"""
758
768
  priv_key_path: NotRequired[str]
@@ -763,10 +773,6 @@ class InputGrafanaTLSSettingsServerSide1TypedDict(TypedDict):
763
773
  r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
764
774
  ca_path: NotRequired[str]
765
775
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
766
- request_cert: NotRequired[bool]
767
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
768
- reject_unauthorized: NotRequired[Any]
769
- common_name_regex: NotRequired[Any]
770
776
  min_version: NotRequired[InputGrafanaMinimumTLSVersion1]
771
777
  max_version: NotRequired[InputGrafanaMaximumTLSVersion1]
772
778
 
@@ -774,6 +780,19 @@ class InputGrafanaTLSSettingsServerSide1TypedDict(TypedDict):
774
780
  class InputGrafanaTLSSettingsServerSide1(BaseModel):
775
781
  disabled: Optional[bool] = True
776
782
 
783
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
784
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
785
+
786
+ reject_unauthorized: Annotated[
787
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
788
+ ] = True
789
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
790
+
791
+ common_name_regex: Annotated[
792
+ Optional[str], pydantic.Field(alias="commonNameRegex")
793
+ ] = "/.*/"
794
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
795
+
777
796
  certificate_name: Annotated[
778
797
  Optional[str], pydantic.Field(alias="certificateName")
779
798
  ] = None
@@ -791,17 +810,6 @@ class InputGrafanaTLSSettingsServerSide1(BaseModel):
791
810
  ca_path: Annotated[Optional[str], pydantic.Field(alias="caPath")] = None
792
811
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
793
812
 
794
- request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
795
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
796
-
797
- reject_unauthorized: Annotated[
798
- Optional[Any], pydantic.Field(alias="rejectUnauthorized")
799
- ] = None
800
-
801
- common_name_regex: Annotated[
802
- Optional[Any], pydantic.Field(alias="commonNameRegex")
803
- ] = None
804
-
805
813
  min_version: Annotated[
806
814
  Annotated[
807
815
  Optional[InputGrafanaMinimumTLSVersion1],