openmetadata-ingestion 1.7.4.2__py3-none-any.whl → 1.8.0.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. _openmetadata_testutils/helpers/login_user.py +22 -0
  2. metadata/__init__.py +31 -0
  3. metadata/automations/runner.py +24 -14
  4. metadata/data_quality/processor/test_case_runner.py +2 -11
  5. metadata/data_quality/source/test_suite.py +3 -1
  6. metadata/data_quality/validations/table/pandas/tableRowInsertedCountToBeBetween.py +17 -2
  7. metadata/examples/workflows/tableau.yaml +1 -0
  8. metadata/generated/schema/analytics/__init__.py +1 -1
  9. metadata/generated/schema/analytics/basic.py +1 -1
  10. metadata/generated/schema/analytics/reportData.py +1 -1
  11. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  12. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  13. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  14. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  15. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  16. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  17. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  18. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  19. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  20. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  21. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  22. metadata/generated/schema/api/__init__.py +1 -1
  23. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +3 -16
  24. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -10
  25. metadata/generated/schema/api/analytics/__init__.py +1 -1
  26. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  27. metadata/generated/schema/api/automations/__init__.py +1 -1
  28. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  29. metadata/generated/schema/api/bulkAssets.py +1 -1
  30. metadata/generated/schema/api/classification/__init__.py +1 -1
  31. metadata/generated/schema/api/classification/createClassification.py +6 -2
  32. metadata/generated/schema/api/classification/createTag.py +6 -2
  33. metadata/generated/schema/api/classification/loadTags.py +1 -1
  34. metadata/generated/schema/api/createBot.py +1 -1
  35. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  36. metadata/generated/schema/api/createType.py +1 -1
  37. metadata/generated/schema/api/data/__init__.py +1 -1
  38. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  39. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  40. metadata/generated/schema/api/data/createChart.py +1 -1
  41. metadata/generated/schema/api/data/createContainer.py +1 -1
  42. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  43. metadata/generated/schema/api/data/createDashboard.py +1 -1
  44. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  45. metadata/generated/schema/api/data/createDataContract.py +66 -0
  46. metadata/generated/schema/api/data/createDatabase.py +1 -1
  47. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  48. metadata/generated/schema/api/data/createGlossary.py +1 -1
  49. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  50. metadata/generated/schema/api/data/createMetric.py +1 -1
  51. metadata/generated/schema/api/data/createMlModel.py +1 -1
  52. metadata/generated/schema/api/data/createPipeline.py +1 -1
  53. metadata/generated/schema/api/data/createQuery.py +1 -1
  54. metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
  55. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  56. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  57. metadata/generated/schema/api/data/createTable.py +1 -1
  58. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  59. metadata/generated/schema/api/data/createTopic.py +1 -1
  60. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  61. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  62. metadata/generated/schema/api/data/updateColumn.py +49 -0
  63. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  64. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  65. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  66. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  67. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  68. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  69. metadata/generated/schema/api/docStore/__init__.py +1 -1
  70. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  71. metadata/generated/schema/api/domains/__init__.py +1 -1
  72. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  73. metadata/generated/schema/api/domains/createDomain.py +1 -1
  74. metadata/generated/schema/api/feed/__init__.py +1 -1
  75. metadata/generated/schema/api/feed/closeTask.py +1 -1
  76. metadata/generated/schema/api/feed/createPost.py +1 -1
  77. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  78. metadata/generated/schema/api/feed/createThread.py +1 -1
  79. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  80. metadata/generated/schema/api/feed/threadCount.py +1 -1
  81. metadata/generated/schema/api/governance/__init__.py +1 -1
  82. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  83. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  84. metadata/generated/schema/api/lineage/__init__.py +1 -1
  85. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  86. metadata/generated/schema/api/lineage/esLineageData.py +1 -1
  87. metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
  88. metadata/generated/schema/api/lineage/nodeInformation.py +1 -1
  89. metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
  90. metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
  91. metadata/generated/schema/api/mcp/__init__.py +3 -0
  92. metadata/generated/schema/api/mcp/mcpToolDefinition.py +54 -0
  93. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  94. metadata/generated/schema/api/policies/__init__.py +1 -1
  95. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  96. metadata/generated/schema/api/scim/__init__.py +3 -0
  97. metadata/generated/schema/api/scim/scimGroup.py +52 -0
  98. metadata/generated/schema/api/scim/scimPatchOp.py +32 -0
  99. metadata/generated/schema/api/scim/scimUser.py +83 -0
  100. metadata/generated/schema/api/search/__init__.py +1 -1
  101. metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
  102. metadata/generated/schema/api/services/__init__.py +1 -1
  103. metadata/generated/schema/api/services/createApiService.py +1 -1
  104. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  105. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  106. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  107. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  108. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  109. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  110. metadata/generated/schema/api/services/createSearchService.py +1 -1
  111. metadata/generated/schema/api/services/createStorageService.py +1 -1
  112. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  113. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  114. metadata/generated/schema/api/setOwner.py +1 -1
  115. metadata/generated/schema/api/teams/__init__.py +1 -1
  116. metadata/generated/schema/api/teams/createPersona.py +1 -1
  117. metadata/generated/schema/api/teams/createRole.py +1 -1
  118. metadata/generated/schema/api/teams/createTeam.py +8 -1
  119. metadata/generated/schema/api/teams/createUser.py +11 -1
  120. metadata/generated/schema/api/tests/__init__.py +1 -1
  121. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  122. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  123. metadata/generated/schema/api/tests/createTestCase.py +9 -6
  124. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  125. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  126. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  127. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  128. metadata/generated/schema/api/validateGlossaryTagsRequest.py +31 -0
  129. metadata/generated/schema/api/voteRequest.py +1 -1
  130. metadata/generated/schema/auth/__init__.py +1 -1
  131. metadata/generated/schema/auth/basicAuth.py +1 -1
  132. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  133. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  134. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  135. metadata/generated/schema/auth/emailRequest.py +1 -1
  136. metadata/generated/schema/auth/emailVerificationToken.py +2 -1
  137. metadata/generated/schema/auth/generateToken.py +1 -1
  138. metadata/generated/schema/auth/jwtAuth.py +1 -1
  139. metadata/generated/schema/auth/loginRequest.py +1 -1
  140. metadata/generated/schema/auth/logoutRequest.py +1 -1
  141. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  142. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  143. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  144. metadata/generated/schema/auth/refreshToken.py +1 -1
  145. metadata/generated/schema/auth/registrationRequest.py +1 -1
  146. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  147. metadata/generated/schema/auth/revokeToken.py +1 -1
  148. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  149. metadata/generated/schema/auth/ssoAuth.py +1 -1
  150. metadata/generated/schema/auth/supportToken.py +35 -0
  151. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  152. metadata/generated/schema/configuration/__init__.py +1 -1
  153. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  154. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  155. metadata/generated/schema/configuration/authConfig.py +1 -1
  156. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  157. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  158. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  159. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  160. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  161. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  162. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  163. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  164. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  165. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  166. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  167. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  168. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  169. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  170. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  171. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  172. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  173. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  174. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  175. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  176. metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +1 -1
  177. metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
  178. metadata/generated/schema/configuration/opsConfig.py +1 -1
  179. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  180. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  181. metadata/generated/schema/configuration/searchSettings.py +1 -1
  182. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  183. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  184. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  185. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  186. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  187. metadata/generated/schema/configuration/workflowSettings.py +1 -1
  188. metadata/generated/schema/dataInsight/__init__.py +1 -1
  189. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  190. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  191. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  192. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  193. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  194. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  195. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  196. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  197. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  198. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  199. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  200. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  201. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  202. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  203. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  204. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  205. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  206. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  207. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  208. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  209. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  210. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  211. metadata/generated/schema/email/__init__.py +1 -1
  212. metadata/generated/schema/email/emailRequest.py +1 -1
  213. metadata/generated/schema/email/emailTemplate.py +1 -1
  214. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  215. metadata/generated/schema/email/smtpSettings.py +1 -1
  216. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  217. metadata/generated/schema/entity/__init__.py +1 -1
  218. metadata/generated/schema/entity/applications/__init__.py +1 -1
  219. metadata/generated/schema/entity/applications/app.py +3 -2
  220. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  221. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  222. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  223. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  224. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  225. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  226. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  227. metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
  228. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  229. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  230. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  231. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  232. metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
  233. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  234. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  235. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  236. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  237. metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
  238. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  239. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  240. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  241. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  242. metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
  243. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  244. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  245. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  246. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  247. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  248. metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
  249. metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
  250. metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
  251. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  253. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +9 -1
  254. metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
  255. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +9 -1
  256. metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
  262. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  263. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  264. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  265. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  266. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  267. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  268. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  269. metadata/generated/schema/entity/automations/__init__.py +1 -1
  270. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  271. metadata/generated/schema/entity/automations/workflow.py +1 -1
  272. metadata/generated/schema/entity/bot.py +1 -1
  273. metadata/generated/schema/entity/classification/__init__.py +1 -1
  274. metadata/generated/schema/entity/classification/classification.py +7 -4
  275. metadata/generated/schema/entity/classification/tag.py +6 -3
  276. metadata/generated/schema/entity/data/__init__.py +1 -1
  277. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  278. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  279. metadata/generated/schema/entity/data/chart.py +1 -1
  280. metadata/generated/schema/entity/data/container.py +1 -1
  281. metadata/generated/schema/entity/data/dashboard.py +1 -1
  282. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  283. metadata/generated/schema/entity/data/dataContract.py +180 -0
  284. metadata/generated/schema/entity/data/database.py +1 -1
  285. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  286. metadata/generated/schema/entity/data/glossary.py +1 -1
  287. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  288. metadata/generated/schema/entity/data/metric.py +1 -1
  289. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  290. metadata/generated/schema/entity/data/pipeline.py +1 -1
  291. metadata/generated/schema/entity/data/query.py +1 -1
  292. metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
  293. metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
  294. metadata/generated/schema/entity/data/report.py +1 -1
  295. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  296. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  297. metadata/generated/schema/entity/data/table.py +5 -1
  298. metadata/generated/schema/entity/data/topic.py +1 -1
  299. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  300. metadata/generated/schema/entity/docStore/document.py +1 -1
  301. metadata/generated/schema/entity/domains/__init__.py +1 -1
  302. metadata/generated/schema/entity/domains/dataProduct.py +5 -1
  303. metadata/generated/schema/entity/domains/domain.py +5 -1
  304. metadata/generated/schema/entity/events/__init__.py +1 -1
  305. metadata/generated/schema/entity/events/webhook.py +7 -1
  306. metadata/generated/schema/entity/feed/__init__.py +1 -1
  307. metadata/generated/schema/entity/feed/assets.py +1 -1
  308. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  309. metadata/generated/schema/entity/feed/description.py +1 -1
  310. metadata/generated/schema/entity/feed/domain.py +1 -1
  311. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  312. metadata/generated/schema/entity/feed/owner.py +1 -1
  313. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  314. metadata/generated/schema/entity/feed/tag.py +1 -1
  315. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  316. metadata/generated/schema/entity/feed/thread.py +1 -1
  317. metadata/generated/schema/entity/policies/__init__.py +1 -1
  318. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  319. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +6 -1
  320. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  321. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  322. metadata/generated/schema/entity/policies/filters.py +1 -1
  323. metadata/generated/schema/entity/policies/policy.py +1 -1
  324. metadata/generated/schema/entity/services/__init__.py +1 -1
  325. metadata/generated/schema/entity/services/apiService.py +1 -1
  326. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  327. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  328. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  329. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  330. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  331. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  332. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  333. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  334. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  335. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  336. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  337. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  340. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  341. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  342. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  343. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  344. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  345. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  346. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  347. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  348. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  349. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +9 -1
  356. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  357. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  359. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +5 -1
  360. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  361. metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
  362. metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
  363. metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  367. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  372. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  383. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  384. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  426. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  427. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +9 -1
  432. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  433. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  434. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  441. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  447. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  460. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  461. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  462. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  463. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  464. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  465. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  466. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  474. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  476. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  477. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  478. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  482. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  487. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  488. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  489. metadata/generated/schema/entity/services/databaseService.py +1 -1
  490. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  491. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  492. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  493. metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
  494. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  495. metadata/generated/schema/entity/services/messagingService.py +1 -1
  496. metadata/generated/schema/entity/services/metadataService.py +1 -1
  497. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  498. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  499. metadata/generated/schema/entity/services/searchService.py +1 -1
  500. metadata/generated/schema/entity/services/serviceType.py +1 -1
  501. metadata/generated/schema/entity/services/storageService.py +1 -1
  502. metadata/generated/schema/entity/teams/__init__.py +1 -1
  503. metadata/generated/schema/entity/teams/persona.py +1 -1
  504. metadata/generated/schema/entity/teams/role.py +1 -1
  505. metadata/generated/schema/entity/teams/team.py +8 -1
  506. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  507. metadata/generated/schema/entity/teams/user.py +11 -1
  508. metadata/generated/schema/entity/type.py +1 -1
  509. metadata/generated/schema/entity/utils/__init__.py +1 -1
  510. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  511. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  512. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  513. metadata/generated/schema/events/__init__.py +1 -1
  514. metadata/generated/schema/events/alertMetrics.py +1 -1
  515. metadata/generated/schema/events/api/__init__.py +1 -1
  516. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  517. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  518. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  519. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  520. metadata/generated/schema/events/api/typedEvent.py +1 -1
  521. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  522. metadata/generated/schema/events/eventFilterRule.py +1 -1
  523. metadata/generated/schema/events/eventSubscription.py +1 -1
  524. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  525. metadata/generated/schema/events/failedEvent.py +1 -1
  526. metadata/generated/schema/events/failedEventResponse.py +1 -1
  527. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  528. metadata/generated/schema/events/statusContext.py +1 -1
  529. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  530. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  531. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  532. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  533. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  534. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  535. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  536. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  537. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  538. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  539. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  540. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
  541. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
  542. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  543. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  544. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  545. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  546. metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
  547. metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
  548. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  549. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  550. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  551. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  552. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  553. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  554. metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
  555. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  556. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  557. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  558. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  559. metadata/generated/schema/jobs/__init__.py +1 -1
  560. metadata/generated/schema/jobs/backgroundJob.py +12 -3
  561. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  562. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  563. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  564. metadata/generated/schema/metadataIngestion/application.py +1 -1
  565. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  566. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  567. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  568. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  569. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  570. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  571. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  572. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  573. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  574. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  575. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  576. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  577. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  578. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  579. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  580. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  581. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  582. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  583. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  584. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  585. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  586. metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
  587. metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
  588. metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
  589. metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
  590. metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
  591. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  592. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  593. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  594. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  595. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  596. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  597. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  598. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  599. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  600. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  601. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  602. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  603. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  604. metadata/generated/schema/monitoring/__init__.py +1 -1
  605. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  606. metadata/generated/schema/scim/__init__.py +3 -0
  607. metadata/generated/schema/scim/scimConfiguration.py +32 -0
  608. metadata/generated/schema/search/__init__.py +1 -1
  609. metadata/generated/schema/search/aggregationRequest.py +1 -1
  610. metadata/generated/schema/search/searchRequest.py +8 -1
  611. metadata/generated/schema/security/__init__.py +1 -1
  612. metadata/generated/schema/security/client/__init__.py +1 -1
  613. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  614. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  615. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  616. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  617. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  618. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  619. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  620. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  621. metadata/generated/schema/security/credentials/__init__.py +1 -1
  622. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  623. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  624. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  625. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  626. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  627. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  628. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  629. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  630. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  631. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  632. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  633. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  634. metadata/generated/schema/security/sasl/__init__.py +1 -1
  635. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  636. metadata/generated/schema/security/secrets/__init__.py +1 -1
  637. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  638. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  639. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  640. metadata/generated/schema/security/securityConfiguration.py +1 -1
  641. metadata/generated/schema/security/ssl/__init__.py +1 -1
  642. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  643. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  644. metadata/generated/schema/settings/__init__.py +1 -1
  645. metadata/generated/schema/settings/settings.py +2 -1
  646. metadata/generated/schema/system/__init__.py +1 -1
  647. metadata/generated/schema/system/entityError.py +1 -1
  648. metadata/generated/schema/system/eventPublisherJob.py +8 -1
  649. metadata/generated/schema/system/indexingError.py +1 -1
  650. metadata/generated/schema/system/limitsResponse.py +1 -1
  651. metadata/generated/schema/system/ui/__init__.py +1 -1
  652. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  653. metadata/generated/schema/system/ui/navigationItem.py +1 -1
  654. metadata/generated/schema/system/ui/page.py +1 -1
  655. metadata/generated/schema/system/ui/tab.py +1 -1
  656. metadata/generated/schema/system/ui/uiCustomization.py +1 -1
  657. metadata/generated/schema/system/validationResponse.py +1 -1
  658. metadata/generated/schema/tests/__init__.py +1 -1
  659. metadata/generated/schema/tests/assigned.py +1 -1
  660. metadata/generated/schema/tests/basic.py +1 -1
  661. metadata/generated/schema/tests/customMetric.py +1 -1
  662. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  663. metadata/generated/schema/tests/resolved.py +1 -1
  664. metadata/generated/schema/tests/testCase.py +1 -1
  665. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  666. metadata/generated/schema/tests/testDefinition.py +1 -1
  667. metadata/generated/schema/tests/testSuite.py +1 -1
  668. metadata/generated/schema/type/__init__.py +1 -1
  669. metadata/generated/schema/type/apiSchema.py +1 -1
  670. metadata/generated/schema/type/assetCertification.py +1 -1
  671. metadata/generated/schema/type/auditLog.py +1 -1
  672. metadata/generated/schema/type/basic.py +1 -1
  673. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  674. metadata/generated/schema/type/changeEvent.py +1 -1
  675. metadata/generated/schema/type/changeEventType.py +1 -1
  676. metadata/generated/schema/type/changeSummaryMap.py +1 -1
  677. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  678. metadata/generated/schema/type/csvDocumentation.py +1 -1
  679. metadata/generated/schema/type/csvErrorType.py +1 -1
  680. metadata/generated/schema/type/csvFile.py +1 -1
  681. metadata/generated/schema/type/csvImportResult.py +1 -1
  682. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  683. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  684. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  685. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  686. metadata/generated/schema/type/customProperty.py +1 -1
  687. metadata/generated/schema/type/dailyCount.py +1 -1
  688. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  689. metadata/generated/schema/type/entityHierarchy.py +1 -1
  690. metadata/generated/schema/type/entityHistory.py +1 -1
  691. metadata/generated/schema/type/entityLineage.py +1 -1
  692. metadata/generated/schema/type/entityReference.py +1 -1
  693. metadata/generated/schema/type/entityReferenceList.py +1 -1
  694. metadata/generated/schema/type/entityRelationship.py +1 -1
  695. metadata/generated/schema/type/entityUsage.py +1 -1
  696. metadata/generated/schema/type/filterPattern.py +1 -1
  697. metadata/generated/schema/type/function.py +1 -1
  698. metadata/generated/schema/type/include.py +1 -1
  699. metadata/generated/schema/type/jdbcConnection.py +1 -1
  700. metadata/generated/schema/type/lifeCycle.py +1 -1
  701. metadata/generated/schema/type/paging.py +1 -1
  702. metadata/generated/schema/type/profile.py +1 -1
  703. metadata/generated/schema/type/queryParserData.py +1 -1
  704. metadata/generated/schema/type/reaction.py +1 -1
  705. metadata/generated/schema/type/schedule.py +1 -1
  706. metadata/generated/schema/type/schema.py +1 -1
  707. metadata/generated/schema/type/tableQuery.py +1 -1
  708. metadata/generated/schema/type/tableUsageCount.py +1 -1
  709. metadata/generated/schema/type/tagLabel.py +1 -1
  710. metadata/generated/schema/type/usageDetails.py +1 -1
  711. metadata/generated/schema/type/usageRequest.py +1 -1
  712. metadata/generated/schema/type/votes.py +1 -1
  713. metadata/great_expectations/action.py +4 -8
  714. metadata/great_expectations/action1xx.py +395 -0
  715. metadata/ingestion/connections/builders.py +14 -4
  716. metadata/ingestion/connections/connection.py +63 -0
  717. metadata/ingestion/connections/query_logger.py +115 -0
  718. metadata/ingestion/connections/test_connections.py +1 -1
  719. metadata/ingestion/ometa/mixins/tests_mixin.py +3 -5
  720. metadata/ingestion/ometa/routes.py +2 -0
  721. metadata/ingestion/sink/metadata_rest.py +54 -11
  722. metadata/ingestion/source/api/api_service.py +2 -7
  723. metadata/ingestion/source/connections.py +80 -14
  724. metadata/ingestion/source/connections_utils.py +32 -0
  725. metadata/ingestion/source/dashboard/dashboard_service.py +26 -15
  726. metadata/ingestion/source/dashboard/powerbi/metadata.py +32 -20
  727. metadata/ingestion/source/dashboard/superset/connection.py +8 -8
  728. metadata/ingestion/source/dashboard/superset/queries.py +1 -1
  729. metadata/ingestion/source/dashboard/tableau/metadata.py +12 -2
  730. metadata/ingestion/source/dashboard/tableau/models.py +12 -2
  731. metadata/ingestion/source/database/bigquery/connection.py +13 -9
  732. metadata/ingestion/source/database/bigquery/helper.py +11 -9
  733. metadata/ingestion/source/database/bigquery/metadata.py +102 -13
  734. metadata/ingestion/source/database/bigquery/queries.py +15 -3
  735. metadata/ingestion/source/database/common_db_source.py +2 -4
  736. metadata/ingestion/source/database/database_service.py +2 -7
  737. metadata/ingestion/source/database/datalake/metadata.py +1 -1
  738. metadata/ingestion/source/database/dbt/metadata.py +0 -5
  739. metadata/ingestion/source/database/mysql/connection.py +52 -45
  740. metadata/ingestion/source/database/mysql/service_spec.py +2 -0
  741. metadata/ingestion/source/database/query_parser_source.py +2 -7
  742. metadata/ingestion/source/database/redshift/connection.py +1 -1
  743. metadata/ingestion/source/database/sample_data.py +1 -1
  744. metadata/ingestion/source/database/saphana/lineage.py +2 -7
  745. metadata/ingestion/source/database/sas/metadata.py +2 -7
  746. metadata/ingestion/source/database/snowflake/metadata.py +1 -2
  747. metadata/ingestion/source/database/snowflake/utils.py +0 -4
  748. metadata/ingestion/source/database/trino/profiler/system_tables_profiler.py +26 -17
  749. metadata/ingestion/source/database/unitycatalog/connection.py +33 -0
  750. metadata/ingestion/source/database/unitycatalog/lineage.py +2 -7
  751. metadata/ingestion/source/database/unitycatalog/metadata.py +126 -13
  752. metadata/ingestion/source/database/unitycatalog/queries.py +19 -0
  753. metadata/ingestion/source/messaging/messaging_service.py +2 -7
  754. metadata/ingestion/source/metadata/alationsink/metadata.py +2 -7
  755. metadata/ingestion/source/metadata/amundsen/metadata.py +2 -7
  756. metadata/ingestion/source/metadata/atlas/metadata.py +2 -7
  757. metadata/ingestion/source/mlmodel/mlmodel_service.py +2 -7
  758. metadata/ingestion/source/pipeline/airflow/connection.py +4 -6
  759. metadata/ingestion/source/pipeline/nifi/metadata.py +133 -3
  760. metadata/ingestion/source/pipeline/pipeline_service.py +20 -7
  761. metadata/ingestion/source/search/search_service.py +2 -7
  762. metadata/ingestion/source/storage/storage_service.py +2 -7
  763. metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +3 -3
  764. metadata/profiler/metrics/static/not_regexp_match_count.py +4 -3
  765. metadata/profiler/metrics/static/regexp_match_count.py +3 -2
  766. metadata/profiler/orm/functions/length.py +1 -0
  767. metadata/profiler/orm/functions/md5.py +9 -0
  768. metadata/profiler/orm/functions/modulo.py +1 -0
  769. metadata/profiler/orm/functions/random_num.py +4 -0
  770. metadata/profiler/orm/functions/regexp.py +40 -0
  771. metadata/profiler/orm/functions/table_metric_computer.py +34 -8
  772. metadata/profiler/orm/registry.py +1 -0
  773. metadata/profiler/processor/core.py +2 -2
  774. metadata/profiler/processor/default.py +29 -28
  775. metadata/profiler/processor/metric_filter.py +16 -3
  776. metadata/profiler/processor/models.py +14 -4
  777. metadata/profiler/source/database/base/profiler_resolver.py +35 -0
  778. metadata/profiler/source/database/base/profiler_source.py +45 -30
  779. metadata/profiler/source/profiler_source_interface.py +8 -13
  780. metadata/sampler/sampler_interface.py +15 -10
  781. metadata/sampler/sqlalchemy/bigquery/sampler.py +7 -0
  782. metadata/utils/dependency_injector/dependency_injector.py +403 -0
  783. metadata/utils/service_spec/service_spec.py +66 -10
  784. metadata/workflow/profiler.py +2 -7
  785. {openmetadata_ingestion-1.7.4.2.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/METADATA +516 -505
  786. {openmetadata_ingestion-1.7.4.2.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/RECORD +790 -767
  787. {openmetadata_ingestion-1.7.4.2.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/LICENSE +0 -0
  788. {openmetadata_ingestion-1.7.4.2.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/WHEEL +0 -0
  789. {openmetadata_ingestion-1.7.4.2.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/entry_points.txt +0 -0
  790. {openmetadata_ingestion-1.7.4.2.dist-info → openmetadata_ingestion-1.8.0.0.dist-info}/top_level.txt +0 -0
@@ -79,7 +79,7 @@ from metadata.ingestion.models.tests_data import (
79
79
  OMetaTestSuiteSample,
80
80
  )
81
81
  from metadata.ingestion.models.user import OMetaUserProfile
82
- from metadata.ingestion.ometa.client import APIError
82
+ from metadata.ingestion.ometa.client import APIError, LimitsException
83
83
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
84
84
  from metadata.ingestion.source.dashboard.dashboard_service import DashboardUsage
85
85
  from metadata.ingestion.source.database.database_service import DataModelLink
@@ -118,6 +118,7 @@ class MetadataRestSink(Sink): # pylint: disable=too-many-public-methods
118
118
  self.metadata = metadata
119
119
  self.role_entities = {}
120
120
  self.team_entities = {}
121
+ self.limit_reached = set()
121
122
 
122
123
  @classmethod
123
124
  def create(
@@ -166,16 +167,30 @@ class MetadataRestSink(Sink): # pylint: disable=too-many-public-methods
166
167
  Send to OM the request creation received as is.
167
168
  :param entity_request: Create Entity request
168
169
  """
169
- created = self.metadata.create_or_update(entity_request)
170
- if created:
171
- return Either(right=created)
170
+ if type(entity_request).__name__ in self.limit_reached:
171
+ # If the limit has been reached, we don't need to try to ingest the entity
172
+ # Note: We use PatchRequest to update the entity, so updating is not affected by the limit
173
+ return None
174
+ try:
175
+ created = self.metadata.create_or_update(entity_request)
176
+ if created:
177
+ return Either(right=created)
172
178
 
173
- error = f"Failed to ingest {type(entity_request).__name__}"
174
- return Either(
175
- left=StackTraceError(
176
- name=type(entity_request).__name__, error=error, stackTrace=None
179
+ error = f"Failed to ingest {type(entity_request).__name__}"
180
+ return Either(
181
+ left=StackTraceError(
182
+ name=type(entity_request).__name__, error=error, stackTrace=None
183
+ )
184
+ )
185
+ except LimitsException as _:
186
+ self.limit_reached.add(type(entity_request).__name__)
187
+ return Either(
188
+ left=StackTraceError(
189
+ name=type(entity_request).__name__,
190
+ error=f"Limit reached for {type(entity_request).__name__}",
191
+ stackTrace=None,
192
+ )
177
193
  )
178
- )
179
194
 
180
195
  @_run_dispatch.register
181
196
  def patch_entity(self, record: PatchRequest) -> Either[Entity]:
@@ -329,12 +344,26 @@ class MetadataRestSink(Sink): # pylint: disable=too-many-public-methods
329
344
  team = self.metadata.create_or_update(create_team)
330
345
  self.team_entities[team.name.root] = str(team.id.root)
331
346
  return team
347
+ except LimitsException as _:
348
+ if type(create_team).__name__ in self.limit_reached:
349
+ # Note: We do not have a way to patch the team,
350
+ # so we try to put and handle exception
351
+ return None
352
+ self.limit_reached.add(type(create_team).__name__)
353
+ return Either(
354
+ left=StackTraceError(
355
+ name=type(create_team).__name__,
356
+ error=f"Limit reached for {type(create_team).__name__}",
357
+ stackTrace=None,
358
+ )
359
+ )
332
360
  except Exception as exc:
333
361
  logger.debug(traceback.format_exc())
334
362
  logger.error(f"Unexpected error creating team [{create_team}]: {exc}")
335
363
 
336
364
  return None
337
365
 
366
+ # pylint: disable=too-many-branches
338
367
  @_run_dispatch.register
339
368
  def write_users(self, record: OMetaUserProfile) -> Either[User]:
340
369
  """
@@ -388,8 +417,22 @@ class MetadataRestSink(Sink): # pylint: disable=too-many-public-methods
388
417
  metadata_user = CreateUserRequest(**user_profile)
389
418
 
390
419
  # Create user
391
- user = self.metadata.create_or_update(metadata_user)
392
- return Either(right=user)
420
+ try:
421
+ user = self.metadata.create_or_update(metadata_user)
422
+ return Either(right=user)
423
+ except LimitsException as _:
424
+ if type(metadata_user).__name__ in self.limit_reached:
425
+ # Note: We do not have a way to patch the user,
426
+ # so we try to put and handle exception
427
+ return None
428
+ self.limit_reached.add(type(metadata_user).__name__)
429
+ return Either(
430
+ left=StackTraceError(
431
+ name=type(metadata_user).__name__,
432
+ error=f"Limit reached for {type(metadata_user).__name__}",
433
+ stackTrace=None,
434
+ )
435
+ )
393
436
 
394
437
  @_run_dispatch.register
395
438
  def delete_entity(self, record: DeleteEntity) -> Either[Entity]:
@@ -39,9 +39,6 @@ from metadata.ingestion.api.delete import delete_entity_from_source
39
39
  from metadata.ingestion.api.models import Either
40
40
  from metadata.ingestion.api.steps import Source
41
41
  from metadata.ingestion.api.topology_runner import TopologyRunnerMixin
42
- from metadata.ingestion.connections.test_connections import (
43
- raise_test_connection_exception,
44
- )
45
42
  from metadata.ingestion.models.delete_entity import DeleteEntity
46
43
  from metadata.ingestion.models.topology import (
47
44
  NodeStage,
@@ -50,7 +47,7 @@ from metadata.ingestion.models.topology import (
50
47
  TopologyNode,
51
48
  )
52
49
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
53
- from metadata.ingestion.source.connections import get_connection, get_test_connection_fn
50
+ from metadata.ingestion.source.connections import get_connection, test_connection_common
54
51
  from metadata.utils import fqn
55
52
  from metadata.utils.logger import ingestion_logger
56
53
 
@@ -177,11 +174,9 @@ class ApiServiceSource(TopologyRunnerMixin, Source, ABC):
177
174
  """By default, nothing to close"""
178
175
 
179
176
  def test_connection(self) -> None:
180
- test_connection_fn = get_test_connection_fn(self.service_connection)
181
- result = test_connection_fn(
177
+ test_connection_common(
182
178
  self.metadata, self.connection_obj, self.service_connection
183
179
  )
184
- raise_test_connection_exception(result)
185
180
 
186
181
  def mark_api_collections_as_deleted(self) -> Iterable[Either[DeleteEntity]]:
187
182
  """Method to mark the api collection as deleted"""
@@ -14,11 +14,16 @@ Main entrypoints to create and test connections
14
14
  for any source.
15
15
  """
16
16
  import traceback
17
- from typing import Any, Callable
17
+ from typing import Any, Callable, Optional, Type
18
18
 
19
19
  from pydantic import BaseModel
20
- from sqlalchemy.engine import Engine
21
20
 
21
+ from metadata.ingestion.connections.connection import BaseConnection
22
+ from metadata.ingestion.connections.test_connections import (
23
+ raise_test_connection_exception,
24
+ )
25
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
26
+ from metadata.utils.class_helper import get_service_type_from_source_type
22
27
  from metadata.utils.importer import import_connection_fn
23
28
  from metadata.utils.logger import cli_logger
24
29
 
@@ -28,10 +33,71 @@ GET_CONNECTION_FN_NAME = "get_connection"
28
33
  TEST_CONNECTION_FN_NAME = "test_connection"
29
34
 
30
35
 
36
+ # TODO: This is a temporary solution to get the connection class from the service spec.
37
+ # Once we migrate all connectors we shouldn't need this.
38
+ def _get_connection_class_from_spec(
39
+ connection: BaseModel,
40
+ ) -> Optional[Type[BaseConnection]]:
41
+ """
42
+ Helper method to get the connection class from the connection spec.
43
+ Returns the connection class if successful, None otherwise.
44
+ """
45
+ from metadata.utils.service_spec.service_spec import ( # pylint: disable=import-outside-toplevel
46
+ BaseSpec,
47
+ import_connection_class,
48
+ )
49
+
50
+ connection_type = getattr(connection, "type", None)
51
+ if connection_type:
52
+ service_type = get_service_type_from_source_type(connection_type.value)
53
+ try:
54
+ spec = BaseSpec.get_for_source(service_type, connection_type.value.lower())
55
+ if getattr(spec, "connection_class", None):
56
+ connection_class = import_connection_class(
57
+ service_type, connection_type.value.lower()
58
+ )
59
+ return connection_class
60
+ except Exception:
61
+ logger.error(
62
+ f"Error importing connection class for {connection_type.value}"
63
+ )
64
+ logger.debug(traceback.format_exc())
65
+ return None
66
+
67
+
68
+ def _get_connection_fn_from_service_spec(connection: BaseModel) -> Optional[Callable]:
69
+ """
70
+ Import the get_connection function from the source, or use ServiceSpec connection_class if defined.
71
+ """
72
+ connection_class = _get_connection_class_from_spec(connection)
73
+ if connection_class:
74
+
75
+ def _get_client(conn):
76
+ return connection_class(conn).get_client()
77
+
78
+ return _get_client
79
+ return None
80
+
81
+
82
+ def _get_test_fn_from_service_spec(connection: BaseModel) -> Optional[Callable]:
83
+ """
84
+ Import the get_connection function from the source, or use ServiceSpec connection_class if defined.
85
+ """
86
+ connection_class = _get_connection_class_from_spec(connection)
87
+ if connection_class:
88
+ return connection_class(connection).test_connection
89
+ return None
90
+
91
+
31
92
  def get_connection_fn(connection: BaseModel) -> Callable:
32
93
  """
33
- Import the get_connection function from the source
94
+ Import the get_connection function from the source, or use ServiceSpec connection_class if defined.
34
95
  """
96
+ # Try ServiceSpec path first
97
+ connection_fn = _get_connection_fn_from_service_spec(connection)
98
+ if connection_fn:
99
+ return connection_fn
100
+ # Fallback to default
35
101
  return import_connection_fn(
36
102
  connection=connection, function_name=GET_CONNECTION_FN_NAME
37
103
  )
@@ -41,6 +107,10 @@ def get_test_connection_fn(connection: BaseModel) -> Callable:
41
107
  """
42
108
  Import the test_connection function from the source
43
109
  """
110
+ test_fn = _get_test_fn_from_service_spec(connection)
111
+ if test_fn:
112
+ return test_fn
113
+ # Fallback to default
44
114
  return import_connection_fn(
45
115
  connection=connection, function_name=TEST_CONNECTION_FN_NAME
46
116
  )
@@ -54,15 +124,11 @@ def get_connection(connection: BaseModel) -> Any:
54
124
  return get_connection_fn(connection)(connection)
55
125
 
56
126
 
57
- def kill_active_connections(engine: Engine):
58
- """
59
- Method to kill the active connections
60
- as well as idle connections in the engine
61
- """
127
+ def test_connection_common(metadata: OpenMetadata, connection_obj, service_connection):
128
+ test_connection_fn = get_test_connection_fn(service_connection)
129
+ # TODO: Remove this once we migrate all connectors to use the new test connection function
62
130
  try:
63
- active_conn = engine.pool.checkedout() + engine.pool.checkedin()
64
- if active_conn:
65
- engine.dispose()
66
- except Exception as exc:
67
- logger.warning(f"Error Killing the active connections {exc}")
68
- logger.debug(traceback.format_exc())
131
+ result = test_connection_fn(metadata)
132
+ except TypeError:
133
+ result = test_connection_fn(metadata, connection_obj, service_connection)
134
+ raise_test_connection_exception(result)
@@ -0,0 +1,32 @@
1
+ # Copyright 2025 Collate
2
+ # Licensed under the Collate Community License, Version 1.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+
12
+ import traceback
13
+
14
+ from sqlalchemy.engine import Engine
15
+
16
+ from metadata.utils.logger import cli_logger
17
+
18
+ logger = cli_logger()
19
+
20
+
21
+ def kill_active_connections(engine: Engine):
22
+ """
23
+ Method to kill the active connections
24
+ as well as idle connections in the engine
25
+ """
26
+ try:
27
+ active_conn = engine.pool.checkedout() + engine.pool.checkedin()
28
+ if active_conn:
29
+ engine.dispose()
30
+ except Exception as exc:
31
+ logger.warning(f"Error Killing the active connections {exc}")
32
+ logger.debug(traceback.format_exc())
@@ -55,9 +55,6 @@ from metadata.ingestion.api.delete import delete_entity_from_source
55
55
  from metadata.ingestion.api.models import Either, Entity
56
56
  from metadata.ingestion.api.steps import Source
57
57
  from metadata.ingestion.api.topology_runner import C, TopologyRunnerMixin
58
- from metadata.ingestion.connections.test_connections import (
59
- raise_test_connection_exception,
60
- )
61
58
  from metadata.ingestion.lineage.sql_lineage import get_column_fqn
62
59
  from metadata.ingestion.models.delete_entity import DeleteEntity
63
60
  from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
@@ -70,7 +67,7 @@ from metadata.ingestion.models.topology import (
70
67
  TopologyNode,
71
68
  )
72
69
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
73
- from metadata.ingestion.source.connections import get_connection, get_test_connection_fn
70
+ from metadata.ingestion.source.connections import get_connection, test_connection_common
74
71
  from metadata.utils import fqn
75
72
  from metadata.utils.filters import filter_by_dashboard, filter_by_project
76
73
  from metadata.utils.logger import ingestion_logger
@@ -362,7 +359,31 @@ class DashboardServiceSource(TopologyRunnerMixin, Source, ABC):
362
359
  We will look for the data in all the services
363
360
  we have informed.
364
361
  """
362
+ # yield datamodel dashboard lineage
365
363
  for lineage in self.yield_datamodel_dashboard_lineage() or []:
364
+ yield from self.yield_lineage_request(lineage)
365
+
366
+ # yield datamodel lineage with tables from db services
367
+ db_service_names = self.get_db_service_names()
368
+ if not db_service_names:
369
+ for lineage in (
370
+ self.yield_dashboard_lineage_details(dashboard_details) or []
371
+ ):
372
+ yield from self.yield_lineage_request(lineage)
373
+ for db_service_name in db_service_names or []:
374
+ for lineage in (
375
+ self.yield_dashboard_lineage_details(dashboard_details, db_service_name)
376
+ or []
377
+ ):
378
+ yield from self.yield_lineage_request(lineage)
379
+
380
+ def yield_lineage_request(
381
+ self, lineage: Optional[Either[AddLineageRequest]] = None
382
+ ) -> Iterable[Either[OMetaLineageRequest]]:
383
+ """
384
+ Method to yield lineage request
385
+ """
386
+ if lineage:
366
387
  if lineage.right is not None:
367
388
  yield Either(
368
389
  right=OMetaLineageRequest(
@@ -373,14 +394,6 @@ class DashboardServiceSource(TopologyRunnerMixin, Source, ABC):
373
394
  else:
374
395
  yield lineage
375
396
 
376
- db_service_names = self.get_db_service_names()
377
- if not db_service_names:
378
- yield from self.yield_dashboard_lineage_details(dashboard_details) or []
379
- for db_service_name in db_service_names or []:
380
- yield from self.yield_dashboard_lineage_details(
381
- dashboard_details, db_service_name
382
- ) or []
383
-
384
397
  def yield_bulk_tags(
385
398
  self, *args, **kwargs
386
399
  ) -> Iterable[Either[OMetaTagAndClassification]]:
@@ -579,11 +592,9 @@ class DashboardServiceSource(TopologyRunnerMixin, Source, ABC):
579
592
  yield dashboard_details
580
593
 
581
594
  def test_connection(self) -> None:
582
- test_connection_fn = get_test_connection_fn(self.service_connection)
583
- result = test_connection_fn(
595
+ test_connection_common(
584
596
  self.metadata, self.connection_obj, self.service_connection
585
597
  )
586
- raise_test_connection_exception(result)
587
598
 
588
599
  def prepare(self):
589
600
  """By default, nothing to prepare"""
@@ -455,7 +455,7 @@ class PowerbiSource(DashboardServiceSource):
455
455
  measures.append(Column(**parsed_measure.model_dump()))
456
456
  except Exception as err:
457
457
  logger.debug(traceback.format_exc())
458
- logger.warning(f"Error processing datamodel nested measure: {err}")
458
+ logger.debug(f"Error processing datamodel nested measure: {err}")
459
459
  return measures
460
460
 
461
461
  def _get_child_columns(self, table: PowerBiTable) -> List[Column]:
@@ -631,20 +631,26 @@ class PowerbiSource(DashboardServiceSource):
631
631
  entity=Dashboard,
632
632
  fqn=report_fqn,
633
633
  )
634
- datamodel_fqn = fqn.build(
635
- self.metadata,
636
- entity_type=DashboardDataModel,
637
- service_name=self.context.get().dashboard_service,
638
- data_model_name=dashboard_details.datasetId,
639
- )
640
- datamodel_entity = self.metadata.get_by_name(
641
- entity=DashboardDataModel,
642
- fqn=datamodel_fqn,
643
- )
634
+ if dashboard_details.datasetId:
635
+ datamodel_fqn = fqn.build(
636
+ self.metadata,
637
+ entity_type=DashboardDataModel,
638
+ service_name=self.context.get().dashboard_service,
639
+ data_model_name=dashboard_details.datasetId,
640
+ )
641
+ datamodel_entity = self.metadata.get_by_name(
642
+ entity=DashboardDataModel,
643
+ fqn=datamodel_fqn,
644
+ )
644
645
 
645
- if datamodel_entity and report_entity:
646
- yield self._get_add_lineage_request(
647
- to_entity=report_entity, from_entity=datamodel_entity
646
+ if datamodel_entity and report_entity:
647
+ yield self._get_add_lineage_request(
648
+ to_entity=report_entity, from_entity=datamodel_entity
649
+ )
650
+ else:
651
+ logger.debug(
652
+ f"Skipping datamodel and report lineage for"
653
+ f" {dashboard_details.id} as datasetId is not found"
648
654
  )
649
655
 
650
656
  except Exception as exc: # pylint: disable=broad-except
@@ -1184,6 +1190,12 @@ class PowerbiSource(DashboardServiceSource):
1184
1190
  Method to process the dashboard owners
1185
1191
  """
1186
1192
  try:
1193
+ if not self.source_config.includeOwners:
1194
+ logger.debug(
1195
+ f"Skipping owner processing for {dashboard_details.id} "
1196
+ f"as includeOwners is False"
1197
+ )
1198
+ return None
1187
1199
  owner_ref_list = [] # to assign multiple owners to entity if they exist
1188
1200
  for owner in dashboard_details.users or []:
1189
1201
  owner_ref = None
@@ -1198,7 +1210,7 @@ class PowerbiSource(DashboardServiceSource):
1198
1210
  access_right = owner.dashboardUserAccessRight
1199
1211
 
1200
1212
  if owner.userType != "Member":
1201
- logger.warning(
1213
+ logger.debug(
1202
1214
  f"User is not a member of {dashboard_details.id}:"
1203
1215
  f" ({owner.displayName}, {owner.email})"
1204
1216
  )
@@ -1211,7 +1223,7 @@ class PowerbiSource(DashboardServiceSource):
1211
1223
  try:
1212
1224
  owner_email = EmailStr._validate(owner.email)
1213
1225
  except PydanticCustomError:
1214
- logger.warning(f"Invalid email for owner: {owner.email}")
1226
+ logger.debug(f"Invalid email for owner: {owner.email}")
1215
1227
  owner_email = None
1216
1228
  if owner_email:
1217
1229
  try:
@@ -1219,7 +1231,7 @@ class PowerbiSource(DashboardServiceSource):
1219
1231
  owner_email.lower()
1220
1232
  )
1221
1233
  except Exception as err:
1222
- logger.warning(
1234
+ logger.debug(
1223
1235
  f"Could not process owner data with email"
1224
1236
  f" {owner.email} in {dashboard_details.id}: {err}"
1225
1237
  )
@@ -1229,14 +1241,14 @@ class PowerbiSource(DashboardServiceSource):
1229
1241
  name=owner.displayName
1230
1242
  )
1231
1243
  except Exception as err:
1232
- logger.warning(
1244
+ logger.debug(
1233
1245
  f"Could not process owner data with name"
1234
1246
  f" {owner.displayName} in {dashboard_details.id}: {err}"
1235
1247
  )
1236
1248
  if owner_ref:
1237
1249
  owner_ref_list.append(owner_ref.root[0])
1238
1250
  else:
1239
- logger.warning(
1251
+ logger.debug(
1240
1252
  f"User does not have owner, admin or write access to"
1241
1253
  f" {dashboard_details.id}: ({owner.displayName}, {owner.email})"
1242
1254
  )
@@ -1254,7 +1266,7 @@ class PowerbiSource(DashboardServiceSource):
1254
1266
  if owner_ref and owner_ref.root[0] not in owner_ref_list:
1255
1267
  owner_ref_list.append(owner_ref.root[0])
1256
1268
  except Exception as err:
1257
- logger.warning(f"Could not fetch owner data due to {err}")
1269
+ logger.debug(f"Could not fetch current active user due to {err}")
1258
1270
  if len(owner_ref_list) > 0:
1259
1271
  logger.debug(
1260
1272
  f"Successfully fetched owners data for {dashboard_details.id}"
@@ -24,7 +24,7 @@ from metadata.generated.schema.entity.services.connections.dashboard.supersetCon
24
24
  SupersetConnection,
25
25
  )
26
26
  from metadata.generated.schema.entity.services.connections.database.mysqlConnection import (
27
- MysqlConnection,
27
+ MysqlConnection as MysqlConnectionConfig,
28
28
  )
29
29
  from metadata.generated.schema.entity.services.connections.database.postgresConnection import (
30
30
  PostgresConnection,
@@ -46,16 +46,16 @@ from metadata.ingestion.source.dashboard.superset.queries import (
46
46
  FETCH_ALL_CHARTS_TEST,
47
47
  FETCH_DASHBOARDS_TEST,
48
48
  )
49
- from metadata.ingestion.source.database.mysql.connection import (
50
- get_connection as mysql_get_connection,
51
- )
49
+ from metadata.ingestion.source.database.mysql.connection import MySQLConnection
52
50
  from metadata.ingestion.source.database.postgres.connection import (
53
51
  get_connection as pg_get_connection,
54
52
  )
55
53
  from metadata.utils.constants import THREE_MIN
56
54
 
57
55
 
58
- def get_connection(connection: SupersetConnection) -> SupersetAPIClient:
56
+ def get_connection(
57
+ connection: SupersetConnection,
58
+ ) -> Union[SupersetAPIClient, Engine, None]:
59
59
  """
60
60
  Create connection
61
61
  """
@@ -63,8 +63,8 @@ def get_connection(connection: SupersetConnection) -> SupersetAPIClient:
63
63
  return SupersetAPIClient(connection)
64
64
  if isinstance(connection.connection, PostgresConnection):
65
65
  return pg_get_connection(connection=connection.connection)
66
- if isinstance(connection.connection, MysqlConnection):
67
- return mysql_get_connection(connection=connection.connection)
66
+ if isinstance(connection.connection, MysqlConnectionConfig):
67
+ return MySQLConnection(connection.connection).get_client()
68
68
  return None
69
69
 
70
70
 
@@ -89,7 +89,7 @@ def test_connection(
89
89
  else:
90
90
  test_fn["CheckAccess"] = partial(test_connection_engine_step, client)
91
91
  test_fn["GetDashboards"] = partial(test_query, client, FETCH_DASHBOARDS_TEST)
92
- if isinstance(service_connection.connection, MysqlConnection):
92
+ if isinstance(service_connection.connection, MysqlConnectionConfig):
93
93
  test_fn["GetCharts"] = partial(
94
94
  test_query, client, FETCH_ALL_CHARTS_TEST.replace('"', "`")
95
95
  )
@@ -93,7 +93,7 @@ LIMIT 1
93
93
  FETCH_COLUMN = """
94
94
  select
95
95
  tc.id,
96
- tc.table_name ,
96
+ t.table_name ,
97
97
  tc.column_name,
98
98
  tc.table_id,
99
99
  tc.type,
@@ -299,8 +299,9 @@ class TableauSource(DashboardServiceSource):
299
299
  topology. And they are cleared after processing each Dashboard because of the 'clear_cache' option.
300
300
  """
301
301
  try:
302
+ base_url = self.get_base_url()
302
303
  dashboard_url = (
303
- f"{clean_uri(str(self.config.serviceConnection.root.config.hostPort))}"
304
+ f"{clean_uri(str(base_url))}"
304
305
  f"/#{urlparse(dashboard_details.webpageUrl).fragment}/views"
305
306
  )
306
307
  dashboard_request = CreateDashboardRequest(
@@ -731,8 +732,9 @@ class TableauSource(DashboardServiceSource):
731
732
  )
732
733
  workbook_chart_name = ChartUrl(chart.contentUrl)
733
734
 
735
+ base_url = self.get_base_url()
734
736
  chart_url = (
735
- f"{clean_uri(self.service_connection.hostPort)}/"
737
+ f"{clean_uri(str(base_url))}"
736
738
  f"#{site_url}"
737
739
  f"views/{workbook_chart_name.workbook_name}"
738
740
  f"/{workbook_chart_name.chart_url_name}"
@@ -1084,3 +1086,11 @@ class TableauSource(DashboardServiceSource):
1084
1086
  stackTrace=traceback.format_exc(),
1085
1087
  )
1086
1088
  )
1089
+
1090
+ def get_base_url(self) -> str:
1091
+ """
1092
+ Get the proxy url for the tableau server
1093
+ """
1094
+ if self.config.serviceConnection.root.config.proxyURL:
1095
+ return str(self.config.serviceConnection.root.config.proxyURL)
1096
+ return str(self.config.serviceConnection.root.config.hostPort)
@@ -13,6 +13,7 @@
13
13
  Tableau Source Model module
14
14
  """
15
15
 
16
+ import uuid
16
17
  from typing import Dict, List, Optional, Set, Union
17
18
 
18
19
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -28,9 +29,18 @@ class TableauBaseModel(BaseModel):
28
29
 
29
30
  model_config = ConfigDict(extra="allow")
30
31
 
31
- id: str
32
+ # in case of personal space workbooks, the project id is returned as a UUID
33
+ id: Union[str, uuid.UUID]
32
34
  name: Optional[str] = None
33
35
 
36
+ # pylint: disable=no-self-argument
37
+ @field_validator("id", mode="before")
38
+ def coerce_uuid_to_string(cls, value):
39
+ """Ensure id is always stored as a string internally"""
40
+ if isinstance(value, uuid.UUID):
41
+ return str(value)
42
+ return value
43
+
34
44
  def __hash__(self):
35
45
  return hash(self.id)
36
46
 
@@ -187,7 +197,7 @@ class TableauDashboard(TableauBaseModel):
187
197
  tags: Optional[Set] = []
188
198
  webpageUrl: Optional[str] = None
189
199
  charts: Optional[List[TableauChart]] = None
190
- dataModels: List[DataSource] = []
200
+ dataModels: Optional[List[DataSource]] = []
191
201
  custom_sql_queries: Optional[List[str]] = None
192
202
  user_views: Optional[int] = None
193
203
 
@@ -68,21 +68,25 @@ def get_connection_url(connection: BigQueryConnection) -> str:
68
68
  connection.credentials.gcpConfig.projectId, SingleProjectId
69
69
  ):
70
70
  if not connection.credentials.gcpConfig.projectId.root:
71
- return f"{connection.scheme.value}://{connection.credentials.gcpConfig.projectId or ''}"
71
+ return f"{connection.scheme.value}://{connection.billingProjectId or connection.credentials.gcpConfig.projectId.root or ''}"
72
72
  if (
73
73
  not connection.credentials.gcpConfig.privateKey
74
74
  and connection.credentials.gcpConfig.projectId.root
75
75
  ):
76
76
  project_id = connection.credentials.gcpConfig.projectId.root
77
- os.environ["GOOGLE_CLOUD_PROJECT"] = project_id
78
- return f"{connection.scheme.value}://{connection.credentials.gcpConfig.projectId.root}"
77
+ os.environ["GOOGLE_CLOUD_PROJECT"] = (
78
+ connection.billingProjectId or project_id
79
+ )
80
+ return f"{connection.scheme.value}://{connection.billingProjectId or connection.credentials.gcpConfig.projectId.root}"
79
81
  elif isinstance(connection.credentials.gcpConfig.projectId, MultipleProjectId):
80
82
  for project_id in connection.credentials.gcpConfig.projectId.root:
81
83
  if not connection.credentials.gcpConfig.privateKey and project_id:
82
84
  # Setting environment variable based on project id given by user / set in ADC
83
- os.environ["GOOGLE_CLOUD_PROJECT"] = project_id
84
- return f"{connection.scheme.value}://{project_id}"
85
- return f"{connection.scheme.value}://"
85
+ os.environ["GOOGLE_CLOUD_PROJECT"] = (
86
+ connection.billingProjectId or project_id
87
+ )
88
+ return f"{connection.scheme.value}://{connection.billingProjectId or project_id}"
89
+ return f"{connection.scheme.value}://{connection.billingProjectId or ''}"
86
90
 
87
91
  # If gcpConfig is the JSON key path and projectId is defined, we use it by default
88
92
  elif (
@@ -92,13 +96,13 @@ def get_connection_url(connection: BigQueryConnection) -> str:
92
96
  if isinstance( # pylint: disable=no-else-return
93
97
  connection.credentials.gcpConfig.projectId, SingleProjectId
94
98
  ):
95
- return f"{connection.scheme.value}://{connection.credentials.gcpConfig.projectId.root}"
99
+ return f"{connection.scheme.value}://{connection.billingProjectId or connection.credentials.gcpConfig.projectId.root}"
96
100
 
97
101
  elif isinstance(connection.credentials.gcpConfig.projectId, MultipleProjectId):
98
102
  for project_id in connection.credentials.gcpConfig.projectId.root:
99
- return f"{connection.scheme.value}://{project_id}"
103
+ return f"{connection.scheme.value}://{connection.billingProjectId or project_id}"
100
104
 
101
- return f"{connection.scheme.value}://"
105
+ return f"{connection.scheme.value}://{connection.billingProjectId or ''}"
102
106
 
103
107
 
104
108
  def get_connection(connection: BigQueryConnection) -> Engine: