cribl-control-plane 0.0.21__py3-none-any.whl → 0.4.0b23__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.
Files changed (436) hide show
  1. cribl_control_plane/_hooks/clientcredentials.py +113 -48
  2. cribl_control_plane/_version.py +4 -4
  3. cribl_control_plane/acl.py +225 -0
  4. cribl_control_plane/auth_sdk.py +12 -176
  5. cribl_control_plane/basesdk.py +17 -1
  6. cribl_control_plane/branches.py +351 -0
  7. cribl_control_plane/commits.py +1403 -0
  8. cribl_control_plane/commits_files.py +391 -0
  9. cribl_control_plane/configs_versions.py +201 -0
  10. cribl_control_plane/cribl.py +495 -0
  11. cribl_control_plane/destinations.py +146 -805
  12. cribl_control_plane/destinations_pq.py +379 -0
  13. cribl_control_plane/errors/__init__.py +26 -10
  14. cribl_control_plane/errors/apierror.py +2 -0
  15. cribl_control_plane/errors/criblcontrolplaneerror.py +11 -7
  16. cribl_control_plane/errors/error.py +4 -2
  17. cribl_control_plane/errors/healthserverstatus_error.py +41 -0
  18. cribl_control_plane/errors/no_response_error.py +5 -1
  19. cribl_control_plane/errors/responsevalidationerror.py +2 -0
  20. cribl_control_plane/functions.py +367 -0
  21. cribl_control_plane/groups_configs.py +22 -0
  22. cribl_control_plane/groups_sdk.py +333 -578
  23. cribl_control_plane/health.py +38 -18
  24. cribl_control_plane/hectokens.py +503 -0
  25. cribl_control_plane/httpclient.py +0 -1
  26. cribl_control_plane/{lake.py → lakedatasets.py} +207 -115
  27. cribl_control_plane/models/__init__.py +3644 -5986
  28. cribl_control_plane/models/addhectokenrequest.py +7 -1
  29. cribl_control_plane/models/authtoken.py +5 -1
  30. cribl_control_plane/models/backupssettings_union.py +37 -0
  31. cribl_control_plane/models/{lookupversions.py → branchinfo.py} +4 -4
  32. cribl_control_plane/models/cacheconnection.py +30 -2
  33. cribl_control_plane/models/cacheconnectionbackfillstatus.py +2 -1
  34. cribl_control_plane/models/cloudprovider.py +2 -1
  35. cribl_control_plane/models/collectorazureblob.py +130 -0
  36. cribl_control_plane/models/collectorconf.py +56 -0
  37. cribl_control_plane/models/collectorcribllake.py +27 -0
  38. cribl_control_plane/models/collectordatabase.py +92 -0
  39. cribl_control_plane/models/collectorfilesystem.py +66 -0
  40. cribl_control_plane/models/collectorgooglecloudstorage.py +131 -0
  41. cribl_control_plane/models/collectorhealthcheck.py +269 -0
  42. cribl_control_plane/models/collectorrest.py +340 -0
  43. cribl_control_plane/models/collectors3.py +239 -0
  44. cribl_control_plane/models/collectorscript.py +59 -0
  45. cribl_control_plane/models/collectorsplunk.py +253 -0
  46. cribl_control_plane/models/configgroup.py +67 -11
  47. cribl_control_plane/models/configgroupcloud.py +17 -3
  48. cribl_control_plane/models/countedbranchinfo.py +20 -0
  49. cribl_control_plane/models/countedconfiggroup.py +20 -0
  50. cribl_control_plane/models/countedcribllakedataset.py +20 -0
  51. cribl_control_plane/models/counteddistributedsummary.py +20 -0
  52. cribl_control_plane/models/countedfunctionresponse.py +20 -0
  53. cribl_control_plane/models/countedgitcommitsummary.py +20 -0
  54. cribl_control_plane/models/countedgitcountresult.py +20 -0
  55. cribl_control_plane/models/countedgitdiffresult.py +20 -0
  56. cribl_control_plane/models/countedgitfilesresponse.py +20 -0
  57. cribl_control_plane/models/{getversioninfoop.py → countedgitinfo.py} +2 -6
  58. cribl_control_plane/models/countedgitlogresult.py +20 -0
  59. cribl_control_plane/models/countedgitrevertresult.py +20 -0
  60. cribl_control_plane/models/countedgitshowresult.py +20 -0
  61. cribl_control_plane/models/countedgitstatusresult.py +20 -0
  62. cribl_control_plane/models/{listinputop.py → countedinput.py} +2 -6
  63. cribl_control_plane/models/countedinputsplunkhec.py +20 -0
  64. cribl_control_plane/models/countedjobinfo.py +20 -0
  65. cribl_control_plane/models/countedmasterworkerentry.py +20 -0
  66. cribl_control_plane/models/countednumber.py +19 -0
  67. cribl_control_plane/models/{getversionbranchop.py → countedobject.py} +2 -6
  68. cribl_control_plane/models/{listoutputop.py → countedoutput.py} +2 -6
  69. cribl_control_plane/models/countedoutputsamplesresponse.py +20 -0
  70. cribl_control_plane/models/countedoutputtestresponse.py +20 -0
  71. cribl_control_plane/models/countedpackinfo.py +20 -0
  72. cribl_control_plane/models/{createpacksop.py → countedpackinstallinfo.py} +2 -6
  73. cribl_control_plane/models/{listpipelineop.py → countedpipeline.py} +2 -6
  74. cribl_control_plane/models/{listroutesop.py → countedroutes.py} +2 -6
  75. cribl_control_plane/models/countedstring.py +19 -0
  76. cribl_control_plane/models/countedsystemsettingsconf.py +20 -0
  77. cribl_control_plane/models/countedteamaccesscontrollist.py +20 -0
  78. cribl_control_plane/models/counteduseraccesscontrollist.py +20 -0
  79. cribl_control_plane/models/createauthloginop.py +18 -0
  80. cribl_control_plane/models/createconfiggroupbyproductop.py +46 -0
  81. cribl_control_plane/models/createcribllakedatasetbylakeidop.py +3 -21
  82. cribl_control_plane/models/createinputhectokenbyidop.py +3 -21
  83. cribl_control_plane/models/createoutputtestbyidop.py +3 -22
  84. cribl_control_plane/models/createroutesappendbyidop.py +4 -21
  85. cribl_control_plane/models/createversioncommitop.py +27 -20
  86. cribl_control_plane/models/createversionrevertop.py +7 -23
  87. cribl_control_plane/models/createversionundoop.py +7 -22
  88. cribl_control_plane/models/criblevent.py +15 -0
  89. cribl_control_plane/models/cribllakedataset.py +23 -3
  90. cribl_control_plane/models/cribllakedatasetupdate.py +95 -0
  91. cribl_control_plane/models/currentbranchresult.py +13 -0
  92. cribl_control_plane/models/datasetmetadata.py +18 -2
  93. cribl_control_plane/models/deleteconfiggroupbyproductandidop.py +43 -0
  94. cribl_control_plane/models/deletecribllakedatasetbylakeidandidop.py +5 -24
  95. cribl_control_plane/models/deleteinputbyidop.py +3 -22
  96. cribl_control_plane/models/deleteoutputbyidop.py +3 -22
  97. cribl_control_plane/models/deleteoutputpqbyidop.py +3 -21
  98. cribl_control_plane/models/deletepacksbyidop.py +3 -22
  99. cribl_control_plane/models/deletepipelinebyidop.py +3 -22
  100. cribl_control_plane/models/difffiles.py +130 -0
  101. cribl_control_plane/models/diffline.py +26 -0
  102. cribl_control_plane/models/difflinecontext.py +28 -0
  103. cribl_control_plane/models/difflinedelete.py +25 -0
  104. cribl_control_plane/models/difflineinsert.py +25 -0
  105. cribl_control_plane/models/distributedsummary.py +6 -0
  106. cribl_control_plane/models/functionaggregatemetrics.py +206 -0
  107. cribl_control_plane/models/functionaggregation.py +172 -0
  108. cribl_control_plane/models/functionautotimestamp.py +173 -0
  109. cribl_control_plane/models/functioncef.py +111 -0
  110. cribl_control_plane/models/functionchain.py +75 -0
  111. cribl_control_plane/models/functionclone.py +75 -0
  112. cribl_control_plane/models/functioncode.py +96 -0
  113. cribl_control_plane/models/functioncomment.py +75 -0
  114. cribl_control_plane/models/functiondistinct.py +99 -0
  115. cribl_control_plane/models/functiondnslookup.py +250 -0
  116. cribl_control_plane/models/functiondrop.py +73 -0
  117. cribl_control_plane/models/functiondropdimensions.py +87 -0
  118. cribl_control_plane/models/functiondynamicsampling.py +121 -0
  119. cribl_control_plane/models/functioneval.py +103 -0
  120. cribl_control_plane/models/functioneventbreaker.py +103 -0
  121. cribl_control_plane/models/functioneventstats.py +92 -0
  122. cribl_control_plane/models/functionexternaldata.py +73 -0
  123. cribl_control_plane/models/functionflatten.py +90 -0
  124. cribl_control_plane/models/functionfoldkeys.py +89 -0
  125. cribl_control_plane/models/functiongenstats.py +73 -0
  126. cribl_control_plane/models/functiongeoip.py +120 -0
  127. cribl_control_plane/models/functiongrok.py +95 -0
  128. cribl_control_plane/models/functionhandlebar.py +112 -0
  129. cribl_control_plane/models/functionjoin.py +112 -0
  130. cribl_control_plane/models/functionjsonunroll.py +80 -0
  131. cribl_control_plane/models/functionlakeexport.py +102 -0
  132. cribl_control_plane/models/functionlimit.py +75 -0
  133. cribl_control_plane/models/functionlocalsearchdatatypeparser.py +76 -0
  134. cribl_control_plane/models/functionlocalsearchrulesetrunner.py +97 -0
  135. cribl_control_plane/models/functionlookup.py +148 -0
  136. cribl_control_plane/models/functionmask.py +121 -0
  137. cribl_control_plane/models/functionmvexpand.py +128 -0
  138. cribl_control_plane/models/functionmvpull.py +99 -0
  139. cribl_control_plane/models/functionnotificationpolicies.py +186 -0
  140. cribl_control_plane/models/functionnotifications.py +85 -0
  141. cribl_control_plane/models/functionnotify.py +196 -0
  142. cribl_control_plane/models/functionnumerify.py +119 -0
  143. cribl_control_plane/models/functionotlplogs.py +82 -0
  144. cribl_control_plane/models/functionotlpmetrics.py +118 -0
  145. cribl_control_plane/models/functionotlptraces.py +111 -0
  146. cribl_control_plane/models/functionpack.py +80 -0
  147. cribl_control_plane/models/functionpivot.py +85 -0
  148. cribl_control_plane/models/functionpublishmetrics.py +153 -0
  149. cribl_control_plane/models/functionredis.py +173 -0
  150. cribl_control_plane/models/functionregexextract.py +112 -0
  151. cribl_control_plane/models/functionregexfilter.py +95 -0
  152. cribl_control_plane/models/functionrename.py +107 -0
  153. cribl_control_plane/models/functionresponse.py +242 -0
  154. cribl_control_plane/models/functionrollupmetrics.py +114 -0
  155. cribl_control_plane/models/functionsampling.py +90 -0
  156. cribl_control_plane/models/functionsend.py +141 -0
  157. cribl_control_plane/models/functionsensitivedatascanner.py +128 -0
  158. cribl_control_plane/models/functionserde.py +161 -0
  159. cribl_control_plane/models/functionserialize.py +134 -0
  160. cribl_control_plane/models/functionsidlookup.py +93 -0
  161. cribl_control_plane/models/functionsnmptrapserialize.py +144 -0
  162. cribl_control_plane/models/functionsort.py +97 -0
  163. cribl_control_plane/models/functionstore.py +132 -0
  164. cribl_control_plane/models/functionsuppress.py +115 -0
  165. cribl_control_plane/models/functiontee.py +90 -0
  166. cribl_control_plane/models/functiontrimtimestamp.py +75 -0
  167. cribl_control_plane/models/functionunion.py +80 -0
  168. cribl_control_plane/models/functionunroll.py +80 -0
  169. cribl_control_plane/models/functionwindow.py +96 -0
  170. cribl_control_plane/models/functionxmlunroll.py +92 -0
  171. cribl_control_plane/models/getconfiggroupaclbyproductandidop.py +63 -0
  172. cribl_control_plane/models/getconfiggroupaclteamsbyproductandidop.py +63 -0
  173. cribl_control_plane/models/getconfiggroupbyproductandidop.py +53 -0
  174. cribl_control_plane/models/getconfiggroupconfigversionbyproductandidop.py +43 -0
  175. cribl_control_plane/models/getcribllakedatasetbylakeidandidop.py +5 -24
  176. cribl_control_plane/models/getcribllakedatasetbylakeidop.py +56 -16
  177. cribl_control_plane/models/getfunctionsbyidop.py +18 -0
  178. cribl_control_plane/models/getinputbyidop.py +3 -22
  179. cribl_control_plane/models/getmasterworkerentryop.py +22 -0
  180. cribl_control_plane/models/getoutputbyidop.py +3 -22
  181. cribl_control_plane/models/getoutputpqbyidop.py +3 -21
  182. cribl_control_plane/models/getoutputsamplesbyidop.py +3 -22
  183. cribl_control_plane/models/getpacksbyidop.py +18 -0
  184. cribl_control_plane/models/getpacksop.py +3 -21
  185. cribl_control_plane/models/getpipelinebyidop.py +3 -22
  186. cribl_control_plane/models/getroutesbyidop.py +3 -22
  187. cribl_control_plane/models/getsummaryop.py +23 -32
  188. cribl_control_plane/models/getversioncountop.py +10 -27
  189. cribl_control_plane/models/getversiondiffop.py +12 -28
  190. cribl_control_plane/models/getversionfilesop.py +10 -28
  191. cribl_control_plane/models/getversionop.py +30 -0
  192. cribl_control_plane/models/getversionshowop.py +12 -28
  193. cribl_control_plane/models/getversionstatusop.py +7 -23
  194. cribl_control_plane/models/gitcommitsummary.py +3 -3
  195. cribl_control_plane/models/{routecloneconf.py → gitcountresult.py} +4 -4
  196. cribl_control_plane/models/gitdiffresult.py +16 -0
  197. cribl_control_plane/models/gitfilesresponse.py +7 -5
  198. cribl_control_plane/models/gitinfo.py +14 -3
  199. cribl_control_plane/models/gitlogresult.py +33 -0
  200. cribl_control_plane/models/gitrevertparams.py +3 -3
  201. cribl_control_plane/models/gitrevertresult.py +5 -5
  202. cribl_control_plane/models/gitshowresult.py +19 -0
  203. cribl_control_plane/models/gitstatusresult.py +0 -3
  204. cribl_control_plane/models/groupcreaterequest.py +172 -0
  205. cribl_control_plane/models/hbcriblinfo.py +42 -7
  206. cribl_control_plane/models/healthserverstatus.py +55 -0
  207. cribl_control_plane/models/heartbeatmetadata.py +6 -11
  208. cribl_control_plane/models/input.py +89 -81
  209. cribl_control_plane/models/inputappscope.py +131 -35
  210. cribl_control_plane/models/inputazureblob.py +62 -6
  211. cribl_control_plane/models/inputcloudflarehec.py +518 -0
  212. cribl_control_plane/models/inputcollection.py +49 -6
  213. cribl_control_plane/models/inputconfluentcloud.py +262 -22
  214. cribl_control_plane/models/inputcribl.py +52 -9
  215. cribl_control_plane/models/inputcriblhttp.py +124 -33
  216. cribl_control_plane/models/inputcribllakehttp.py +199 -29
  217. cribl_control_plane/models/inputcriblmetrics.py +53 -9
  218. cribl_control_plane/models/inputcribltcp.py +125 -27
  219. cribl_control_plane/models/inputcrowdstrike.py +99 -10
  220. cribl_control_plane/models/inputdatadogagent.py +101 -27
  221. cribl_control_plane/models/inputdatagen.py +47 -4
  222. cribl_control_plane/models/inputedgeprometheus.py +215 -58
  223. cribl_control_plane/models/inputelastic.py +170 -39
  224. cribl_control_plane/models/inputeventhub.py +212 -9
  225. cribl_control_plane/models/inputexec.py +59 -6
  226. cribl_control_plane/models/inputfile.py +83 -15
  227. cribl_control_plane/models/inputfirehose.py +100 -27
  228. cribl_control_plane/models/inputgooglepubsub.py +83 -15
  229. cribl_control_plane/models/{inputgrafana_union.py → inputgrafana.py} +261 -67
  230. cribl_control_plane/models/inputhttp.py +100 -27
  231. cribl_control_plane/models/inputhttpraw.py +100 -27
  232. cribl_control_plane/models/inputjournalfiles.py +51 -7
  233. cribl_control_plane/models/inputkafka.py +257 -19
  234. cribl_control_plane/models/inputkinesis.py +133 -17
  235. cribl_control_plane/models/inputkubeevents.py +52 -9
  236. cribl_control_plane/models/inputkubelogs.py +66 -13
  237. cribl_control_plane/models/inputkubemetrics.py +66 -13
  238. cribl_control_plane/models/inputloki.py +116 -30
  239. cribl_control_plane/models/inputmetrics.py +97 -24
  240. cribl_control_plane/models/inputmodeldriventelemetry.py +110 -29
  241. cribl_control_plane/models/inputmsk.py +148 -21
  242. cribl_control_plane/models/inputnetflow.py +50 -7
  243. cribl_control_plane/models/inputoffice365mgmt.py +115 -17
  244. cribl_control_plane/models/inputoffice365msgtrace.py +117 -19
  245. cribl_control_plane/models/inputoffice365service.py +117 -19
  246. cribl_control_plane/models/inputopentelemetry.py +146 -35
  247. cribl_control_plane/models/inputprometheus.py +196 -47
  248. cribl_control_plane/models/inputprometheusrw.py +117 -30
  249. cribl_control_plane/models/inputrawudp.py +50 -7
  250. cribl_control_plane/models/inputs3.py +85 -8
  251. cribl_control_plane/models/inputs3inventory.py +99 -10
  252. cribl_control_plane/models/inputsecuritylake.py +100 -10
  253. cribl_control_plane/models/inputsnmp.py +115 -24
  254. cribl_control_plane/models/inputsplunk.py +133 -31
  255. cribl_control_plane/models/inputsplunkhec.py +122 -32
  256. cribl_control_plane/models/inputsplunksearch.py +115 -18
  257. cribl_control_plane/models/inputsqs.py +102 -19
  258. cribl_control_plane/models/{inputsyslog_union.py → inputsyslog.py} +193 -51
  259. cribl_control_plane/models/inputsystemmetrics.py +207 -37
  260. cribl_control_plane/models/inputsystemstate.py +66 -13
  261. cribl_control_plane/models/inputtcp.py +125 -29
  262. cribl_control_plane/models/inputtcpjson.py +115 -29
  263. cribl_control_plane/models/inputwef.py +151 -22
  264. cribl_control_plane/models/inputwindowsmetrics.py +191 -38
  265. cribl_control_plane/models/inputwineventlogs.py +93 -11
  266. cribl_control_plane/models/inputwiz.py +176 -11
  267. cribl_control_plane/models/inputwizwebhook.py +466 -0
  268. cribl_control_plane/models/inputzscalerhec.py +122 -32
  269. cribl_control_plane/models/jobinfo.py +34 -0
  270. cribl_control_plane/models/jobstatus.py +48 -0
  271. cribl_control_plane/models/lakedatasetmetrics.py +17 -0
  272. cribl_control_plane/models/lakehouseconnectiontype.py +2 -1
  273. cribl_control_plane/models/listconfiggroupbyproductop.py +46 -0
  274. cribl_control_plane/models/listmasterworkerentryop.py +64 -0
  275. cribl_control_plane/models/logininfo.py +3 -3
  276. cribl_control_plane/models/masterworkerentry.py +20 -13
  277. cribl_control_plane/models/nodeactiveupgradestatus.py +2 -1
  278. cribl_control_plane/models/nodefailedupgradestatus.py +2 -1
  279. cribl_control_plane/models/nodeprovidedinfo.py +13 -11
  280. cribl_control_plane/models/nodeskippedupgradestatus.py +2 -1
  281. cribl_control_plane/models/nodeupgradestate.py +2 -1
  282. cribl_control_plane/models/nodeupgradestatus.py +51 -5
  283. cribl_control_plane/models/outpostnodeinfo.py +16 -0
  284. cribl_control_plane/models/output.py +103 -89
  285. cribl_control_plane/models/outputazureblob.py +174 -21
  286. cribl_control_plane/models/outputazuredataexplorer.py +517 -93
  287. cribl_control_plane/models/outputazureeventhub.py +318 -34
  288. cribl_control_plane/models/outputazurelogs.py +145 -26
  289. cribl_control_plane/models/outputchronicle.py +532 -0
  290. cribl_control_plane/models/outputclickhouse.py +208 -37
  291. cribl_control_plane/models/outputcloudflarer2.py +632 -0
  292. cribl_control_plane/models/outputcloudwatch.py +132 -26
  293. cribl_control_plane/models/outputconfluentcloud.py +387 -46
  294. cribl_control_plane/models/outputcriblhttp.py +203 -36
  295. cribl_control_plane/models/outputcribllake.py +161 -21
  296. cribl_control_plane/models/outputcribltcp.py +199 -34
  297. cribl_control_plane/models/outputcrowdstrikenextgensiem.py +176 -32
  298. cribl_control_plane/models/outputdatabricks.py +501 -0
  299. cribl_control_plane/models/outputdatadog.py +204 -36
  300. cribl_control_plane/models/outputdataset.py +186 -34
  301. cribl_control_plane/models/outputdevnull.py +5 -5
  302. cribl_control_plane/models/outputdiskspool.py +22 -7
  303. cribl_control_plane/models/outputdls3.py +238 -29
  304. cribl_control_plane/models/outputdynatracehttp.py +211 -37
  305. cribl_control_plane/models/outputdynatraceotlp.py +213 -39
  306. cribl_control_plane/models/outputelastic.py +199 -30
  307. cribl_control_plane/models/outputelasticcloud.py +174 -29
  308. cribl_control_plane/models/outputexabeam.py +99 -13
  309. cribl_control_plane/models/outputfilesystem.py +139 -14
  310. cribl_control_plane/models/outputgooglechronicle.py +216 -35
  311. cribl_control_plane/models/outputgooglecloudlogging.py +177 -34
  312. cribl_control_plane/models/outputgooglecloudstorage.py +220 -29
  313. cribl_control_plane/models/outputgooglepubsub.py +138 -51
  314. cribl_control_plane/models/outputgrafanacloud.py +386 -70
  315. cribl_control_plane/models/outputgraphite.py +131 -28
  316. cribl_control_plane/models/outputhoneycomb.py +145 -26
  317. cribl_control_plane/models/outputhumiohec.py +165 -31
  318. cribl_control_plane/models/outputinfluxdb.py +165 -28
  319. cribl_control_plane/models/outputkafka.py +378 -41
  320. cribl_control_plane/models/outputkinesis.py +168 -30
  321. cribl_control_plane/models/outputloki.py +171 -27
  322. cribl_control_plane/models/outputmicrosoftfabric.py +540 -0
  323. cribl_control_plane/models/outputminio.py +228 -28
  324. cribl_control_plane/models/outputmsk.py +270 -43
  325. cribl_control_plane/models/outputnewrelic.py +176 -34
  326. cribl_control_plane/models/outputnewrelicevents.py +166 -31
  327. cribl_control_plane/models/outputopentelemetry.py +240 -40
  328. cribl_control_plane/models/outputprometheus.py +145 -26
  329. cribl_control_plane/models/outputring.py +54 -13
  330. cribl_control_plane/models/outputs3.py +238 -31
  331. cribl_control_plane/models/outputsecuritylake.py +182 -21
  332. cribl_control_plane/models/outputsentinel.py +175 -32
  333. cribl_control_plane/models/outputsentineloneaisiem.py +184 -38
  334. cribl_control_plane/models/outputservicenow.py +226 -41
  335. cribl_control_plane/models/outputsignalfx.py +145 -26
  336. cribl_control_plane/models/outputsns.py +146 -28
  337. cribl_control_plane/models/outputsplunk.py +209 -39
  338. cribl_control_plane/models/outputsplunkhec.py +243 -31
  339. cribl_control_plane/models/outputsplunklb.py +266 -46
  340. cribl_control_plane/models/outputsqs.py +166 -36
  341. cribl_control_plane/models/outputstatsd.py +130 -28
  342. cribl_control_plane/models/outputstatsdext.py +131 -28
  343. cribl_control_plane/models/outputsumologic.py +146 -25
  344. cribl_control_plane/models/outputsyslog.py +323 -51
  345. cribl_control_plane/models/outputtcpjson.py +191 -37
  346. cribl_control_plane/models/outputwavefront.py +145 -26
  347. cribl_control_plane/models/outputwebhook.py +216 -38
  348. cribl_control_plane/models/outputxsiam.py +148 -31
  349. cribl_control_plane/models/packinfo.py +11 -8
  350. cribl_control_plane/models/packinstallinfo.py +14 -11
  351. cribl_control_plane/models/packrequestbody_union.py +140 -0
  352. cribl_control_plane/models/packupgraderequest.py +26 -0
  353. cribl_control_plane/models/piisettings_union.py +31 -0
  354. cribl_control_plane/models/productscore.py +10 -0
  355. cribl_control_plane/models/rbacresource.py +2 -1
  356. cribl_control_plane/models/resourcepolicy.py +15 -2
  357. cribl_control_plane/models/rollbacksettings_union.py +44 -0
  358. cribl_control_plane/models/routeconf.py +3 -4
  359. cribl_control_plane/models/routes.py +0 -24
  360. cribl_control_plane/models/runnablejob.py +27 -0
  361. cribl_control_plane/models/runnablejobcollection.py +628 -0
  362. cribl_control_plane/models/runnablejobexecutor.py +360 -0
  363. cribl_control_plane/models/runnablejobscheduledsearch.py +279 -0
  364. cribl_control_plane/models/schemeclientoauth.py +5 -0
  365. cribl_control_plane/models/snisettings_union.py +31 -0
  366. cribl_control_plane/models/systemsettingsconf.py +291 -0
  367. cribl_control_plane/models/tlssettings_union.py +43 -0
  368. cribl_control_plane/models/updateconfiggroupbyproductandidop.py +56 -0
  369. cribl_control_plane/models/updateconfiggroupdeploybyproductandidop.py +53 -0
  370. cribl_control_plane/models/updatecribllakedatasetbylakeidandidop.py +14 -29
  371. cribl_control_plane/models/updatehectokenrequest.py +7 -1
  372. cribl_control_plane/models/updateinputbyidop.py +5 -23
  373. cribl_control_plane/models/updateinputhectokenbyidandtokenop.py +5 -23
  374. cribl_control_plane/models/updateoutputbyidop.py +5 -23
  375. cribl_control_plane/models/updatepacksbyidop.py +12 -50
  376. cribl_control_plane/models/updatepacksop.py +12 -24
  377. cribl_control_plane/models/updatepipelinebyidop.py +5 -23
  378. cribl_control_plane/models/updateroutesbyidop.py +8 -27
  379. cribl_control_plane/models/upgradegroupsettings_union.py +43 -0
  380. cribl_control_plane/models/upgradepackageurls.py +20 -0
  381. cribl_control_plane/models/upgradesettings.py +38 -0
  382. cribl_control_plane/models/uploadpackresponse.py +13 -0
  383. cribl_control_plane/models/{appmode.py → workertypes.py} +2 -5
  384. cribl_control_plane/{workers_sdk.py → nodes.py} +102 -234
  385. cribl_control_plane/packs.py +385 -184
  386. cribl_control_plane/pipelines.py +116 -66
  387. cribl_control_plane/routes_sdk.py +102 -70
  388. cribl_control_plane/samples.py +407 -0
  389. cribl_control_plane/sdk.py +35 -25
  390. cribl_control_plane/settings.py +20 -0
  391. cribl_control_plane/sources.py +143 -545
  392. cribl_control_plane/statuses.py +195 -0
  393. cribl_control_plane/summaries.py +195 -0
  394. cribl_control_plane/system_sdk.py +20 -0
  395. cribl_control_plane/teams.py +36 -28
  396. cribl_control_plane/tokens.py +210 -0
  397. cribl_control_plane/utils/__init__.py +18 -5
  398. cribl_control_plane/utils/annotations.py +32 -8
  399. cribl_control_plane/utils/eventstreaming.py +10 -0
  400. cribl_control_plane/utils/forms.py +21 -10
  401. cribl_control_plane/utils/queryparams.py +14 -2
  402. cribl_control_plane/utils/retries.py +69 -5
  403. cribl_control_plane/utils/security.py +5 -0
  404. cribl_control_plane/utils/unmarshal_json_response.py +15 -1
  405. cribl_control_plane/versions.py +31 -0
  406. cribl_control_plane/{distributed.py → versions_configs.py} +29 -35
  407. cribl_control_plane-0.4.0b23.dist-info/METADATA +855 -0
  408. cribl_control_plane-0.4.0b23.dist-info/RECORD +450 -0
  409. {cribl_control_plane-0.0.21.dist-info → cribl_control_plane-0.4.0b23.dist-info}/WHEEL +1 -1
  410. cribl_control_plane-0.4.0b23.dist-info/licenses/LICENSE +201 -0
  411. cribl_control_plane/errors/healthstatus_error.py +0 -32
  412. cribl_control_plane/models/createinputop.py +0 -18238
  413. cribl_control_plane/models/createoutputop.py +0 -18437
  414. cribl_control_plane/models/createpipelineop.py +0 -24
  415. cribl_control_plane/models/createproductsgroupsbyproductop.py +0 -54
  416. cribl_control_plane/models/createversionpushop.py +0 -23
  417. cribl_control_plane/models/createversionsyncop.py +0 -23
  418. cribl_control_plane/models/deletegroupsbyidop.py +0 -37
  419. cribl_control_plane/models/getgroupsaclbyidop.py +0 -63
  420. cribl_control_plane/models/getgroupsbyidop.py +0 -49
  421. cribl_control_plane/models/getgroupsconfigversionbyidop.py +0 -36
  422. cribl_control_plane/models/getproductsgroupsaclteamsbyproductandidop.py +0 -78
  423. cribl_control_plane/models/getproductsgroupsbyproductop.py +0 -58
  424. cribl_control_plane/models/getsummaryworkersop.py +0 -39
  425. cribl_control_plane/models/getversioncurrentbranchop.py +0 -23
  426. cribl_control_plane/models/getworkersop.py +0 -82
  427. cribl_control_plane/models/healthstatus.py +0 -33
  428. cribl_control_plane/models/packrequestbody.py +0 -75
  429. cribl_control_plane/models/restartresponse.py +0 -26
  430. cribl_control_plane/models/routesroute_input.py +0 -67
  431. cribl_control_plane/models/updategroupsbyidop.py +0 -48
  432. cribl_control_plane/models/updategroupsdeploybyidop.py +0 -46
  433. cribl_control_plane/models/updateworkersrestartop.py +0 -24
  434. cribl_control_plane/versioning.py +0 -2309
  435. cribl_control_plane-0.0.21.dist-info/METADATA +0 -561
  436. cribl_control_plane-0.0.21.dist-info/RECORD +0 -301
@@ -1,9 +1,13 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from cribl_control_plane import models, utils
4
5
  from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
5
7
  from enum import Enum
6
8
  import pydantic
9
+ from pydantic import field_serializer
10
+ from pydantic.functional_validators import PlainValidator
7
11
  from typing import List, Optional
8
12
  from typing_extensions import Annotated, NotRequired, TypedDict
9
13
 
@@ -23,11 +27,16 @@ class OutputElasticCloudExtraHTTPHeader(BaseModel):
23
27
  name: Optional[str] = None
24
28
 
25
29
 
26
- class OutputElasticCloudFailedRequestLoggingMode(str, Enum):
30
+ class OutputElasticCloudFailedRequestLoggingMode(
31
+ str, Enum, metaclass=utils.OpenEnumMeta
32
+ ):
27
33
  r"""Data to log when a request fails. All headers are redacted by default, unless listed as safe headers below."""
28
34
 
35
+ # Payload
29
36
  PAYLOAD = "payload"
37
+ # Payload + Headers
30
38
  PAYLOAD_AND_HEADERS = "payloadAndHeaders"
39
+ # None
31
40
  NONE = "none"
32
41
 
33
42
 
@@ -42,7 +51,7 @@ class OutputElasticCloudExtraParam(BaseModel):
42
51
  value: str
