openmetadata-ingestion 1.9.5.0__py3-none-any.whl → 1.9.7.0__py3-none-any.whl

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

Potentially problematic release.


This version of openmetadata-ingestion might be problematic. Click here for more details.

Files changed (790) hide show
  1. metadata/generated/schema/analytics/__init__.py +1 -1
  2. metadata/generated/schema/analytics/basic.py +1 -1
  3. metadata/generated/schema/analytics/reportData.py +1 -1
  4. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  5. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  6. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  7. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  8. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  9. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  10. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  11. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  12. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  13. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  14. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  15. metadata/generated/schema/api/__init__.py +1 -1
  16. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  17. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
  18. metadata/generated/schema/api/analytics/__init__.py +1 -1
  19. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  20. metadata/generated/schema/api/automations/__init__.py +1 -1
  21. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  22. metadata/generated/schema/api/bulkAssets.py +1 -1
  23. metadata/generated/schema/api/classification/__init__.py +1 -1
  24. metadata/generated/schema/api/classification/createClassification.py +1 -1
  25. metadata/generated/schema/api/classification/createTag.py +1 -1
  26. metadata/generated/schema/api/classification/loadTags.py +1 -1
  27. metadata/generated/schema/api/createBot.py +1 -1
  28. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  29. metadata/generated/schema/api/createType.py +1 -1
  30. metadata/generated/schema/api/data/__init__.py +1 -1
  31. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  32. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  33. metadata/generated/schema/api/data/createChart.py +1 -1
  34. metadata/generated/schema/api/data/createContainer.py +1 -1
  35. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  36. metadata/generated/schema/api/data/createDashboard.py +1 -1
  37. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  38. metadata/generated/schema/api/data/createDataContract.py +1 -1
  39. metadata/generated/schema/api/data/createDatabase.py +1 -1
  40. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  41. metadata/generated/schema/api/data/createDirectory.py +1 -1
  42. metadata/generated/schema/api/data/createFile.py +1 -1
  43. metadata/generated/schema/api/data/createGlossary.py +1 -1
  44. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  45. metadata/generated/schema/api/data/createMetric.py +1 -1
  46. metadata/generated/schema/api/data/createMlModel.py +1 -1
  47. metadata/generated/schema/api/data/createPipeline.py +1 -1
  48. metadata/generated/schema/api/data/createQuery.py +1 -1
  49. metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
  50. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  51. metadata/generated/schema/api/data/createSpreadsheet.py +1 -1
  52. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  53. metadata/generated/schema/api/data/createTable.py +1 -1
  54. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  55. metadata/generated/schema/api/data/createTopic.py +1 -1
  56. metadata/generated/schema/api/data/createWorksheet.py +1 -1
  57. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  58. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  59. metadata/generated/schema/api/data/updateColumn.py +1 -1
  60. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  61. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  62. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  63. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  64. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  65. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  66. metadata/generated/schema/api/docStore/__init__.py +1 -1
  67. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  68. metadata/generated/schema/api/domains/__init__.py +1 -1
  69. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  70. metadata/generated/schema/api/domains/createDomain.py +1 -1
  71. metadata/generated/schema/api/entityRelationship/__init__.py +1 -1
  72. metadata/generated/schema/api/entityRelationship/entityRelationshipDirection.py +1 -1
  73. metadata/generated/schema/api/entityRelationship/esEntityRelationshipData.py +1 -1
  74. metadata/generated/schema/api/entityRelationship/relationshipRef.py +1 -1
  75. metadata/generated/schema/api/entityRelationship/searchEntityRelationshipRequest.py +1 -1
  76. metadata/generated/schema/api/entityRelationship/searchEntityRelationshipResult.py +1 -1
  77. metadata/generated/schema/api/entityRelationship/searchSchemaEntityRelationshipResult.py +1 -1
  78. metadata/generated/schema/api/feed/__init__.py +1 -1
  79. metadata/generated/schema/api/feed/closeTask.py +1 -1
  80. metadata/generated/schema/api/feed/createPost.py +1 -1
  81. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  82. metadata/generated/schema/api/feed/createThread.py +1 -1
  83. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  84. metadata/generated/schema/api/feed/threadCount.py +1 -1
  85. metadata/generated/schema/api/governance/__init__.py +1 -1
  86. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  87. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  88. metadata/generated/schema/api/lineage/__init__.py +1 -1
  89. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  90. metadata/generated/schema/api/lineage/esLineageData.py +1 -1
  91. metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
  92. metadata/generated/schema/api/lineage/nodeInformation.py +1 -1
  93. metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
  94. metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
  95. metadata/generated/schema/api/mcp/__init__.py +1 -1
  96. metadata/generated/schema/api/mcp/mcpSearchResponse.py +1 -1
  97. metadata/generated/schema/api/mcp/mcpToolDefinition.py +1 -1
  98. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  99. metadata/generated/schema/api/policies/__init__.py +1 -1
  100. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  101. metadata/generated/schema/api/scim/__init__.py +1 -1
  102. metadata/generated/schema/api/scim/scimGroup.py +1 -1
  103. metadata/generated/schema/api/scim/scimPatchOp.py +1 -1
  104. metadata/generated/schema/api/scim/scimUser.py +1 -1
  105. metadata/generated/schema/api/search/__init__.py +1 -1
  106. metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
  107. metadata/generated/schema/api/services/__init__.py +1 -1
  108. metadata/generated/schema/api/services/createApiService.py +1 -1
  109. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  110. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  111. metadata/generated/schema/api/services/createDriveService.py +1 -1
  112. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  113. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  114. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  115. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  116. metadata/generated/schema/api/services/createSearchService.py +1 -1
  117. metadata/generated/schema/api/services/createSecurityService.py +1 -1
  118. metadata/generated/schema/api/services/createStorageService.py +1 -1
  119. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  120. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  121. metadata/generated/schema/api/setOwner.py +1 -1
  122. metadata/generated/schema/api/teams/__init__.py +1 -1
  123. metadata/generated/schema/api/teams/createPersona.py +1 -1
  124. metadata/generated/schema/api/teams/createRole.py +1 -1
  125. metadata/generated/schema/api/teams/createTeam.py +1 -1
  126. metadata/generated/schema/api/teams/createUser.py +1 -1
  127. metadata/generated/schema/api/tests/__init__.py +1 -1
  128. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  129. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  130. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  131. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  132. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  133. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  134. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  135. metadata/generated/schema/api/tests/moveGlossaryTermRequest.py +1 -1
  136. metadata/generated/schema/api/validateGlossaryTagsRequest.py +1 -1
  137. metadata/generated/schema/api/voteRequest.py +1 -1
  138. metadata/generated/schema/auth/__init__.py +1 -1
  139. metadata/generated/schema/auth/basicAuth.py +1 -1
  140. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  141. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  142. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  143. metadata/generated/schema/auth/emailRequest.py +1 -1
  144. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  145. metadata/generated/schema/auth/generateToken.py +1 -1
  146. metadata/generated/schema/auth/jwtAuth.py +1 -1
  147. metadata/generated/schema/auth/loginRequest.py +1 -1
  148. metadata/generated/schema/auth/logoutRequest.py +1 -1
  149. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  150. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  151. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  152. metadata/generated/schema/auth/refreshToken.py +1 -1
  153. metadata/generated/schema/auth/registrationRequest.py +1 -1
  154. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  155. metadata/generated/schema/auth/revokeToken.py +1 -1
  156. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  157. metadata/generated/schema/auth/ssoAuth.py +1 -1
  158. metadata/generated/schema/auth/supportToken.py +1 -1
  159. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  160. metadata/generated/schema/configuration/__init__.py +1 -1
  161. metadata/generated/schema/configuration/aiPlatformConfiguration.py +1 -1
  162. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  163. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  164. metadata/generated/schema/configuration/authConfig.py +1 -1
  165. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  166. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  167. metadata/generated/schema/configuration/cacheConfiguration.py +1 -1
  168. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  169. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  170. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  171. metadata/generated/schema/configuration/entityRulesSettings.py +1 -1
  172. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  173. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  174. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  175. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  176. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  177. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  178. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  179. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  180. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  181. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  182. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  183. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  184. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  185. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  186. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  187. metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +1 -1
  188. metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
  189. metadata/generated/schema/configuration/opsConfig.py +1 -1
  190. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  191. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  192. metadata/generated/schema/configuration/searchSettings.py +1 -1
  193. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  194. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  195. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  196. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  197. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  198. metadata/generated/schema/configuration/workflowSettings.py +1 -1
  199. metadata/generated/schema/dataInsight/__init__.py +1 -1
  200. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  201. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  202. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  203. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  204. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  205. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  206. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  207. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  208. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  209. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  210. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  211. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  212. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  213. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  214. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  215. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  216. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  217. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  218. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  219. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  220. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  221. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  222. metadata/generated/schema/email/__init__.py +1 -1
  223. metadata/generated/schema/email/emailRequest.py +1 -1
  224. metadata/generated/schema/email/emailTemplate.py +1 -1
  225. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  226. metadata/generated/schema/email/smtpSettings.py +1 -1
  227. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  228. metadata/generated/schema/entity/__init__.py +1 -1
  229. metadata/generated/schema/entity/applications/__init__.py +1 -1
  230. metadata/generated/schema/entity/applications/app.py +1 -1
  231. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  232. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  233. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  234. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  235. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  236. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  237. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  238. metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
  239. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  240. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  241. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  242. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +7 -2
  243. metadata/generated/schema/entity/applications/configuration/external/automator/addTermsAction.py +48 -0
  244. metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
  245. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  246. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  247. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  248. metadata/generated/schema/entity/applications/configuration/external/automator/propagationStopConfig.py +1 -1
  249. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  250. metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
  251. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  253. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  254. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +6 -2
  255. metadata/generated/schema/entity/applications/configuration/external/automator/removeTermsAction.py +59 -0
  256. metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +7 -1
  259. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  262. metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
  263. metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
  264. metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
  265. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  266. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  267. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
  268. metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
  269. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  270. metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
  271. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  272. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  273. metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
  274. metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
  275. metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
  276. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  277. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  278. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  279. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  280. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  281. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  282. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  283. metadata/generated/schema/entity/automations/__init__.py +1 -1
  284. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  285. metadata/generated/schema/entity/automations/workflow.py +1 -1
  286. metadata/generated/schema/entity/bot.py +1 -1
  287. metadata/generated/schema/entity/classification/__init__.py +1 -1
  288. metadata/generated/schema/entity/classification/classification.py +1 -1
  289. metadata/generated/schema/entity/classification/tag.py +1 -1
  290. metadata/generated/schema/entity/data/__init__.py +1 -1
  291. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  292. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  293. metadata/generated/schema/entity/data/chart.py +1 -1
  294. metadata/generated/schema/entity/data/container.py +1 -1
  295. metadata/generated/schema/entity/data/dashboard.py +1 -1
  296. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  297. metadata/generated/schema/entity/data/dataContract.py +1 -1
  298. metadata/generated/schema/entity/data/database.py +1 -1
  299. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  300. metadata/generated/schema/entity/data/directory.py +1 -1
  301. metadata/generated/schema/entity/data/file.py +1 -1
  302. metadata/generated/schema/entity/data/glossary.py +1 -1
  303. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  304. metadata/generated/schema/entity/data/metric.py +1 -1
  305. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  306. metadata/generated/schema/entity/data/pipeline.py +1 -1
  307. metadata/generated/schema/entity/data/query.py +1 -1
  308. metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
  309. metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
  310. metadata/generated/schema/entity/data/report.py +1 -1
  311. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  312. metadata/generated/schema/entity/data/spreadsheet.py +1 -1
  313. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  314. metadata/generated/schema/entity/data/table.py +1 -1
  315. metadata/generated/schema/entity/data/topic.py +1 -1
  316. metadata/generated/schema/entity/data/worksheet.py +1 -1
  317. metadata/generated/schema/entity/datacontract/__init__.py +1 -1
  318. metadata/generated/schema/entity/datacontract/dataContractResult.py +1 -1
  319. metadata/generated/schema/entity/datacontract/qualityValidation.py +1 -1
  320. metadata/generated/schema/entity/datacontract/schemaValidation.py +1 -1
  321. metadata/generated/schema/entity/datacontract/semanticsValidation.py +1 -1
  322. metadata/generated/schema/entity/datacontract/slaValidation.py +1 -1
  323. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  324. metadata/generated/schema/entity/docStore/document.py +1 -1
  325. metadata/generated/schema/entity/domains/__init__.py +1 -1
  326. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  327. metadata/generated/schema/entity/domains/domain.py +1 -1
  328. metadata/generated/schema/entity/events/__init__.py +1 -1
  329. metadata/generated/schema/entity/events/webhook.py +1 -1
  330. metadata/generated/schema/entity/feed/__init__.py +1 -1
  331. metadata/generated/schema/entity/feed/assets.py +1 -1
  332. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  333. metadata/generated/schema/entity/feed/description.py +1 -1
  334. metadata/generated/schema/entity/feed/domain.py +1 -1
  335. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  336. metadata/generated/schema/entity/feed/owner.py +1 -1
  337. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  338. metadata/generated/schema/entity/feed/tag.py +1 -1
  339. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  340. metadata/generated/schema/entity/feed/thread.py +1 -1
  341. metadata/generated/schema/entity/policies/__init__.py +1 -1
  342. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  343. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  344. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  345. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  346. metadata/generated/schema/entity/policies/filters.py +1 -1
  347. metadata/generated/schema/entity/policies/policy.py +1 -1
  348. metadata/generated/schema/entity/services/__init__.py +1 -1
  349. metadata/generated/schema/entity/services/apiService.py +1 -1
  350. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  351. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  352. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  354. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  355. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  356. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  357. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  358. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  359. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  360. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  361. metadata/generated/schema/entity/services/connections/dashboard/grafanaConnection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  367. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  369. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  370. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  371. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  372. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  373. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  374. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  375. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  376. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  377. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/dashboard/thoughtSpotConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  383. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/epicConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +16 -1
  420. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  432. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  441. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/database/serviceNowConnection.py +90 -0
  446. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +10 -2
  448. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/database/ssasConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/drive/__init__.py +1 -1
  456. metadata/generated/schema/entity/services/connections/drive/customDriveConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/drive/googleDriveConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/drive/sharePointConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  460. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  461. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  462. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  463. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  464. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  465. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  466. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  467. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  474. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  476. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  477. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  478. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  480. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  482. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  487. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  488. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  489. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  490. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  491. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  492. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  493. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  494. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  495. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  496. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  497. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  498. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  499. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  500. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  501. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  502. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  503. metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
  504. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  505. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  506. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  507. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  508. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  509. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  510. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  511. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  512. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  513. metadata/generated/schema/entity/services/connections/security/__init__.py +1 -1
  514. metadata/generated/schema/entity/services/connections/security/ranger/__init__.py +1 -1
  515. metadata/generated/schema/entity/services/connections/security/ranger/basicAuth.py +1 -1
  516. metadata/generated/schema/entity/services/connections/security/rangerConnection.py +1 -1
  517. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  518. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  519. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  520. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  521. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  522. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  523. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  524. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  525. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  526. metadata/generated/schema/entity/services/databaseService.py +4 -1
  527. metadata/generated/schema/entity/services/driveService.py +1 -1
  528. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  529. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  530. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  531. metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
  532. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  533. metadata/generated/schema/entity/services/messagingService.py +1 -1
  534. metadata/generated/schema/entity/services/metadataService.py +1 -1
  535. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  536. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  537. metadata/generated/schema/entity/services/searchService.py +1 -1
  538. metadata/generated/schema/entity/services/securityService.py +1 -1
  539. metadata/generated/schema/entity/services/serviceType.py +1 -1
  540. metadata/generated/schema/entity/services/storageService.py +1 -1
  541. metadata/generated/schema/entity/teams/__init__.py +1 -1
  542. metadata/generated/schema/entity/teams/persona.py +1 -1
  543. metadata/generated/schema/entity/teams/role.py +1 -1
  544. metadata/generated/schema/entity/teams/team.py +1 -1
  545. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  546. metadata/generated/schema/entity/teams/user.py +1 -1
  547. metadata/generated/schema/entity/type.py +1 -1
  548. metadata/generated/schema/entity/utils/__init__.py +1 -1
  549. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  550. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  551. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  552. metadata/generated/schema/events/__init__.py +1 -1
  553. metadata/generated/schema/events/alertMetrics.py +1 -1
  554. metadata/generated/schema/events/api/__init__.py +1 -1
  555. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  556. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  557. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  558. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  559. metadata/generated/schema/events/api/typedEvent.py +1 -1
  560. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  561. metadata/generated/schema/events/eventFilterRule.py +1 -1
  562. metadata/generated/schema/events/eventSubscription.py +1 -1
  563. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  564. metadata/generated/schema/events/failedEvent.py +1 -1
  565. metadata/generated/schema/events/failedEventResponse.py +1 -1
  566. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  567. metadata/generated/schema/events/statusContext.py +1 -1
  568. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  569. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  570. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  571. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  572. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  573. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  574. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  575. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  576. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  577. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  578. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  579. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
  580. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
  581. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  582. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  583. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  584. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  585. metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
  586. metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
  587. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  588. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  589. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  590. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  591. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  592. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  593. metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
  594. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  595. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  596. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  597. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  598. metadata/generated/schema/jobs/__init__.py +1 -1
  599. metadata/generated/schema/jobs/backgroundJob.py +1 -1
  600. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  601. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  602. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  603. metadata/generated/schema/metadataIngestion/application.py +1 -1
  604. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  605. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  606. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  607. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  608. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  609. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  610. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  611. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  612. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  613. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  614. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  615. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  616. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  617. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  618. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  619. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  620. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  621. metadata/generated/schema/metadataIngestion/driveServiceMetadataPipeline.py +1 -1
  622. metadata/generated/schema/metadataIngestion/engine/__init__.py +1 -1
  623. metadata/generated/schema/metadataIngestion/engine/nativeEngineConfig.py +1 -1
  624. metadata/generated/schema/metadataIngestion/engine/sparkEngineConfig.py +1 -1
  625. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  626. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  627. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  628. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  629. metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
  630. metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
  631. metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
  632. metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
  633. metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
  634. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  635. metadata/generated/schema/metadataIngestion/securityServiceMetadataPipeline.py +1 -1
  636. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  637. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  638. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  639. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  640. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  641. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  642. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  643. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  644. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  645. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  646. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  647. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  648. metadata/generated/schema/monitoring/__init__.py +1 -1
  649. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  650. metadata/generated/schema/scim/__init__.py +1 -1
  651. metadata/generated/schema/scim/scimConfiguration.py +1 -1
  652. metadata/generated/schema/search/__init__.py +1 -1
  653. metadata/generated/schema/search/aggregationRequest.py +1 -1
  654. metadata/generated/schema/search/searchRequest.py +1 -1
  655. metadata/generated/schema/security/__init__.py +1 -1
  656. metadata/generated/schema/security/client/__init__.py +1 -1
  657. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  658. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  659. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  660. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  661. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  662. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  663. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  664. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  665. metadata/generated/schema/security/credentials/__init__.py +1 -1
  666. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  667. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  668. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  669. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  670. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  671. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  672. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  673. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  674. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  675. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  676. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  677. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  678. metadata/generated/schema/security/credentials/kubernetesCredentials.py +1 -1
  679. metadata/generated/schema/security/sasl/__init__.py +1 -1
  680. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  681. metadata/generated/schema/security/secrets/__init__.py +1 -1
  682. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  683. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  684. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  685. metadata/generated/schema/security/securityConfiguration.py +1 -1
  686. metadata/generated/schema/security/ssl/__init__.py +1 -1
  687. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  688. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  689. metadata/generated/schema/settings/__init__.py +1 -1
  690. metadata/generated/schema/settings/settings.py +1 -1
  691. metadata/generated/schema/system/__init__.py +1 -1
  692. metadata/generated/schema/system/entityError.py +1 -1
  693. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  694. metadata/generated/schema/system/indexingError.py +1 -1
  695. metadata/generated/schema/system/limitsResponse.py +1 -1
  696. metadata/generated/schema/system/ui/__init__.py +1 -1
  697. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  698. metadata/generated/schema/system/ui/navigationItem.py +1 -1
  699. metadata/generated/schema/system/ui/page.py +1 -1
  700. metadata/generated/schema/system/ui/tab.py +1 -1
  701. metadata/generated/schema/system/ui/uiCustomization.py +1 -1
  702. metadata/generated/schema/system/validationResponse.py +1 -1
  703. metadata/generated/schema/tests/__init__.py +1 -1
  704. metadata/generated/schema/tests/assigned.py +1 -1
  705. metadata/generated/schema/tests/basic.py +1 -1
  706. metadata/generated/schema/tests/customMetric.py +1 -1
  707. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  708. metadata/generated/schema/tests/resolved.py +1 -1
  709. metadata/generated/schema/tests/testCase.py +1 -1
  710. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  711. metadata/generated/schema/tests/testDefinition.py +1 -1
  712. metadata/generated/schema/tests/testSuite.py +1 -1
  713. metadata/generated/schema/type/__init__.py +1 -1
  714. metadata/generated/schema/type/apiSchema.py +1 -1
  715. metadata/generated/schema/type/assetCertification.py +1 -1
  716. metadata/generated/schema/type/auditLog.py +1 -1
  717. metadata/generated/schema/type/basic.py +1 -1
  718. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  719. metadata/generated/schema/type/changeEvent.py +1 -1
  720. metadata/generated/schema/type/changeEventType.py +1 -1
  721. metadata/generated/schema/type/changeSummaryMap.py +1 -1
  722. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  723. metadata/generated/schema/type/contractExecutionStatus.py +1 -1
  724. metadata/generated/schema/type/csvDocumentation.py +1 -1
  725. metadata/generated/schema/type/csvErrorType.py +1 -1
  726. metadata/generated/schema/type/csvFile.py +1 -1
  727. metadata/generated/schema/type/csvImportResult.py +1 -1
  728. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  729. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  730. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  731. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  732. metadata/generated/schema/type/customProperty.py +1 -1
  733. metadata/generated/schema/type/dailyCount.py +1 -1
  734. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  735. metadata/generated/schema/type/entityHierarchy.py +1 -1
  736. metadata/generated/schema/type/entityHistory.py +1 -1
  737. metadata/generated/schema/type/entityLineage.py +1 -1
  738. metadata/generated/schema/type/entityReference.py +1 -1
  739. metadata/generated/schema/type/entityReferenceList.py +1 -1
  740. metadata/generated/schema/type/entityRelationship/__init__.py +1 -1
  741. metadata/generated/schema/type/entityRelationship/nodeInformation.py +1 -1
  742. metadata/generated/schema/type/entityUsage.py +1 -1
  743. metadata/generated/schema/type/filterPattern.py +1 -1
  744. metadata/generated/schema/type/function.py +1 -1
  745. metadata/generated/schema/type/include.py +1 -1
  746. metadata/generated/schema/type/jdbcConnection.py +1 -1
  747. metadata/generated/schema/type/layerPaging.py +1 -1
  748. metadata/generated/schema/type/lifeCycle.py +1 -1
  749. metadata/generated/schema/type/paging.py +1 -1
  750. metadata/generated/schema/type/personaPreferences.py +1 -1
  751. metadata/generated/schema/type/profile.py +1 -1
  752. metadata/generated/schema/type/queryParserData.py +1 -1
  753. metadata/generated/schema/type/reaction.py +1 -1
  754. metadata/generated/schema/type/schedule.py +1 -1
  755. metadata/generated/schema/type/schema.py +1 -1
  756. metadata/generated/schema/type/tableQuery.py +1 -1
  757. metadata/generated/schema/type/tableUsageCount.py +1 -1
  758. metadata/generated/schema/type/tagLabel.py +1 -1
  759. metadata/generated/schema/type/usageDetails.py +1 -1
  760. metadata/generated/schema/type/usageRequest.py +1 -1
  761. metadata/generated/schema/type/votes.py +1 -1
  762. metadata/ingestion/lineage/masker.py +5 -0
  763. metadata/ingestion/lineage/parser.py +6 -2
  764. metadata/ingestion/lineage/sql_lineage.py +135 -44
  765. metadata/ingestion/ometa/mixins/es_mixin.py +2 -0
  766. metadata/ingestion/ometa/mixins/user_mixin.py +14 -16
  767. metadata/ingestion/source/database/bigquery/lineage.py +5 -10
  768. metadata/ingestion/source/database/dbt/constants.py +0 -1
  769. metadata/ingestion/source/database/dbt/metadata.py +1 -15
  770. metadata/ingestion/source/database/hive/connection.py +37 -0
  771. metadata/ingestion/source/database/hive/custom_hive_connection.py +195 -0
  772. metadata/ingestion/source/database/lineage_processors.py +386 -0
  773. metadata/ingestion/source/database/lineage_source.py +314 -264
  774. metadata/ingestion/source/database/mssql/lineage.py +3 -27
  775. metadata/ingestion/source/database/oracle/lineage.py +3 -10
  776. metadata/ingestion/source/database/redshift/lineage.py +4 -10
  777. metadata/ingestion/source/database/snowflake/lineage.py +4 -9
  778. metadata/ingestion/source/database/snowflake/metadata.py +10 -1
  779. metadata/ingestion/source/database/stored_procedures_mixin.py +63 -229
  780. metadata/ingestion/source/storage/gcs/metadata.py +285 -26
  781. metadata/ingestion/source/storage/gcs/models.py +12 -6
  782. metadata/utils/db_utils.py +12 -1
  783. metadata/utils/helpers.py +11 -0
  784. metadata/utils/ssl_manager.py +41 -0
  785. {openmetadata_ingestion-1.9.5.0.dist-info → openmetadata_ingestion-1.9.7.0.dist-info}/METADATA +540 -535
  786. {openmetadata_ingestion-1.9.5.0.dist-info → openmetadata_ingestion-1.9.7.0.dist-info}/RECORD +790 -785
  787. {openmetadata_ingestion-1.9.5.0.dist-info → openmetadata_ingestion-1.9.7.0.dist-info}/LICENSE +0 -0
  788. {openmetadata_ingestion-1.9.5.0.dist-info → openmetadata_ingestion-1.9.7.0.dist-info}/WHEEL +0 -0
  789. {openmetadata_ingestion-1.9.5.0.dist-info → openmetadata_ingestion-1.9.7.0.dist-info}/entry_points.txt +0 -0
  790. {openmetadata_ingestion-1.9.5.0.dist-info → openmetadata_ingestion-1.9.7.0.dist-info}/top_level.txt +0 -0
