openmetadata-ingestion 1.5.0.0rc1__py3-none-any.whl → 1.5.1.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 (676) hide show
  1. _openmetadata_testutils/kafka/__init__.py +0 -0
  2. _openmetadata_testutils/kafka/load_csv_data.py +133 -0
  3. _openmetadata_testutils/kafka/schema_registry_container.py +31 -0
  4. _openmetadata_testutils/postgres/conftest.py +5 -0
  5. _openmetadata_testutils/pydantic/test_utils.py +5 -4
  6. metadata/cli/app.py +0 -1
  7. metadata/cli/dataquality.py +0 -1
  8. metadata/cli/ingest.py +0 -1
  9. metadata/cli/profile.py +0 -1
  10. metadata/cli/usage.py +0 -1
  11. metadata/clients/domo_client.py +1 -1
  12. metadata/data_quality/validations/column/sqlalchemy/columnValueLengthsToBeBetween.py +7 -6
  13. metadata/data_quality/validations/column/sqlalchemy/columnValuesToBeBetween.py +7 -2
  14. metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +44 -12
  15. metadata/generated/antlr/EntityLinkLexer.py +377 -379
  16. metadata/generated/schema/analytics/__init__.py +1 -1
  17. metadata/generated/schema/analytics/basic.py +1 -1
  18. metadata/generated/schema/analytics/reportData.py +1 -1
  19. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  20. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  21. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  22. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  23. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  24. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  25. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  26. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  27. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  28. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  29. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  30. metadata/generated/schema/api/__init__.py +1 -1
  31. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  32. metadata/generated/schema/api/analytics/__init__.py +1 -1
  33. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  34. metadata/generated/schema/api/automations/__init__.py +1 -1
  35. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  36. metadata/generated/schema/api/bulkAssets.py +1 -1
  37. metadata/generated/schema/api/classification/__init__.py +1 -1
  38. metadata/generated/schema/api/classification/createClassification.py +1 -1
  39. metadata/generated/schema/api/classification/createTag.py +1 -1
  40. metadata/generated/schema/api/classification/loadTags.py +1 -1
  41. metadata/generated/schema/api/createBot.py +1 -1
  42. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  43. metadata/generated/schema/api/createType.py +1 -1
  44. metadata/generated/schema/api/data/__init__.py +1 -1
  45. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  46. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  47. metadata/generated/schema/api/data/createChart.py +1 -1
  48. metadata/generated/schema/api/data/createContainer.py +1 -1
  49. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  50. metadata/generated/schema/api/data/createDashboard.py +1 -1
  51. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  52. metadata/generated/schema/api/data/createDatabase.py +1 -1
  53. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  54. metadata/generated/schema/api/data/createGlossary.py +1 -1
  55. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  56. metadata/generated/schema/api/data/createMlModel.py +1 -1
  57. metadata/generated/schema/api/data/createPipeline.py +1 -1
  58. metadata/generated/schema/api/data/createQuery.py +1 -1
  59. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  60. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  61. metadata/generated/schema/api/data/createTable.py +1 -1
  62. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  63. metadata/generated/schema/api/data/createTopic.py +1 -1
  64. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  65. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  66. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  67. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  68. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  69. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  70. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  71. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  72. metadata/generated/schema/api/docStore/__init__.py +1 -1
  73. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  74. metadata/generated/schema/api/domains/__init__.py +1 -1
  75. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  76. metadata/generated/schema/api/domains/createDomain.py +1 -1
  77. metadata/generated/schema/api/feed/__init__.py +1 -1
  78. metadata/generated/schema/api/feed/closeTask.py +1 -1
  79. metadata/generated/schema/api/feed/createPost.py +1 -1
  80. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  81. metadata/generated/schema/api/feed/createThread.py +1 -1
  82. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  83. metadata/generated/schema/api/feed/threadCount.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/openMetadataServerVersion.py +1 -1
  87. metadata/generated/schema/api/policies/__init__.py +1 -1
  88. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  89. metadata/generated/schema/api/services/__init__.py +1 -1
  90. metadata/generated/schema/api/services/createApiService.py +1 -1
  91. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  92. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  93. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  94. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  95. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  96. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  97. metadata/generated/schema/api/services/createSearchService.py +1 -1
  98. metadata/generated/schema/api/services/createStorageService.py +1 -1
  99. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  100. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  101. metadata/generated/schema/api/setOwner.py +1 -1
  102. metadata/generated/schema/api/teams/__init__.py +1 -1
  103. metadata/generated/schema/api/teams/createPersona.py +1 -1
  104. metadata/generated/schema/api/teams/createRole.py +1 -1
  105. metadata/generated/schema/api/teams/createTeam.py +1 -1
  106. metadata/generated/schema/api/teams/createUser.py +1 -1
  107. metadata/generated/schema/api/tests/__init__.py +1 -1
  108. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  109. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  110. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  111. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  112. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  113. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  114. metadata/generated/schema/api/voteRequest.py +1 -1
  115. metadata/generated/schema/auth/__init__.py +1 -1
  116. metadata/generated/schema/auth/basicAuth.py +1 -1
  117. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  118. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  119. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  120. metadata/generated/schema/auth/emailRequest.py +1 -1
  121. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  122. metadata/generated/schema/auth/generateToken.py +1 -1
  123. metadata/generated/schema/auth/jwtAuth.py +1 -1
  124. metadata/generated/schema/auth/loginRequest.py +1 -1
  125. metadata/generated/schema/auth/logoutRequest.py +1 -1
  126. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  127. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  128. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  129. metadata/generated/schema/auth/refreshToken.py +1 -1
  130. metadata/generated/schema/auth/registrationRequest.py +1 -1
  131. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  132. metadata/generated/schema/auth/revokeToken.py +1 -1
  133. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  134. metadata/generated/schema/auth/ssoAuth.py +1 -1
  135. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  136. metadata/generated/schema/configuration/__init__.py +1 -1
  137. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  138. metadata/generated/schema/configuration/authConfig.py +1 -1
  139. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  140. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  141. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  142. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  143. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  144. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  145. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  146. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  147. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  148. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  149. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  150. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  151. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  152. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  153. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  154. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  155. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  156. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  157. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  158. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  159. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  160. metadata/generated/schema/configuration/slackAppConfiguration.py +18 -7
  161. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  162. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  163. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  164. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  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 +2 -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 +23 -2
  172. metadata/generated/schema/dataInsight/custom/summaryCard.py +8 -1
  173. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  174. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -21
  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/appRunRecord.py +1 -1
  198. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  199. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  200. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  201. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  202. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  203. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  204. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  205. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  206. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  207. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  208. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  209. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  210. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  211. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  212. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  213. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  214. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  215. metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +10 -2
  216. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  217. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +9 -1
  218. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  219. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  220. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  221. metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.py +1 -1
  222. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  223. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  224. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  225. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  226. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  227. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  228. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  229. metadata/generated/schema/entity/automations/__init__.py +1 -1
  230. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  231. metadata/generated/schema/entity/automations/workflow.py +1 -1
  232. metadata/generated/schema/entity/bot.py +1 -1
  233. metadata/generated/schema/entity/classification/__init__.py +1 -1
  234. metadata/generated/schema/entity/classification/classification.py +1 -1
  235. metadata/generated/schema/entity/classification/tag.py +1 -1
  236. metadata/generated/schema/entity/data/__init__.py +1 -1
  237. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  238. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  239. metadata/generated/schema/entity/data/chart.py +1 -1
  240. metadata/generated/schema/entity/data/container.py +1 -1
  241. metadata/generated/schema/entity/data/dashboard.py +1 -1
  242. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  243. metadata/generated/schema/entity/data/database.py +1 -1
  244. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  245. metadata/generated/schema/entity/data/glossary.py +1 -1
  246. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  247. metadata/generated/schema/entity/data/metrics.py +1 -1
  248. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  249. metadata/generated/schema/entity/data/pipeline.py +1 -1
  250. metadata/generated/schema/entity/data/query.py +1 -1
  251. metadata/generated/schema/entity/data/report.py +1 -1
  252. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  253. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  254. metadata/generated/schema/entity/data/table.py +2 -1
  255. metadata/generated/schema/entity/data/topic.py +1 -1
  256. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  257. metadata/generated/schema/entity/docStore/document.py +1 -1
  258. metadata/generated/schema/entity/domains/__init__.py +1 -1
  259. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  260. metadata/generated/schema/entity/domains/domain.py +1 -1
  261. metadata/generated/schema/entity/events/__init__.py +1 -1
  262. metadata/generated/schema/entity/events/webhook.py +1 -1
  263. metadata/generated/schema/entity/feed/__init__.py +1 -1
  264. metadata/generated/schema/entity/feed/assets.py +1 -1
  265. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  266. metadata/generated/schema/entity/feed/description.py +1 -1
  267. metadata/generated/schema/entity/feed/domain.py +1 -1
  268. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  269. metadata/generated/schema/entity/feed/owner.py +1 -1
  270. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  271. metadata/generated/schema/entity/feed/tag.py +1 -1
  272. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  273. metadata/generated/schema/entity/feed/thread.py +1 -1
  274. metadata/generated/schema/entity/policies/__init__.py +1 -1
  275. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  276. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  277. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  278. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  279. metadata/generated/schema/entity/policies/filters.py +1 -1
  280. metadata/generated/schema/entity/policies/policy.py +1 -1
  281. metadata/generated/schema/entity/services/__init__.py +1 -1
  282. metadata/generated/schema/entity/services/apiService.py +1 -1
  283. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  284. metadata/generated/schema/entity/services/connections/apiService/__init__.py +1 -1
  285. metadata/generated/schema/entity/services/connections/apiService/restConnection.py +1 -1
  286. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  287. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  288. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  289. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  290. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  291. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  292. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  293. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  294. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  295. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +7 -2
  296. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  297. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  298. metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +1 -1
  299. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  300. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  301. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  302. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  303. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  304. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  305. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  306. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  307. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  308. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  309. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  310. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  311. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  312. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  313. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  314. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  315. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  316. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  317. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  318. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  319. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  320. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  321. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  322. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  323. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  324. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  325. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  326. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  327. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  328. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  329. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  330. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  331. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  332. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  333. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  334. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  335. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  336. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  337. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  340. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  341. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  342. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  343. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  344. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  345. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  346. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  347. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  348. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  349. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  359. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  360. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  361. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  363. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  367. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +2 -2
  369. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +2 -1
  372. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  375. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  376. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  377. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  382. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  383. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  388. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  389. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  390. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  395. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  398. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  412. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  414. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  415. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  416. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  420. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +2 -2
  425. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  426. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  427. metadata/generated/schema/entity/services/databaseService.py +1 -1
  428. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  429. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  430. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  431. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  432. metadata/generated/schema/entity/services/messagingService.py +1 -1
  433. metadata/generated/schema/entity/services/metadataService.py +1 -1
  434. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  435. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  436. metadata/generated/schema/entity/services/searchService.py +1 -1
  437. metadata/generated/schema/entity/services/serviceType.py +1 -1
  438. metadata/generated/schema/entity/services/storageService.py +1 -1
  439. metadata/generated/schema/entity/teams/__init__.py +1 -1
  440. metadata/generated/schema/entity/teams/persona.py +1 -1
  441. metadata/generated/schema/entity/teams/role.py +1 -1
  442. metadata/generated/schema/entity/teams/team.py +1 -1
  443. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  444. metadata/generated/schema/entity/teams/user.py +1 -1
  445. metadata/generated/schema/entity/type.py +1 -1
  446. metadata/generated/schema/entity/utils/__init__.py +1 -1
  447. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  448. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  449. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  450. metadata/generated/schema/events/__init__.py +1 -1
  451. metadata/generated/schema/events/alertMetrics.py +1 -1
  452. metadata/generated/schema/events/api/__init__.py +1 -1
  453. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  454. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  455. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  456. metadata/generated/schema/events/eventFilterRule.py +1 -1
  457. metadata/generated/schema/events/eventSubscription.py +1 -1
  458. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  459. metadata/generated/schema/events/failedEvent.py +1 -1
  460. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  461. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  462. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  463. metadata/generated/schema/metadataIngestion/application.py +1 -1
  464. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  465. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  466. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  467. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +2 -2
  468. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  469. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  470. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  471. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  472. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  473. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  474. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  475. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  476. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  477. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  478. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  479. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  480. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  481. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  482. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  483. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  484. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  485. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  486. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  487. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  488. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  489. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  490. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  491. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  492. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  493. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  494. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  495. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  496. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  497. metadata/generated/schema/monitoring/__init__.py +1 -1
  498. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  499. metadata/generated/schema/security/__init__.py +1 -1
  500. metadata/generated/schema/security/client/__init__.py +1 -1
  501. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  502. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  503. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  504. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  505. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  506. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  507. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  508. metadata/generated/schema/security/client/samlSSOClientConfig.py +7 -5
  509. metadata/generated/schema/security/credentials/__init__.py +1 -1
  510. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  511. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  512. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  513. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  514. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  515. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  516. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  517. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  518. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  519. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  520. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  521. metadata/generated/schema/security/credentials/gitlabCredentials.py +34 -0
  522. metadata/generated/schema/security/sasl/__init__.py +1 -1
  523. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  524. metadata/generated/schema/security/secrets/__init__.py +1 -1
  525. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  526. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  527. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  528. metadata/generated/schema/security/securityConfiguration.py +1 -1
  529. metadata/generated/schema/security/ssl/__init__.py +1 -1
  530. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  531. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  532. metadata/generated/schema/settings/__init__.py +1 -1
  533. metadata/generated/schema/settings/settings.py +2 -1
  534. metadata/generated/schema/system/__init__.py +1 -1
  535. metadata/generated/schema/system/entityError.py +1 -1
  536. metadata/generated/schema/system/eventPublisherJob.py +5 -1
  537. metadata/generated/schema/system/indexingError.py +1 -1
  538. metadata/generated/schema/system/limitsResponse.py +1 -1
  539. metadata/generated/schema/system/ui/__init__.py +1 -1
  540. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  541. metadata/generated/schema/system/ui/page.py +1 -1
  542. metadata/generated/schema/system/validationResponse.py +1 -1
  543. metadata/generated/schema/tests/__init__.py +1 -1
  544. metadata/generated/schema/tests/assigned.py +1 -1
  545. metadata/generated/schema/tests/basic.py +20 -20
  546. metadata/generated/schema/tests/customMetric.py +1 -1
  547. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  548. metadata/generated/schema/tests/resolved.py +1 -1
  549. metadata/generated/schema/tests/testCase.py +1 -1
  550. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  551. metadata/generated/schema/tests/testDefinition.py +1 -1
  552. metadata/generated/schema/tests/testSuite.py +1 -1
  553. metadata/generated/schema/type/__init__.py +1 -1
  554. metadata/generated/schema/type/apiSchema.py +1 -1
  555. metadata/generated/schema/type/auditLog.py +1 -1
  556. metadata/generated/schema/type/basic.py +1 -1
  557. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  558. metadata/generated/schema/type/changeEvent.py +1 -1
  559. metadata/generated/schema/type/changeEventType.py +1 -1
  560. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  561. metadata/generated/schema/type/csvDocumentation.py +1 -1
  562. metadata/generated/schema/type/csvErrorType.py +1 -1
  563. metadata/generated/schema/type/csvFile.py +1 -1
  564. metadata/generated/schema/type/csvImportResult.py +1 -1
  565. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  566. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  567. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  568. metadata/generated/schema/type/customProperty.py +1 -1
  569. metadata/generated/schema/type/dailyCount.py +1 -1
  570. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  571. metadata/generated/schema/type/entityHierarchy.py +1 -1
  572. metadata/generated/schema/type/entityHistory.py +1 -1
  573. metadata/generated/schema/type/entityLineage.py +1 -1
  574. metadata/generated/schema/type/entityReference.py +1 -1
  575. metadata/generated/schema/type/entityReferenceList.py +1 -1
  576. metadata/generated/schema/type/entityRelationship.py +1 -1
  577. metadata/generated/schema/type/entityUsage.py +1 -1
  578. metadata/generated/schema/type/filterPattern.py +1 -1
  579. metadata/generated/schema/type/function.py +1 -1
  580. metadata/generated/schema/type/include.py +1 -1
  581. metadata/generated/schema/type/jdbcConnection.py +1 -1
  582. metadata/generated/schema/type/lifeCycle.py +1 -1
  583. metadata/generated/schema/type/paging.py +1 -1
  584. metadata/generated/schema/type/profile.py +1 -1
  585. metadata/generated/schema/type/queryParserData.py +1 -1
  586. metadata/generated/schema/type/reaction.py +1 -1
  587. metadata/generated/schema/type/schedule.py +1 -1
  588. metadata/generated/schema/type/schema.py +1 -1
  589. metadata/generated/schema/type/tableQuery.py +1 -1
  590. metadata/generated/schema/type/tableUsageCount.py +1 -1
  591. metadata/generated/schema/type/tagLabel.py +1 -1
  592. metadata/generated/schema/type/usageDetails.py +1 -1
  593. metadata/generated/schema/type/usageRequest.py +1 -1
  594. metadata/generated/schema/type/votes.py +1 -1
  595. metadata/great_expectations/action.py +1 -1
  596. metadata/ingestion/connections/builders.py +6 -0
  597. metadata/ingestion/connections/test_connections.py +5 -0
  598. metadata/ingestion/lineage/models.py +4 -0
  599. metadata/ingestion/ometa/mixins/ingestion_pipeline_mixin.py +1 -1
  600. metadata/ingestion/source/connections.py +19 -0
  601. metadata/ingestion/source/dashboard/domodashboard/metadata.py +3 -3
  602. metadata/ingestion/source/dashboard/looker/metadata.py +8 -3
  603. metadata/ingestion/source/dashboard/looker/utils.py +6 -3
  604. metadata/ingestion/source/dashboard/metabase/client.py +2 -1
  605. metadata/ingestion/source/dashboard/powerbi/metadata.py +2 -1
  606. metadata/ingestion/source/dashboard/qlikcloud/client.py +1 -1
  607. metadata/ingestion/source/dashboard/superset/mixin.py +5 -0
  608. metadata/ingestion/source/dashboard/tableau/metadata.py +10 -7
  609. metadata/ingestion/source/database/bigquery/metadata.py +5 -1
  610. metadata/ingestion/source/database/column_type_parser.py +3 -2
  611. metadata/ingestion/source/database/common_db_source.py +9 -4
  612. metadata/ingestion/source/database/database_service.py +1 -1
  613. metadata/ingestion/source/database/databricks/lineage.py +2 -2
  614. metadata/ingestion/source/database/databricks/metadata.py +100 -18
  615. metadata/ingestion/source/database/databricks/queries.py +3 -1
  616. metadata/ingestion/source/database/databricks/usage.py +2 -2
  617. metadata/ingestion/source/database/datalake/clients/gcs.py +4 -0
  618. metadata/ingestion/source/database/db2/metadata.py +8 -1
  619. metadata/ingestion/source/database/dbt/constants.py +1 -7
  620. metadata/ingestion/source/database/dbt/dbt_config.py +18 -19
  621. metadata/ingestion/source/database/dbt/dbt_service.py +4 -3
  622. metadata/ingestion/source/database/dbt/metadata.py +14 -3
  623. metadata/ingestion/source/database/dbt/models.py +2 -2
  624. metadata/ingestion/source/database/mssql/lineage.py +0 -4
  625. metadata/ingestion/source/database/mssql/metadata.py +1 -1
  626. metadata/ingestion/source/database/mssql/usage.py +42 -0
  627. metadata/ingestion/source/database/oracle/metadata.py +7 -0
  628. metadata/ingestion/source/database/oracle/queries.py +45 -11
  629. metadata/ingestion/source/database/oracle/utils.py +33 -0
  630. metadata/ingestion/source/database/postgres/converter_orm.py +52 -0
  631. metadata/ingestion/source/database/postgres/metadata.py +6 -0
  632. metadata/ingestion/source/database/postgres/metrics.py +42 -0
  633. metadata/ingestion/source/database/postgres/types/money.py +37 -0
  634. metadata/ingestion/source/database/postgres/usage.py +6 -0
  635. metadata/ingestion/source/database/redshift/connection.py +37 -9
  636. metadata/ingestion/source/database/redshift/queries.py +4 -5
  637. metadata/ingestion/source/database/unitycatalog/client.py +21 -0
  638. metadata/ingestion/source/database/unitycatalog/metadata.py +58 -22
  639. metadata/ingestion/source/pipeline/dagster/metadata.py +17 -14
  640. metadata/ingestion/source/pipeline/dbtcloud/client.py +29 -4
  641. metadata/ingestion/source/pipeline/dbtcloud/metadata.py +94 -71
  642. metadata/ingestion/source/pipeline/dbtcloud/models.py +6 -6
  643. metadata/ingestion/source/pipeline/dbtcloud/queries.py +22 -11
  644. metadata/ingestion/source/pipeline/domopipeline/metadata.py +1 -1
  645. metadata/ingestion/source/pipeline/fivetran/client.py +2 -1
  646. metadata/ingestion/source/storage/gcs/client.py +4 -9
  647. metadata/ingestion/source/storage/gcs/metadata.py +4 -0
  648. metadata/profiler/interface/sqlalchemy/profiler_interface.py +23 -1
  649. metadata/profiler/metrics/composed/null_ratio.py +5 -8
  650. metadata/profiler/metrics/hybrid/histogram.py +9 -3
  651. metadata/profiler/metrics/static/mean.py +8 -9
  652. metadata/profiler/metrics/static/null_count.py +4 -2
  653. metadata/profiler/orm/functions/median.py +11 -4
  654. metadata/profiler/orm/functions/sum.py +1 -1
  655. metadata/profiler/orm/functions/table_metric_computer.py +2 -2
  656. metadata/profiler/orm/registry.py +14 -1
  657. metadata/profiler/processor/default.py +4 -1
  658. metadata/profiler/processor/sampler/sampler_factory.py +9 -0
  659. metadata/profiler/processor/sampler/sqlalchemy/azuresql/sampler.py +40 -0
  660. metadata/profiler/source/base/profiler_source.py +1 -0
  661. metadata/readers/file/api_reader.py +4 -1
  662. metadata/readers/file/gitlab.py +172 -0
  663. metadata/utils/helpers.py +4 -1
  664. metadata/utils/importer.py +26 -0
  665. {openmetadata_ingestion-1.5.0.0rc1.dist-info → openmetadata_ingestion-1.5.1.0.dist-info}/METADATA +353 -346
  666. {openmetadata_ingestion-1.5.0.0rc1.dist-info → openmetadata_ingestion-1.5.1.0.dist-info}/RECORD +670 -667
  667. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithDescriptionByType.py +0 -48
  668. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +0 -44
  669. metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +0 -46
  670. metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +0 -44
  671. metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +0 -39
  672. metadata/generated/schema/dataInsight/type/totalEntitiesByType.py +0 -40
  673. {openmetadata_ingestion-1.5.0.0rc1.dist-info → openmetadata_ingestion-1.5.1.0.dist-info}/LICENSE +0 -0
  674. {openmetadata_ingestion-1.5.0.0rc1.dist-info → openmetadata_ingestion-1.5.1.0.dist-info}/WHEEL +0 -0
  675. {openmetadata_ingestion-1.5.0.0rc1.dist-info → openmetadata_ingestion-1.5.1.0.dist-info}/entry_points.txt +0 -0
  676. {openmetadata_ingestion-1.5.0.0rc1.dist-info → openmetadata_ingestion-1.5.1.0.dist-info}/top_level.txt +0 -0
@@ -73,6 +73,9 @@ from metadata.generated.schema.security.credentials.bitbucketCredentials import
73
73
  from metadata.generated.schema.security.credentials.githubCredentials import (
74
74
  GitHubCredentials,
75
75
  )
76
+ from metadata.generated.schema.security.credentials.gitlabCredentials import (
77
+ GitlabCredentials,
78
+ )
76
79
  from metadata.generated.schema.type.basic import (
77
80
  EntityName,
78
81
  FullyQualifiedEntityName,
@@ -203,6 +206,7 @@ class LookerSource(DashboardServiceSource):
203
206
  NoGitCredentials,
204
207
  GitHubCredentials,
205
208
  BitBucketCredentials,
209
+ GitlabCredentials,
206
210
  ]
207
211
  ]
208
212
  ) -> "LookMLRepo":
@@ -225,6 +229,7 @@ class LookerSource(DashboardServiceSource):
225
229
  NoGitCredentials,
226
230
  GitHubCredentials,
227
231
  BitBucketCredentials,
232
+ GitlabCredentials,
228
233
  ]
229
234
  ],
230
235
  path="manifest.lkml",
@@ -284,7 +289,7 @@ class LookerSource(DashboardServiceSource):
284
289
  }
285
290
  logger.info(f"We found the following parsers:\n {self._project_parsers}")
