openmetadata-ingestion 1.6.1.0__py3-none-any.whl → 1.6.2.1__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 (671) hide show
  1. metadata/clients/aws_client.py +70 -23
  2. metadata/data_quality/api/models.py +4 -0
  3. metadata/data_quality/processor/test_case_runner.py +8 -5
  4. metadata/data_quality/runner/base_test_suite_source.py +4 -5
  5. metadata/data_quality/source/test_suite.py +143 -39
  6. metadata/generated/schema/analytics/__init__.py +1 -1
  7. metadata/generated/schema/analytics/basic.py +1 -1
  8. metadata/generated/schema/analytics/reportData.py +1 -1
  9. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  10. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  11. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  12. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  13. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  14. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  15. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  16. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  17. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  18. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  19. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  20. metadata/generated/schema/api/__init__.py +1 -1
  21. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  22. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
  23. metadata/generated/schema/api/analytics/__init__.py +1 -1
  24. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  25. metadata/generated/schema/api/automations/__init__.py +1 -1
  26. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  27. metadata/generated/schema/api/bulkAssets.py +1 -1
  28. metadata/generated/schema/api/classification/__init__.py +1 -1
  29. metadata/generated/schema/api/classification/createClassification.py +1 -1
  30. metadata/generated/schema/api/classification/createTag.py +1 -1
  31. metadata/generated/schema/api/classification/loadTags.py +1 -1
  32. metadata/generated/schema/api/createBot.py +1 -1
  33. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  34. metadata/generated/schema/api/createType.py +1 -1
  35. metadata/generated/schema/api/data/__init__.py +1 -1
  36. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  37. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  38. metadata/generated/schema/api/data/createChart.py +1 -1
  39. metadata/generated/schema/api/data/createContainer.py +1 -1
  40. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  41. metadata/generated/schema/api/data/createDashboard.py +1 -1
  42. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  43. metadata/generated/schema/api/data/createDatabase.py +1 -1
  44. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  45. metadata/generated/schema/api/data/createGlossary.py +1 -1
  46. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  47. metadata/generated/schema/api/data/createMetric.py +1 -1
  48. metadata/generated/schema/api/data/createMlModel.py +1 -1
  49. metadata/generated/schema/api/data/createPipeline.py +1 -1
  50. metadata/generated/schema/api/data/createQuery.py +1 -1
  51. metadata/generated/schema/api/data/createSearchIndex.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/loadGlossary.py +1 -1
  57. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  58. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  59. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  60. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  61. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  62. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  63. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  64. metadata/generated/schema/api/docStore/__init__.py +1 -1
  65. metadata/generated/schema/api/docStore/createDocument.py +2 -2
  66. metadata/generated/schema/api/domains/__init__.py +1 -1
  67. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  68. metadata/generated/schema/api/domains/createDomain.py +1 -1
  69. metadata/generated/schema/api/feed/__init__.py +1 -1
  70. metadata/generated/schema/api/feed/closeTask.py +1 -1
  71. metadata/generated/schema/api/feed/createPost.py +1 -1
  72. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  73. metadata/generated/schema/api/feed/createThread.py +1 -1
  74. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  75. metadata/generated/schema/api/feed/threadCount.py +1 -1
  76. metadata/generated/schema/api/governance/__init__.py +1 -1
  77. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  78. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  79. metadata/generated/schema/api/lineage/__init__.py +1 -1
  80. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  81. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  82. metadata/generated/schema/api/policies/__init__.py +1 -1
  83. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  84. metadata/generated/schema/api/services/__init__.py +1 -1
  85. metadata/generated/schema/api/services/createApiService.py +1 -1
  86. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  87. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  88. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  89. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  90. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  91. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  92. metadata/generated/schema/api/services/createSearchService.py +1 -1
  93. metadata/generated/schema/api/services/createStorageService.py +1 -1
  94. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  95. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  96. metadata/generated/schema/api/setOwner.py +1 -1
  97. metadata/generated/schema/api/teams/__init__.py +1 -1
  98. metadata/generated/schema/api/teams/createPersona.py +1 -1
  99. metadata/generated/schema/api/teams/createRole.py +1 -1
  100. metadata/generated/schema/api/teams/createTeam.py +1 -1
  101. metadata/generated/schema/api/teams/createUser.py +1 -1
  102. metadata/generated/schema/api/tests/__init__.py +1 -1
  103. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  104. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  105. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  106. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  107. metadata/generated/schema/api/tests/createTestCaseResult.py +8 -1
  108. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  109. metadata/generated/schema/api/tests/createTestSuite.py +7 -3
  110. metadata/generated/schema/api/voteRequest.py +1 -1
  111. metadata/generated/schema/auth/__init__.py +1 -1
  112. metadata/generated/schema/auth/basicAuth.py +1 -1
  113. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  114. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  115. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  116. metadata/generated/schema/auth/emailRequest.py +1 -1
  117. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  118. metadata/generated/schema/auth/generateToken.py +1 -1
  119. metadata/generated/schema/auth/jwtAuth.py +1 -1
  120. metadata/generated/schema/auth/loginRequest.py +1 -1
  121. metadata/generated/schema/auth/logoutRequest.py +1 -1
  122. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  123. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  124. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  125. metadata/generated/schema/auth/refreshToken.py +1 -1
  126. metadata/generated/schema/auth/registrationRequest.py +1 -1
  127. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  128. metadata/generated/schema/auth/revokeToken.py +1 -1
  129. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  130. metadata/generated/schema/auth/ssoAuth.py +1 -1
  131. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  132. metadata/generated/schema/configuration/__init__.py +1 -1
  133. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  134. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  135. metadata/generated/schema/configuration/authConfig.py +1 -1
  136. metadata/generated/schema/configuration/authenticationConfiguration.py +14 -1
  137. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  138. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  139. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  140. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  141. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  142. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  143. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  144. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  145. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  146. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  147. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  148. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  149. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  150. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  151. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  152. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  153. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  154. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  155. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  156. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  157. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  158. metadata/generated/schema/configuration/searchSettings.py +1 -1
  159. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  160. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  161. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  162. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  163. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  164. metadata/generated/schema/configuration/workflowSettings.py +73 -0
  165. metadata/generated/schema/dataInsight/__init__.py +1 -1
  166. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  167. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  168. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  169. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  170. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  171. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  172. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  173. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  174. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  175. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  176. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  177. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  178. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  179. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  180. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  181. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  182. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  183. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  184. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  185. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  186. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  187. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  188. metadata/generated/schema/email/__init__.py +1 -1
  189. metadata/generated/schema/email/emailRequest.py +1 -1
  190. metadata/generated/schema/email/emailTemplate.py +1 -1
  191. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  192. metadata/generated/schema/email/smtpSettings.py +1 -1
  193. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  194. metadata/generated/schema/entity/__init__.py +1 -1
  195. metadata/generated/schema/entity/applications/__init__.py +1 -1
  196. metadata/generated/schema/entity/applications/app.py +1 -1
  197. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  198. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  199. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  200. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  201. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  202. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  203. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +40 -0
  204. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  205. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  206. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  207. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  208. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  209. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  210. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  211. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +30 -0
  212. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  213. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  214. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  215. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  216. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  217. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +7 -1
  218. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  219. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  220. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  221. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  222. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  223. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  224. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  225. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  226. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  227. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  228. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  229. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  230. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  231. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  232. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  233. metadata/generated/schema/entity/automations/__init__.py +1 -1
  234. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  235. metadata/generated/schema/entity/automations/workflow.py +1 -1
  236. metadata/generated/schema/entity/bot.py +1 -1
  237. metadata/generated/schema/entity/classification/__init__.py +1 -1
  238. metadata/generated/schema/entity/classification/classification.py +1 -1
  239. metadata/generated/schema/entity/classification/tag.py +1 -1
  240. metadata/generated/schema/entity/data/__init__.py +1 -1
  241. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  242. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  243. metadata/generated/schema/entity/data/chart.py +1 -1
  244. metadata/generated/schema/entity/data/container.py +1 -1
  245. metadata/generated/schema/entity/data/dashboard.py +1 -1
  246. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  247. metadata/generated/schema/entity/data/database.py +1 -1
  248. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  249. metadata/generated/schema/entity/data/glossary.py +1 -1
  250. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  251. metadata/generated/schema/entity/data/metric.py +1 -1
  252. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  253. metadata/generated/schema/entity/data/pipeline.py +1 -1
  254. metadata/generated/schema/entity/data/query.py +1 -1
  255. metadata/generated/schema/entity/data/report.py +1 -1
  256. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  257. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  258. metadata/generated/schema/entity/data/table.py +1 -1
  259. metadata/generated/schema/entity/data/topic.py +1 -1
  260. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  261. metadata/generated/schema/entity/docStore/document.py +1 -1
  262. metadata/generated/schema/entity/domains/__init__.py +1 -1
  263. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  264. metadata/generated/schema/entity/domains/domain.py +1 -1
  265. metadata/generated/schema/entity/events/__init__.py +1 -1
  266. metadata/generated/schema/entity/events/webhook.py +1 -1
  267. metadata/generated/schema/entity/feed/__init__.py +1 -1
  268. metadata/generated/schema/entity/feed/assets.py +1 -1
  269. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  270. metadata/generated/schema/entity/feed/description.py +1 -1
  271. metadata/generated/schema/entity/feed/domain.py +1 -1
  272. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  273. metadata/generated/schema/entity/feed/owner.py +1 -1
  274. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  275. metadata/generated/schema/entity/feed/tag.py +1 -1
  276. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  277. metadata/generated/schema/entity/feed/thread.py +1 -1
  278. metadata/generated/schema/entity/policies/__init__.py +1 -1
  279. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  280. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  281. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  282. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  283. metadata/generated/schema/entity/policies/filters.py +1 -1
  284. metadata/generated/schema/entity/policies/policy.py +1 -1
  285. metadata/generated/schema/entity/services/__init__.py +1 -1
  286. metadata/generated/schema/entity/services/apiService.py +1 -1
  287. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  288. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  289. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  290. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  291. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  292. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  293. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  294. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  295. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  296. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  297. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  298. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  299. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  300. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  301. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  302. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  303. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  304. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  305. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  306. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  307. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  308. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  309. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  310. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  311. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  312. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  313. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  314. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  315. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  316. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  317. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  318. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  319. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  320. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  321. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  322. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  323. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  324. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  325. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  326. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  327. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  328. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  329. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  330. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  331. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  332. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  333. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  334. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  335. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  336. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  337. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  340. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  341. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  342. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  343. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  344. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  345. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  346. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  347. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  348. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  349. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  351. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  355. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  356. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  359. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  360. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  361. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  367. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  372. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  375. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  384. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  389. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  390. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  391. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  398. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  404. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +5 -1
  405. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  414. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  424. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  426. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  427. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  428. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  432. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  437. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  438. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  439. metadata/generated/schema/entity/services/databaseService.py +1 -1
  440. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  441. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  442. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  443. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  444. metadata/generated/schema/entity/services/messagingService.py +1 -1
  445. metadata/generated/schema/entity/services/metadataService.py +1 -1
  446. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  447. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  448. metadata/generated/schema/entity/services/searchService.py +1 -1
  449. metadata/generated/schema/entity/services/serviceType.py +1 -1
  450. metadata/generated/schema/entity/services/storageService.py +1 -1
  451. metadata/generated/schema/entity/teams/__init__.py +1 -1
  452. metadata/generated/schema/entity/teams/persona.py +1 -1
  453. metadata/generated/schema/entity/teams/role.py +1 -1
  454. metadata/generated/schema/entity/teams/team.py +1 -1
  455. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  456. metadata/generated/schema/entity/teams/user.py +1 -1
  457. metadata/generated/schema/entity/type.py +1 -1
  458. metadata/generated/schema/entity/utils/__init__.py +1 -1
  459. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  460. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  461. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  462. metadata/generated/schema/events/__init__.py +1 -1
  463. metadata/generated/schema/events/alertMetrics.py +1 -1
  464. metadata/generated/schema/events/api/__init__.py +1 -1
  465. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  466. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  467. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  468. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  469. metadata/generated/schema/events/api/typedEvent.py +1 -1
  470. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  471. metadata/generated/schema/events/eventFilterRule.py +1 -1
  472. metadata/generated/schema/events/eventSubscription.py +1 -1
  473. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  474. metadata/generated/schema/events/failedEvent.py +1 -1
  475. metadata/generated/schema/events/failedEventResponse.py +1 -1
  476. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  477. metadata/generated/schema/events/statusContext.py +1 -1
  478. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  479. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  480. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  481. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  482. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  483. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  484. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  485. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  486. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  487. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  488. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  489. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  490. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  491. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  492. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  493. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  494. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  495. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  496. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +2 -6
  497. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  498. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  499. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  500. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  501. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  502. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  503. metadata/generated/schema/jobs/__init__.py +3 -0
  504. metadata/generated/schema/jobs/backgroundJob.py +66 -0
  505. metadata/generated/schema/jobs/enumCleanupArgs.py +23 -0
  506. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  507. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  508. metadata/generated/schema/metadataIngestion/application.py +1 -1
  509. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  510. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  511. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  512. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  513. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  514. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  515. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  516. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  517. metadata/generated/schema/metadataIngestion/dbtPipeline.py +8 -1
  518. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  519. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  520. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  521. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  522. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  523. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  524. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  525. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  526. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  527. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  528. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  529. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  530. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  531. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  532. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +5 -1
  533. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  534. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  535. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  536. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  537. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  538. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  539. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  540. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  541. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +27 -3
  542. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  543. metadata/generated/schema/monitoring/__init__.py +1 -1
  544. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  545. metadata/generated/schema/security/__init__.py +1 -1
  546. metadata/generated/schema/security/client/__init__.py +1 -1
  547. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  548. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  549. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  550. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  551. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  552. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  553. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  554. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  555. metadata/generated/schema/security/credentials/__init__.py +1 -1
  556. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  557. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  558. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  559. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  560. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  561. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  562. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  563. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  564. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  565. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  566. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  567. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  568. metadata/generated/schema/security/sasl/__init__.py +1 -1
  569. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  570. metadata/generated/schema/security/secrets/__init__.py +1 -1
  571. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  572. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  573. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  574. metadata/generated/schema/security/securityConfiguration.py +1 -1
  575. metadata/generated/schema/security/ssl/__init__.py +1 -1
  576. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  577. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  578. metadata/generated/schema/settings/__init__.py +1 -1
  579. metadata/generated/schema/settings/settings.py +4 -1
  580. metadata/generated/schema/system/__init__.py +1 -1
  581. metadata/generated/schema/system/entityError.py +1 -1
  582. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  583. metadata/generated/schema/system/indexingError.py +1 -1
  584. metadata/generated/schema/system/limitsResponse.py +1 -1
  585. metadata/generated/schema/system/ui/__init__.py +1 -1
  586. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  587. metadata/generated/schema/system/ui/page.py +1 -1
  588. metadata/generated/schema/system/validationResponse.py +1 -1
  589. metadata/generated/schema/tests/__init__.py +1 -1
  590. metadata/generated/schema/tests/assigned.py +1 -1
  591. metadata/generated/schema/tests/basic.py +20 -20
  592. metadata/generated/schema/tests/customMetric.py +1 -1
  593. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  594. metadata/generated/schema/tests/resolved.py +1 -1
  595. metadata/generated/schema/tests/testCase.py +8 -3
  596. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  597. metadata/generated/schema/tests/testDefinition.py +1 -1
  598. metadata/generated/schema/tests/testSuite.py +13 -6
  599. metadata/generated/schema/type/__init__.py +1 -1
  600. metadata/generated/schema/type/apiSchema.py +1 -1
  601. metadata/generated/schema/type/assetCertification.py +1 -1
  602. metadata/generated/schema/type/auditLog.py +1 -1
  603. metadata/generated/schema/type/basic.py +1 -1
  604. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  605. metadata/generated/schema/type/changeEvent.py +1 -1
  606. metadata/generated/schema/type/changeEventType.py +1 -1
  607. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  608. metadata/generated/schema/type/csvDocumentation.py +1 -1
  609. metadata/generated/schema/type/csvErrorType.py +1 -1
  610. metadata/generated/schema/type/csvFile.py +1 -1
  611. metadata/generated/schema/type/csvImportResult.py +1 -1
  612. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  613. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  614. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  615. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  616. metadata/generated/schema/type/customProperty.py +1 -1
  617. metadata/generated/schema/type/dailyCount.py +1 -1
  618. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  619. metadata/generated/schema/type/entityHierarchy.py +1 -1
  620. metadata/generated/schema/type/entityHistory.py +1 -1
  621. metadata/generated/schema/type/entityLineage.py +1 -1
  622. metadata/generated/schema/type/entityReference.py +1 -1
  623. metadata/generated/schema/type/entityReferenceList.py +1 -1
  624. metadata/generated/schema/type/entityRelationship.py +1 -1
  625. metadata/generated/schema/type/entityUsage.py +1 -1
  626. metadata/generated/schema/type/filterPattern.py +1 -1
  627. metadata/generated/schema/type/function.py +1 -1
  628. metadata/generated/schema/type/include.py +1 -1
  629. metadata/generated/schema/type/jdbcConnection.py +1 -1
  630. metadata/generated/schema/type/lifeCycle.py +1 -1
  631. metadata/generated/schema/type/paging.py +1 -1
  632. metadata/generated/schema/type/profile.py +1 -1
  633. metadata/generated/schema/type/queryParserData.py +1 -1
  634. metadata/generated/schema/type/reaction.py +1 -1
  635. metadata/generated/schema/type/schedule.py +1 -1
  636. metadata/generated/schema/type/schema.py +1 -1
  637. metadata/generated/schema/type/tableQuery.py +1 -1
  638. metadata/generated/schema/type/tableUsageCount.py +1 -1
  639. metadata/generated/schema/type/tagLabel.py +1 -1
  640. metadata/generated/schema/type/usageDetails.py +1 -1
  641. metadata/generated/schema/type/usageRequest.py +1 -1
  642. metadata/generated/schema/type/votes.py +1 -1
  643. metadata/great_expectations/action.py +1 -1
  644. metadata/ingestion/lineage/models.py +8 -0
  645. metadata/ingestion/ometa/mixins/es_mixin.py +10 -1
  646. metadata/ingestion/ometa/mixins/tests_mixin.py +1 -1
  647. metadata/ingestion/ometa/mixins/user_mixin.py +19 -5
  648. metadata/ingestion/ometa/routes.py +4 -0
  649. metadata/ingestion/source/dashboard/powerbi/client.py +31 -4
  650. metadata/ingestion/source/dashboard/powerbi/metadata.py +157 -135
  651. metadata/ingestion/source/database/db2/metadata.py +6 -0
  652. metadata/ingestion/source/database/db2/utils.py +63 -0
  653. metadata/ingestion/source/database/dbt/dbt_service.py +11 -0
  654. metadata/ingestion/source/database/dbt/metadata.py +42 -0
  655. metadata/ingestion/source/database/redshift/queries.py +1 -1
  656. metadata/ingestion/source/database/sample_data.py +1 -3
  657. metadata/ingestion/source/database/snowflake/queries.py +2 -2
  658. metadata/ingestion/source/database/sql_column_handler.py +6 -0
  659. metadata/ingestion/source/pipeline/airbyte/client.py +3 -2
  660. metadata/ingestion/source/pipeline/dbtcloud/metadata.py +22 -30
  661. metadata/ingestion/source/storage/s3/metadata.py +56 -9
  662. metadata/profiler/orm/converter/common.py +3 -1
  663. metadata/utils/constants.py +11 -12
  664. metadata/utils/elasticsearch.py +9 -1
  665. metadata/workflow/data_quality.py +5 -43
  666. {openmetadata_ingestion-1.6.1.0.dist-info → openmetadata_ingestion-1.6.2.1.dist-info}/METADATA +356 -356
  667. {openmetadata_ingestion-1.6.1.0.dist-info → openmetadata_ingestion-1.6.2.1.dist-info}/RECORD +671 -664
  668. {openmetadata_ingestion-1.6.1.0.dist-info → openmetadata_ingestion-1.6.2.1.dist-info}/LICENSE +0 -0
  669. {openmetadata_ingestion-1.6.1.0.dist-info → openmetadata_ingestion-1.6.2.1.dist-info}/WHEEL +0 -0
  670. {openmetadata_ingestion-1.6.1.0.dist-info → openmetadata_ingestion-1.6.2.1.dist-info}/entry_points.txt +0 -0
  671. {openmetadata_ingestion-1.6.1.0.dist-info → openmetadata_ingestion-1.6.2.1.dist-info}/top_level.txt +0 -0