@@ -12,22 +12,21 @@
12
12
  Lineage Source Module
13
13
  """
14
14
  import csv
15
+ import multiprocessing
15
16
  import os
16
- import threading
17
17
  import time
18
18
  import traceback
19
19
  from abc import ABC
20
- from functools import partial
21
- from typing import Any, Callable, Iterable, Iterator, List, Optional, Union
20
+ from multiprocessing import Process, Queue
21
+ from threading import Thread
22
+ from typing import Any, Callable, Iterable, Iterator, List, Optional, Tuple, Union
23
+
24
+ import networkx as nx
22
25
 
23
26
  from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
24
27
  from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
25
28
  from metadata.generated.schema.entity.data.table import Table
26
- from metadata.generated.schema.type.basic import (
27
- FullyQualifiedEntityName,
28
- SqlQuery,
29
- Uuid,
30
- )
29
+ from metadata.generated.schema.type.basic import Uuid
31
30
  from metadata.generated.schema.type.entityLineage import (
32
31
  ColumnLineage,
33
32
  EntitiesEdge,
@@ -42,23 +41,27 @@ from metadata.ingestion.lineage.sql_lineage import (
42
41
  get_column_fqn,
43
42
  get_lineage_by_graph,
44
43
  get_lineage_by_procedure_graph,
45
- get_lineage_by_query,
46
44
  )
47
- from metadata.ingestion.models.ometa_lineage import OMetaLineageRequest
48
- from metadata.ingestion.models.topology import Queue
45
+ from metadata.ingestion.models.topology import Queue as TopologyQueue
46
+ from metadata.ingestion.source.database.lineage_processors import (
47
+ process_chunk_in_subprocess,
48
+ query_lineage_processor,
49
+ view_lineage_processor,
50
+ )
49
51
  from metadata.ingestion.source.database.query_parser_source import QueryParserSource
50
52
  from metadata.ingestion.source.models import TableView
51
- from metadata.utils import fqn
52
- from metadata.utils.db_utils import get_view_lineage
53
53
  from metadata.utils.filters import filter_by_database, filter_by_schema, filter_by_table
54
54
  from metadata.utils.logger import ingestion_logger
55
55
 
56
56
  logger = ingestion_logger()
57
57
 
58
58
 
59
- CHUNK_SIZE = 100
59
+ CHUNK_SIZE = 200
60
60
 
61
- THREAD_TIMEOUT = 3 * 60 * 10 # 30 minutes in seconds
61
+ QUERY_PROCESSING_TIMEOUT = 300
62
+ PROCESS_TIMEOUT = CHUNK_SIZE * QUERY_PROCESSING_TIMEOUT
63
+
64
+ MAX_ACTIVE_TIMED_OUT_THREADS = 10
62
65
 
63
66
 
64
67
  class LineageSource(QueryParserSource, ABC):
@@ -75,6 +78,223 @@ class LineageSource(QueryParserSource, ABC):
75
78
 
76
79
  dialect: Dialect
77
80
 
81
+ @staticmethod
82
+ def generate_lineage_with_processes(
83
+ producer_fn: Callable[[], Iterable[Any]],
84
+ processor_fn: Callable[[Any, Queue], None],
85
+ args: Tuple[Any, ...],
86
+ chunk_size: int = CHUNK_SIZE,
87
+ processor_timeout: int = PROCESS_TIMEOUT,
88
+ max_threads: int = MAX_ACTIVE_TIMED_OUT_THREADS,
89
+ ):
90
+ """
91
+ Process data in separate processes with timeout control.
92
+
93
+ Args:
94
+ producer_fn: Function that yields data chunks
95
+ processor_fn: Function that processes data and adds results to the queue
96
+ chunk_size: Size of chunks to process
97
+ processor_timeout: Maximum time in seconds to wait for a processor process
98
+ """
99
+ # TODO: We are not using multiprocessing yet since processes don't share
100
+ # the objects natively and creates separate copies. That will break the
101
+ # graph functionality for temporary lineage processing. Need to find a
102
+ # better solution for handling shared graphs or pulling graph update states
103
+ # to parent process.
104
+ # + It causes log level to be not applied correctly. For reference, if parent
105
+ # process is running with log level debug the child processes will have
106
+ # unset log level.
107
+ # from metadata.utils.helpers import can_spawn_child_process
108
+ #
109
+ # multiprocessing_supported = can_spawn_child_process()
110
+ multiprocessing_supported = False
111
+
112
+ if multiprocessing_supported:
113
+ max_processes = min(
114
+ multiprocessing.cpu_count(), 8
115
+ ) # Limit to 8 or available CPUs whichever minimum
116
+ logger.info(
117
+ f"Starting lineage processing with `{max_processes}` maximum processes"
118
+ )
119
+ else:
120
+ logger.debug(
121
+ "Current process cannot spawn child processes. Lineage processing will"
122
+ " be performed in the same process with multithreading."
123
+ )
124
+ max_processes = max_threads
125
+ logger.info(
126
+ f"Starting lineage processing with `{max_processes}` maximum threads"
127
+ )
128
+
129
+ def chunk_generator():
130
+ """Group items from producer into chunks of specified size."""
131
+ chunk_index = 1
132
+ temp_chunk = []
133
+ for item in producer_fn():
134
+ temp_chunk.append(item)
135
+ if len(temp_chunk) >= chunk_size:
136
+ logger.debug(
137
+ f"Processing chunk {chunk_index}: size={len(temp_chunk)}"
138
+ )
139
+ yield temp_chunk
140
+ temp_chunk = []
141
+ chunk_index += 1
142
+ if temp_chunk:
143
+ logger.debug(
144
+ f"Processing final chunk {chunk_index}: size={len(temp_chunk)}"
145
+ )
146
+ yield temp_chunk
147
+
148
+ # Use appropriate queue type based on processing mode
149
+ if multiprocessing_supported:
150
+ queue = Queue() # multiprocessing.Queue for processes
151
+ else:
152
+ queue = TopologyQueue() # TopologyQueue wrapper for threads
153
+
154
+ # Create chunk iterator and tracking
155
+ chunk_iter = iter(chunk_generator())
156
+ chunks_exhausted = False
157
+
158
+ active_processes = []
159
+ process_start_times = {}
160
+ completed_chunks = 0
161
+ remaining_chunks = 0
162
+ total_started_processes = 0
163
+ active_timed_out_threads = []
164
+
165
+ def start_next_process():
166
+ """Start the next pending process if available."""
167
+ nonlocal total_started_processes
168
+
169
+ # Try to get the next chunk for next time
170
+ try:
171
+ chunk = next(chunk_iter)
172
+ except StopIteration:
173
+ # No more chunks to process
174
+ return False
175
+
176
+ # Use billiard.Process to handle the multiprocessing instead of the
177
+ # multiprocessing.Process since spawning child process from daemon
178
+ # process is not supported in Airflow 2+.
179
+ # Billiard is a fork of multiprocessing that is compatible with Airflow
180
+ # and recommended by the Airflow team.
181
+ # ref: https://github.com/apache/airflow/issues/14896
182
+ total_started_processes += 1
183
+ if multiprocessing_supported:
184
+ process = Process(
185
+ target=process_chunk_in_subprocess,
186
+ args=(chunk, processor_fn, queue, *args),
187
+ )
188
+ else:
189
+ process = Thread(
190
+ target=process_chunk_in_subprocess,
191
+ args=(chunk, processor_fn, queue, *args),
192
+ daemon=True,
193
+ )
194
+ process_start_times[process.name] = time.time()
195
+ process.start()
196
+ logger.debug(
197
+ f"Started lineage process {process.name} for chunk {total_started_processes} "
198
+ f"(active: {len(active_processes) + 1}/{max_processes}, chunk_size: {len(chunk)})"
199
+ )
200
+ active_processes.append(process)
201
+
202
+ return True
203
+
204
+ # Process requests from the queue and check for completed or timed-out processes
205
+ def queue_has_items():
206
+ """Check if queue has items based on queue type."""
207
+ if multiprocessing_supported:
208
+ return not queue.empty()
209
+ else:
210
+ return queue.has_tasks()
211
+
212
+ def process_queue_items():
213
+ """Process items from queue based on queue type."""
214
+ while queue_has_items():
215
+ if multiprocessing_supported:
216
+ yield queue.get_nowait()
217
+ else:
218
+ yield from queue.process()
219
+
220
+ while active_processes or not chunks_exhausted or queue_has_items():
221
+ # Process any available requests from the queue
222
+ try:
223
+ yield from process_queue_items()
224
+ except Exception as exc:
225
+ logger.warning(f"Error processing queue: {exc}")
226
+ logger.debug(traceback.format_exc())
227
+
228
+ # Check for completed or timed-out processes
229
+ still_active = []
230
+ for process in active_processes:
231
+ if process.is_alive():
232
+ # Check if the process has timed out
233
+ if (
234
+ time.time() - process_start_times[process.name]
235
+ > processor_timeout
236
+ ):
237
+ if multiprocessing_supported:
238
+ logger.warning(
239
+ f"Process {process.name} timed out after {processor_timeout}s"
240
+ )
241
+ process.terminate() # Force terminate the timed out process
242
+ else:
243
+ logger.warning(
244
+ f"Thread {process.name} timed out after {processor_timeout}s"
245
+ )
246
+ active_timed_out_threads.append(process)
247
+ completed_chunks += 1
248
+ else:
249
+ still_active.append(process)
250
+ else:
251
+ # Clean up completed process
252
+ process.join()
253
+ completed_chunks += 1
254
+ runtime = time.time() - process_start_times[process.name]
255
+ logger.debug(
256
+ f"Lineage process {process.name} completed successfully "
257
+ f"(runtime: {runtime:.1f}s, progress: {completed_chunks}/{total_started_processes})"
258
+ )
259
+
260
+ # check if any of the active_timed_out_threads are completed
261
+ active_timed_out_threads = [
262
+ thread for thread in active_timed_out_threads if thread.is_alive()
263
+ ]
264
+
265
+ # check if there are more than MAX_ACTIVE_TIMED_OUT_THREADS
266
+ if len(active_timed_out_threads) > MAX_ACTIVE_TIMED_OUT_THREADS:
267
+ remaining_chunks = sum(1 for _ in chunk_iter)
268
+ logger.warning(
269
+ f"There are more than {MAX_ACTIVE_TIMED_OUT_THREADS} active timed out threads, "
270
+ f"skipping remaining {remaining_chunks}/{completed_chunks+remaining_chunks} chunks. "
271
+ )
272
+ break
273
+
274
+ active_processes = still_active
275
+
276
+ # Start initial/next processes to fill available slots
277
+ while len(active_processes) < max_processes:
278
+ if start_next_process():
279
+ continue
280
+ chunks_exhausted = True
281
+ break
282
+
283
+ # Small pause to prevent CPU spinning
284
+ if active_processes or not chunks_exhausted:
285
+ time.sleep(0.1)
286
+
287
+ # Final check for any remaining queue requests
288
+ try:
289
+ yield from process_queue_items()
290
+ except Exception as exc:
291
+ logger.warning(f"Error processing queue: {exc}")
292
+ logger.debug(traceback.format_exc())
293
+
294
+ logger.info(
295
+ f"Lineage processing completed with {completed_chunks}/{completed_chunks+remaining_chunks} chunks processed"
296
+ )
297
+
78
298
  def yield_table_queries_from_logs(self) -> Iterator[TableQuery]:
79
299
  """
