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,5 +1,6 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
1
3
  import hashlib
2
- import os
3
4
  import httpx
4
5
  import time
5
6
  from .types import (
@@ -20,26 +21,35 @@ class Credentials:
20
21
  client_id: str
21
22
  client_secret: str
22
23
  token_url: str
23
- audience: str
24
+ scopes: Optional[List[str]]
25
+ additional_properties: Dict[str, str]
24
26
 
25
- def __init__(self, client_id: str, client_secret: str, token_url: str):
27
+ def __init__(
28
+ self,
29
+ client_id: str,
30
+ client_secret: str,
31
+ token_url: str,
32
+ scopes: Optional[List[str]],
33
+ additional_properties: Optional[Dict[str, str]] = None,
34
+ ):
26
35
  self.client_id = client_id
27
36
  self.client_secret = client_secret
28
37
  self.token_url = token_url
29
- self.audience = os.getenv("CRIBLCONTROLPLANE_AUDIENCE", "https://api.cribl.cloud") # Set default audience here
38
+ self.scopes = scopes
39
+ self.additional_properties = additional_properties or {}
30
40
 
31
41
 
32
42
  class Session:
33
43
  credentials: Credentials
34
44
  token: str
35
- scopes: Optional[List[str]] = None
45
+ scopes: List[str]
36
46
  expires_at: Optional[int] = None
37
47
 
38
48
  def __init__(
39
49
  self,
40
50
  credentials: Credentials,
41
51
  token: str,
42
- scopes: Optional[List[str]] = None,
52
+ scopes: List[str],
43
53
  expires_at: Optional[int] = None,
44
54
  ):
45
55
  self.credentials = credentials
@@ -50,7 +60,7 @@ class Session:
50
60
 
51
61
  class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
52
62
  client: HttpClient
53
- sessions: Dict[str, Session] = {}
63
+ sessions: Dict[str, Dict[str, Session]] = {}
54
64
 
55
65
  def sdk_init(self, config: SDKConfiguration) -> SDKConfiguration:
56
66
  if config.client is None:
@@ -62,8 +72,7 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
62
72
  def before_request(
63
73
  self, hook_ctx: BeforeRequestContext, request: httpx.Request
64
74
  ) -> httpx.Request:
65
- if hook_ctx.oauth2_scopes is None:
66
- # OAuth2 not in use
75
+ if self.is_hook_disabled(hook_ctx):
67
76
  return request
68
77
 
69
78
  credentials = self.get_credentials(hook_ctx)
@@ -74,22 +83,24 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
74
83
  credentials.client_id, credentials.client_secret
75
84
  )
76
85
 
77
- if (
78
- session_key not in self.sessions
79
- or not self.has_required_scopes(
80
- self.sessions[session_key].scopes, hook_ctx.oauth2_scopes
81
- )
82
- or self.has_token_expired(self.sessions[session_key].expires_at)
83
- ):
84
- sess = self.do_token_request(
86
+ scopes = self.get_required_scopes(credentials, hook_ctx)
87
+ session = self.get_existing_session(session_key, scopes)
88
+
89
+ if session is None:
90
+ # Create new session
91
+ session = self.do_token_request(
85
92
  hook_ctx,
86
93
  credentials,
87
- self.get_scopes(hook_ctx.oauth2_scopes, self.sessions.get(session_key)),
94
+ scopes,
88
95
  )
89
96
 
90
- self.sessions[session_key] = sess
97
+ if session_key not in self.sessions:
98
+ self.sessions[session_key] = {}
99
+
100
+ scope_key = self.get_scope_key(scopes)
101
+ self.sessions[session_key][scope_key] = session
91
102
 
92
- request.headers["Authorization"] = f"Bearer {self.sessions[session_key].token}"
103
+ request.headers["Authorization"] = f"Bearer {session.token}"
93
104
 
94
105
  return request
95
106
 
@@ -99,8 +110,7 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
99
110
  response: Optional[httpx.Response],
100
111
  error: Optional[Exception],
101
112
  ) -> Union[Tuple[Optional[httpx.Response], Optional[Exception]], Exception]:
102
- if hook_ctx.oauth2_scopes is None:
103
- # OAuth2 not in use
113
+ if self.is_hook_disabled(hook_ctx):
104
114
  return (response, error)
105
115
 
106
116
  # We don't want to refresh the token if the error is not related to the token
@@ -115,12 +125,15 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
115
125
  session_key = self.get_session_key(
116
126
  credentials.client_id, credentials.client_secret
117
127
  )
118
-
119
- if session_key in self.sessions:
120
- del self.sessions[session_key]
128
+ scopes = self.get_required_scopes(credentials, hook_ctx)
129
+ scope_key = self.get_scope_key(scopes)
130
+ self.remove_session(session_key, scope_key)
121
131
 
122
132
  return (response, error)
123
133
 
134
+ def is_hook_disabled(self, hook_ctx: HookContext) -> bool:
135
+ return hook_ctx.oauth2_scopes is None
136
+
124
137
  def get_credentials(self, hook_ctx: HookContext) -> Optional[Credentials]:
125
138
  source = hook_ctx.security_source
126
139
 
@@ -135,17 +148,22 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
135
148
  if security is None or security.client_oauth is None:
136
149
  return None
137
150
 
151
+ # Extract additional properties from security object
152
+ additional_properties = {}
153
+ for key, value in dict(security.client_oauth).items():
154
+ if key not in ["client_id", "client_secret", "token_url", "scopes"]:
155
+ additional_properties[key] = value
156
+
138
157
  return Credentials(
139
158
  client_id=security.client_oauth.client_id,
140
159
  client_secret=security.client_oauth.client_secret,
141
160
  token_url=security.client_oauth.token_url,
161
+ scopes=None,
162
+ additional_properties=additional_properties,
142
163
  )
143
164
 
144
165
  def do_token_request(
145
- self,
146
- hook_ctx: HookContext,
147
- credentials: Credentials,
148
- scopes: Optional[List[str]],
166
+ self, hook_ctx: HookContext, credentials: Credentials, scopes: List[str]
149
167
  ) -> Session:
150
168
  payload = {
151
169
  "grant_type": "client_credentials",
@@ -153,12 +171,13 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
153
171
  "client_secret": credentials.client_secret,
154
172
  }
155
173
 
156
- if credentials.audience is not None:
157
- payload["audience"] = credentials.audience
158
-
159
- if scopes is not None and len(scopes) > 0:
174
+ if len(scopes) > 0:
160
175
  payload["scope"] = " ".join(scopes)
161
176
 
177
+ # Add additional properties to payload
178
+ for key, value in credentials.additional_properties.items():
179
+ payload[key] = value
180
+
162
181
  token_url = credentials.token_url
163
182
  if not bool(urlparse(credentials.token_url).netloc):
164
183
  token_url = urljoin(hook_ctx.base_url, credentials.token_url)
@@ -173,7 +192,7 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
173
192
 
174
193
  response_data = response.json()
175
194
 
176
- if response_data.get("token_type") != "Bearer":
195
+ if response_data.get("token_type", "").lower() != "bearer":
177
196
  raise Exception("Unexpected token type from token endpoint")
178
197
 
179
198
  expires_at = None
@@ -188,24 +207,70 @@ class ClientCredentialsHook(SDKInitHook, BeforeRequestHook, AfterErrorHook):
188
207
  )
189
208
 
190
209
  def get_session_key(self, client_id: str, client_secret: str) -> str:
210
+ """Generate a consistent session key for the given client ID and secret."""
191
211
  return hashlib.md5(f"{client_id}:{client_secret}".encode()).hexdigest()
192
212
 
