cribl-control-plane 0.0.38__py3-none-any.whl → 0.4.0a6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of cribl-control-plane might be problematic. Click here for more details.

Files changed (241) hide show
  1. cribl_control_plane/_hooks/clientcredentials.py +92 -42
  2. cribl_control_plane/_version.py +4 -4
  3. cribl_control_plane/acl.py +5 -3
  4. cribl_control_plane/auth_sdk.py +6 -3
  5. cribl_control_plane/basesdk.py +11 -1
  6. cribl_control_plane/commits.py +7 -5
  7. cribl_control_plane/destinations.py +6 -4
  8. cribl_control_plane/destinations_pq.py +2 -2
  9. cribl_control_plane/errors/__init__.py +23 -8
  10. cribl_control_plane/errors/apierror.py +2 -0
  11. cribl_control_plane/errors/criblcontrolplaneerror.py +11 -7
  12. cribl_control_plane/errors/error.py +4 -2
  13. cribl_control_plane/errors/healthserverstatus_error.py +41 -0
  14. cribl_control_plane/errors/no_response_error.py +5 -1
  15. cribl_control_plane/errors/responsevalidationerror.py +2 -0
  16. cribl_control_plane/groups_configs.py +8 -3
  17. cribl_control_plane/groups_sdk.py +64 -38
  18. cribl_control_plane/health.py +22 -12
  19. cribl_control_plane/httpclient.py +0 -1
  20. cribl_control_plane/lakedatasets.py +40 -12
  21. cribl_control_plane/models/__init__.py +1180 -54
  22. cribl_control_plane/models/authtoken.py +5 -1
  23. cribl_control_plane/models/{routecloneconf.py → branchinfo.py} +4 -4
  24. cribl_control_plane/models/cacheconnection.py +30 -2
  25. cribl_control_plane/models/cacheconnectionbackfillstatus.py +2 -1
  26. cribl_control_plane/models/cloudprovider.py +2 -1
  27. cribl_control_plane/models/configgroup.py +66 -11
  28. cribl_control_plane/models/configgroupcloud.py +17 -3
  29. cribl_control_plane/models/createconfiggroupbyproductop.py +27 -9
  30. cribl_control_plane/models/createinputhectokenbyidop.py +6 -5
  31. cribl_control_plane/models/createroutesappendbyidop.py +2 -2
  32. cribl_control_plane/models/createversionpushop.py +5 -5
  33. cribl_control_plane/models/createversionrevertop.py +2 -2
  34. cribl_control_plane/models/createversionundoop.py +3 -3
  35. cribl_control_plane/models/cribllakedataset.py +22 -2
  36. cribl_control_plane/models/cribllakedatasetupdate.py +95 -0
  37. cribl_control_plane/models/datasetmetadata.py +18 -2
  38. cribl_control_plane/models/deleteconfiggroupbyproductandidop.py +18 -2
  39. cribl_control_plane/models/deleteoutputpqbyidop.py +5 -5
  40. cribl_control_plane/models/deletepipelinebyidop.py +2 -2
  41. cribl_control_plane/models/difffiles.py +171 -0
  42. cribl_control_plane/models/distributedsummary.py +6 -0
  43. cribl_control_plane/models/getconfiggroupaclbyproductandidop.py +24 -2
  44. cribl_control_plane/models/getconfiggroupaclteamsbyproductandidop.py +24 -2
  45. cribl_control_plane/models/getconfiggroupbyproductandidop.py +14 -1
  46. cribl_control_plane/models/getconfiggroupconfigversionbyproductandidop.py +18 -2
  47. cribl_control_plane/models/getoutputpqbyidop.py +6 -5
  48. cribl_control_plane/models/getpipelinebyidop.py +2 -2
  49. cribl_control_plane/models/getroutesbyidop.py +2 -2
  50. cribl_control_plane/models/getsummaryop.py +18 -2
  51. cribl_control_plane/models/getversionbranchop.py +6 -5
  52. cribl_control_plane/models/getversioncountop.py +6 -5
  53. cribl_control_plane/models/getversiondiffop.py +6 -5
  54. cribl_control_plane/models/getversionshowop.py +6 -5
  55. cribl_control_plane/models/gitcountresult.py +13 -0
  56. cribl_control_plane/models/gitdiffresult.py +16 -0
  57. cribl_control_plane/models/gitinfo.py +14 -3
  58. cribl_control_plane/models/gitshowresult.py +19 -0
  59. cribl_control_plane/models/groupcreaterequest.py +171 -0
  60. cribl_control_plane/models/hbcriblinfo.py +39 -3
  61. cribl_control_plane/models/healthserverstatus.py +55 -0
  62. cribl_control_plane/models/heartbeatmetadata.py +3 -0
  63. cribl_control_plane/models/input.py +83 -78
  64. cribl_control_plane/models/inputappscope.py +126 -30
  65. cribl_control_plane/models/inputazureblob.py +62 -6
  66. cribl_control_plane/models/inputcloudflarehec.py +513 -0
  67. cribl_control_plane/models/inputcollection.py +47 -4
  68. cribl_control_plane/models/inputconfluentcloud.py +254 -30
  69. cribl_control_plane/models/inputcribl.py +47 -4
  70. cribl_control_plane/models/inputcriblhttp.py +121 -30
  71. cribl_control_plane/models/inputcribllakehttp.py +122 -30
  72. cribl_control_plane/models/inputcriblmetrics.py +48 -4
  73. cribl_control_plane/models/inputcribltcp.py +122 -24
  74. cribl_control_plane/models/inputcrowdstrike.py +92 -10
  75. cribl_control_plane/models/inputdatadogagent.py +98 -24
  76. cribl_control_plane/models/inputdatagen.py +47 -4
  77. cribl_control_plane/models/inputedgeprometheus.py +210 -50
  78. cribl_control_plane/models/inputelastic.py +167 -36
  79. cribl_control_plane/models/inputeventhub.py +209 -6
  80. cribl_control_plane/models/inputexec.py +59 -6
  81. cribl_control_plane/models/inputfile.py +78 -10
  82. cribl_control_plane/models/inputfirehose.py +97 -24
  83. cribl_control_plane/models/inputgooglepubsub.py +67 -6
  84. cribl_control_plane/models/inputgrafana.py +251 -71
  85. cribl_control_plane/models/inputhttp.py +97 -24
  86. cribl_control_plane/models/inputhttpraw.py +97 -24
  87. cribl_control_plane/models/inputjournalfiles.py +48 -4
  88. cribl_control_plane/models/inputkafka.py +248 -26
  89. cribl_control_plane/models/inputkinesis.py +130 -14
  90. cribl_control_plane/models/inputkubeevents.py +47 -4
  91. cribl_control_plane/models/inputkubelogs.py +61 -8
  92. cribl_control_plane/models/inputkubemetrics.py +61 -8
  93. cribl_control_plane/models/inputloki.py +113 -34
  94. cribl_control_plane/models/inputmetrics.py +97 -24
  95. cribl_control_plane/models/inputmodeldriventelemetry.py +107 -26
  96. cribl_control_plane/models/inputmsk.py +141 -30
  97. cribl_control_plane/models/inputnetflow.py +47 -4
  98. cribl_control_plane/models/inputoffice365mgmt.py +112 -14
  99. cribl_control_plane/models/inputoffice365msgtrace.py +114 -16
  100. cribl_control_plane/models/inputoffice365service.py +114 -16
  101. cribl_control_plane/models/inputopentelemetry.py +143 -32
  102. cribl_control_plane/models/inputprometheus.py +193 -44
  103. cribl_control_plane/models/inputprometheusrw.py +114 -27
  104. cribl_control_plane/models/inputrawudp.py +47 -4
  105. cribl_control_plane/models/inputs3.py +78 -8
  106. cribl_control_plane/models/inputs3inventory.py +92 -10
  107. cribl_control_plane/models/inputsecuritylake.py +93 -10
  108. cribl_control_plane/models/inputsnmp.py +68 -6
  109. cribl_control_plane/models/inputsplunk.py +130 -28
  110. cribl_control_plane/models/inputsplunkhec.py +111 -25
  111. cribl_control_plane/models/inputsplunksearch.py +108 -14
  112. cribl_control_plane/models/inputsqs.py +99 -16
  113. cribl_control_plane/models/inputsyslog.py +189 -47
  114. cribl_control_plane/models/inputsystemmetrics.py +202 -32
  115. cribl_control_plane/models/inputsystemstate.py +61 -8
  116. cribl_control_plane/models/inputtcp.py +122 -26
  117. cribl_control_plane/models/inputtcpjson.py +112 -26
  118. cribl_control_plane/models/inputwef.py +121 -15
  119. cribl_control_plane/models/inputwindowsmetrics.py +186 -33
  120. cribl_control_plane/models/inputwineventlogs.py +93 -11
  121. cribl_control_plane/models/inputwiz.py +78 -8
  122. cribl_control_plane/models/inputwizwebhook.py +97 -24
  123. cribl_control_plane/models/inputzscalerhec.py +111 -25
  124. cribl_control_plane/models/jobinfo.py +34 -0
  125. cribl_control_plane/models/jobstatus.py +48 -0
  126. cribl_control_plane/models/lakedatasetmetrics.py +17 -0
  127. cribl_control_plane/models/lakehouseconnectiontype.py +2 -1
  128. cribl_control_plane/models/listconfiggroupbyproductop.py +14 -1
  129. cribl_control_plane/models/logininfo.py +3 -3
  130. cribl_control_plane/models/masterworkerentry.py +17 -2
  131. cribl_control_plane/models/nodeactiveupgradestatus.py +2 -1
  132. cribl_control_plane/models/nodefailedupgradestatus.py +2 -1
  133. cribl_control_plane/models/nodeprovidedinfo.py +11 -1
  134. cribl_control_plane/models/nodeskippedupgradestatus.py +2 -1
  135. cribl_control_plane/models/nodeupgradestate.py +2 -1
  136. cribl_control_plane/models/nodeupgradestatus.py +51 -5
  137. cribl_control_plane/models/outpostnodeinfo.py +16 -0
  138. cribl_control_plane/models/output.py +104 -90
  139. cribl_control_plane/models/outputazureblob.py +171 -18
  140. cribl_control_plane/models/outputazuredataexplorer.py +514 -90
  141. cribl_control_plane/models/outputazureeventhub.py +315 -31
  142. cribl_control_plane/models/outputazurelogs.py +145 -26
  143. cribl_control_plane/models/outputchronicle.py +532 -0
  144. cribl_control_plane/models/outputclickhouse.py +205 -34
  145. cribl_control_plane/models/outputcloudflarer2.py +632 -0
  146. cribl_control_plane/models/outputcloudwatch.py +129 -23
  147. cribl_control_plane/models/outputconfluentcloud.py +384 -57
  148. cribl_control_plane/models/outputcriblhttp.py +199 -32
  149. cribl_control_plane/models/outputcribllake.py +156 -16
  150. cribl_control_plane/models/outputcribltcp.py +194 -29
  151. cribl_control_plane/models/outputcrowdstrikenextgensiem.py +172 -28
  152. cribl_control_plane/models/outputdatabricks.py +501 -0
  153. cribl_control_plane/models/outputdatadog.py +199 -31
  154. cribl_control_plane/models/outputdataset.py +181 -29
  155. cribl_control_plane/models/outputdiskspool.py +17 -2
  156. cribl_control_plane/models/outputdls3.py +233 -24
  157. cribl_control_plane/models/outputdynatracehttp.py +208 -34
  158. cribl_control_plane/models/outputdynatraceotlp.py +210 -36
  159. cribl_control_plane/models/outputelastic.py +199 -30
  160. cribl_control_plane/models/outputelasticcloud.py +171 -26
  161. cribl_control_plane/models/outputexabeam.py +96 -10
  162. cribl_control_plane/models/outputfilesystem.py +139 -14
  163. cribl_control_plane/models/outputgooglechronicle.py +216 -35
  164. cribl_control_plane/models/outputgooglecloudlogging.py +174 -31
  165. cribl_control_plane/models/outputgooglecloudstorage.py +215 -24
  166. cribl_control_plane/models/outputgooglepubsub.py +131 -23
  167. cribl_control_plane/models/outputgrafanacloud.py +376 -74
  168. cribl_control_plane/models/outputgraphite.py +128 -25
  169. cribl_control_plane/models/outputhoneycomb.py +145 -26
  170. cribl_control_plane/models/outputhumiohec.py +162 -28
  171. cribl_control_plane/models/outputinfluxdb.py +165 -28
  172. cribl_control_plane/models/outputkafka.py +375 -52
  173. cribl_control_plane/models/outputkinesis.py +165 -27
  174. cribl_control_plane/models/outputloki.py +164 -34
  175. cribl_control_plane/models/outputmicrosoftfabric.py +540 -0
  176. cribl_control_plane/models/outputminio.py +225 -25
  177. cribl_control_plane/models/outputmsk.py +267 -54
  178. cribl_control_plane/models/outputnewrelic.py +171 -29
  179. cribl_control_plane/models/outputnewrelicevents.py +163 -28
  180. cribl_control_plane/models/outputopentelemetry.py +240 -40
  181. cribl_control_plane/models/outputprometheus.py +145 -26
  182. cribl_control_plane/models/outputring.py +49 -8
  183. cribl_control_plane/models/outputs3.py +233 -26
  184. cribl_control_plane/models/outputsecuritylake.py +179 -18
  185. cribl_control_plane/models/outputsentinel.py +172 -29
  186. cribl_control_plane/models/outputsentineloneaisiem.py +181 -35
  187. cribl_control_plane/models/outputservicenow.py +223 -38
  188. cribl_control_plane/models/outputsignalfx.py +145 -26
  189. cribl_control_plane/models/outputsns.py +143 -25
  190. cribl_control_plane/models/outputsplunk.py +206 -36
  191. cribl_control_plane/models/outputsplunkhec.py +238 -26
  192. cribl_control_plane/models/outputsplunklb.py +253 -43
  193. cribl_control_plane/models/outputsqs.py +163 -33
  194. cribl_control_plane/models/outputstatsd.py +127 -25
  195. cribl_control_plane/models/outputstatsdext.py +128 -25
  196. cribl_control_plane/models/outputsumologic.py +146 -25
  197. cribl_control_plane/models/outputsyslog.py +318 -46
  198. cribl_control_plane/models/outputtcpjson.py +186 -32
  199. cribl_control_plane/models/outputwavefront.py +145 -26
  200. cribl_control_plane/models/outputwebhook.py +211 -33
  201. cribl_control_plane/models/outputxsiam.py +143 -26
  202. cribl_control_plane/models/packinfo.py +8 -5
  203. cribl_control_plane/models/packinstallinfo.py +11 -8
  204. cribl_control_plane/models/productscore.py +2 -1
  205. cribl_control_plane/models/rbacresource.py +2 -1
  206. cribl_control_plane/models/resourcepolicy.py +15 -2
  207. cribl_control_plane/models/routeconf.py +3 -4
  208. cribl_control_plane/models/runnablejob.py +27 -0
  209. cribl_control_plane/models/runnablejobcollection.py +669 -0
  210. cribl_control_plane/models/runnablejobexecutor.py +368 -0
  211. cribl_control_plane/models/runnablejobscheduledsearch.py +286 -0
  212. cribl_control_plane/models/updateconfiggroupbyproductandidop.py +19 -2
  213. cribl_control_plane/models/updateconfiggroupdeploybyproductandidop.py +19 -2
  214. cribl_control_plane/models/updatecribllakedatasetbylakeidandidop.py +9 -5
  215. cribl_control_plane/models/updateinputhectokenbyidandtokenop.py +6 -5
  216. cribl_control_plane/models/updatepacksop.py +25 -0
  217. cribl_control_plane/models/updatepipelinebyidop.py +6 -6
  218. cribl_control_plane/models/updateroutesbyidop.py +2 -2
  219. cribl_control_plane/models/uploadpackresponse.py +13 -0
  220. cribl_control_plane/models/workertypes.py +2 -1
  221. cribl_control_plane/nodes.py +5 -3
  222. cribl_control_plane/packs.py +202 -7
  223. cribl_control_plane/pipelines.py +18 -18
  224. cribl_control_plane/routes_sdk.py +22 -22
  225. cribl_control_plane/sdk.py +19 -6
  226. cribl_control_plane/sources.py +5 -3
  227. cribl_control_plane/tokens.py +23 -15
  228. cribl_control_plane/utils/__init__.py +15 -3
  229. cribl_control_plane/utils/annotations.py +32 -8
  230. cribl_control_plane/utils/eventstreaming.py +10 -0
  231. cribl_control_plane/utils/retries.py +69 -5
  232. cribl_control_plane/utils/unmarshal_json_response.py +15 -1
  233. cribl_control_plane/versions.py +11 -6
  234. {cribl_control_plane-0.0.38.dist-info → cribl_control_plane-0.4.0a6.dist-info}/METADATA +69 -23
  235. cribl_control_plane-0.4.0a6.dist-info/RECORD +336 -0
  236. {cribl_control_plane-0.0.38.dist-info → cribl_control_plane-0.4.0a6.dist-info}/WHEEL +1 -1
  237. cribl_control_plane-0.4.0a6.dist-info/licenses/LICENSE +201 -0
  238. cribl_control_plane/errors/healthstatus_error.py +0 -32
  239. cribl_control_plane/models/appmode.py +0 -13
  240. cribl_control_plane/models/healthstatus.py +0 -33
  241. cribl_control_plane-0.0.38.dist-info/RECORD +0 -315