43
52
 
44
53
 
45
- class OutputElasticCloudAuthenticationMethod(str, Enum):
54
+ class OutputElasticCloudAuthenticationMethod(str, Enum, metaclass=utils.OpenEnumMeta):
46
55
  r"""Enter credentials directly, or select a stored secret"""
47
56
 
48
57
  MANUAL = "manual"
@@ -53,19 +62,56 @@ class OutputElasticCloudAuthenticationMethod(str, Enum):
53
62
 
54
63
  class OutputElasticCloudAuthTypedDict(TypedDict):
55
64
  disabled: NotRequired[bool]
65
+ username: NotRequired[str]
66
+ password: NotRequired[str]
56
67
  auth_type: NotRequired[OutputElasticCloudAuthenticationMethod]
57
68
  r"""Enter credentials directly, or select a stored secret"""
69
+ credentials_secret: NotRequired[str]
70
+ r"""Select or create a secret that references your credentials"""
71
+ manual_api_key: NotRequired[str]
72
+ r"""Enter API key directly"""
73
+ text_secret: NotRequired[str]
74
+ r"""Select or create a stored text secret"""
58
75
 
59
76
 
60
77
  class OutputElasticCloudAuth(BaseModel):
61
78
  disabled: Optional[bool] = False
62
79
 