@@ -127,7 +127,13 @@ class PowerBiApiClient:
127
127
  List[PowerBIDashboard]
128
128
  """
129
129
  try:
130
- response_data = self.client.get(f"/myorg/groups/{group_id}/dashboards")
130
+ admin = "admin/" if self.config.useAdminApis else ""
131
+ response_data = self.client.get(
132
+ f"/myorg/{admin}groups/{group_id}/dashboards"
133
+ )
134
+ if not response_data:
135
+ logger.debug(f"No dashboards found for workspace_id: {group_id}")
136
+ return None
131
137
  response = DashboardsResponse(**response_data)
132
138
  return response.value
133
139
  except Exception as exc: # pylint: disable=broad-except
@@ -142,7 +148,11 @@ class PowerBiApiClient:
142
148
  List[PowerBIReport]
143
149
  """
144
150
  try:
145
- response_data = self.client.get(f"/myorg/groups/{group_id}/reports")
151
+ admin = "admin/" if self.config.useAdminApis else ""
152
+ response_data = self.client.get(f"/myorg/{admin}groups/{group_id}/reports")
153
+ if not response_data:
154
+ logger.debug(f"No reports found for workspace_id: {group_id}")
155
+ return None
146
156
  response = ReportsResponse(**response_data)
147
157
  return response.value