@@ -1,9 +1,13 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from cribl_control_plane import models, utils
4
5
  from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
5
7
  from enum import Enum
6
8
  import pydantic
9
+ from pydantic import field_serializer
10
+ from pydantic.functional_validators import PlainValidator
7
11
  from typing import Any, List, Optional
8
12
  from typing_extensions import Annotated, NotRequired, TypedDict
9
13
 
@@ -23,20 +27,32 @@ class InputSnmpConnection(BaseModel):
23
27
  pipeline: Optional[str] = None
24
28
 
25
29
 
26
- class InputSnmpMode(str, Enum):
30
+ class InputSnmpMode(str, Enum, metaclass=utils.OpenEnumMeta):
27
31
  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."""
28
32
 
33
+ # Smart
29
34
  SMART = "smart"
35
+ # Always On
30
36
  ALWAYS = "always"
31
37
 
32
38
 
33
- class InputSnmpCompression(str, Enum):
39
+ class InputSnmpCompression(str, Enum, metaclass=utils.OpenEnumMeta):
34
40
  r"""Codec to use to compress the persisted data"""
35
41
 
42
+ # None
36
43
  NONE = "none"
44
+ # Gzip
37
45
  GZIP = "gzip"
38
46
 
39
47
 
48
+ class InputSnmpPqControlsTypedDict(TypedDict):
49
+ pass
50
+
51
+
52
+ class InputSnmpPqControls(BaseModel):
53
+ pass
54
+
55
+
40
56
  class InputSnmpPqTypedDict(TypedDict):
41
57
  mode: NotRequired[InputSnmpMode]
42
58
  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."""
@@ -52,10 +68,13 @@ class InputSnmpPqTypedDict(TypedDict):
52
68
  r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/inputs/<input-id>"""
53
69
  compress: NotRequired[InputSnmpCompression]
54
70
  r"""Codec to use to compress the persisted data"""
71
+ pq_controls: NotRequired[InputSnmpPqControlsTypedDict]
55
72
 
56
73
 
57
74
  class InputSnmpPq(BaseModel):
58
- mode: Optional[InputSnmpMode] = InputSnmpMode.ALWAYS
75
+ mode: Annotated[
76
+ Optional[InputSnmpMode], PlainValidator(validate_open_enum(False))
77
+ ] = InputSnmpMode.ALWAYS
59
78
  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."""
60
79
 
61
80
  max_buffer_size: Annotated[
@@ -79,17 +98,48 @@ class InputSnmpPq(BaseModel):
79
98
  path: Optional[str] = "$CRIBL_HOME/state/queues"
80
99
  r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/inputs/<input-id>"""
81
100
 
82
- compress: Optional[InputSnmpCompression] = InputSnmpCompression.NONE
101
+ compress: Annotated[
102
+ Optional[InputSnmpCompression], PlainValidator(validate_open_enum(False))
103
+ ] = InputSnmpCompression.NONE
83
104
  r"""Codec to use to compress the persisted data"""
84
105
 
106
+ pq_controls: Annotated[
107
+ Optional[InputSnmpPqControls], pydantic.Field(alias="pqControls")
108
+ ] = None
85
109
 
86
- class AuthenticationProtocol(str, Enum):
110
+ @field_serializer("mode")
111
+ def serialize_mode(self, value):
112
+ if isinstance(value, str):
113
+ try:
114
+ return models.InputSnmpMode(value)
115
+ except ValueError:
116
+ return value
117
+ return value
118
+
119
+ @field_serializer("compress")
120
+ def serialize_compress(self, value):
121
+ if isinstance(value, str):
122
+ try:
123
+ return models.InputSnmpCompression(value)
124
+ except ValueError:
125
+ return value
126
+ return value
127
+
128
+
129
+ class AuthenticationProtocol(str, Enum, metaclass=utils.OpenEnumMeta):
130
+ # None
87
131
  NONE = "none"
132
+ # MD5
88
133
  MD5 = "md5"
134
+ # SHA1
89
135
  SHA = "sha"
136
+ # SHA224
90
137
  SHA224 = "sha224"
138
+ # SHA256
91
139
  SHA256 = "sha256"
140
+ # SHA384
92
141
  SHA384 = "sha384"
142
+ # SHA512
93
143
  SHA512 = "sha512"
94
144
 
95
145
 
@@ -104,7 +154,10 @@ class V3User(BaseModel):
104
154
  name: str
105
155
 
106
156
  auth_protocol: Annotated[
107
- Optional[AuthenticationProtocol], pydantic.Field(alias="authProtocol")
157
+ Annotated[
158
+ Optional[AuthenticationProtocol], PlainValidator(validate_open_enum(False))
159
+ ],
160
+ pydantic.Field(alias="authProtocol"),
108
161
  ] = AuthenticationProtocol.NONE
109
162
 
110
163
  auth_key: Annotated[Optional[Any], pydantic.Field(alias="authKey")] = None
@@ -113,6 +166,15 @@ class V3User(BaseModel):
113
166
  "none"
114
167
  )
115
168
 
169
+ @field_serializer("auth_protocol")
170
+ def serialize_auth_protocol(self, value):
171
+ if isinstance(value, str):
172
+ try:
173
+ return models.AuthenticationProtocol(value)
174
+ except ValueError:
175
+ return value
176
+ return value
177
+
116
178
 
117
179
  class SNMPv3AuthenticationTypedDict(TypedDict):
118
180
  r"""Authentication parameters for SNMPv3 trap. Set the log level to debug if you are experiencing authentication or decryption issues."""
@@ -1,10 +1,14 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from cribl_control_plane import models, utils
4
5
  from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
5
7
  from enum import Enum
6
8
  import pydantic
7
- from typing import Any, List, Optional
9
+ from pydantic import field_serializer
10
+ from pydantic.functional_validators import PlainValidator
11
+ from typing import List, Optional
8
12
  from typing_extensions import Annotated, NotRequired, TypedDict
9
13
 
10
14
 
@@ -23,20 +27,32 @@ class InputSplunkConnection(BaseModel):
23
27
  pipeline: Optional[str] = None
24
28
 
25
29
 
26
- class InputSplunkMode(str, Enum):
30
+ class InputSplunkMode(str, Enum, metaclass=utils.OpenEnumMeta):
27
31
  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."""
28
32
 
33
+ # Smart
29
34
  SMART = "smart"
35
+ # Always On
30
36
  ALWAYS = "always"
31
37
 
32
38
 
33
- class InputSplunkPqCompression(str, Enum):
39
+ class InputSplunkPqCompression(str, Enum, metaclass=utils.OpenEnumMeta):
34
40
  r"""Codec to use to compress the persisted data"""
35
41
 
42
+ # None
36
43
  NONE = "none"
44
+ # Gzip
37
45
  GZIP = "gzip"
38
46
 
39
47
 
48
+ class InputSplunkPqControlsTypedDict(TypedDict):
49
+ pass
50
+
51
+
52
+ class InputSplunkPqControls(BaseModel):
53
+ pass
54
+
55
+
40
56
  class InputSplunkPqTypedDict(TypedDict):
41
57
  mode: NotRequired[InputSplunkMode]
42
58
  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."""
@@ -52,10 +68,13 @@ class InputSplunkPqTypedDict(TypedDict):
52
68
  r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/inputs/<input-id>"""
53
69
  compress: NotRequired[InputSplunkPqCompression]
54
70
  r"""Codec to use to compress the persisted data"""
71
+ pq_controls: NotRequired[InputSplunkPqControlsTypedDict]
55
72
 
56
73
 
57
74
  class InputSplunkPq(BaseModel):
58
- mode: Optional[InputSplunkMode] = InputSplunkMode.ALWAYS
75
+ mode: Annotated[
76
+ Optional[InputSplunkMode], PlainValidator(validate_open_enum(False))
77
+ ] = InputSplunkMode.ALWAYS
59
78
  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."""
60
79
 
61
80
  max_buffer_size: Annotated[
@@ -79,18 +98,42 @@ class InputSplunkPq(BaseModel):
79
98
  path: Optional[str] = "$CRIBL_HOME/state/queues"
80
99
  r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/inputs/<input-id>"""
81
100
 
82
- compress: Optional[InputSplunkPqCompression] = InputSplunkPqCompression.NONE
101
+ compress: Annotated[
102
+ Optional[InputSplunkPqCompression], PlainValidator(validate_open_enum(False))
103
+ ] = InputSplunkPqCompression.NONE
83
104
  r"""Codec to use to compress the persisted data"""
84
105
 
106
+ pq_controls: Annotated[
107
+ Optional[InputSplunkPqControls], pydantic.Field(alias="pqControls")
108
+ ] = None
85
109
 
86
- class InputSplunkMinimumTLSVersion(str, Enum):
110
+ @field_serializer("mode")
111
+ def serialize_mode(self, value):
112
+ if isinstance(value, str):
113
+ try:
114
+ return models.InputSplunkMode(value)
115
+ except ValueError:
116
+ return value
117
+ return value
118
+
119
+ @field_serializer("compress")
120
+ def serialize_compress(self, value):
121
+ if isinstance(value, str):
122
+ try:
123
+ return models.InputSplunkPqCompression(value)
124
+ except ValueError:
125
+ return value
126
+ return value
127
+
128
+
129
+ class InputSplunkMinimumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
87
130
  TL_SV1 = "TLSv1"
88
131
  TL_SV1_1 = "TLSv1.1"
89
132
  TL_SV1_2 = "TLSv1.2"
90
133
  TL_SV1_3 = "TLSv1.3"
91
134
 
92
135
 
93
- class InputSplunkMaximumTLSVersion(str, Enum):
136
+ class InputSplunkMaximumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
94
137
  TL_SV1 = "TLSv1"
95
138
  TL_SV1_1 = "TLSv1.1"
96
139
  TL_SV1_2 = "TLSv1.2"
@@ -99,6 +142,12 @@ class InputSplunkMaximumTLSVersion(str, Enum):
99
142
 
100
143
  class InputSplunkTLSSettingsServerSideTypedDict(TypedDict):
101
144
  disabled: NotRequired[bool]
145
+ request_cert: NotRequired[bool]
146
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
147
+ reject_unauthorized: NotRequired[bool]
148
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
149
+ common_name_regex: NotRequired[str]
150
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
102
151
  certificate_name: NotRequired[str]
103
152
  r"""The name of the predefined certificate"""
104
153
  priv_key_path: NotRequired[str]
@@ -109,10 +158,6 @@ class InputSplunkTLSSettingsServerSideTypedDict(TypedDict):
109
158
  r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
110
159
  ca_path: NotRequired[str]
111
160
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
112
- request_cert: NotRequired[bool]
113
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
114
- reject_unauthorized: NotRequired[Any]
115
- common_name_regex: NotRequired[Any]
116
161
  min_version: NotRequired[InputSplunkMinimumTLSVersion]
117
162
  max_version: NotRequired[InputSplunkMaximumTLSVersion]
118
163
 
@@ -120,6 +165,19 @@ class InputSplunkTLSSettingsServerSideTypedDict(TypedDict):
120
165
  class InputSplunkTLSSettingsServerSide(BaseModel):
121
166
  disabled: Optional[bool] = True
122
167
 
168
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
169
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
170
+
171
+ reject_unauthorized: Annotated[
172
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
173
+ ] = True
174
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
175
+
176
+ common_name_regex: Annotated[
177
+ Optional[str], pydantic.Field(alias="commonNameRegex")
178
+ ] = "/.*/"
179
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
180
+
123
181
  certificate_name: Annotated[
124
182
  Optional[str], pydantic.Field(alias="certificateName")
125
183
  ] = None
@@ -137,25 +195,40 @@ class InputSplunkTLSSettingsServerSide(BaseModel):
137
195
  ca_path: Annotated[Optional[str], pydantic.Field(alias="caPath")] = None
138
196
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
139
197
 
140
- request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
141
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
142
-
143
- reject_unauthorized: Annotated[
144
- Optional[Any], pydantic.Field(alias="rejectUnauthorized")
145
- ] = None
146
-
147
- common_name_regex: Annotated[
148
- Optional[Any], pydantic.Field(alias="commonNameRegex")
149
- ] = None
150
-
151
198
  min_version: Annotated[
152
- Optional[InputSplunkMinimumTLSVersion], pydantic.Field(alias="minVersion")
199
+ Annotated[
200
+ Optional[InputSplunkMinimumTLSVersion],
201
+ PlainValidator(validate_open_enum(False)),
202
+ ],
203
+ pydantic.Field(alias="minVersion"),
153
204
  ] = None
154
205
 
155
206
  max_version: Annotated[
156
- Optional[InputSplunkMaximumTLSVersion], pydantic.Field(alias="maxVersion")
207
+ Annotated[
208
+ Optional[InputSplunkMaximumTLSVersion],
209
+ PlainValidator(validate_open_enum(False)),
210
+ ],
211
+ pydantic.Field(alias="maxVersion"),
157
212
  ] = None
158
213
 
214
+ @field_serializer("min_version")
215
+ def serialize_min_version(self, value):
216
+ if isinstance(value, str):
217
+ try:
218
+ return models.InputSplunkMinimumTLSVersion(value)
219
+ except ValueError:
220
+ return value
221
+ return value
222
+
223
+ @field_serializer("max_version")
224
+ def serialize_max_version(self, value):
225
+ if isinstance(value, str):
226
+ try:
227
+ return models.InputSplunkMaximumTLSVersion(value)
228
+ except ValueError:
229
+ return value
230
+ return value
231
+
159
232
 
160
233
  class InputSplunkMetadatumTypedDict(TypedDict):
161
234
  name: str
@@ -183,18 +256,23 @@ class InputSplunkAuthToken(BaseModel):
183
256
  description: Optional[str] = None
184
257
 
185
258
 
186
- class InputSplunkMaxS2SVersion(str, Enum):
259
+ class InputSplunkMaxS2SVersion(str, Enum, metaclass=utils.OpenEnumMeta):
187
260
  r"""The highest S2S protocol version to advertise during handshake"""
188
261
 
262
+ # v3
189
263
  V3 = "v3"
264
+ # v4
190
265
  V4 = "v4"
191
266
 
192
267
 
193
- class InputSplunkCompression(str, Enum):
268
+ class InputSplunkCompression(str, Enum, metaclass=utils.OpenEnumMeta):
194
269
  r"""Controls whether to support reading compressed data from a forwarder. Select 'Automatic' to match the forwarder's configuration, or 'Disabled' to reject compressed connections."""
195
270
 
271
+ # Disabled
196
272
  DISABLED = "disabled"
273
+ # Automatic
197
274
  AUTO = "auto"
275
+ # Always
198
276
  ALWAYS = "always"
199
277
 
200
278
 
@@ -341,7 +419,11 @@ class InputSplunk(BaseModel):
341
419
  r"""Shared secrets to be provided by any Splunk forwarder. If empty, unauthorized access is permitted."""
342
420
 
343
421
  max_s2_sversion: Annotated[
344
- Optional[InputSplunkMaxS2SVersion], pydantic.Field(alias="maxS2Sversion")
422
+ Annotated[
423
+ Optional[InputSplunkMaxS2SVersion],
424
+ PlainValidator(validate_open_enum(False)),
425
+ ],
426
+ pydantic.Field(alias="maxS2Sversion"),
345
427
  ] = InputSplunkMaxS2SVersion.V3
346
428
  r"""The highest S2S protocol version to advertise during handshake"""
347
429
 
@@ -362,5 +444,25 @@ class InputSplunk(BaseModel):
362
444
  ] = False
363
445
  r"""Extract and process Splunk-generated metrics as Cribl metrics"""
364
446
 
365
- compress: Optional[InputSplunkCompression] = InputSplunkCompression.DISABLED
447
+ compress: Annotated[
448
+ Optional[InputSplunkCompression], PlainValidator(validate_open_enum(False))
449
+ ] = InputSplunkCompression.DISABLED
366
450
  r"""Controls whether to support reading compressed data from a forwarder. Select 'Automatic' to match the forwarder's configuration, or 'Disabled' to reject compressed connections."""
451
+
452
+ @field_serializer("max_s2_sversion")
453
+ def serialize_max_s2_sversion(self, value):
454
+ if isinstance(value, str):
455
+ try:
456
+ return models.InputSplunkMaxS2SVersion(value)
457
+ except ValueError:
458
+ return value
459
+ return value
460
+
461
+ @field_serializer("compress")
462
+ def serialize_compress(self, value):
463
+ if isinstance(value, str):
464
+ try:
465
+ return models.InputSplunkCompression(value)
466
+ except ValueError:
467
+ return value
468
+ return value
@@ -1,9 +1,13 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from cribl_control_plane import models, utils
4
5
  from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
5
7
  from enum import Enum
6
8
  import pydantic
9
+ from pydantic import field_serializer
10
+ from pydantic.functional_validators import PlainValidator
7
11
  from typing import Any, List, Optional