80
+ username: Optional[str] = None
81
+
82
+ password: Optional[str] = None
83
+
63
84
  auth_type: Annotated[
64
- Optional[OutputElasticCloudAuthenticationMethod],
85
+ Annotated[
86
+ Optional[OutputElasticCloudAuthenticationMethod],
87
+ PlainValidator(validate_open_enum(False)),
88
+ ],
65
89
  pydantic.Field(alias="authType"),
66
90
  ] = OutputElasticCloudAuthenticationMethod.MANUAL
67
91
  r"""Enter credentials directly, or select a stored secret"""
68
92
 
93
+ credentials_secret: Annotated[
94
+ Optional[str], pydantic.Field(alias="credentialsSecret")
95
+ ] = None
96
+ r"""Select or create a secret that references your credentials"""
97
+
98
+ manual_api_key: Annotated[Optional[str], pydantic.Field(alias="manualAPIKey")] = (
99
+ None
100
+ )
101
+ r"""Enter API key directly"""
102
+
103
+ text_secret: Annotated[Optional[str], pydantic.Field(alias="textSecret")] = None
104
+ r"""Select or create a stored text secret"""
105
+
106
+ @field_serializer("auth_type")
107
+ def serialize_auth_type(self, value):
108
+ if isinstance(value, str):
109
+ try:
110
+ return models.OutputElasticCloudAuthenticationMethod(value)
111
+ except ValueError:
112
+ return value
113
+ return value
114
+
69
115
 
70
116
  class OutputElasticCloudResponseRetrySettingTypedDict(TypedDict):
71
117
  http_status: float
@@ -121,36 +167,46 @@ class OutputElasticCloudTimeoutRetrySettings(BaseModel):
121
167
  r"""The maximum backoff interval, in milliseconds, Cribl Stream should apply. Default (and minimum) is 10,000 ms (10 seconds); maximum is 180,000 ms (180 seconds)."""
122
168
 
123
169
 
124
- class OutputElasticCloudBackpressureBehavior(str, Enum):
170
+ class OutputElasticCloudBackpressureBehavior(str, Enum, metaclass=utils.OpenEnumMeta):
125
171
  r"""How to handle events when all receivers are exerting backpressure"""
126
172
 
173
+ # Block
127
174
  BLOCK = "block"
175
+ # Drop
128
176
  DROP = "drop"
177
+ # Persistent Queue
129
178
  QUEUE = "queue"
130
179
 
131
180
 
132
- class OutputElasticCloudCompression(str, Enum):
181
+ class OutputElasticCloudMode(str, Enum, metaclass=utils.OpenEnumMeta):
182
+ r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
183
+
184
+ # Error
185
+ ERROR = "error"
186
+ # Backpressure
187
+ ALWAYS = "always"
188
+ # Always On
189
+ BACKPRESSURE = "backpressure"
190
+
191
+
192
+ class OutputElasticCloudCompression(str, Enum, metaclass=utils.OpenEnumMeta):
133
193
  r"""Codec to use to compress the persisted data"""