148
158
  except Exception as exc: # pylint: disable=broad-except
@@ -157,7 +167,11 @@ class PowerBiApiClient:
157
167
  List[Dataset]
158
168
  """
159
169
  try:
160
- response_data = self.client.get(f"/myorg/groups/{group_id}/datasets")
170
+ admin = "admin/" if self.config.useAdminApis else ""
171
+ response_data = self.client.get(f"/myorg/{admin}groups/{group_id}/datasets")
172
+ if not response_data:
173
+ logger.debug(f"No datasets found for workspace_id: {group_id}")
174
+ return None
161
175
  response = DatasetResponse(**response_data)
162
176
  return response.value
163
177
  except Exception as exc: # pylint: disable=broad-except
@@ -174,9 +188,13 @@ class PowerBiApiClient:
174
188
  List[Tile]
175
189
  """
176
190
  try:
191
+ admin = "admin/" if self.config.useAdminApis else ""
177
192
  response_data = self.client.get(
178
- f"/myorg/groups/{group_id}/dashboards/{dashboard_id}/tiles"
193
+ f"/myorg/{admin}dashboards/{dashboard_id}/tiles"
179
194
  )
195
+ if not response_data:
196
+ logger.debug(f"No dashboard tiles found for workspace_id: {group_id}")
197
+ return None
180
198
  response = TilesResponse(**response_data)
181
199
  return response.value
182
200
  except Exception as exc: # pylint: disable=broad-except
@@ -216,6 +234,9 @@ class PowerBiApiClient:
216
234
  entities_per_page = self.config.pagination_entity_per_page
217
235
  params_data = {"$top": "1"}
218
236
  response_data = self.client.get(api_url, data=params_data)
237
+ if not response_data:
238
+ logger.debug("No groups/workspaces found")
239
+ return None
219
240
  response = GroupsResponse(**response_data)
220
241
  count = response.odata_count
221
242
  indexes = math.ceil(count / entities_per_page)
@@ -227,6 +248,9 @@ class PowerBiApiClient:
227
248
  "$skip": str(index * entities_per_page),
228
249
  }
229
250
  response_data = self.client.get(api_url, data=params_data)
251
+ if not response_data:
252
+ logger.debug("No more groups/workspaces found")
253
+ continue
230
254
  response = GroupsResponse(**response_data)
231
255
  workspaces.extend(response.value)
232
256
  return workspaces
@@ -262,6 +286,7 @@ class PowerBiApiClient:
262
286
  def fetch_workspace_scan_status(
263
287
  self, scan_id: str
264
288
  ) -> Optional[WorkSpaceScanResponse]:
289
+ # deprecated in favour to avoide bulk data prepare
265
290
  """Get Workspace scan status by id method
266
291
  Args:
267
292
  scan_id:
@@ -280,6 +305,7 @@ class PowerBiApiClient:
280
305
  return None
281
306
 
282
307
  def fetch_workspace_scan_result(self, scan_id: str) -> Optional[Workspaces]:
308
+ # deprecated in favour to avoide bulk data prepare
283
309
  """Get Workspace scan result by id method
