openmetadata-ingestion 1.5.0.0rc1__py3-none-any.whl → 1.5.0.0rc2__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 (665) 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 -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/percentageOfEntitiesWithDescriptionByType.py +1 -1
  188. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +1 -1
  189. metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +1 -1
  190. metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +1 -1
  191. metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +1 -1
  192. metadata/generated/schema/dataInsight/type/totalEntitiesByType.py +1 -1
  193. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  194. metadata/generated/schema/email/__init__.py +1 -1
  195. metadata/generated/schema/email/emailRequest.py +1 -1
  196. metadata/generated/schema/email/emailTemplate.py +1 -1
  197. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  198. metadata/generated/schema/email/smtpSettings.py +1 -1
  199. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  200. metadata/generated/schema/entity/__init__.py +1 -1
  201. metadata/generated/schema/entity/applications/__init__.py +1 -1
  202. metadata/generated/schema/entity/applications/app.py +1 -1
  203. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  204. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  205. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  206. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  207. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  208. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  209. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  210. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  211. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  212. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  213. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  214. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  215. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  216. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  217. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  218. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  219. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  220. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  221. metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +10 -2
  222. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  223. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +9 -1
  224. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  225. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  226. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  227. metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.py +1 -1
  228. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  229. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  230. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  231. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  232. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  233. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  234. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  235. metadata/generated/schema/entity/automations/__init__.py +1 -1
  236. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  237. metadata/generated/schema/entity/automations/workflow.py +1 -1
  238. metadata/generated/schema/entity/bot.py +1 -1
  239. metadata/generated/schema/entity/classification/__init__.py +1 -1
  240. metadata/generated/schema/entity/classification/classification.py +1 -1
  241. metadata/generated/schema/entity/classification/tag.py +1 -1
  242. metadata/generated/schema/entity/data/__init__.py +1 -1
  243. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  244. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  245. metadata/generated/schema/entity/data/chart.py +1 -1
  246. metadata/generated/schema/entity/data/container.py +1 -1
  247. metadata/generated/schema/entity/data/dashboard.py +1 -1
  248. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  249. metadata/generated/schema/entity/data/database.py +1 -1
  250. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  251. metadata/generated/schema/entity/data/glossary.py +1 -1
  252. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  253. metadata/generated/schema/entity/data/metrics.py +1 -1
  254. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  255. metadata/generated/schema/entity/data/pipeline.py +1 -1
  256. metadata/generated/schema/entity/data/query.py +1 -1
  257. metadata/generated/schema/entity/data/report.py +1 -1
  258. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  259. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  260. metadata/generated/schema/entity/data/table.py +1 -1
  261. metadata/generated/schema/entity/data/topic.py +1 -1
  262. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  263. metadata/generated/schema/entity/docStore/document.py +1 -1
  264. metadata/generated/schema/entity/domains/__init__.py +1 -1
  265. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  266. metadata/generated/schema/entity/domains/domain.py +1 -1
  267. metadata/generated/schema/entity/events/__init__.py +1 -1
  268. metadata/generated/schema/entity/events/webhook.py +1 -1
  269. metadata/generated/schema/entity/feed/__init__.py +1 -1
  270. metadata/generated/schema/entity/feed/assets.py +1 -1
  271. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  272. metadata/generated/schema/entity/feed/description.py +1 -1
  273. metadata/generated/schema/entity/feed/domain.py +1 -1
  274. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  275. metadata/generated/schema/entity/feed/owner.py +1 -1
  276. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  277. metadata/generated/schema/entity/feed/tag.py +1 -1
  278. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  279. metadata/generated/schema/entity/feed/thread.py +1 -1
  280. metadata/generated/schema/entity/policies/__init__.py +1 -1
  281. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  282. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  283. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  284. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  285. metadata/generated/schema/entity/policies/filters.py +1 -1
  286. metadata/generated/schema/entity/policies/policy.py +1 -1
  287. metadata/generated/schema/entity/services/__init__.py +1 -1
  288. metadata/generated/schema/entity/services/apiService.py +1 -1
  289. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  290. metadata/generated/schema/entity/services/connections/apiService/__init__.py +1 -1
  291. metadata/generated/schema/entity/services/connections/apiService/restConnection.py +1 -1
  292. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  293. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  294. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  295. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  296. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  297. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  298. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  299. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  300. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  301. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +7 -2
  302. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  303. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  304. metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +1 -1
  305. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  306. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  307. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  308. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  309. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  310. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  311. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  312. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  313. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  314. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.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/couchbaseConnection.py +1 -1
  329. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  330. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  331. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  332. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  333. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  334. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  335. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  336. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  337. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  339. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  340. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  341. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  342. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  343. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  344. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  345. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  346. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  347. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  348. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  349. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  353. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  354. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  359. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  360. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  361. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  367. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  369. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  370. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  371. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  372. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +2 -2
  375. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  376. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  377. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +2 -1
  378. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  382. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  388. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  389. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  393. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  394. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  396. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  398. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  401. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  402. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  403. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  409. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  410. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  414. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  418. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  420. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  421. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  422. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  426. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +2 -2
  431. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  432. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  433. metadata/generated/schema/entity/services/databaseService.py +1 -1
  434. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  435. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  436. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  437. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  438. metadata/generated/schema/entity/services/messagingService.py +1 -1
  439. metadata/generated/schema/entity/services/metadataService.py +1 -1
  440. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  441. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  442. metadata/generated/schema/entity/services/searchService.py +1 -1
  443. metadata/generated/schema/entity/services/serviceType.py +1 -1
  444. metadata/generated/schema/entity/services/storageService.py +1 -1
  445. metadata/generated/schema/entity/teams/__init__.py +1 -1
  446. metadata/generated/schema/entity/teams/persona.py +1 -1
  447. metadata/generated/schema/entity/teams/role.py +1 -1
  448. metadata/generated/schema/entity/teams/team.py +1 -1
  449. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  450. metadata/generated/schema/entity/teams/user.py +1 -1
  451. metadata/generated/schema/entity/type.py +1 -1
  452. metadata/generated/schema/entity/utils/__init__.py +1 -1
  453. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  454. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  455. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  456. metadata/generated/schema/events/__init__.py +1 -1
  457. metadata/generated/schema/events/alertMetrics.py +1 -1
  458. metadata/generated/schema/events/api/__init__.py +1 -1
  459. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  460. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  461. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  462. metadata/generated/schema/events/eventFilterRule.py +1 -1
  463. metadata/generated/schema/events/eventSubscription.py +1 -1
  464. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  465. metadata/generated/schema/events/failedEvent.py +1 -1
  466. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  467. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  468. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  469. metadata/generated/schema/metadataIngestion/application.py +1 -1
  470. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  471. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  472. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  473. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +2 -2
  474. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  475. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  476. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  477. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  478. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  479. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  480. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  481. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  482. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  483. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  484. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  485. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  486. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  487. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  488. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  489. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  490. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  491. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  492. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  493. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  494. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  495. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  496. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  497. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  498. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  499. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  500. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  501. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  502. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  503. metadata/generated/schema/monitoring/__init__.py +1 -1
  504. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  505. metadata/generated/schema/security/__init__.py +1 -1
  506. metadata/generated/schema/security/client/__init__.py +1 -1
  507. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  508. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  509. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  510. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  511. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  512. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  513. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  514. metadata/generated/schema/security/client/samlSSOClientConfig.py +7 -5
  515. metadata/generated/schema/security/credentials/__init__.py +1 -1
  516. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  517. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  518. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  519. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  520. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  521. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  522. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  523. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  524. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  525. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  526. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  527. metadata/generated/schema/security/credentials/gitlabCredentials.py +34 -0
  528. metadata/generated/schema/security/sasl/__init__.py +1 -1
  529. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  530. metadata/generated/schema/security/secrets/__init__.py +1 -1
  531. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  532. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  533. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  534. metadata/generated/schema/security/securityConfiguration.py +1 -1
  535. metadata/generated/schema/security/ssl/__init__.py +1 -1
  536. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  537. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  538. metadata/generated/schema/settings/__init__.py +1 -1
  539. metadata/generated/schema/settings/settings.py +2 -1
  540. metadata/generated/schema/system/__init__.py +1 -1
  541. metadata/generated/schema/system/entityError.py +1 -1
  542. metadata/generated/schema/system/eventPublisherJob.py +5 -1
  543. metadata/generated/schema/system/indexingError.py +1 -1
  544. metadata/generated/schema/system/limitsResponse.py +1 -1
  545. metadata/generated/schema/system/ui/__init__.py +1 -1
  546. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  547. metadata/generated/schema/system/ui/page.py +1 -1
  548. metadata/generated/schema/system/validationResponse.py +1 -1
  549. metadata/generated/schema/tests/__init__.py +1 -1
  550. metadata/generated/schema/tests/assigned.py +1 -1
  551. metadata/generated/schema/tests/basic.py +20 -20
  552. metadata/generated/schema/tests/customMetric.py +1 -1
  553. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  554. metadata/generated/schema/tests/resolved.py +1 -1
  555. metadata/generated/schema/tests/testCase.py +1 -1
  556. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  557. metadata/generated/schema/tests/testDefinition.py +1 -1
  558. metadata/generated/schema/tests/testSuite.py +1 -1
  559. metadata/generated/schema/type/__init__.py +1 -1
  560. metadata/generated/schema/type/apiSchema.py +1 -1
  561. metadata/generated/schema/type/auditLog.py +1 -1
  562. metadata/generated/schema/type/basic.py +1 -1
  563. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  564. metadata/generated/schema/type/changeEvent.py +1 -1
  565. metadata/generated/schema/type/changeEventType.py +1 -1
  566. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  567. metadata/generated/schema/type/csvDocumentation.py +1 -1
  568. metadata/generated/schema/type/csvErrorType.py +1 -1
  569. metadata/generated/schema/type/csvFile.py +1 -1
  570. metadata/generated/schema/type/csvImportResult.py +1 -1
  571. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  572. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  573. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  574. metadata/generated/schema/type/customProperty.py +1 -1
  575. metadata/generated/schema/type/dailyCount.py +1 -1
  576. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  577. metadata/generated/schema/type/entityHierarchy.py +1 -1
  578. metadata/generated/schema/type/entityHistory.py +1 -1
  579. metadata/generated/schema/type/entityLineage.py +1 -1
  580. metadata/generated/schema/type/entityReference.py +1 -1
  581. metadata/generated/schema/type/entityReferenceList.py +1 -1
  582. metadata/generated/schema/type/entityRelationship.py +1 -1
  583. metadata/generated/schema/type/entityUsage.py +1 -1
  584. metadata/generated/schema/type/filterPattern.py +1 -1
  585. metadata/generated/schema/type/function.py +1 -1
  586. metadata/generated/schema/type/include.py +1 -1
  587. metadata/generated/schema/type/jdbcConnection.py +1 -1
  588. metadata/generated/schema/type/lifeCycle.py +1 -1
  589. metadata/generated/schema/type/paging.py +1 -1
  590. metadata/generated/schema/type/profile.py +1 -1
  591. metadata/generated/schema/type/queryParserData.py +1 -1
  592. metadata/generated/schema/type/reaction.py +1 -1
  593. metadata/generated/schema/type/schedule.py +1 -1
  594. metadata/generated/schema/type/schema.py +1 -1
  595. metadata/generated/schema/type/tableQuery.py +1 -1
  596. metadata/generated/schema/type/tableUsageCount.py +1 -1
  597. metadata/generated/schema/type/tagLabel.py +1 -1
  598. metadata/generated/schema/type/usageDetails.py +1 -1
  599. metadata/generated/schema/type/usageRequest.py +1 -1
  600. metadata/generated/schema/type/votes.py +1 -1
  601. metadata/great_expectations/action.py +1 -1
  602. metadata/ingestion/connections/test_connections.py +5 -0
  603. metadata/ingestion/lineage/models.py +4 -0
  604. metadata/ingestion/ometa/mixins/ingestion_pipeline_mixin.py +1 -1
  605. metadata/ingestion/source/connections.py +19 -0
  606. metadata/ingestion/source/dashboard/domodashboard/metadata.py +3 -3
  607. metadata/ingestion/source/dashboard/looker/metadata.py +8 -3
  608. metadata/ingestion/source/dashboard/looker/utils.py +6 -3
  609. metadata/ingestion/source/dashboard/metabase/client.py +2 -1
  610. metadata/ingestion/source/dashboard/powerbi/metadata.py +2 -1
  611. metadata/ingestion/source/dashboard/qlikcloud/client.py +1 -1
  612. metadata/ingestion/source/dashboard/superset/mixin.py +5 -0
  613. metadata/ingestion/source/database/bigquery/metadata.py +5 -1
  614. metadata/ingestion/source/database/column_type_parser.py +2 -1
  615. metadata/ingestion/source/database/common_db_source.py +9 -4
  616. metadata/ingestion/source/database/database_service.py +1 -1
  617. metadata/ingestion/source/database/databricks/lineage.py +2 -2
  618. metadata/ingestion/source/database/databricks/metadata.py +100 -18
  619. metadata/ingestion/source/database/databricks/queries.py +3 -1
  620. metadata/ingestion/source/database/databricks/usage.py +2 -2
  621. metadata/ingestion/source/database/datalake/clients/gcs.py +4 -0
  622. metadata/ingestion/source/database/db2/metadata.py +8 -1
  623. metadata/ingestion/source/database/dbt/constants.py +1 -7
  624. metadata/ingestion/source/database/dbt/dbt_config.py +18 -19
  625. metadata/ingestion/source/database/dbt/dbt_service.py +4 -3
  626. metadata/ingestion/source/database/dbt/metadata.py +14 -3
  627. metadata/ingestion/source/database/dbt/models.py +2 -2
  628. metadata/ingestion/source/database/mssql/lineage.py +0 -4
  629. metadata/ingestion/source/database/mssql/metadata.py +1 -1
  630. metadata/ingestion/source/database/mssql/usage.py +42 -0
  631. metadata/ingestion/source/database/oracle/metadata.py +7 -0
  632. metadata/ingestion/source/database/oracle/queries.py +45 -11
  633. metadata/ingestion/source/database/oracle/utils.py +33 -0
  634. metadata/ingestion/source/database/postgres/usage.py +6 -0
  635. metadata/ingestion/source/database/unitycatalog/client.py +21 -0
  636. metadata/ingestion/source/database/unitycatalog/metadata.py +58 -22
  637. metadata/ingestion/source/pipeline/dagster/metadata.py +17 -14
  638. metadata/ingestion/source/pipeline/dbtcloud/client.py +29 -4
  639. metadata/ingestion/source/pipeline/dbtcloud/metadata.py +94 -71
  640. metadata/ingestion/source/pipeline/dbtcloud/models.py +6 -6
  641. metadata/ingestion/source/pipeline/dbtcloud/queries.py +22 -11
  642. metadata/ingestion/source/pipeline/domopipeline/metadata.py +1 -1
  643. metadata/ingestion/source/pipeline/fivetran/client.py +2 -1
  644. metadata/ingestion/source/storage/gcs/client.py +4 -9
  645. metadata/ingestion/source/storage/gcs/metadata.py +4 -0
  646. metadata/profiler/interface/sqlalchemy/profiler_interface.py +9 -0
  647. metadata/profiler/metrics/composed/null_ratio.py +5 -8
  648. metadata/profiler/metrics/hybrid/histogram.py +9 -3
  649. metadata/profiler/metrics/static/null_count.py +4 -2
  650. metadata/profiler/orm/functions/sum.py +1 -1
  651. metadata/profiler/orm/functions/table_metric_computer.py +2 -2
  652. metadata/profiler/orm/registry.py +11 -0
  653. metadata/profiler/processor/default.py +4 -1
  654. metadata/profiler/processor/sampler/sampler_factory.py +9 -0
  655. metadata/profiler/processor/sampler/sqlalchemy/azuresql/sampler.py +40 -0
  656. metadata/profiler/source/base/profiler_source.py +1 -0
  657. metadata/readers/file/api_reader.py +4 -1
  658. metadata/readers/file/gitlab.py +172 -0
  659. metadata/utils/helpers.py +4 -1
  660. {openmetadata_ingestion-1.5.0.0rc1.dist-info → openmetadata_ingestion-1.5.0.0rc2.dist-info}/METADATA +352 -345
  661. {openmetadata_ingestion-1.5.0.0rc1.dist-info → openmetadata_ingestion-1.5.0.0rc2.dist-info}/RECORD +665 -659
  662. {openmetadata_ingestion-1.5.0.0rc1.dist-info → openmetadata_ingestion-1.5.0.0rc2.dist-info}/LICENSE +0 -0
  663. {openmetadata_ingestion-1.5.0.0rc1.dist-info → openmetadata_ingestion-1.5.0.0rc2.dist-info}/WHEEL +0 -0
  664. {openmetadata_ingestion-1.5.0.0rc1.dist-info → openmetadata_ingestion-1.5.0.0rc2.dist-info}/entry_points.txt +0 -0
  665. {openmetadata_ingestion-1.5.0.0rc1.dist-info → openmetadata_ingestion-1.5.0.0rc2.dist-info}/top_level.txt +0 -0
@@ -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
  )
@@ -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:
@@ -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
  )
@@ -1,3 +1,4 @@
1
+ # pylint: disable=too-many-lines
1
2
  # Copyright 2021 Collate
2
3
  # Licensed under the Apache License, Version 2.0 (the "License");
3
4
  # you may not use this file except in compliance with the License.
@@ -156,6 +157,13 @@ class DbtSource(DbtServiceSource):
156
157
  owner = self.metadata.get_reference_by_name(
157
158
  name=dbt_owner, is_owner=True
158
159
  )
160
+
161
+ if owner:
162
+ return owner
163
+
164
+ # If owner is not found, try to find the owner in OMD using email
165
+ owner = self.metadata.get_reference_by_email(name=dbt_owner)
166
+
159
167
  if not owner:
160
168
  logger.warning(
161
169
  "Unable to ingest owner from DBT since no user or"
@@ -312,7 +320,8 @@ class DbtSource(DbtServiceSource):
312
320
  self.context.get().dbt_tests[key][DbtCommonEnum.RESULTS.value] = next(
313
321
  (
314
322
  item
315
- for item in dbt_objects.dbt_run_results.results
323
+ for run_result in dbt_objects.dbt_run_results
324
+ for item in run_result.results
316
325
  if item.unique_id == key
317
326
  ),
318
327
  None,
@@ -340,12 +349,14 @@ class DbtSource(DbtServiceSource):
340
349
  self.context.get().data_model_links = []
341
350
  self.context.get().dbt_tests = {}
342
351
  self.context.get().run_results_generate_time = None
352
+ # Since we'll be processing multiple run_results for a single project
353
+ # we'll only consider the first run_results generated_at time
343
354
  if (
344
355
  dbt_objects.dbt_run_results
345
- and dbt_objects.dbt_run_results.metadata.generated_at
356
+ and dbt_objects.dbt_run_results[0].metadata.generated_at
346
357
  ):
347
358
  self.context.get().run_results_generate_time = (
348
- dbt_objects.dbt_run_results.metadata.generated_at
359
+ dbt_objects.dbt_run_results[0].metadata.generated_at
349
360
  )
350
361
  for key, manifest_node in manifest_entities.items():
351
362
  try:
@@ -20,13 +20,13 @@ from pydantic import BaseModel
20
20
  class DbtFiles(BaseModel):
21
21
  dbt_catalog: Optional[dict] = None
22
22
  dbt_manifest: dict
23
- dbt_run_results: Optional[dict] = None
23
+ dbt_run_results: Optional[List[dict]] = None
24
24
 
25
25
 
26
26
  class DbtObjects(BaseModel):
27
27
  dbt_catalog: Optional[Any] = None
28
28
  dbt_manifest: Any
29
- dbt_run_results: Optional[Any] = None
29
+ dbt_run_results: Optional[List[Any]] = None
30
30
 
31
31
 
32
32
  class DbtFilteredModel(BaseModel):
@@ -26,10 +26,6 @@ from metadata.ingestion.source.database.mssql.utils import (
26
26
 
27
27
 
28
28
  class MssqlLineageSource(MssqlQueryParserSource, LineageSource):
29
- def __init__(self, *args, **kwargs):
30
- super().__init__(*args, **kwargs)
31
- self.start = self.start.replace(tzinfo=None)
32
- self.end = self.end.replace(tzinfo=None)
33
29
 
34
30
  sql_stmt = MSSQL_SQL_STATEMENT
35
31
 
@@ -224,7 +224,7 @@ class MssqlSource(StoredProcedureMixin, CommonDbSourceService, MultiDBSource):
224
224
  current_datetime_format = MSSQL_DATEFORMAT_DATETIME_MAP.get(
225
225
  server_date_format, DEFAULT_DATETIME_FORMAT
226
226
  )
227
- start = start.replace(tzinfo=None).strftime(current_datetime_format)
227
+ start = start.strftime(current_datetime_format)
228
228
  query = MSSQL_GET_STORED_PROCEDURE_QUERIES.format(
229
229
  start_date=start,
230
230
  )