286
291
 
287
- def get_lookml_project_credentials(self, project_name: str) -> GitHubCredentials:
292
+ def get_lookml_project_credentials(self, project_name: str) -> ReadersCredentials:
288
293
  """
289
294
  Given a lookml project, get its git URL and build the credentials
290
295
  """
@@ -305,7 +310,7 @@ class LookerSource(DashboardServiceSource):
305
310
  Depending on the type of the credentials we'll need a different reader
306
311
  """
307
312
  if not self._reader_class and self.service_connection.gitCredentials:
308
- # Both credentials from Github & Bitbucket will process by LocalReader
313
+ # Credentials from Github/Gitlab/Bitbucket will process by LocalReader
309
314
  self._reader_class = LocalReader
310
315
 
311
316
  return self._reader_class
@@ -319,7 +324,7 @@ class LookerSource(DashboardServiceSource):
319
324
  """
320
325
  if not self._repo_credentials:
321
326
  if self.service_connection.gitCredentials and isinstance(
322
- self.service_connection.gitCredentials, GitHubCredentials
327
+ self.service_connection.gitCredentials, ReadersCredentials
323
328
  ):
324
329
  self._repo_credentials = self.service_connection.gitCredentials
325
330
 
@@ -28,6 +28,9 @@ from metadata.generated.schema.security.credentials.bitbucketCredentials import
28
28
  from metadata.generated.schema.security.credentials.githubCredentials import (
29
29
  GitHubCredentials,
30
30
  )