284
310
  Args:
285
311
  scan_id:
@@ -301,6 +327,7 @@ class PowerBiApiClient:
301
327
  """
302
328
  Method to poll the scan status endpoint until the timeout
303
329
  """
330
+ # deprecated in favour to avoide bulk data prepare
304
331
  min_sleep_time = 3
305
332
  if min_sleep_time > timeout:
306
333
  logger.info(f"Timeout is set to minimum sleep time: {timeout}")
@@ -49,6 +49,7 @@ from metadata.generated.schema.type.basic import (
49
49
  )
50
50
  from metadata.ingestion.api.models import Either
51
51
  from metadata.ingestion.api.steps import InvalidSourceException
52
+ from metadata.ingestion.models.ometa_lineage import OMetaLineageRequest
52
53
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
53
54
  from metadata.ingestion.ometa.utils import model_str
54
55
  from metadata.ingestion.source.dashboard.dashboard_service import DashboardServiceSource
@@ -92,12 +93,6 @@ class PowerbiSource(DashboardServiceSource):
92
93
  self.datamodel_file_mappings = []
93
94
 
94
95
  def prepare(self):
95
- if self.service_connection.useAdminApis:
96
- groups = self.get_admin_workspace_data()
97
- else:
98
- groups = self.get_org_workspace_data()
99
- if groups:
100
- self.workspace_data = self.get_filtered_workspaces(groups)
101
96
  return super().prepare()
102
97
 
103
98
  def close(self):
@@ -123,91 +118,6 @@ class PowerbiSource(DashboardServiceSource):
123
118
  filtered_groups.append(group)
124
119
  return filtered_groups
125
120
 
126
- def get_org_workspace_data(self) -> Optional[List[Group]]:
127
- """
128
- fetch all the group workspace ids
129
- """
130
- groups = self.client.api_client.fetch_all_workspaces()
131
- for group in groups:
132
- # add the dashboards to the groups
133
- group.dashboards.extend(
134
- self.client.api_client.fetch_all_org_dashboards(group_id=group.id) or []
135
- )
136
- for dashboard in group.dashboards:
137
- # add the tiles to the dashboards
138
- dashboard.tiles.extend(
139
- self.client.api_client.fetch_all_org_tiles(
140
- group_id=group.id, dashboard_id=dashboard.id
141
- )
142
- or []
143
- )
144
-
145
- # add the reports to the groups
146
- group.reports.extend(
147
- self.client.api_client.fetch_all_org_reports(group_id=group.id) or []
148
- )
149
-
150
- # add the datasets to the groups
151
- group.datasets.extend(
152
- self.client.api_client.fetch_all_org_datasets(group_id=group.id) or []
153
- )
154
- for dataset in group.datasets:
155
- # add the tables to the datasets
156
- dataset.tables.extend(
157
- self.client.api_client.fetch_dataset_tables(
158
- group_id=group.id, dataset_id=dataset.id
159
- )
160
- or []
161
- )
162
- return groups
163
-
164
- def get_admin_workspace_data(self) -> Optional[List[Group]]:
165
- """
166
- fetch all the workspace ids
167
- """
168
- groups = []
169
- workspaces = self.client.api_client.fetch_all_workspaces()
170
- if workspaces:
171
- workspace_id_list = [workspace.id for workspace in workspaces]
172
-
173
- # Start the scan of the available workspaces for dashboard metadata
174
- workspace_paginated_list = [
175
- workspace_id_list[i : i + self.pagination_entity_per_page]
176
- for i in range(
177
- 0, len(workspace_id_list), self.pagination_entity_per_page
178
- )
179
- ]
180
- count = 1
181
- for workspace_ids_chunk in workspace_paginated_list:
182
- logger.info(
183
- f"Scanning {count}/{len(workspace_paginated_list)} set of workspaces"
184
- )
185
- workspace_scan = self.client.api_client.initiate_workspace_scan(
186
- workspace_ids_chunk
187
- )
188
-
189
- # Keep polling the scan status endpoint to check if scan is succeeded
190
- workspace_scan_status = self.client.api_client.wait_for_scan_complete(
191
- scan_id=workspace_scan.id
192
- )
193
- if workspace_scan_status:
194
- response = self.client.api_client.fetch_workspace_scan_result(
195
- scan_id=workspace_scan.id
196
- )
197
- groups.extend(
198
- [
199
- active_workspace
200
- for active_workspace in response.workspaces
201
- if active_workspace.state == "Active"
202
- ]
203
- )
204
- else:
205
- logger.error("Error in fetching dashboards and charts")
206
- count += 1
207
- else:
208
- logger.error("Unable to fetch any PowerBI workspaces")
209
- return groups or None
210
-
211
121
  @classmethod
212
122
  def create(
213
123
  cls, config_dict, metadata: OpenMetadata, pipeline_name: Optional[str] = None
@@ -220,12 +130,51 @@ class PowerbiSource(DashboardServiceSource):
220
130
  )
221
131
  return cls(config, metadata)
222
132
 