80
300
  Method to handle the usage from query logs
@@ -106,111 +326,6 @@ class LineageSource(QueryParserSource, ABC):
106
326
  logger.debug(traceback.format_exc())
107
327
  logger.warning(f"Failed to read queries form log file due to: {err}")
108
328
 
109
- def get_table_query(self) -> Iterator[TableQuery]:
110
- """
111
- If queryLogFilePath available in config iterate through log file
112
- otherwise execute the sql query to fetch TableQuery data.
113
-
114
- This is a simplified version of the UsageSource query parsing.
115
- """
116
- if self.config.sourceConfig.config.queryLogFilePath:
117
- yield from self.yield_table_queries_from_logs()
118
- else:
119
- logger.info(
120
- f"Scanning query logs for {self.start.date()} - {self.end.date()}"
121
- )
122
- yield from self.yield_table_query()
123
-
124
- @staticmethod
125
- def generate_lineage_in_thread(
126
- producer_fn: Callable[[], Iterable[Any]],
127
- processor_fn: Callable[[Any, Queue], None],
128
- chunk_size: int = CHUNK_SIZE,
129
- thread_timeout: int = THREAD_TIMEOUT,
130
- max_threads: int = 10, # Default maximum number of concurrent threads
131
- ):
132
- """
133
- Process data in separate daemon threads with timeout control.
134
-
135
- Args:
136
- producer_fn: Function that yields data chunks
137
- processor_fn: Function that processes data and adds results to the queue
138
- chunk_size: Size of chunks to process
139
- thread_timeout: Maximum time in seconds to wait for a processor thread
140
- max_threads: Maximum number of concurrent threads to run
141
- """
142
- queue = Queue()
143
- active_threads = []
144
-
145
- def process_chunk(chunk):
146
- """Process a chunk of data in a thread."""
147
- try:
148
- processor_fn(chunk, queue)
149
- except Exception as e:
150
- logger.error(f"Error processing chunk: {e}")
151
- logger.debug(traceback.format_exc())
152
-
153
- # Create an iterator for the chunks but don't consume it all at once
154
- chunk_iterator = iter(chunk_generator(producer_fn, chunk_size))
155
-
156
- # Process results from the queue and check for timed-out threads
157
- chunk_processed = False # Flag to track if all chunks have been processed
158
- ignored_threads = 0
159
-
160
- while True:
161
- # Start new threads until we reach the max_threads limit
162
- while (
163
- len(active_threads) + ignored_threads
164
- ) < max_threads and not chunk_processed:
165
- try:
166
- # Only fetch a new chunk when we're ready to create a thread
167
- chunk = next(chunk_iterator)
168
- thread = threading.Thread(target=process_chunk, args=(chunk,))
169
- thread.start_time = time.time() # Track when the thread started
170
- thread.daemon = True
171
- active_threads.append(thread)
172
- thread.start()
173
- except StopIteration:
174
- # No more chunks to process
175
- chunk_processed = True
176
- break
177
-
178
- if ignored_threads == max_threads:
179
- logger.warning(f"Max threads reached, skipping remaining threads")
180
- break
181
-
182
- # Process any available results
183
- if queue.has_tasks():
184
- yield from queue.process()
185
-
186
- # Check for completed or timed-out threads
187
- still_active = []
188
- for thread in active_threads:
189
- if thread.is_alive():
190
- # Check if the thread has timed out
191
- if time.time() - thread.start_time > thread_timeout:
192
- logger.warning(
193
- f"Thread {thread.name} timed out after {thread_timeout}s"
194
- )
195
- ignored_threads += 1
196
- else:
197
- still_active.append(thread)
198
- # If thread is not alive, it has completed normally
199
-
200
- active_threads = still_active
201
-
202
- # Exit conditions: no more active threads and no more chunks to process
203
- if not active_threads and chunk_processed:
204
- break
205
-
206
- # Small pause to prevent CPU spinning
207
- if active_threads:
208
- time.sleep(0.1)
209
-
210
- # Final check for any remaining results
211
- while queue.has_tasks():
212
- yield from queue.process()
213
-
214
329
  def yield_table_query(self) -> Iterator[TableQuery]:
215
330
  """
216
331
  Given an engine, iterate over the query results to
@@ -241,64 +356,25 @@ class LineageSource(QueryParserSource, ABC):
241
356
  f"Error processing query_dict {query_dict}: {exc}"
242
357
  )
243
358
 
244
- def _query_already_processed(self, table_query: TableQuery) -> bool:
359
+ def get_table_query(self) -> Iterator[TableQuery]:
245
360
  """
246
- Check if a query has already been processed by validating if exists
247
- in ES with lineageProcessed as True
361
+ If queryLogFilePath available in config iterate through log file
362
+ otherwise execute the sql query to fetch TableQuery data.
363
+ This is a simplified version of the UsageSource query parsing.
248
364
  """
249
- checksums = self.metadata.es_get_queries_with_lineage(
250
- service_name=table_query.serviceName,
251
- )
252
- return fqn.get_query_checksum(table_query.query) in checksums or {}
253
-
254
- def query_lineage_generator(
255
- self, table_queries: List[TableQuery], queue: Queue
256
- ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
257
- if self.graph is None and self.source_config.enableTempTableLineage:
258
- import networkx as nx
259
-
260
- # Create a directed graph
261
- self.graph = nx.DiGraph()
262
-
263
- for table_query in table_queries or []:
264
- if not self._query_already_processed(table_query):
265
- # Prepare service names for lineage processing
266
- service_names = [table_query.serviceName]
267
- if (
268
- self.source_config.processCrossDatabaseLineage
269
- and self.source_config.crossDatabaseServiceNames
270
- ):
271
- service_names.extend(self.source_config.crossDatabaseServiceNames)
272
-
273
- lineages: Iterable[Either[AddLineageRequest]] = get_lineage_by_query(
274
- self.metadata,
275
- query=table_query.query,
276
- service_names=service_names,
277
- database_name=table_query.databaseName,
278
- schema_name=table_query.databaseSchema,
279
- dialect=self.dialect,
280
- timeout_seconds=self.source_config.parsingTimeoutLimit,
281
- graph=self.graph,
282
- )
365
+ if self.config.sourceConfig.config.queryLogFilePath:
366
+ yield from self.yield_table_queries_from_logs()
367
+ else:
368
+ logger.info(
369
+ f"Scanning query logs for {self.start.date()} - {self.end.date()}"
370
+ )
371
+ yield from self.yield_table_query()
283
372
 
284
- for lineage_request in lineages or []:
285
- queue.put(lineage_request)
286
-
287
- # If we identified lineage properly, ingest the original query
288
- if lineage_request.right:
289
- queue.put(
290
- Either(
291
- right=CreateQueryRequest(
292
- query=SqlQuery(table_query.query),
293
- query_type=table_query.query_type,
294
- duration=table_query.duration,
295
- processedLineage=True,
296
- service=FullyQualifiedEntityName(
297
- self.config.serviceName
298
- ),
299
- )
300
- )
301
- )
373
+ def query_lineage_producer(self) -> Iterator[TableQuery]:
374
+ """
375
+ Retrieve queries to be fetched for lineage processing
376
+ """
377
+ return self.get_table_query()
302
378
 
303
379
  def yield_query_lineage(
304
380
  self,
@@ -310,96 +386,78 @@ class LineageSource(QueryParserSource, ABC):
310
386
  logger.info("Processing Query Lineage")
311
387
  connection_type = str(self.service_connection.type.value)
312
388
  self.dialect = ConnectionTypeDialectMapper.dialect_of(connection_type)
313
- producer_fn = self.get_table_query
314
- processor_fn = self.query_lineage_generator
315
- yield from self.generate_lineage_in_thread(
389
+ producer_fn = self.query_lineage_producer
390
+ processor_fn = query_lineage_processor
391
+ args = (
392
+ self.metadata,
393
+ self.dialect,
394
+ self.graph,
395
+ self.source_config.processCrossDatabaseLineage,
396
+ self.source_config.crossDatabaseServiceNames,
397
+ self.source_config.parsingTimeoutLimit,
398
+ self.config.serviceName,
399
+ )
400
+ yield from self.generate_lineage_with_processes(
316
401
  producer_fn,
317
402
  processor_fn,
403
+ args,
318
404
  max_threads=self.source_config.threads,
319
405
  )
320
406
 
321
- def view_lineage_generator(
322
- self, views: List[TableView], queue: Queue
323
- ) -> Iterable[Either[AddLineageRequest]]:
324
- try:
325
- for view in views:
326
- if (
327
- filter_by_database(
328
- self.source_config.databaseFilterPattern,
329
- view.db_name,
330
- )
331
- or filter_by_schema(
332
- self.source_config.schemaFilterPattern,
333
- view.schema_name,
334
- )
335
- or filter_by_table(
336
- self.source_config.tableFilterPattern,
337
- view.table_name,
338
- )
339
- ):
340
- self.status.filter(
341
- view.table_name,
342
- "View Filtered Out",
343
- )
344
- continue
345
- # Prepare service names for view lineage processing
346
- service_names = [self.config.serviceName]
347
- if (
348
- self.source_config.processCrossDatabaseLineage
349
- and self.source_config.crossDatabaseServiceNames
350
- ):
351
- service_names.extend(self.source_config.crossDatabaseServiceNames)
352
-
353
- for lineage in get_view_lineage(
354
- view=view,
355
- metadata=self.metadata,
356
- service_names=service_names,
357
- connection_type=self.service_connection.type.value,
358
- timeout_seconds=self.source_config.parsingTimeoutLimit,
359
- ):
360
- if lineage.right is not None:
361
- view_fqn = fqn.build(
362
- metadata=self.metadata,
363
- entity_type=Table,
364
- service_name=self.service_name,
365
- database_name=view.db_name,
366
- schema_name=view.schema_name,
367
- table_name=view.table_name,
368
- skip_es_search=True,
369
- )
370
- queue.put(
371
- Either(
372
- right=OMetaLineageRequest(
373
- lineage_request=lineage.right,
374
- override_lineage=self.source_config.overrideViewLineage,
375
- entity_fqn=view_fqn,
376
- entity=Table,
377
- )
378
- )
379
- )
380
- else:
381
- queue.put(lineage)
382
- except Exception as exc:
383
- logger.debug(traceback.format_exc())
384
- logger.warning(f"Error processing view {view}: {exc}")
407
+ def view_lineage_producer(self) -> Iterable[TableView]:
408
+ """
409
+ Get the view definition from ES
410
+ """
411
+ for view in self.metadata.yield_es_view_def(
412
+ service_name=self.config.serviceName,
413
+ incremental=self.source_config.incrementalLineageProcessing,
414
+ ):
415
+ if (
416
+ filter_by_database(
417
+ self.source_config.databaseFilterPattern,
418
+ view.db_name,
419
+ )
420
+ or filter_by_schema(
421
+ self.source_config.schemaFilterPattern,
422
+ view.schema_name,
423
+ )
424
+ or filter_by_table(
425
+ self.source_config.tableFilterPattern,
426
+ view.table_name,
427
+ )
428
+ ):
429
+ self.status.filter(
430
+ view.table_name,
431
+ "View Filtered Out",
432
+ )
433
+ continue
434
+ yield view
385
435
 
386
436
  def yield_view_lineage(self) -> Iterable[Either[AddLineageRequest]]:
387
437
  logger.info("Processing View Lineage")
388
- producer_fn = partial(
389
- self.metadata.yield_es_view_def,
438
+ producer_fn = self.view_lineage_producer
439
+ processor_fn = view_lineage_processor
440
+ args = (
441
+ self.metadata,
390
442
  self.config.serviceName,
391
- self.source_config.incrementalLineageProcessing,
443
+ self.service_connection.type.value,
444
+ self.source_config.processCrossDatabaseLineage,
445
+ self.source_config.crossDatabaseServiceNames,
446
+ self.source_config.parsingTimeoutLimit,
447
+ self.source_config.overrideViewLineage,
392
448
  )
393
- processor_fn = self.view_lineage_generator
394
- yield from self.generate_lineage_in_thread(
395
- producer_fn, processor_fn, max_threads=self.source_config.threads
449
+ yield from self.generate_lineage_with_processes(
450
+ producer_fn,
451
+ processor_fn,
452
+ args,
453
+ max_threads=self.source_config.threads,
396
454
  )
397
455
 
398
456
  def yield_procedure_lineage(
399
457
  self,
400
458
  ) -> Iterable[Either[Union[AddLineageRequest, CreateQueryRequest]]]:
401
459
  """