31
+ from metadata.generated.schema.security.credentials.gitlabCredentials import (
32
+ GitlabCredentials,
33
+ )
31
34
  from metadata.utils.logger import ingestion_logger
32
35
 
33
36
  logger = ingestion_logger()
@@ -38,9 +41,7 @@ def _clone_repo(
38
41
  path: str,
39
42
  credential: Optional[
40
43
  Union[
41
- NoGitCredentials,
42
- GitHubCredentials,
43
- BitBucketCredentials,
44
+ NoGitCredentials, GitHubCredentials, BitBucketCredentials, GitlabCredentials
44
45
  ]
45
46
  ],
46
47
  overwrite: Optional[bool] = False,
@@ -60,6 +61,8 @@ def _clone_repo(
60
61
  elif isinstance(credential, BitBucketCredentials):
61
62
  url = f"https://x-token-auth:{credential.token.root.get_secret_value()}@bitbucket.org/{repo_name}.git"
62
63
  allow_unsafe_protocols = True
64
+ elif isinstance(credential, GitlabCredentials):
65
+ url = f"https://x-token-auth:{credential.token.root.get_secret_value()}@gitlab.com/{repo_name}.git"
63
66
 
64
67
  assert url is not None
65
68
 
@@ -33,6 +33,7 @@ from metadata.ingestion.source.dashboard.metabase.models import (
33
33
  MetabaseUser,
34
34
  )
35
35
  from metadata.utils.constants import AUTHORIZATION_HEADER, NO_ACCESS_TOKEN
36
+ from metadata.utils.helpers import clean_uri
36
37
  from metadata.utils.logger import ingestion_logger
37
38
 
38
39
  logger = ingestion_logger()
@@ -78,7 +79,7 @@ class MetabaseClient:
78
79
  self.config = config
79
80
  session_token = self._get_metabase_session()
80
81
  client_config: ClientConfig = ClientConfig(
81
- base_url=str(self.config.hostPort)[:-1], # remove trailing slash
82
+ base_url=clean_uri(str(self.config.hostPort)),
82
83
  api_version=API_VERSION,
83
84
  auth_header=AUTHORIZATION_HEADER,
84
85
  auth_token=lambda: (NO_ACCESS_TOKEN, 0),
@@ -102,7 +102,8 @@ class PowerbiSource(DashboardServiceSource):
102
102
 
103
103
  def close(self):
104
104
  self.metadata.close()
105
- self.client.file_client.delete_tmp_files()
105
+ if self.client.file_client:
106
+ self.client.file_client.delete_tmp_files()
106
107
 
107
108
  def get_filtered_workspaces(self, groups: List[Group]) -> List[Group]:
108
109
  """
@@ -145,7 +145,7 @@ class QlikCloudClient:
145
145
  resp_apps = self.client.get("/v1/items?resourceType=app")
146
146
  if resp_apps:
147
147
  resp = QlikAppResponse(**resp_apps)
148
- yield from resp.apps
148
+ return list(resp.apps)
149
149
 
150
150
  def get_dashboard_details(self, dashboard_id: str) -> Optional[QlikApp]:
151
151
  """
@@ -223,6 +223,10 @@ class SupersetSourceMixin(DashboardServiceSource):
223
223
  )
224
224
  return None
225
225
 
226
+ def _clearn_column_datatype(self, datatype: str) -> str:
227
+ """clean datatype of column fetched from superset"""
228
+ return datatype.replace("()", "")
229
+
226
230
  def get_column_info(
227
231
  self, data_source: List[Union[DataSourceResult, FetchColumn]]
228
232
  ) -> Optional[List[Column]]:
@@ -236,6 +240,7 @@ class SupersetSourceMixin(DashboardServiceSource):
236
240
  for field in data_source or []:
237
241
  try:
238
242
  if field.type:
243
+ field.type = self._clearn_column_datatype(field.type)
239
244
  col_parse = ColumnTypeParser._parse_datatype_string( # pylint: disable=protected-access
240
245
  field.type
241
246
  )
@@ -313,17 +313,18 @@ class TableauSource(DashboardServiceSource):
313
313
  @staticmethod
314
314
  def _get_data_model_column_fqn(
315
315
  data_model_entity: DashboardDataModel, column: str
316
- ) -> Optional[str]:
316
+ ) -> Optional[List[str]]:
317
317
  """
318
318
  Get fqn of column if exist in table entity
319
319
  """
320
320
  if not data_model_entity:
321
321
  return None
322
+ columns = []
322
323
  for tbl_column in data_model_entity.columns:
323
324
  for child_column in tbl_column.children or []:
324
325
  if column.lower() == child_column.name.root.lower():
325
- return child_column.fullyQualifiedName.root
326
- return None
326
+ columns.append(child_column.fullyQualifiedName.root)
327
+ return columns
327
328
 
328
329
  def _get_column_lineage( # pylint: disable=arguments-differ
329
330
  self,
@@ -342,13 +343,15 @@ class TableauSource(DashboardServiceSource):
342
343
  from_column = get_column_fqn(
343
344
  table_entity=table_entity, column=column.name
344
345
  )
345
- to_column = self._get_data_model_column_fqn(
346
+ to_columns = self._get_data_model_column_fqn(
346
347
  data_model_entity=data_model_entity,
347
348
  column=column.id,
348
349
  )
349
- column_lineage.append(
350
- ColumnLineage(fromColumns=[from_column], toColumn=to_column)
351
- )
350
+ for to_column in to_columns:
351
+ column_lineage.append(
352
+ ColumnLineage(fromColumns=[from_column], toColumn=to_column)
353
+ )
354
+ return column_lineage
352
355
  except Exception as exc:
353
356
  logger.debug(f"Error to get column lineage: {exc}")
354
357
  logger.debug(traceback.format_exc())
@@ -11,6 +11,7 @@
11
11
  """
12
12
  Bigquery source module
13
13
  """
14
+ import ast
14
15
  import os
15
16
  import traceback
16
17
  from typing import Dict, Iterable, List, Optional, Tuple
@@ -412,7 +413,10 @@ class BigquerySource(
412
413
  )
413
414
 
414
415
  query_result = [result.schema_description for result in query_resp.result()]
415
- return fqn.unquote_name(query_result[0])
416
+
417
+ return str(
418
+ ast.literal_eval(query_result[0])
419
+ ) # To safely evaluate the string, unquote and interpret escaped characters
416
420
  except IndexError:
417
421
  logger.debug(f"No dataset description found for {schema_name}")
418
422
  except Exception as err:
@@ -148,7 +148,7 @@ class ColumnTypeParser:
148
148
  "MEDIUMBLOB": "MEDIUMBLOB",
149
149
  "MEDIUMINT": "INT",
150
150
  "MEDIUMTEXT": "MEDIUMTEXT",
151
- "MONEY": "NUMBER",
151
+ "MONEY": "MONEY",
152
152
  "NCHAR": "CHAR",
153
153
  "NTEXT": "NTEXT",
154
154
  "NULL": "NULL",
@@ -292,6 +292,8 @@ class ColumnTypeParser:
292
292
  "CURR": "DECIMAL",
293
293
  "STRG": "STRING",
294
294
  "RSTR": "STRING",
295
+ # azuresql
296
+ "HIERARCHYID": "UNKNOWN",
295
297
  }
296
298
 
297
299
  _COMPLEX_TYPE = re.compile("^(struct|map|array|uniontype)")
@@ -347,7 +349,6 @@ class ColumnTypeParser:
347
349
  arr_data_type = ColumnTypeParser._parse_primitive_datatype_string(
348
350
  data_type[6:-1]
349
351
  )["dataType"]
350
-
351
352
  data_type_string = {
352
353
  "dataType": "ARRAY",
353
354
  "arrayDataType": arr_data_type,
@@ -61,7 +61,10 @@ from metadata.ingestion.connections.session import create_and_bind_thread_safe_s
61
61
  from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
62
62
  from metadata.ingestion.models.ometa_lineage import OMetaLineageRequest
63
63
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
64
- from metadata.ingestion.source.connections import get_connection
64
+ from metadata.ingestion.source.connections import (
65
+ get_connection,
66
+ kill_active_connections,
67
+ )
65
68
  from metadata.ingestion.source.database.database_service import DatabaseServiceSource
66
69
  from metadata.ingestion.source.database.sql_column_handler import SqlColumnHandlerMixin
67
70
  from metadata.ingestion.source.database.sqlalchemy_source import SqlAlchemySource
@@ -142,6 +145,8 @@ class CommonDbSourceService(
142
145
  to setup multiple inspectors. They can use this function.
143
146
  :param database_name: new database to set
144
147
  """
148
+
149
+ kill_active_connections(self.engine)
145
150
  logger.info(f"Ingesting from database: {database_name}")
146
151
 
147
152
  new_service_connection = deepcopy(self.service_connection)
@@ -403,7 +408,7 @@ class CommonDbSourceService(
403
408
  schema_definition = inspector.get_view_definition(
404
409
  table_name, schema_name
405
410
  )
406
- elif hasattr(inspector, "get_table_ddl"):
411
+ elif hasattr(inspector, "get_table_ddl") and self.source_config.includeDDL:
407
412
  schema_definition = inspector.get_table_ddl(
408
413
  self.connection, table_name, schema_name
409
414
  )
@@ -415,11 +420,11 @@ class CommonDbSourceService(
415
420
  return schema_definition
416
421
 
417
422
  except NotImplementedError:
418
- logger.warning("Schema definition not implemented")
423
+ logger.debug("Schema definition not implemented")
419
424
 
420
425
  except Exception as exc:
421
426
  logger.debug(traceback.format_exc())
422
- logger.warning(f"Failed to fetch schema definition for {table_name}: {exc}")
427
+ logger.debug(f"Failed to fetch schema definition for {table_name}: {exc}")
423
428
  return None
424
429
 
425
430
  def is_partition( # pylint: disable=unused-argument
@@ -316,7 +316,7 @@ class DatabaseServiceSource(
316
316
  """
317
317
 
318
318
  def yield_table_tag_details(
319
- self, table_name_and_type: str
319
+ self, table_name_and_type: Tuple[str, TableType]
320
320
  ) -> Iterable[Either[OMetaTagAndClassification]]:
321
321
  """
322
322
  From topology. To be run for each table
@@ -42,8 +42,8 @@ class DatabricksLineageSource(DatabricksQueryParserSource, LineageSource):
42
42
  yield TableQuery(
43
43
  query=row.get("query_text"),
44
44
  userName=row.get("user_name"),
45
- startTime=row.get("query_start_time_ms"),
46
- endTime=row.get("execution_end_time_ms"),
45
+ startTime=str(row.get("query_start_time_ms")),
46
+ endTime=str(row.get("execution_end_time_ms")),
47
47
  analysisDate=DateTime(datetime.now()),
48
48
  serviceName=self.config.serviceName,
49
49
  )
@@ -15,8 +15,10 @@ import traceback
15
15
  from copy import deepcopy
16
16
  from typing import Iterable, Optional, Tuple, Union
17
17
 
18
+ from pydantic import EmailStr
19
+ from pydantic_core import PydanticCustomError
18
20
  from pyhive.sqlalchemy_hive import _type_map
19
- from sqlalchemy import types, util
21
+ from sqlalchemy import exc, types, util
20
22
  from sqlalchemy.engine import reflection
21
23
  from sqlalchemy.engine.reflection import Inspector
22
24
  from sqlalchemy.exc import DatabaseError
@@ -35,6 +37,7 @@ from metadata.generated.schema.entity.services.ingestionPipelines.status import
35
37
  from metadata.generated.schema.metadataIngestion.workflow import (
36
38
  Source as WorkflowSource,
37
39
  )
40
+ from metadata.generated.schema.type.entityReferenceList import EntityReferenceList
38
41
  from metadata.ingestion.api.models import Either
39
42
  from metadata.ingestion.api.steps import InvalidSourceException
40
43
  from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
@@ -162,16 +165,19 @@ def get_columns(self, connection, table_name, schema=None, **kw):
162
165
  }
163
166
  if col_type in {"array", "struct", "map"}:
164
167
  col_name = f"`{col_name}`" if "." in col_name else col_name
165
- rows = dict(
166
- connection.execute(
167
- f"DESCRIBE {schema}.{table_name} {col_name}"
168
- if schema
169
- else f"DESCRIBE {table_name} {col_name}"
170
- ).fetchall()
171
- )
172
-
173
- col_info["system_data_type"] = rows["data_type"]
174
- col_info["is_complex"] = True
168
+ try:
169
+ rows = dict(
170
+ connection.execute(
171
+ f"DESCRIBE TABLE {kw.get('db_name')}.{schema}.{table_name} {col_name}"
172
+ ).fetchall()
173
+ )
174
+ col_info["system_data_type"] = rows["data_type"]
175
+ col_info["is_complex"] = True
176
+ except DatabaseError as err:
177
+ logger.error(
178
+ f"Failed to fetch column details for column {col_name} in table {table_name} due to: {err}"
179
+ )
180
+ logger.debug(traceback.format_exc())
175
181
  result.append(col_info)
176
182
  return result
177
183
 
@@ -221,7 +227,9 @@ def get_table_comment( # pylint: disable=unused-argument
221
227
  """
222
228
  cursor = connection.execute(
223
229
  DATABRICKS_GET_TABLE_COMMENTS.format(
224
- schema_name=schema_name, table_name=table_name
230
+ database_name=self.context.get().database,
231
+ schema_name=schema_name,
232
+ table_name=table_name,
225
233
  )
226
234
  )
227
235
  try:
@@ -283,15 +291,46 @@ def get_table_names(
283
291
  # if it is > 1, we use spark thrift server with 3 columns in the result (schema, table, is_temporary)
284
292
  # else it is hive with 1 column in the result
285
293
  if len(row) > 1:
286
- tables.append(row[1])
294
+ table_name = row[1]
287
295
  else:
288
- tables.append(row[0])
296
+ table_name = row[0]
297
+ if schema:
298
+ database = kw.get("db_name")
299
+ table_type = get_table_type(connection, database, schema, table_name)
300
+ if not table_type or table_type == "FOREIGN":
301
+ # skip the table if it's foreign table / error in fetching table_type
302
+ logger.debug(
303
+ f"Skipping metadata ingestion for unsupported foreign table {table_name}"
304
+ )
305
+ continue
306
+ tables.append(table_name)
307
+
289
308
  # "SHOW TABLES" command in hive also fetches view names
290
309
  # Below code filters out view names from table names
291
310
  views = self.get_view_names(connection, schema)
292
311
  return [table for table in tables if table not in views]
293
312
 
294
313
 
314
+ def get_table_type(connection, database, schema, table):
315
+ """get table type (regular/foreign)"""
316
+ try:
317
+ if database:
318
+ query = DATABRICKS_GET_TABLE_COMMENTS.format(
319
+ database_name=database, schema_name=schema, table_name=table
320
+ )
321
+ else:
322
+ query = f"DESCRIBE TABLE EXTENDED {schema}.{table}"
323
+ rows = connection.execute(query)
324
+ for row in rows:
325
+ row_dict = dict(row)
326
+ if row_dict.get("col_name") == "Type":
327
+ # get type of table
328
+ return row_dict.get("data_type")
329
+ except DatabaseError as err:
330
+ logger.error(f"Failed to fetch table type for table {table} due to: {err}")
331
+ return
332
+
333
+
295
334
  DatabricksDialect.get_table_comment = get_table_comment
296
335
  DatabricksDialect.get_view_names = get_view_names
297
336
  DatabricksDialect.get_columns = get_columns
@@ -476,9 +515,11 @@ class DatabricksSource(ExternalTableLineageMixin, CommonDbSourceService, MultiDB
476
515
  )
477
516
  if filter_by_database(
478
517
  self.source_config.databaseFilterPattern,
479
- database_fqn
480
- if self.source_config.useFqnForFiltering
481
- else new_catalog,
518
+ (
519
+ database_fqn
520
+ if self.source_config.useFqnForFiltering
521
+ else new_catalog
522
+ ),
482
523
  ):
483
524
  self.status.filter(database_fqn, "Database Filtered Out")
484
525
  continue
@@ -638,7 +679,9 @@ class DatabricksSource(ExternalTableLineageMixin, CommonDbSourceService, MultiDB
638
679
  try:
639
680
  cursor = self.connection.execute(
640
681
  DATABRICKS_GET_TABLE_COMMENTS.format(
641
- schema_name=schema_name, table_name=table_name
682
+ database_name=self.context.get().database,
683
+ schema_name=schema_name,
684
+ table_name=table_name,
642
685
  )
643
686
  )
644
687
  for result in list(cursor):
@@ -661,3 +704,42 @@ class DatabricksSource(ExternalTableLineageMixin, CommonDbSourceService, MultiDB
661
704
  f"Table description error for table [{schema_name}.{table_name}]: {exc}"
662
705
  )
663
706
  return description
707
+
708
+ def _filter_owner_name(self, owner_name: str) -> str:
709
+ """remove unnecessary keyword from name"""
710
+ pattern = r"\(Unknown\)"
711
+ filtered_name = re.sub(pattern, "", owner_name).strip()
712
+ return filtered_name
713
+
714
+ def get_owner_ref(self, table_name: str) -> Optional[EntityReferenceList]:
715
+ """
716
+ Method to process the table owners
717
+ """
718
+ try:
719
+ query = DATABRICKS_GET_TABLE_COMMENTS.format(
720
+ database_name=self.context.get().database,
721
+ schema_name=self.context.get().database_schema,
722
+ table_name=table_name,
723
+ )
724
+ result = self.connection.engine.execute(query)
725
+ owner = None
726
+ for row in result:
727
+ row_dict = dict(row)
728
+ if row_dict.get("col_name") == "Owner":
729
+ owner = row_dict.get("data_type")
730
+ break
731
+ if not owner:
732
+ return
733
+
734
+ owner = self._filter_owner_name(owner)
735
+ owner_ref = None
736
+ try:
737
+ owner_email = EmailStr._validate(owner)
738
+ owner_ref = self.metadata.get_reference_by_email(email=owner_email)
739
+ except PydanticCustomError:
740
+ owner_ref = self.metadata.get_reference_by_name(name=owner)
741
+ return owner_ref
742
+ except Exception as exc:
743
+ logger.debug(traceback.format_exc())
744
+ logger.warning(f"Error processing owner for table {table_name}: {exc}")
745
+ return
@@ -24,7 +24,9 @@ DATABRICKS_VIEW_DEFINITIONS = textwrap.dedent(
24
24
  """
25
25
  )
26
26
 
27
- DATABRICKS_GET_TABLE_COMMENTS = "DESCRIBE TABLE EXTENDED {schema_name}.{table_name}"
27
+ DATABRICKS_GET_TABLE_COMMENTS = (
28
+ "DESCRIBE TABLE EXTENDED {database_name}.{schema_name}.{table_name}"
29
+ )
28
30
 
29
31
  DATABRICKS_GET_CATALOGS = "SHOW CATALOGS"
30
32
 
@@ -47,8 +47,8 @@ class DatabricksUsageSource(DatabricksQueryParserSource, UsageSource):
47
47
  TableQuery(
48
48
  query=row.get("query_text"),
49
49
  userName=row.get("user_name"),
50
- startTime=row.get("query_start_time_ms"),
51
- endTime=row.get("execution_end_time_ms"),
50
+ startTime=str(row.get("query_start_time_ms")),
51
+ endTime=str(row.get("execution_end_time_ms")),
52
52
  analysisDate=DateTime(datetime.now()),
53
53
  serviceName=self.config.serviceName,
54
54
  duration=row.get("duration")
@@ -38,6 +38,10 @@ class DatalakeGcsClient(DatalakeBaseClient):
38
38
  self._client = client
39
39
  self._temp_credentials_file_path_list = temp_credentials_file_path_list
40
40
 
41
+ @property
42
+ def project(self):
43
+ return self._client.project
44
+
41
45
  @staticmethod
42
46
  def get_gcs_client(config: GCSConfig) -> storage.Client:
43
47
  gcs_config = deepcopy(config)
@@ -10,7 +10,7 @@
10
10
  # limitations under the License.
11
11
  """Db2 source module"""
12
12
  import traceback
13
- from typing import Optional
13
+ from typing import Iterable, Optional
14
14
 
15
15
  from ibm_db_sa.base import ischema_names
16
16
  from sqlalchemy.engine.reflection import Inspector
@@ -52,6 +52,13 @@ class Db2Source(CommonDbSourceService):
52
52
  )
53
53
  return cls(config, metadata)
54
54
 
55
+ def get_raw_database_schema_names(self) -> Iterable[str]:
56
+ if self.service_connection.__dict__.get("databaseSchema"):
57
+ yield self.service_connection.databaseSchema
58
+ else:
59
+ for schema_name in self.inspector.get_schema_names():
60
+ yield schema_name.rstrip()
61
+
55
62
  @staticmethod
56
63
  def get_table_description(
57
64
  schema_name: str, table_name: str, inspector: Inspector
@@ -26,13 +26,7 @@ NONE_KEYWORDS_LIST = ["none", "null"]
26
26
 
27
27
  DBT_CATALOG_FILE_NAME = "catalog.json"
28
28
  DBT_MANIFEST_FILE_NAME = "manifest.json"
29
- DBT_RUN_RESULTS_FILE_NAME = "run_results.json"
30
-
31
- DBT_FILE_NAMES_LIST = [
32
- DBT_CATALOG_FILE_NAME,
33
- DBT_MANIFEST_FILE_NAME,
34
- DBT_RUN_RESULTS_FILE_NAME,
35
- ]
29
+ DBT_RUN_RESULTS_FILE_NAME = "run_results"
36
30
 
37
31
 
38
32
  class SkipResourceTypeEnum(Enum):
@@ -41,7 +41,6 @@ from metadata.generated.schema.metadataIngestion.dbtconfig.dbtS3Config import (
41
41
  )
42
42
  from metadata.ingestion.source.database.dbt.constants import (
43
43
  DBT_CATALOG_FILE_NAME,
44
- DBT_FILE_NAMES_LIST,
45
44
  DBT_MANIFEST_FILE_NAME,
46
45
  DBT_RUN_RESULTS_FILE_NAME,
47
46
  )
@@ -129,7 +128,7 @@ def _(config: DbtHttpConfig):
129
128
  yield DbtFiles(
130
129
  dbt_catalog=dbt_catalog.json() if dbt_catalog else None,
131
130
  dbt_manifest=dbt_manifest.json(),
132
- dbt_run_results=dbt_run_results.json() if dbt_run_results else None,
131
+ dbt_run_results=[dbt_run_results.json()] if dbt_run_results else None,
133
132
  )
134
133
  except DBTConfigException as exc:
135
134
  raise exc
@@ -216,7 +215,7 @@ def _(config: DbtCloudConfig): # pylint: disable=too-many-locals
216
215
  yield DbtFiles(
217
216
  dbt_catalog=dbt_catalog,
218
217
  dbt_manifest=dbt_manifest,
219
- dbt_run_results=dbt_run_results,
218
+ dbt_run_results=[dbt_run_results] if dbt_run_results else None,
220
219
  )
221
220
  except DBTConfigException as exc:
222
221
  raise exc
@@ -233,13 +232,12 @@ def get_blobs_grouped_by_dir(blobs: List[str]) -> Dict[str, List[str]]:
233
232
  for blob in blobs:
234
233
  subdirectory = blob.rsplit("/", 1)[0] if "/" in blob else ""
235
234
  blob_file_name = blob.rsplit("/", 1)[1] if "/" in blob else blob
236
- if next(
237
- (
238
- file_name
239
- for file_name in DBT_FILE_NAMES_LIST
240
- if file_name.lower() == blob_file_name.lower()
241
- ),
242
- None,
235
+ # We'll be processing multiple run_result files from a single dir
236
+ # Grouping them together to process them in a single go
237
+ if (
238
+ DBT_MANIFEST_FILE_NAME == blob_file_name.lower()
239
+ or DBT_CATALOG_FILE_NAME == blob_file_name.lower()
240
+ or DBT_RUN_RESULTS_FILE_NAME in blob_file_name.lower()
243
241
  ):
244
242
  blob_grouped_by_directory[subdirectory].append(blob)
245
243
  return blob_grouped_by_directory
@@ -257,7 +255,7 @@ def download_dbt_files(
257
255
  ) in blob_grouped_by_directory.items():
258
256
  dbt_catalog = None
259
257
  dbt_manifest = None
260
- dbt_run_results = None
258
+ dbt_run_results = []
261
259
  kwargs = {}
262
260
  if bucket_name:
263
261
  kwargs = {"bucket_name": bucket_name}
@@ -265,10 +263,11 @@ def download_dbt_files(
265
263
  for blob in blobs:
266
264
  if blob:
267
265
  reader = get_reader(config_source=config, client=client)
268
- if DBT_MANIFEST_FILE_NAME in blob:
266
+ blob_file_name = blob.rsplit("/", 1)[1] if "/" in blob else blob
267
+ if DBT_MANIFEST_FILE_NAME == blob_file_name.lower():
269
268
  logger.debug(f"{DBT_MANIFEST_FILE_NAME} found in {key}")
270
269
  dbt_manifest = reader.read(path=blob, **kwargs)
271
- if DBT_CATALOG_FILE_NAME in blob:
270
+ if DBT_CATALOG_FILE_NAME == blob_file_name.lower():
272
271
  try:
273
272
  logger.debug(f"{DBT_CATALOG_FILE_NAME} found in {key}")
274
273
  dbt_catalog = reader.read(path=blob, **kwargs)
@@ -276,10 +275,12 @@ def download_dbt_files(
276
275
  logger.warning(
277
276
  f"{DBT_CATALOG_FILE_NAME} not found in {key}: {exc}"
278
277
  )
279
- if DBT_RUN_RESULTS_FILE_NAME in blob:
278
+ if DBT_RUN_RESULTS_FILE_NAME in blob_file_name.lower():
280
279
  try:
281
- logger.debug(f"{DBT_RUN_RESULTS_FILE_NAME} found in {key}")
282
- dbt_run_results = reader.read(path=blob, **kwargs)
280
+ logger.debug(f"{blob_file_name} found in {key}")
281
+ dbt_run_result = reader.read(path=blob, **kwargs)
282
+ if dbt_run_result:
283
+ dbt_run_results.append(json.loads(dbt_run_result))
283
284
  except Exception as exc:
284
285
  logger.warning(
285
286
  f"{DBT_RUN_RESULTS_FILE_NAME} not found in {key}: {exc}"
@@ -289,9 +290,7 @@ def download_dbt_files(
289
290
  yield DbtFiles(
290
291
  dbt_catalog=json.loads(dbt_catalog) if dbt_catalog else None,
291
292
  dbt_manifest=json.loads(dbt_manifest),
292
- dbt_run_results=json.loads(dbt_run_results)
293
- if dbt_run_results
294
- else None,
293
+ dbt_run_results=dbt_run_results if dbt_run_results else None,
295
294
  )
296
295
  except DBTConfigException as exc:
297
296
  logger.warning(exc)
@@ -184,9 +184,10 @@ class DbtServiceSource(TopologyRunnerMixin, Source, ABC):
184
184
  if self.context.get().dbt_file.dbt_catalog
185
185
  else None,
186
186
  dbt_manifest=parse_manifest(self.context.get().dbt_file.dbt_manifest),
187
- dbt_run_results=parse_run_results(
188
- self.context.get().dbt_file.dbt_run_results
189
- )
187
+ dbt_run_results=[
188
+ parse_run_results(run_result_file)
189
+ for run_result_file in self.context.get().dbt_file.dbt_run_results
190
+ ]
190
191
  if self.context.get().dbt_file.dbt_run_results
191
192
  else None,
192
193
  )