133
+ def prepare_workspace_data(self, workspace: Group):
134
+ """prepare one workspace data at a time"""
135
+ # add the dashboards to the groups
136
+ workspace.dashboards.extend(
137
+ self.client.api_client.fetch_all_org_dashboards(group_id=workspace.id) or []
138
+ )
139
+ for dashboard in workspace.dashboards:
140
+ # add the tiles to the dashboards
141
+ dashboard.tiles.extend(
142
+ self.client.api_client.fetch_all_org_tiles(
143
+ group_id=workspace.id, dashboard_id=dashboard.id
144
+ )
145
+ or []
146
+ )
147
+
148
+ # add the reports to the groups
149
+ workspace.reports.extend(
150
+ self.client.api_client.fetch_all_org_reports(group_id=workspace.id) or []
151
+ )
152
+
153
+ # add the datasets to the groups
154
+ workspace.datasets.extend(
155
+ self.client.api_client.fetch_all_org_datasets(group_id=workspace.id) or []
156
+ )
157
+ for dataset in workspace.datasets:
158
+ # add the tables to the datasets
159
+ dataset.tables.extend(
160
+ self.client.api_client.fetch_dataset_tables(
161
+ group_id=workspace.id, dataset_id=dataset.id
162
+ )
163
+ or []
164
+ )
165
+
223
166
  def get_dashboard(self) -> Any:
224
167
  """
225
168
  Method to iterate through dashboard lists filter dashboards & yield dashboard details
226
169
  """
227
- for workspace in self.workspace_data:
170
+ # fetch all workspaces/groups & apply filter pattern
171
+ all_workspaces = self.client.api_client.fetch_all_workspaces() or []
172
+ all_workspaces = self.get_filtered_workspaces(all_workspaces)
173
+ for workspace in all_workspaces:
174
+ # prepare additional data for specific workspace (datasets, reports, dashboards)
175
+ self.prepare_workspace_data(workspace)
228
176
  self.context.get().workspace = workspace
177
+ self.workspace_data.append(workspace)
229
178
  for dashboard in self.get_dashboards_list():
230
179
  try:
231
180
  dashboard_details = self.get_dashboard_details(dashboard)
@@ -309,54 +258,45 @@ class PowerbiSource(DashboardServiceSource):
309
258
  f"{workspace_id}/{chart_url_postfix}"
310
259
  )
311
260
 
312
- def list_datamodels(self) -> Iterable[Dataset]:
261
+ def yield_datamodel(
262
+ self, dashboard_details: Union[PowerBIDashboard, PowerBIReport]
263
+ ) -> Iterable[Either[CreateDashboardRequest]]:
313
264
  """
314
- Get All the Powerbi Datasets
265
+ Method to yield datamodel for each workspace
315
266
  """
316
- if self.source_config.includeDataModels:
267
+ workspace_datasets = self.context.get().workspace.datasets
268
+ for dataset in workspace_datasets:
269
+ if filter_by_datamodel(
270
+ self.source_config.dataModelFilterPattern, dataset.name
271
+ ):
272
+ self.status.filter(dataset.name, "Data model filtered out.")
273
+ continue
317
274
  try:
318
- for workspace in self.workspace_data:
319
- for dataset in workspace.datasets or []:
320
- if filter_by_datamodel(
321
- self.source_config.dataModelFilterPattern, dataset.name
322
- ):
323
- self.status.filter(dataset.name, "Data model filtered out.")
324
- continue
325
- yield dataset
326
- except Exception as err:
327
- logger.debug(traceback.format_exc())
328
- logger.error(f"Unexpected error fetching PowerBI datasets - {err}")
329
-
330
- def yield_bulk_datamodel(
331
- self, dataset: Dataset
332
- ) -> Iterable[Either[CreateDashboardDataModelRequest]]:
333
- """
334
- Method to fetch DataModels in bulk
335
- """
336
- try:
337
- data_model_request = CreateDashboardDataModelRequest(
338
- name=EntityName(dataset.id),
339
- displayName=dataset.name,
340
- description=Markdown(dataset.description)
341
- if dataset.description
342
- else None,
343
- service=FullyQualifiedEntityName(self.context.get().dashboard_service),
344
- dataModelType=DataModelType.PowerBIDataModel.value,
345
- serviceType=DashboardServiceType.PowerBI.value,
346
- columns=self._get_column_info(dataset),
347
- project=self._fetch_dataset_workspace(dataset_id=dataset.id),
348
- )
349
- yield Either(right=data_model_request)
350
- self.register_record_datamodel(datamodel_request=data_model_request)
275
+ data_model_request = CreateDashboardDataModelRequest(
276
+ name=EntityName(dataset.id),
277
+ displayName=dataset.name,
278
+ description=Markdown(dataset.description)
279
+ if dataset.description
280
+ else None,
281
+ service=FullyQualifiedEntityName(
282
+ self.context.get().dashboard_service
283
+ ),
284
+ dataModelType=DataModelType.PowerBIDataModel.value,
285
+ serviceType=DashboardServiceType.PowerBI.value,
286
+ columns=self._get_column_info(dataset),
287
+ project=self.get_project_name(dashboard_details),
288
+ )
289
+ yield Either(right=data_model_request)
290
+ self.register_record_datamodel(datamodel_request=data_model_request)
351
291
 