402
- By default stored procedure lineage is not supported.
460
+ By default stored procedure lineage is not supported.
403
461
  """
404
462
  logger.info(
405
463
  f"Processing Procedure Lineage not supported for {str(self.service_connection.type.value)}"
@@ -426,6 +484,7 @@ class LineageSource(QueryParserSource, ABC):
426
484
  except Exception as exc:
427
485
  logger.debug(f"Error to get column lineage: {exc}")
428
486
  logger.debug(traceback.format_exc())
487
+ return []
429
488
 
430
489
  def get_add_cross_database_lineage_request(
431
490
  self,
@@ -433,6 +492,9 @@ class LineageSource(QueryParserSource, ABC):
433
492
  to_entity: Table,
434
493
  column_lineage: List[ColumnLineage] = None,
435
494
  ) -> Optional[Either[AddLineageRequest]]:
495
+ """
496
+ Get the add cross database lineage request
497
+ """
436
498
  if from_entity and to_entity:
437
499
  return Either(
438
500
  right=AddLineageRequest(
@@ -468,6 +530,9 @@ class LineageSource(QueryParserSource, ABC):
468
530
  Based on the query logs, prepare the lineage
469
531
  and send it to the sink
470
532
  """
533
+ if self.graph is None and self.source_config.enableTempTableLineage:
534
+ # Create a directed graph
535
+ self.graph = nx.DiGraph()
471
536
  if (
472
537
  self.procedure_graph_map is None
473
538
  and self.source_config.enableTempTableLineage
@@ -498,18 +563,3 @@ class LineageSource(QueryParserSource, ABC):
498
563
  and self.source_config.crossDatabaseServiceNames
499
564
  ):
500
565
  yield from self.yield_cross_database_lineage() or []
501
-
502
-
503
- def chunk_generator(producer_fn, chunk_size):
504
- """
505
- Group items from producer into chunks of specified size.
506
- This is a separate function to allow for better lazy evaluation.
507
- """
508
- temp_chunk = []
509
- for item in producer_fn():
510
- temp_chunk.append(item)
511
- if len(temp_chunk) >= chunk_size:
512
- yield temp_chunk
513
- temp_chunk = []
514
- if temp_chunk:
515
- yield temp_chunk