134
194
 
195
+ # None
135
196
  NONE = "none"
197
+ # Gzip
136
198
  GZIP = "gzip"
137
199
 
138
200
 
139
- class OutputElasticCloudQueueFullBehavior(str, Enum):
201
+ class OutputElasticCloudQueueFullBehavior(str, Enum, metaclass=utils.OpenEnumMeta):
140
202
  r"""How to handle events when the queue is exerting backpressure (full capacity or low disk). 'Block' is the same behavior as non-PQ blocking. 'Drop new data' throws away incoming data, while leaving the contents of the PQ unchanged."""
141
203
 
204
+ # Block
142
205
  BLOCK = "block"
206
+ # Drop new data
143
207
  DROP = "drop"
144
208
 
145
209
 
146
- class OutputElasticCloudMode(str, Enum):
147
- r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
148
-
149
- ERROR = "error"
150
- BACKPRESSURE = "backpressure"
151
- ALWAYS = "always"
152
-
153
-
154
210
  class OutputElasticCloudPqControlsTypedDict(TypedDict):
155
211
  pass
156
212
 
@@ -160,13 +216,13 @@ class OutputElasticCloudPqControls(BaseModel):
160
216
 
161
217
 
162
218
  class OutputElasticCloudTypedDict(TypedDict):
219
+ type: OutputElasticCloudType
163
220
  url: str
164
221
  r"""Enter Cloud ID of the Elastic Cloud environment to send events to"""
165
222
  index: str
166
223
  r"""Data stream or index to send events to. Must be a JavaScript expression (which can evaluate to a constant value), enclosed in quotes or backticks. Can be overwritten by an event's __index field."""
167
224
  id: NotRequired[str]
168
225
  r"""Unique ID for this output"""
169
- type: NotRequired[OutputElasticCloudType]
170
226
  pipeline: NotRequired[str]
171
227
  r"""Pipeline to process data before sending out to this output"""
172
228
  system_fields: NotRequired[List[str]]
@@ -215,6 +271,16 @@ class OutputElasticCloudTypedDict(TypedDict):
215
271
  on_backpressure: NotRequired[OutputElasticCloudBackpressureBehavior]
216
272
  r"""How to handle events when all receivers are exerting backpressure"""
217
273
  description: NotRequired[str]
274
+ pq_strict_ordering: NotRequired[bool]
275
+ r"""Use FIFO (first in, first out) processing. Disable to forward new events to receivers before queue is flushed."""
276
+ pq_rate_per_sec: NotRequired[float]
277
+ r"""Throttling rate (in events per second) to impose while writing to Destinations from PQ. Defaults to 0, which disables throttling."""
278
+ pq_mode: NotRequired[OutputElasticCloudMode]
279
+ r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
280
+ pq_max_buffer_size: NotRequired[float]
281
+ r"""The maximum number of events to hold in memory before writing the events to disk"""
282
+ pq_max_backpressure_sec: NotRequired[float]
283
+ r"""How long (in seconds) to wait for backpressure to resolve before engaging the queue"""
218
284
  pq_max_file_size: NotRequired[str]
219
285
  r"""The maximum size to store in each queue file before closing and optionally compressing (KB, MB, etc.)"""
220
286
  pq_max_size: NotRequired[str]
@@ -225,12 +291,12 @@ class OutputElasticCloudTypedDict(TypedDict):
225
291
  r"""Codec to use to compress the persisted data"""
226
292
  pq_on_backpressure: NotRequired[OutputElasticCloudQueueFullBehavior]
227
293
  r"""How to handle events when the queue is exerting backpressure (full capacity or low disk). 'Block' is the same behavior as non-PQ blocking. 'Drop new data' throws away incoming data, while leaving the contents of the PQ unchanged."""
228
- pq_mode: NotRequired[OutputElasticCloudMode]
229
- r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
230
294
  pq_controls: NotRequired[OutputElasticCloudPqControlsTypedDict]
231
295
 
232
296
 
233
297
  class OutputElasticCloud(BaseModel):
298
+ type: OutputElasticCloudType
299
+
234
300
  url: str
235
301
  r"""Enter Cloud ID of the Elastic Cloud environment to send events to"""
236
302
 
@@ -240,8 +306,6 @@ class OutputElasticCloud(BaseModel):
240
306
  id: Optional[str] = None
241
307
  r"""Unique ID for this output"""
242
308
 
243
- type: Optional[OutputElasticCloudType] = None
244
-
245
309
  pipeline: Optional[str] = None
246
310
  r"""Pipeline to process data before sending out to this output"""
247
311
 
@@ -295,7 +359,10 @@ class OutputElasticCloud(BaseModel):
295
359
  r"""Headers to add to all events"""
296
360
 
297
361
  failed_request_logging_mode: Annotated[
298
- Optional[OutputElasticCloudFailedRequestLoggingMode],
362
+ Annotated[
363
+ Optional[OutputElasticCloudFailedRequestLoggingMode],
364
+ PlainValidator(validate_open_enum(False)),
365
+ ],
299
366
  pydantic.Field(alias="failedRequestLoggingMode"),
300
367
  ] = OutputElasticCloudFailedRequestLoggingMode.NONE
301
368
  r"""Data to log when a request fails. All headers are redacted by default, unless listed as safe headers below."""
@@ -336,17 +403,48 @@ class OutputElasticCloud(BaseModel):
336
403
 
337
404
  response_honor_retry_after_header: Annotated[
338
405
  Optional[bool], pydantic.Field(alias="responseHonorRetryAfterHeader")
339
- ] = False
406
+ ] = True
340
407
  r"""Honor any Retry-After header that specifies a delay (in seconds) no longer than 180 seconds after the retry request. @{product} limits the delay to 180 seconds, even if the Retry-After header specifies a longer delay. When enabled, takes precedence over user-configured retry options. When disabled, all Retry-After headers are ignored."""
341
408
 
342
409
  on_backpressure: Annotated[
343
- Optional[OutputElasticCloudBackpressureBehavior],
410
+ Annotated[
411
+ Optional[OutputElasticCloudBackpressureBehavior],
412
+ PlainValidator(validate_open_enum(False)),
413
+ ],
344
414
  pydantic.Field(alias="onBackpressure"),
345
415
  ] = OutputElasticCloudBackpressureBehavior.BLOCK
346
416
  r"""How to handle events when all receivers are exerting backpressure"""
347
417
 
348
418
  description: Optional[str] = None
349
419
 
420
+ pq_strict_ordering: Annotated[
421
+ Optional[bool], pydantic.Field(alias="pqStrictOrdering")
422
+ ] = True
423
+ r"""Use FIFO (first in, first out) processing. Disable to forward new events to receivers before queue is flushed."""
424
+
425
+ pq_rate_per_sec: Annotated[
426
+ Optional[float], pydantic.Field(alias="pqRatePerSec")
427
+ ] = 0
428
+ r"""Throttling rate (in events per second) to impose while writing to Destinations from PQ. Defaults to 0, which disables throttling."""
429
+
430
+ pq_mode: Annotated[
431
+ Annotated[
432
+ Optional[OutputElasticCloudMode], PlainValidator(validate_open_enum(False))
433
+ ],
434
+ pydantic.Field(alias="pqMode"),
435
+ ] = OutputElasticCloudMode.ERROR
436
+ r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
437
+
438
+ pq_max_buffer_size: Annotated[
439
+ Optional[float], pydantic.Field(alias="pqMaxBufferSize")
440
+ ] = 42
441
+ r"""The maximum number of events to hold in memory before writing the events to disk"""
442
+
443
+ pq_max_backpressure_sec: Annotated[
444
+ Optional[float], pydantic.Field(alias="pqMaxBackpressureSec")
445
+ ] = 30
446
+ r"""How long (in seconds) to wait for backpressure to resolve before engaging the queue"""
447
+
350
448
  pq_max_file_size: Annotated[
351
449
  Optional[str], pydantic.Field(alias="pqMaxFileSize")
352
450
  ] = "1 MB"