8
12
  from typing_extensions import Annotated, NotRequired, TypedDict
9
13
 
@@ -23,20 +27,32 @@ class InputSplunkHecConnection(BaseModel):
23
27
  pipeline: Optional[str] = None
24
28
 
25
29
 
26
- class InputSplunkHecMode(str, Enum):
30
+ class InputSplunkHecMode(str, Enum, metaclass=utils.OpenEnumMeta):
27
31
  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."""
28
32
 
33
+ # Smart
29
34
  SMART = "smart"
35
+ # Always On
30
36
  ALWAYS = "always"
31
37
 
32
38
 
33
- class InputSplunkHecCompression(str, Enum):
39
+ class InputSplunkHecCompression(str, Enum, metaclass=utils.OpenEnumMeta):
34
40
  r"""Codec to use to compress the persisted data"""
35
41
 
42
+ # None
36
43
  NONE = "none"
44
+ # Gzip
37
45
  GZIP = "gzip"
38
46
 
39
47
 
48
+ class InputSplunkHecPqControlsTypedDict(TypedDict):
49
+ pass
50
+
51
+
52
+ class InputSplunkHecPqControls(BaseModel):
53
+ pass
54
+
55
+
40
56
  class InputSplunkHecPqTypedDict(TypedDict):
41
57
  mode: NotRequired[InputSplunkHecMode]
42
58
  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."""