352
- except Exception as exc:
353
- yield Either(
354
- left=StackTraceError(
355
- name=dataset.name,
356
- error=f"Error yielding Data Model [{dataset.name}]: {exc}",
357
- stackTrace=traceback.format_exc(),
292
+ except Exception as exc:
293
+ yield Either(
294
+ left=StackTraceError(
295
+ name=dataset.name,
296
+ error=f"Error yielding Data Model [{dataset.name}]: {exc}",
297
+ stackTrace=traceback.format_exc(),
298
+ )
358
299
  )
359
- )
360
300
 
361
301
  def _get_child_columns(self, table: PowerBiTable) -> List[Column]:
362
302
  """
@@ -822,3 +762,85 @@ class PowerbiSource(DashboardServiceSource):
822
762
  f"Error fetching project name for {dashboard_details.id}: {exc}"
823
763
  )
824
764
  return None
765
+
766
+ def yield_dashboard_lineage(
767
+ self, dashboard_details: Any
768
+ ) -> Iterable[Either[OMetaLineageRequest]]:
769
+ """
770
+ Yields lineage if config is enabled.
771
+
772
+ We will look for the data in all the services
773
+ we have informed.
774
+ """
775
+ for lineage in self.yield_datamodel_dashboard_lineage(dashboard_details) or []:
776
+ if lineage.right is not None:
777
+ yield Either(
778
+ right=OMetaLineageRequest(
779
+ lineage_request=lineage.right,
780
+ override_lineage=self.source_config.overrideLineage,
781
+ )
782
+ )
783
+ else:
784
+ yield lineage
785
+
786
+ db_service_names = self.get_db_service_names()
787
+ for db_service_name in db_service_names or []:
788
+ yield from self.yield_dashboard_lineage_details(
789
+ dashboard_details, db_service_name
790
+ ) or []
791
+
792
+ def yield_datamodel_dashboard_lineage(
793
+ self, dashboard_details: Any
794
+ ) -> Iterable[Either[AddLineageRequest]]:
795
+ """
796
+ Returns:
797
+ Lineage request between Data Models and Dashboards
798
+ """
799
+ dashboard_fqn = fqn.build(
800
+ self.metadata,
801
+ entity_type=Dashboard,
802
+ service_name=self.context.get().dashboard_service,
803
+ dashboard_name=dashboard_details.id,
804
+ )
805
+ dashboard_entity = self.metadata.get_by_name(
806
+ entity=Dashboard, fqn=dashboard_fqn
807
+ )
808
+ if isinstance(dashboard_details, PowerBIReport):
809
+ datamodel_fqn = fqn.build(
810
+ metadata=self.metadata,
811
+ entity_type=DashboardDataModel,
812
+ service_name=self.context.get().dashboard_service,
813
+ data_model_name=dashboard_details.datasetId,
814
+ )
815
+ datamodel_entity = self.metadata.get_by_name(
816
+ entity=DashboardDataModel, fqn=datamodel_fqn
817
+ )
818
+ if dashboard_entity and datamodel_entity:
819
+ yield self._get_add_lineage_request(
820
+ to_entity=dashboard_entity, from_entity=datamodel_entity
821
+ )
822
+ else:
823
+ if (
824
+ hasattr(self.context.get(), "dataModels")
825
+ and self.context.get().dataModels
826
+ ):
827
+ for datamodel in self.context.get().dataModels:
828
+ try:
829
+ datamodel_fqn = fqn.build(
830
+ metadata=self.metadata,
831
+ entity_type=DashboardDataModel,
832
+ service_name=self.context.get().dashboard_service,
833
+ data_model_name=datamodel,
834
+ )
835
+ datamodel_entity = self.metadata.get_by_name(
836
+ entity=DashboardDataModel, fqn=datamodel_fqn
837
+ )
838
+ if dashboard_entity and datamodel_entity:
839
+ yield self._get_add_lineage_request(
840
+ to_entity=dashboard_entity, from_entity=datamodel_entity
841
+ )
842
+ except Exception as err:
843
+ logger.debug(traceback.format_exc())
844
+ logger.error(
845
+ f"Error to yield dashboard lineage details for data model name [{str(datamodel)}]: {err}"
846
+ )
@@ -13,6 +13,7 @@ import traceback
13
13
  from typing import Iterable, Optional
14
14
 
15
15
  from ibm_db_sa.base import ischema_names
16
+ from ibm_db_sa.reflection import DB2Reflector, OS390Reflector
16
17
  from sqlalchemy.engine.reflection import Inspector
17
18
  from sqlalchemy.engine.row import LegacyRow
18
19
  from sqlalchemy.sql.sqltypes import BOOLEAN
@@ -26,6 +27,7 @@ from metadata.generated.schema.metadataIngestion.workflow import (
26
27
  from metadata.ingestion.api.steps import InvalidSourceException
27
28
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
28
29
  from metadata.ingestion.source.database.common_db_source import CommonDbSourceService
30
+ from metadata.ingestion.source.database.db2.utils import get_unique_constraints
29
31
  from metadata.utils.logger import ingestion_logger
30
32
 
31
33
  logger = ingestion_logger()
@@ -34,6 +36,10 @@ logger = ingestion_logger()
34
36
  ischema_names.update({"BOOLEAN": BOOLEAN})
35
37
 
36
38
 
39
+ DB2Reflector.get_unique_constraints = get_unique_constraints
40
+ OS390Reflector.get_unique_constraints = get_unique_constraints
41
+
42
+
37
43
  class Db2Source(CommonDbSourceService):
38
44
  """
39
45
  Implements the necessary methods to extract
@@ -0,0 +1,63 @@
1
+ # Copyright 2021 Collate
2
+ # Licensed under the Apache License, Version 2.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
+ # http://www.apache.org/licenses/LICENSE-2.0
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
+ """
13
+ Module to define overriden dialect methods
14
+ """
15
+ from sqlalchemy import and_, join, sql
16
+ from sqlalchemy.engine import reflection
17
+
18
+
19
+ @reflection.cache
20
+ def get_unique_constraints(
21
+ self, connection, table_name, schema=None, **kw
22
+ ): # pylint: disable=unused-argument
23
+ """Small Method to override the Dialect default as it is not filtering properly the Schema and Table Name."""
24
+ current_schema = self.denormalize_name(schema or self.default_schema_name)
25
+ table_name = self.denormalize_name(table_name)
26
+ syskeycol = self.sys_keycoluse
27
+ sysconst = self.sys_tabconst
28
+ query = (
29
+ sql.select(syskeycol.c.constname, syskeycol.c.colname)
30
+ .select_from(
31
+ join(
32
+ syskeycol,
33
+ sysconst,
34
+ and_(
35
+ syskeycol.c.constname == sysconst.c.constname,
36
+ syskeycol.c.tabschema == sysconst.c.tabschema,
37
+ syskeycol.c.tabname == sysconst.c.tabname,
38
+ ),
39
+ )
40
+ )
41
+ .where(
42
+ and_(
43
+ sysconst.c.tabname == table_name,
44
+ sysconst.c.tabschema == current_schema,
45
+ sysconst.c.type == "U",
46
+ )
47
+ )
48
+ .order_by(syskeycol.c.constname)
49
+ )
50
+ unique_consts = []
51
+ curr_const = None
52
+ for r in connection.execute(query):
53
+ if curr_const == r[0]:
54
+ unique_consts[-1]["column_names"].append(self.normalize_name(r[1]))
55
+ else:
56
+ curr_const = r[0]
57
+ unique_consts.append(
58
+ {
59
+ "name": self.normalize_name(curr_const),
60
+ "column_names": [self.normalize_name(r[1])],
61
+ }
62
+ )
63
+ return unique_consts
@@ -122,6 +122,11 @@ class DbtServiceTopology(ServiceTopology):
122
122
  processor="process_dbt_descriptions",
123
123
  nullable=True,
124
124
  ),