@@ -361,21 +459,68 @@ class OutputElasticCloud(BaseModel):
361
459
  r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/<output-id>."""
362
460
 
363
461
  pq_compress: Annotated[
364
- Optional[OutputElasticCloudCompression], pydantic.Field(alias="pqCompress")
462
+ Annotated[
463
+ Optional[OutputElasticCloudCompression],
464
+ PlainValidator(validate_open_enum(False)),
465
+ ],
466
+ pydantic.Field(alias="pqCompress"),
365
467
  ] = OutputElasticCloudCompression.NONE
366
468
  r"""Codec to use to compress the persisted data"""
367
469
 
368
470
  pq_on_backpressure: Annotated[
369
- Optional[OutputElasticCloudQueueFullBehavior],
471
+ Annotated[
472
+ Optional[OutputElasticCloudQueueFullBehavior],
473
+ PlainValidator(validate_open_enum(False)),
474
+ ],
370
475
  pydantic.Field(alias="pqOnBackpressure"),
371
476
  ] = OutputElasticCloudQueueFullBehavior.BLOCK
372
477
  r"""How to handle events when the queue is exerting backpressure (full capacity or low disk). 'Block' is the same behavior as non-PQ blocking. 'Drop new data' throws away incoming data, while leaving the contents of the PQ unchanged."""
373
478
 
374
- pq_mode: Annotated[
375
- Optional[OutputElasticCloudMode], pydantic.Field(alias="pqMode")
376
- ] = OutputElasticCloudMode.ERROR
377
- r"""In Error mode, PQ writes events to the filesystem if the Destination is unavailable. In Backpressure mode, PQ writes events to the filesystem when it detects backpressure from the Destination. In Always On mode, PQ always writes events to the filesystem."""
378
-
379
479
  pq_controls: Annotated[
380
480
  Optional[OutputElasticCloudPqControls], pydantic.Field(alias="pqControls")
381
481
  ] = None
482
+
483
+ @field_serializer("failed_request_logging_mode")
484
+ def serialize_failed_request_logging_mode(self, value):
485
+ if isinstance(value, str):
486
+ try:
487
+ return models.OutputElasticCloudFailedRequestLoggingMode(value)
488
+ except ValueError:
489
+ return value
490
+ return value
491
+
492
+ @field_serializer("on_backpressure")
493
+ def serialize_on_backpressure(self, value):
494
+ if isinstance(value, str):
495
+ try:
496
+ return models.OutputElasticCloudBackpressureBehavior(value)
497
+ except ValueError:
498
+ return value
499
+ return value
500
+
501
+ @field_serializer("pq_mode")
502
+ def serialize_pq_mode(self, value):
503
+ if isinstance(value, str):
504
+ try:
505
+ return models.OutputElasticCloudMode(value)
506
+ except ValueError:
507
+ return value
508
+ return value
509
+
510
+ @field_serializer("pq_compress")
511
+ def serialize_pq_compress(self, value):
512
+ if isinstance(value, str):
513
+ try:
514
+ return models.OutputElasticCloudCompression(value)
515
+ except ValueError:
516
+ return value
517
+ return value
518
+
519
+ @field_serializer("pq_on_backpressure")
520
+ def serialize_pq_on_backpressure(self, value):
521
+ if isinstance(value, str):
522
+ try:
523
+ return models.OutputElasticCloudQueueFullBehavior(value)
524
+ except ValueError:
525
+ return value
526
+ return value
@@ -1,9 +1,13 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from cribl_control_plane import models, utils
4
5
  from cribl_control_plane.types import BaseModel
6
+ from cribl_control_plane.utils import validate_open_enum
5
7
  from enum import Enum
6
8
  import pydantic
9
+ from pydantic import field_serializer
10
+ from pydantic.functional_validators import PlainValidator
7
11
  from typing import List, Optional
8
12
  from typing_extensions import Annotated, NotRequired, TypedDict
9
13
 
@@ -12,48 +16,63 @@ class OutputExabeamType(str, Enum):
12
16
  EXABEAM = "exabeam"
13
17
 
14
18
 
15
- class OutputExabeamSignatureVersion(str, Enum):
19
+ class OutputExabeamSignatureVersion(str, Enum, metaclass=utils.OpenEnumMeta):
16
20
  r"""Signature version to use for signing Google Cloud Storage requests"""
17
21
 
18
22
  V2 = "v2"
19
23
  V4 = "v4"
20
24
 
21
25
 
22
- class OutputExabeamObjectACL(str, Enum):
26
+ class OutputExabeamObjectACL(str, Enum, metaclass=utils.OpenEnumMeta):
23
27
  r"""Object ACL to assign to uploaded objects"""
24
28
 
29
+ # private
25
30
  PRIVATE = "private"
31
+ # bucket-owner-read
26
32
  BUCKET_OWNER_READ = "bucket-owner-read"
33
+ # bucket-owner-full-control
27
34
  BUCKET_OWNER_FULL_CONTROL = "bucket-owner-full-control"
35
+ # project-private
28
36
  PROJECT_PRIVATE = "project-private"
37
+ # authenticated-read
29
38
  AUTHENTICATED_READ = "authenticated-read"
39
+ # public-read
30
40
  PUBLIC_READ = "public-read"
31
41
 
32
42
 
33
- class OutputExabeamStorageClass(str, Enum):
43
+ class OutputExabeamStorageClass(str, Enum, metaclass=utils.OpenEnumMeta):
34
44
  r"""Storage class to select for uploaded objects"""
35
45
 
46
+ # Standard Storage
36
47
  STANDARD = "STANDARD"
48
+ # Nearline Storage
37
49
  NEARLINE = "NEARLINE"
50
+ # Coldline Storage
38
51
  COLDLINE = "COLDLINE"
52
+ # Archive Storage
39
53
  ARCHIVE = "ARCHIVE"
40
54
 
41
55
 
42
- class OutputExabeamBackpressureBehavior(str, Enum):
56
+ class OutputExabeamBackpressureBehavior(str, Enum, metaclass=utils.OpenEnumMeta):
43
57
  r"""How to handle events when all receivers are exerting backpressure"""
44
58
 
59
+ # Block
45
60
  BLOCK = "block"
61
+ # Drop
46
62
  DROP = "drop"
47
63
 
48
64
 
49
- class OutputExabeamDiskSpaceProtection(str, Enum):
65
+ class OutputExabeamDiskSpaceProtection(str, Enum, metaclass=utils.OpenEnumMeta):
50
66
  r"""How to handle events when disk space is below the global 'Min free disk space' limit"""
51
67
 
68
+ # Block
52
69
  BLOCK = "block"
70
+ # Drop
53
71
  DROP = "drop"
54
72
 
55
73
 
56
74
  class OutputExabeamTypedDict(TypedDict):
75
+ type: OutputExabeamType
57
76
  bucket: str
58
77
  r"""Name of the destination bucket. A constant or a JavaScript expression that can only be evaluated at init time. Example of referencing a JavaScript Global Variable: `myBucket-${C.vars.myVar}`."""
59
78
  region: str
@@ -64,7 +83,6 @@ class OutputExabeamTypedDict(TypedDict):
64
83
  """