@@ -52,10 +68,13 @@ class InputSplunkHecPqTypedDict(TypedDict):
52
68
  r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/inputs/<input-id>"""
53
69
  compress: NotRequired[InputSplunkHecCompression]
54
70
  r"""Codec to use to compress the persisted data"""
71
+ pq_controls: NotRequired[InputSplunkHecPqControlsTypedDict]
55
72
 
56
73
 
57
74
  class InputSplunkHecPq(BaseModel):
58
- mode: Optional[InputSplunkHecMode] = InputSplunkHecMode.ALWAYS
75
+ mode: Annotated[
76
+ Optional[InputSplunkHecMode], PlainValidator(validate_open_enum(False))
77
+ ] = InputSplunkHecMode.ALWAYS
59
78
  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."""
60
79
 
61
80
  max_buffer_size: Annotated[
@@ -79,11 +98,35 @@ class InputSplunkHecPq(BaseModel):
79
98
  path: Optional[str] = "$CRIBL_HOME/state/queues"
80
99
  r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/inputs/<input-id>"""
81
100
 
82
- compress: Optional[InputSplunkHecCompression] = InputSplunkHecCompression.NONE
101
+ compress: Annotated[
102
+ Optional[InputSplunkHecCompression], PlainValidator(validate_open_enum(False))
103
+ ] = InputSplunkHecCompression.NONE
83
104
  r"""Codec to use to compress the persisted data"""
84
105
 
106
+ pq_controls: Annotated[
107
+ Optional[InputSplunkHecPqControls], pydantic.Field(alias="pqControls")
108
+ ] = None
85
109
 
86
- class InputSplunkHecAuthenticationMethod(str, Enum):
110
+ @field_serializer("mode")
111
+ def serialize_mode(self, value):
112
+ if isinstance(value, str):
113
+ try:
114
+ return models.InputSplunkHecMode(value)
115
+ except ValueError:
116
+ return value
117
+ return value
118
+
119
+ @field_serializer("compress")
120
+ def serialize_compress(self, value):
121
+ if isinstance(value, str):
122
+ try:
123
+ return models.InputSplunkHecCompression(value)
124
+ except ValueError:
125
+ return value
126
+ return value
127
+
128
+
129
+ class InputSplunkHecAuthenticationMethod(str, Enum, metaclass=utils.OpenEnumMeta):
87
130
  r"""Select Manual to enter an auth token directly, or select Secret to use a text secret to authenticate"""
88
131
 
89
132
  MANUAL = "manual"
@@ -121,7 +164,11 @@ class InputSplunkHecAuthToken(BaseModel):
121
164
  token: Any
122
165
 
123
166
  auth_type: Annotated[
124
- Optional[InputSplunkHecAuthenticationMethod], pydantic.Field(alias="authType")
167
+ Annotated[
168
+ Optional[InputSplunkHecAuthenticationMethod],
169
+ PlainValidator(validate_open_enum(False)),
170
+ ],
171
+ pydantic.Field(alias="authType"),
125
172
  ] = InputSplunkHecAuthenticationMethod.MANUAL
126
173
  r"""Select Manual to enter an auth token directly, or select Secret to use a text secret to authenticate"""
127
174
 
@@ -140,15 +187,24 @@ class InputSplunkHecAuthToken(BaseModel):
140
187
  metadata: Optional[List[InputSplunkHecAuthTokenMetadatum]] = None
141
188
  r"""Fields to add to events referencing this token"""
142
189
 
190
+ @field_serializer("auth_type")
191
+ def serialize_auth_type(self, value):
192
+ if isinstance(value, str):
193
+ try:
194
+ return models.InputSplunkHecAuthenticationMethod(value)
195
+ except ValueError:
196
+ return value
197
+ return value
198
+
143
199
 
144
- class InputSplunkHecMinimumTLSVersion(str, Enum):
200
+ class InputSplunkHecMinimumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
145
201
  TL_SV1 = "TLSv1"
146
202
  TL_SV1_1 = "TLSv1.1"
147
203
  TL_SV1_2 = "TLSv1.2"
148
204
  TL_SV1_3 = "TLSv1.3"
149
205
 
150
206
 
151
- class InputSplunkHecMaximumTLSVersion(str, Enum):
207
+ class InputSplunkHecMaximumTLSVersion(str, Enum, metaclass=utils.OpenEnumMeta):
152
208
  TL_SV1 = "TLSv1"
153
209
  TL_SV1_1 = "TLSv1.1"
154
210
  TL_SV1_2 = "TLSv1.2"
@@ -157,6 +213,12 @@ class InputSplunkHecMaximumTLSVersion(str, Enum):
157
213
 
158
214
  class InputSplunkHecTLSSettingsServerSideTypedDict(TypedDict):
159
215
  disabled: NotRequired[bool]
216
+ request_cert: NotRequired[bool]
217
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
218
+ reject_unauthorized: NotRequired[bool]
219
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
220
+ common_name_regex: NotRequired[str]
221
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
160
222
  certificate_name: NotRequired[str]
161
223
  r"""The name of the predefined certificate"""
162
224
  priv_key_path: NotRequired[str]
@@ -167,10 +229,6 @@ class InputSplunkHecTLSSettingsServerSideTypedDict(TypedDict):
167
229
  r"""Path on server containing certificates to use. PEM format. Can reference $ENV_VARS."""
168
230
  ca_path: NotRequired[str]
169
231
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
170
- request_cert: NotRequired[bool]
171
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
172
- reject_unauthorized: NotRequired[Any]
173
- common_name_regex: NotRequired[Any]
174
232
  min_version: NotRequired[InputSplunkHecMinimumTLSVersion]
175
233
  max_version: NotRequired[InputSplunkHecMaximumTLSVersion]
176
234
 
@@ -178,6 +236,19 @@ class InputSplunkHecTLSSettingsServerSideTypedDict(TypedDict):
178
236
  class InputSplunkHecTLSSettingsServerSide(BaseModel):
179
237
  disabled: Optional[bool] = True
180
238
 
239
+ request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
240
+ r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
241
+
242
+ reject_unauthorized: Annotated[
243
+ Optional[bool], pydantic.Field(alias="rejectUnauthorized")
244
+ ] = True
245
+ r"""Reject certificates not authorized by a CA in the CA certificate path or by another trusted CA (such as the system's)"""
246
+
247
+ common_name_regex: Annotated[
248
+ Optional[str], pydantic.Field(alias="commonNameRegex")
249
+ ] = "/.*/"
250
+ r"""Regex matching allowable common names in peer certificates' subject attribute"""
251
+
181
252
  certificate_name: Annotated[
182
253
  Optional[str], pydantic.Field(alias="certificateName")
183
254
  ] = None
@@ -195,25 +266,40 @@ class InputSplunkHecTLSSettingsServerSide(BaseModel):
195
266
  ca_path: Annotated[Optional[str], pydantic.Field(alias="caPath")] = None
196
267
  r"""Path on server containing CA certificates to use. PEM format. Can reference $ENV_VARS."""
197
268
 
198
- request_cert: Annotated[Optional[bool], pydantic.Field(alias="requestCert")] = False
199
- r"""Require clients to present their certificates. Used to perform client authentication using SSL certs."""
200
-
201
- reject_unauthorized: Annotated[
202
- Optional[Any], pydantic.Field(alias="rejectUnauthorized")
203
- ] = None
204
-
205
- common_name_regex: Annotated[
206
- Optional[Any], pydantic.Field(alias="commonNameRegex")
207
- ] = None
208
-
209
269
  min_version: Annotated[
210
- Optional[InputSplunkHecMinimumTLSVersion], pydantic.Field(alias="minVersion")
270
+ Annotated[
271
+ Optional[InputSplunkHecMinimumTLSVersion],
272
+ PlainValidator(validate_open_enum(False)),
273
+ ],
274
+ pydantic.Field(alias="minVersion"),
211
275
  ] = None
212
276
 
213
277
  max_version: Annotated[
214
- Optional[InputSplunkHecMaximumTLSVersion], pydantic.Field(alias="maxVersion")
278
+ Annotated[
279
+ Optional[InputSplunkHecMaximumTLSVersion],
280
+ PlainValidator(validate_open_enum(False)),
281
+ ],
282
+ pydantic.Field(alias="maxVersion"),
215
283
  ] = None
216
284
 
285
+ @field_serializer("min_version")
286
+ def serialize_min_version(self, value):
287
+ if isinstance(value, str):
288
+ try:
289
+ return models.InputSplunkHecMinimumTLSVersion(value)
290
+ except ValueError:
291
+ return value
292
+ return value
293
+
294
+ @field_serializer("max_version")
295
+ def serialize_max_version(self, value):
296
+ if isinstance(value, str):
297
+ try:
298
+ return models.InputSplunkHecMaximumTLSVersion(value)
299
+ except ValueError:
300
+ return value
301
+ return value
302
+
217
303
 
218
304
  class InputSplunkHecMetadatumTypedDict(TypedDict):
219
305
  name: str