213
+ def get_required_scopes(
214
+ self, credentials: Credentials, hook_ctx: HookContext
215
+ ) -> List[str]:
216
+ """Return the list of scopes that need to be requested."""
217
+ if credentials.scopes is not None:
218
+ return credentials.scopes
219
+ return hook_ctx.oauth2_scopes or []
220
+
221
+ def get_scope_key(self, scopes: List[str]) -> str:
222
+ """Generate a consistent scope key for the given scopes."""
223
+ if not scopes:
224
+ return ""
225
+
226
+ sorted_scopes = sorted(scopes)
227
+ return "&".join(sorted_scopes)
228
+
229
+ def remove_session(self, client_key: str, scope_key: str) -> None:
230
+ """Remove a session and clean up empty client session maps."""
231
+ if client_key in self.sessions and scope_key in self.sessions[client_key]:
232
+ del self.sessions[client_key][scope_key]
233
+
234
+ # Clean up empty client sessions
235
+ if not self.sessions[client_key]:
236
+ del self.sessions[client_key]
237
+
238
+ def get_existing_session(
239
+ self, client_key: str, required_scopes: List[str]
240
+ ) -> Optional[Session]:
241
+ """Find the best session for the required scopes."""
242
+ if client_key not in self.sessions:
243
+ return None
244
+
245
+ client_sessions = self.sessions[client_key]
246
+ scope_key = self.get_scope_key(required_scopes)
247
+
248
+ if scope_key in client_sessions:
249
+ exact_match = client_sessions[scope_key]
250
+ if self.has_token_expired(exact_match.expires_at):
251
+ self.remove_session(client_key, scope_key)
252
+ else:
253
+ return exact_match
254
+
255
+ # If no exact match was found, look for a superset match
256
+ for key, session in client_sessions.items():
257
+ if self.has_token_expired(session.expires_at):
258
+ self.remove_session(client_key, key)
259
+ elif self.has_required_scopes(session.scopes, required_scopes):
260
+ return session
261
+
262
+ return None
263
+
193
264
  def has_required_scopes(
194
- self, scopes: Optional[List[str]], required_scopes: List[str]
265
+ self, scopes: List[str], required_scopes: List[str]
195
266
  ) -> bool:
196
- if scopes is None:
197
- return False
198
-
267
+ """Check if all required scopes are present in the given scopes."""
199
268
  return all(scope in scopes for scope in required_scopes)
200
269
 
201
- def get_scopes(
202
- self, required_scopes: List[str], sess: Optional[Session]
203
- ) -> List[str]:
204
- scopes = required_scopes.copy()
205
- if sess is not None and sess.scopes is not None:
206
- scopes.extend(sess.scopes)
207
- scopes = list(set(scopes))
208
- return scopes
209
-
210
270
  def has_token_expired(self, expires_at: Optional[int]) -> bool:
211
- return expires_at is None or time.time() + 60 >= expires_at
271
+ """
272
+ Check if the token has expired.
273
+ If no expires_in field was returned by the authorization server, the token is considered to never expire.
274
+ A 60-second buffer is applied to refresh tokens before they actually expire.
275
+ """
276
+ return expires_at is not None and time.time() + 60 >= expires_at
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "cribl-control-plane"
6
- __version__: str = "0.0.21"
7
- __openapi_doc_version__: str = "4.14.0-alpha.1754075358312-9b381cdf"
8
- __gen_version__: str = "2.660.0"
9
- __user_agent__: str = "speakeasy-sdk/python 0.0.21 2.660.0 4.14.0-alpha.1754075358312-9b381cdf cribl-control-plane"
6
+ __version__: str = "0.4.0b23"
7
+ __openapi_doc_version__: str = "4.16.0-alpha.1765487092497-ed578836"
8
+ __gen_version__: str = "2.778.0"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.4.0b23 2.778.0 4.16.0-alpha.1765487092497-ed578836 cribl-control-plane"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -0,0 +1,225 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from .basesdk import BaseSDK
4
+ from .sdkconfiguration import SDKConfiguration
5
+ from cribl_control_plane import errors, models, utils
6
+ from cribl_control_plane._hooks import HookContext
7
+ from cribl_control_plane.teams import Teams
8
+ from cribl_control_plane.types import OptionalNullable, UNSET
9
+ from cribl_control_plane.utils import get_security_from_env
10
+ from cribl_control_plane.utils.unmarshal_json_response import unmarshal_json_response
11
+ from typing import Any, Mapping, Optional
12
+
13
+
14
+ class ACL(BaseSDK):
15
+ teams: Teams
16
+
17
+ def __init__(
18
+ self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
19
+ ) -> None:
20
+ BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
21
+ self.sdk_configuration = sdk_config
22
+ self._init_sdks()
23
+
24
+ def _init_sdks(self):
25
+ self.teams = Teams(self.sdk_configuration, parent_ref=self.parent_ref)
26
+
27
+ def get(
28
+ self,
29
+ *,
30
+ product: models.ProductsCore,
31
+ id: str,
32
+ type_: Optional[models.RbacResource] = None,
33
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
34
+ server_url: Optional[str] = None,
35
+ timeout_ms: Optional[int] = None,
36
+ http_headers: Optional[Mapping[str, str]] = None,
37
+ ) -> models.CountedUserAccessControlList:
38
+ r"""Get the Access Control List for a Worker Group or Edge Fleet
39
+
40
+ Get the Access Control List (ACL) for the specified Worker Group or Edge Fleet.
41
+
42
+ :param product: Name of the Cribl product to get the Worker Groups or Edge Fleets for.
43
+ :param id: The <code>id</code> of the Worker Group or Edge Fleet to get the ACL for.
44
+ :param type: Filter for limiting the response to ACL entries for the specified RBAC resource type.
45
+ :param retries: Override the default retry configuration for this method
46
+ :param server_url: Override the default server URL for this method
47
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
48
+ :param http_headers: Additional headers to set or replace on requests.
49
+ """
50
+ base_url = None
51
+ url_variables = None
52
+ if timeout_ms is None:
53
+ timeout_ms = self.sdk_configuration.timeout_ms
54
+
55
+ if server_url is not None:
56
+ base_url = server_url
57
+ else:
58
+ base_url = self._get_url(base_url, url_variables)
59
+
60
+ request = models.GetConfigGroupACLByProductAndIDRequest(
61
+ product=product,
62
+ id=id,
63
+ type=type_,
64
+ )
65
+
66
+ req = self._build_request(
67
+ method="GET",
68
+ path="/products/{product}/groups/{id}/acl",
69
+ base_url=base_url,
70
+ url_variables=url_variables,
71
+ request=request,
72
+ request_body_required=False,
73
+ request_has_path_params=True,
74
+ request_has_query_params=True,
75
+ user_agent_header="user-agent",
76
+ accept_header_value="application/json",
77
+ http_headers=http_headers,
78
+ security=self.sdk_configuration.security,
79
+ allow_empty_value=None,
80
+ timeout_ms=timeout_ms,
81
+ )
82
+
83
+ if retries == UNSET:
84
+ if self.sdk_configuration.retry_config is not UNSET:
85
+ retries = self.sdk_configuration.retry_config
86
+ else:
87
+ retries = utils.RetryConfig(
88
+ "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
89
+ )
90
+
91
+ retry_config = None
92
+ if isinstance(retries, utils.RetryConfig):
93
+ retry_config = (retries, ["429"])
94
+
95
+ http_res = self.do_request(
96
+ hook_ctx=HookContext(
97
+ config=self.sdk_configuration,
98
+ base_url=base_url or "",
99
+ operation_id="getConfigGroupAclByProductAndId",
100
+ oauth2_scopes=[],
101
+ security_source=get_security_from_env(
102
+ self.sdk_configuration.security, models.Security
103
+ ),
104
+ ),
105
+ request=req,
106
+ error_status_codes=["401", "4XX", "500", "5XX"],
107
+ retry_config=retry_config,
108
+ )
109
+
110
+ response_data: Any = None
111
+ if utils.match_response(http_res, "200", "application/json"):
112
+ return unmarshal_json_response(
113
+ models.CountedUserAccessControlList, http_res
114
+ )
115
+ if utils.match_response(http_res, "500", "application/json"):
116
+ response_data = unmarshal_json_response(errors.ErrorData, http_res)
117
+ raise errors.Error(response_data, http_res)
118
+ if utils.match_response(http_res, ["401", "4XX"], "*"):
119
+ http_res_text = utils.stream_to_text(http_res)
120
+ raise errors.APIError("API error occurred", http_res, http_res_text)
121
+ if utils.match_response(http_res, "5XX", "*"):
122
+ http_res_text = utils.stream_to_text(http_res)
123
+ raise errors.APIError("API error occurred", http_res, http_res_text)
124
+
125
+ raise errors.APIError("Unexpected response received", http_res)
126
+
127
+ async def get_async(
128
+ self,
129
+ *,
130
+ product: models.ProductsCore,
131
+ id: str,
132
+ type_: Optional[models.RbacResource] = None,
133
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
134
+ server_url: Optional[str] = None,
135
+ timeout_ms: Optional[int] = None,
136
+ http_headers: Optional[Mapping[str, str]] = None,
137
+ ) -> models.CountedUserAccessControlList:
138
+ r"""Get the Access Control List for a Worker Group or Edge Fleet
139
+
140
+ Get the Access Control List (ACL) for the specified Worker Group or Edge Fleet.
141
+
142
+ :param product: Name of the Cribl product to get the Worker Groups or Edge Fleets for.
143
+ :param id: The <code>id</code> of the Worker Group or Edge Fleet to get the ACL for.
144
+ :param type: Filter for limiting the response to ACL entries for the specified RBAC resource type.
145
+ :param retries: Override the default retry configuration for this method
146
+ :param server_url: Override the default server URL for this method
147
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
148
+ :param http_headers: Additional headers to set or replace on requests.
149
+ """
150
+ base_url = None
151
+ url_variables = None
152
+ if timeout_ms is None:
153
+ timeout_ms = self.sdk_configuration.timeout_ms
154
+
155
+ if server_url is not None:
156
+ base_url = server_url
157
+ else:
158
+ base_url = self._get_url(base_url, url_variables)
159
+
160
+ request = models.GetConfigGroupACLByProductAndIDRequest(
161
+ product=product,
162
+ id=id,
163
+ type=type_,
164
+ )
165
+
166
+ req = self._build_request_async(
167
+ method="GET",
168
+ path="/products/{product}/groups/{id}/acl",
169
+ base_url=base_url,
170
+ url_variables=url_variables,
171
+ request=request,
172
+ request_body_required=False,
173
+ request_has_path_params=True,
174
+ request_has_query_params=True,
175
+ user_agent_header="user-agent",
176
+ accept_header_value="application/json",
177
+ http_headers=http_headers,
178
+ security=self.sdk_configuration.security,
179
+ allow_empty_value=None,
180
+ timeout_ms=timeout_ms,
181
+ )
182
+
183
+ if retries == UNSET:
184
+ if self.sdk_configuration.retry_config is not UNSET:
185
+ retries = self.sdk_configuration.retry_config
186
+ else:
187
+ retries = utils.RetryConfig(
188
+ "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True
189
+ )
190
+
191
+ retry_config = None
192
+ if isinstance(retries, utils.RetryConfig):
193
+ retry_config = (retries, ["429"])
194
+
195
+ http_res = await self.do_request_async(
196
+ hook_ctx=HookContext(
197
+ config=self.sdk_configuration,
198
+ base_url=base_url or "",
199
+ operation_id="getConfigGroupAclByProductAndId",
200
+ oauth2_scopes=[],
201
+ security_source=get_security_from_env(
202
+ self.sdk_configuration.security, models.Security
203
+ ),
204
+ ),
205
+ request=req,
206
+ error_status_codes=["401", "4XX", "500", "5XX"],
207
+ retry_config=retry_config,
208
+ )
209
+
210
+ response_data: Any = None
211
+ if utils.match_response(http_res, "200", "application/json"):
212
+ return unmarshal_json_response(
213
+ models.CountedUserAccessControlList, http_res
214
+ )
215
+ if utils.match_response(http_res, "500", "application/json"):
216
+ response_data = unmarshal_json_response(errors.ErrorData, http_res)
217
+ raise errors.Error(response_data, http_res)
218
+ if utils.match_response(http_res, ["401", "4XX"], "*"):
219
+ http_res_text = await utils.stream_to_text_async(http_res)
220
+ raise errors.APIError("API error occurred", http_res, http_res_text)
221
+ if utils.match_response(http_res, "5XX", "*"):
222
+ http_res_text = await utils.stream_to_text_async(http_res)
223
+ raise errors.APIError("API error occurred", http_res, http_res_text)
224
+
225
+ raise errors.APIError("Unexpected response received", http_res)