65
84
  id: NotRequired[str]
66
85
  r"""Unique ID for this output"""
67
- type: NotRequired[OutputExabeamType]
68
86
  pipeline: NotRequired[str]
69
87
  r"""Pipeline to process data before sending out to this output"""
70
88
  system_fields: NotRequired[List[str]]
@@ -119,6 +137,8 @@ class OutputExabeamTypedDict(TypedDict):
119
137
  description: NotRequired[str]
120
138
  empty_dir_cleanup_sec: NotRequired[float]
121
139
  r"""How frequently, in seconds, to clean up empty directories"""
140
+ directory_batch_size: NotRequired[float]
141
+ r"""Number of directories to process in each batch during cleanup of empty directories. Minimum is 10, maximum is 10000. Higher values may require more memory."""
122
142
  deadletter_path: NotRequired[str]
123
143
  r"""Storage location for files that fail to reach their final destination after maximum retries are exceeded"""
124
144
  max_retry_num: NotRequired[float]
@@ -126,6 +146,8 @@ class OutputExabeamTypedDict(TypedDict):
126
146
 
127
147
 
128
148
  class OutputExabeam(BaseModel):
149
+ type: OutputExabeamType
150
+
129
151
  bucket: str
130
152
  r"""Name of the destination bucket. A constant or a JavaScript expression that can only be evaluated at init time. Example of referencing a JavaScript Global Variable: `myBucket-${C.vars.myVar}`."""
131
153
 
@@ -140,8 +162,6 @@ class OutputExabeam(BaseModel):
140
162
  id: Optional[str] = None
141
163
  r"""Unique ID for this output"""
142
164
 
143
- type: Optional[OutputExabeamType] = None
144
-
145
165
  pipeline: Optional[str] = None
146
166
  r"""Pipeline to process data before sending out to this output"""
147
167
 
@@ -165,18 +185,28 @@ class OutputExabeam(BaseModel):
165
185
  r"""Google Cloud Storage service endpoint"""
166
186
 
167
187
  signature_version: Annotated[
168
- Optional[OutputExabeamSignatureVersion],
188
+ Annotated[
189
+ Optional[OutputExabeamSignatureVersion],
190
+ PlainValidator(validate_open_enum(False)),
191
+ ],
169
192
  pydantic.Field(alias="signatureVersion"),
170
193
  ] = OutputExabeamSignatureVersion.V4
171
194
  r"""Signature version to use for signing Google Cloud Storage requests"""
172
195
 
173
196
  object_acl: Annotated[
174
- Optional[OutputExabeamObjectACL], pydantic.Field(alias="objectACL")
197
+ Annotated[
198
+ Optional[OutputExabeamObjectACL], PlainValidator(validate_open_enum(False))
199
+ ],
200
+ pydantic.Field(alias="objectACL"),
175
201
  ] = OutputExabeamObjectACL.PRIVATE
176
202
  r"""Object ACL to assign to uploaded objects"""
177
203
 
178
204
  storage_class: Annotated[
179
- Optional[OutputExabeamStorageClass], pydantic.Field(alias="storageClass")
205
+ Annotated[
206
+ Optional[OutputExabeamStorageClass],
207
+ PlainValidator(validate_open_enum(False)),
208
+ ],
209
+ pydantic.Field(alias="storageClass"),
180
210
  ] = None
181
211
  r"""Storage class to select for uploaded objects"""
182
212
 
@@ -216,7 +246,10 @@ class OutputExabeam(BaseModel):
216
246
  r"""Maximum number of files to keep open concurrently. When exceeded, @{product} will close the oldest open files and move them to the final output location."""
217
247
 
218
248
  on_backpressure: Annotated[
219
- Optional[OutputExabeamBackpressureBehavior],
249
+ Annotated[
250
+ Optional[OutputExabeamBackpressureBehavior],
251
+ PlainValidator(validate_open_enum(False)),
252
+ ],
220
253
  pydantic.Field(alias="onBackpressure"),
221
254
  ] = OutputExabeamBackpressureBehavior.BLOCK
222
255
  r"""How to handle events when all receivers are exerting backpressure"""
@@ -227,7 +260,10 @@ class OutputExabeam(BaseModel):
227
260
  r"""If a file fails to move to its final destination after the maximum number of retries, move it to a designated directory to prevent further errors"""
228
261
 
229
262
  on_disk_full_backpressure: Annotated[
230
- Optional[OutputExabeamDiskSpaceProtection],
263
+ Annotated[
264
+ Optional[OutputExabeamDiskSpaceProtection],
265
+ PlainValidator(validate_open_enum(False)),
266
+ ],
231
267
  pydantic.Field(alias="onDiskFullBackpressure"),
232
268
  ] = OutputExabeamDiskSpaceProtection.BLOCK
233
269
  r"""How to handle events when disk space is below the global 'Min free disk space' limit"""
@@ -267,6 +303,11 @@ class OutputExabeam(BaseModel):
267
303
  ] = 300
268
304
  r"""How frequently, in seconds, to clean up empty directories"""
269
305
 
306
+ directory_batch_size: Annotated[
307
+ Optional[float], pydantic.Field(alias="directoryBatchSize")
308
+ ] = 1000
309
+ r"""Number of directories to process in each batch during cleanup of empty directories. Minimum is 10, maximum is 10000. Higher values may require more memory."""
310
+
270
311
  deadletter_path: Annotated[
271
312
  Optional[str], pydantic.Field(alias="deadletterPath")
272
313
  ] = "$CRIBL_HOME/state/outputs/dead-letter"
@@ -274,3 +315,48 @@ class OutputExabeam(BaseModel):
274
315
 
275
316
  max_retry_num: Annotated[Optional[float], pydantic.Field(alias="maxRetryNum")] = 20
276
317
  r"""The maximum number of times a file will attempt to move to its final destination before being dead-lettered"""
318
+
319
+ @field_serializer("signature_version")
320
+ def serialize_signature_version(self, value):
321
+ if isinstance(value, str):
322
+ try:
323
+ return models.OutputExabeamSignatureVersion(value)
324
+ except ValueError:
325
+ return value
326
+ return value
327
+
328
+ @field_serializer("object_acl")
329
+ def serialize_object_acl(self, value):
330
+ if isinstance(value, str):
331
+ try:
332
+ return models.OutputExabeamObjectACL(value)
333
+ except ValueError:
334
+ return value
335
+ return value
336
+
337
+ @field_serializer("storage_class")
338
+ def serialize_storage_class(self, value):
339
+ if isinstance(value, str):
340
+ try:
341
+ return models.OutputExabeamStorageClass(value)
342
+ except ValueError:
343
+ return value
344
+ return value
345
+
346
+ @field_serializer("on_backpressure")
347
+ def serialize_on_backpressure(self, value):
348
+ if isinstance(value, str):
349
+ try:
350
+ return models.OutputExabeamBackpressureBehavior(value)
351
+ except ValueError:
352
+ return value
353
+ return value
354
+
355
+ @field_serializer("on_disk_full_backpressure")
356
+ def serialize_on_disk_full_backpressure(self, value):
357
+ if isinstance(value, str):
358
+ try:
359
+ return models.OutputExabeamDiskSpaceProtection(value)
360
+ except ValueError:
361
+ return value
362
+ return value