125
+ NodeStage(
126
+ type_=DataModelLink,
127
+ processor="process_dbt_owners",
128
+ nullable=True,
129
+ ),
125
130
  ],
126
131
  )
127
132
  process_dbt_tests: Annotated[
@@ -293,6 +298,12 @@ class DbtServiceSource(TopologyRunnerMixin, Source, ABC):
293
298
  Method to process DBT descriptions using patch APIs
294
299
  """
295
300
 
301
+ @abstractmethod
302
+ def process_dbt_owners(self, data_model_link: DataModelLink):
303
+ """
304
+ Method to process DBT owners using patch APIs
305
+ """
306
+
296
307
  def get_dbt_tests(self) -> dict:
297
308
  """
298
309
  Prepare the DBT tests
@@ -61,6 +61,7 @@ from metadata.ingestion.api.models import Either
61
61
  from metadata.ingestion.lineage.models import ConnectionTypeDialectMapper
62
62
  from metadata.ingestion.lineage.sql_lineage import get_lineage_by_query
63
63
  from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
64
+ from metadata.ingestion.models.patch_request import PatchedEntity, PatchRequest
64
65
  from metadata.ingestion.models.table_metadata import ColumnDescription
65
66
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
66
67
  from metadata.ingestion.source.database.column_type_parser import ColumnTypeParser
@@ -886,6 +887,47 @@ class DbtSource(DbtServiceSource):
886
887
  f"to update dbt description: {exc}"
887
888
  )
888
889
 
890
+ def process_dbt_owners(
891
+ self, data_model_link: DataModelLink
892
+ ) -> Iterable[Either[PatchedEntity]]:
893
+ """
894
+ Method to process DBT owners
895
+ """
896
+ table_entity: Table = data_model_link.table_entity
897
+ if table_entity:
898
+ logger.debug(
899
+ f"Processing DBT owners for: {table_entity.fullyQualifiedName.root}"
900
+ )
901
+ try:
902
+ data_model = data_model_link.datamodel
903
+ if (
904
+ data_model.resourceType != DbtCommonEnum.SOURCE.value
905
+ and self.source_config.dbtUpdateOwners
906
+ ):
907
+ logger.debug(
908
+ f"Overwriting owners with DBT owners: {table_entity.fullyQualifiedName.root}"
909
+ )
910
+ if data_model.owners:
911
+ new_entity = deepcopy(table_entity)
912
+ new_entity.owners = data_model.owners
913
+ yield Either(
914
+ right=PatchRequest(
915
+ original_entity=table_entity,
916
+ new_entity=new_entity,
917
+ override_metadata=True,
918
+ )
919
+ )
920
+
921
+ except Exception as exc: # pylint: disable=broad-except
922
+ yield Either(
923
+ left=StackTraceError(
924
+ name=str(table_entity.fullyQualifiedName.root),
925
+ error=f"Failed to parse the node"
926
+ f"{table_entity.fullyQualifiedName.root} to update dbt owner: {exc}",
927
+ stackTrace=traceback.format_exc(),
928
+ )
929
+ )
930
+
889
931
  def create_dbt_tests_definition(
890
932
  self, dbt_test: dict
891
933
  ) -> Iterable[Either[CreateTestDefinitionRequest]]:
@@ -328,7 +328,7 @@ Q_HISTORY as (
328
328
  pid as query_session_id,
329
329
  starttime as query_start_time,
330
330
  endtime as query_end_time,
331
- b.usename as query_user_name
331
+ cast(b.usename as varchar) as query_user_name
332
332
  from STL_QUERY q
333
333
  join pg_catalog.pg_user b
334
334
  on b.usesysid = q.userid
@@ -1548,9 +1548,7 @@ class SampleDataSource(
1548
1548
  test_suite=CreateTestSuiteRequest(
1549
1549
  name=test_suite["testSuiteName"],
1550
1550
  description=test_suite["testSuiteDescription"],
1551
- executableEntityReference=test_suite[
1552
- "executableEntityReference"
1553
- ],
1551
+ basicEntityReference=test_suite["executableEntityReference"],
1554
1552
  )
1555
1553
  )
1556
1554
  )
@@ -296,7 +296,7 @@ SELECT
296
296
  ARGUMENT_SIGNATURE AS signature,
297
297
  COMMENT as comment,
298
298
  'StoredProcedure' as procedure_type
299
- FROM INFORMATION_SCHEMA.PROCEDURES
299
+ FROM SNOWFLAKE.ACCOUNT_USAGE.PROCEDURES
300
300
  WHERE PROCEDURE_CATALOG = '{database_name}'
301
301
  AND PROCEDURE_SCHEMA = '{schema_name}'
302
302
  """
@@ -312,7 +312,7 @@ SELECT
312
312
  ARGUMENT_SIGNATURE AS signature,
313
313
  COMMENT as comment,
314
314
  'UDF' as procedure_type
315
- FROM INFORMATION_SCHEMA.FUNCTIONS
315
+ FROM SNOWFLAKE.ACCOUNT_USAGE.FUNCTIONS
316
316
  WHERE FUNCTION_CATALOG = '{database_name}'
317
317
  AND FUNCTION_SCHEMA = '{schema_name}'
318
318
  """
@@ -94,6 +94,12 @@ class SqlColumnHandlerMixin:
94
94
  parsed_string["name"] = column["name"]
95
95
  else:
96
96
  col_type = ColumnTypeParser.get_column_type(column["type"])
97
+ # For arrays, we'll get the item type if possible, or parse the string representation of the column
98
+ # if SQLAlchemy does not provide any further information
99
+ if col_type == "ARRAY" and getattr(column["type"], "item_type"):
100
+ arr_data_type = ColumnTypeParser.get_column_type(
101
+ column["type"].item_type
102
+ )
97
103
  if col_type == "ARRAY" and re.match(
98
104
  r"(?:\w*)(?:\()(\w*)(?:.*)", str(column["type"])
99
105
  ):