openmetadata-ingestion 1.3.1.2__py3-none-any.whl → 1.3.2.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 (562) hide show
  1. metadata/clients/azure_client.py +85 -0
  2. metadata/data_quality/source/test_suite.py +2 -2
  3. metadata/examples/workflows/datalake_azure_default.yaml +29 -0
  4. metadata/examples/workflows/dbt.yaml +17 -6
  5. metadata/generated/schema/analytics/__init__.py +1 -1
  6. metadata/generated/schema/analytics/basic.py +1 -1
  7. metadata/generated/schema/analytics/reportData.py +1 -1
  8. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  9. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  10. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  11. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  12. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  13. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  14. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  15. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  16. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  17. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  18. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  19. metadata/generated/schema/api/__init__.py +1 -1
  20. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  21. metadata/generated/schema/api/analytics/__init__.py +1 -1
  22. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  23. metadata/generated/schema/api/automations/__init__.py +1 -1
  24. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  25. metadata/generated/schema/api/bulkAssets.py +1 -1
  26. metadata/generated/schema/api/classification/__init__.py +1 -1
  27. metadata/generated/schema/api/classification/createClassification.py +1 -1
  28. metadata/generated/schema/api/classification/createTag.py +1 -1
  29. metadata/generated/schema/api/classification/loadTags.py +1 -1
  30. metadata/generated/schema/api/createBot.py +1 -1
  31. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  32. metadata/generated/schema/api/createType.py +1 -1
  33. metadata/generated/schema/api/data/__init__.py +1 -1
  34. metadata/generated/schema/api/data/createChart.py +1 -1
  35. metadata/generated/schema/api/data/createContainer.py +1 -1
  36. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  37. metadata/generated/schema/api/data/createDashboard.py +1 -1
  38. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  39. metadata/generated/schema/api/data/createDatabase.py +1 -1
  40. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  41. metadata/generated/schema/api/data/createGlossary.py +1 -1
  42. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  43. metadata/generated/schema/api/data/createMlModel.py +1 -1
  44. metadata/generated/schema/api/data/createPipeline.py +1 -1
  45. metadata/generated/schema/api/data/createQuery.py +1 -1
  46. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  47. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  48. metadata/generated/schema/api/data/createTable.py +1 -1
  49. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  50. metadata/generated/schema/api/data/createTopic.py +1 -1
  51. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  52. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  53. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  54. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  55. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  56. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  57. metadata/generated/schema/api/docStore/__init__.py +1 -1
  58. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  59. metadata/generated/schema/api/domains/__init__.py +1 -1
  60. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  61. metadata/generated/schema/api/domains/createDomain.py +1 -1
  62. metadata/generated/schema/api/feed/__init__.py +1 -1
  63. metadata/generated/schema/api/feed/closeTask.py +1 -1
  64. metadata/generated/schema/api/feed/createPost.py +1 -1
  65. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  66. metadata/generated/schema/api/feed/createThread.py +5 -1
  67. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  68. metadata/generated/schema/api/feed/threadCount.py +1 -1
  69. metadata/generated/schema/api/lineage/__init__.py +1 -1
  70. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  71. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  72. metadata/generated/schema/api/policies/__init__.py +1 -1
  73. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  74. metadata/generated/schema/api/services/__init__.py +1 -1
  75. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  76. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  77. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  78. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  79. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  80. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  81. metadata/generated/schema/api/services/createSearchService.py +1 -1
  82. metadata/generated/schema/api/services/createStorageService.py +1 -1
  83. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  84. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  85. metadata/generated/schema/api/setOwner.py +1 -1
  86. metadata/generated/schema/api/teams/__init__.py +1 -1
  87. metadata/generated/schema/api/teams/createPersona.py +1 -1
  88. metadata/generated/schema/api/teams/createRole.py +1 -1
  89. metadata/generated/schema/api/teams/createTeam.py +1 -1
  90. metadata/generated/schema/api/teams/createUser.py +1 -1
  91. metadata/generated/schema/api/tests/__init__.py +1 -1
  92. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  93. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  94. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  95. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  96. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  97. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  98. metadata/generated/schema/api/voteRequest.py +1 -1
  99. metadata/generated/schema/auth/__init__.py +1 -1
  100. metadata/generated/schema/auth/basicAuth.py +1 -1
  101. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  102. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  103. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  104. metadata/generated/schema/auth/emailRequest.py +1 -1
  105. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  106. metadata/generated/schema/auth/generateToken.py +1 -1
  107. metadata/generated/schema/auth/jwtAuth.py +1 -1
  108. metadata/generated/schema/auth/loginRequest.py +1 -1
  109. metadata/generated/schema/auth/logoutRequest.py +1 -1
  110. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  111. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  112. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  113. metadata/generated/schema/auth/refreshToken.py +1 -1
  114. metadata/generated/schema/auth/registrationRequest.py +1 -1
  115. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  116. metadata/generated/schema/auth/revokeToken.py +1 -1
  117. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  118. metadata/generated/schema/auth/ssoAuth.py +1 -1
  119. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  120. metadata/generated/schema/configuration/__init__.py +1 -1
  121. metadata/generated/schema/configuration/appsPrivateConfiguration.py +6 -2
  122. metadata/generated/schema/configuration/authConfig.py +1 -1
  123. metadata/generated/schema/configuration/authenticationConfiguration.py +13 -2
  124. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  125. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  126. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  127. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  128. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  129. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  130. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  131. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  132. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  133. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  134. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  135. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  136. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  137. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  138. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  139. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  140. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  141. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  142. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  143. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  144. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  145. metadata/generated/schema/dataInsight/__init__.py +1 -1
  146. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  147. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  148. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  149. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  150. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  151. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  152. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  153. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  154. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  155. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  156. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  157. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  158. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  159. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  160. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithDescriptionByType.py +1 -1
  161. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +1 -1
  162. metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +1 -1
  163. metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +1 -1
  164. metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +1 -1
  165. metadata/generated/schema/dataInsight/type/totalEntitiesByType.py +1 -1
  166. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  167. metadata/generated/schema/email/__init__.py +1 -1
  168. metadata/generated/schema/email/emailRequest.py +1 -1
  169. metadata/generated/schema/email/smtpSettings.py +1 -1
  170. metadata/generated/schema/entity/__init__.py +1 -1
  171. metadata/generated/schema/entity/applications/__init__.py +1 -1
  172. metadata/generated/schema/entity/applications/app.py +12 -2
  173. metadata/generated/schema/entity/applications/appRunRecord.py +2 -7
  174. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  175. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  176. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  177. metadata/generated/schema/entity/applications/configuration/external/autoTaggerAppConfig.py +1 -1
  178. metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +8 -17
  179. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  180. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  181. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  182. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  183. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  184. metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.py +1 -1
  185. metadata/generated/schema/entity/applications/createAppRequest.py +2 -2
  186. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  187. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  188. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  189. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +4 -1
  190. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +5 -2
  191. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  192. metadata/generated/schema/entity/automations/__init__.py +1 -1
  193. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  194. metadata/generated/schema/entity/automations/workflow.py +1 -1
  195. metadata/generated/schema/entity/bot.py +1 -1
  196. metadata/generated/schema/entity/classification/__init__.py +1 -1
  197. metadata/generated/schema/entity/classification/classification.py +1 -1
  198. metadata/generated/schema/entity/classification/tag.py +1 -1
  199. metadata/generated/schema/entity/data/__init__.py +1 -1
  200. metadata/generated/schema/entity/data/chart.py +1 -1
  201. metadata/generated/schema/entity/data/container.py +1 -1
  202. metadata/generated/schema/entity/data/dashboard.py +1 -1
  203. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  204. metadata/generated/schema/entity/data/database.py +1 -1
  205. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  206. metadata/generated/schema/entity/data/glossary.py +1 -1
  207. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  208. metadata/generated/schema/entity/data/metrics.py +1 -1
  209. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  210. metadata/generated/schema/entity/data/pipeline.py +1 -1
  211. metadata/generated/schema/entity/data/query.py +1 -1
  212. metadata/generated/schema/entity/data/report.py +1 -1
  213. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  214. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  215. metadata/generated/schema/entity/data/table.py +1 -1
  216. metadata/generated/schema/entity/data/topic.py +1 -1
  217. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  218. metadata/generated/schema/entity/docStore/document.py +1 -1
  219. metadata/generated/schema/entity/domains/__init__.py +1 -1
  220. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  221. metadata/generated/schema/entity/domains/domain.py +1 -1
  222. metadata/generated/schema/entity/events/__init__.py +1 -1
  223. metadata/generated/schema/entity/events/webhook.py +1 -1
  224. metadata/generated/schema/entity/feed/__init__.py +1 -1
  225. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  226. metadata/generated/schema/entity/feed/thread.py +12 -1
  227. metadata/generated/schema/entity/policies/__init__.py +1 -1
  228. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  229. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  230. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  231. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  232. metadata/generated/schema/entity/policies/filters.py +1 -1
  233. metadata/generated/schema/entity/policies/policy.py +1 -1
  234. metadata/generated/schema/entity/services/__init__.py +1 -1
  235. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  236. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  237. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  238. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  239. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  240. metadata/generated/schema/entity/services/connections/connectionBasicType.py +6 -1
  241. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  242. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  243. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  244. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  245. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  246. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  247. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  248. metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +1 -1
  249. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  250. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  251. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  252. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  253. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  254. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  255. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  256. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  257. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +34 -1
  258. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  259. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  260. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  261. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  262. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +20 -0
  263. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  264. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  265. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  266. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  267. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  268. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  269. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  270. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  271. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  272. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  273. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  274. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  275. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  276. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  277. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  278. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  279. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  280. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  281. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  282. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  283. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  284. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  285. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  286. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  287. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  288. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  289. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  290. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  291. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  292. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  293. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  294. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  295. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +7 -3
  296. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  297. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  298. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +7 -3
  299. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  300. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  301. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  302. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +3 -0
  303. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +20 -0
  304. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +36 -0
  305. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +6 -40
  306. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  307. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  308. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  309. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  310. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  311. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  312. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  313. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  314. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  315. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  316. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  317. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  318. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  319. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  320. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  321. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +34 -1
  322. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  323. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  324. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  325. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  326. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  327. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  328. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  329. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  330. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  331. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  332. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  333. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  334. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  335. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  336. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  337. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  340. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  341. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  342. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  343. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  344. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  345. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  346. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  347. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  348. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  349. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  350. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  352. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  353. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  354. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  358. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  359. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  360. metadata/generated/schema/entity/services/databaseService.py +1 -1
  361. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  362. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  363. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  364. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  365. metadata/generated/schema/entity/services/messagingService.py +1 -1
  366. metadata/generated/schema/entity/services/metadataService.py +1 -1
  367. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  368. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  369. metadata/generated/schema/entity/services/searchService.py +1 -1
  370. metadata/generated/schema/entity/services/serviceType.py +1 -1
  371. metadata/generated/schema/entity/services/storageService.py +1 -1
  372. metadata/generated/schema/entity/teams/__init__.py +1 -1
  373. metadata/generated/schema/entity/teams/persona.py +1 -1
  374. metadata/generated/schema/entity/teams/role.py +1 -1
  375. metadata/generated/schema/entity/teams/team.py +1 -1
  376. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  377. metadata/generated/schema/entity/teams/user.py +1 -1
  378. metadata/generated/schema/entity/type.py +1 -1
  379. metadata/generated/schema/entity/utils/__init__.py +1 -1
  380. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  381. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  382. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  383. metadata/generated/schema/events/__init__.py +1 -1
  384. metadata/generated/schema/events/alertMetrics.py +1 -1
  385. metadata/generated/schema/events/api/__init__.py +1 -1
  386. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  387. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  388. metadata/generated/schema/events/eventFilterRule.py +1 -1
  389. metadata/generated/schema/events/eventSubscription.py +1 -1
  390. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  391. metadata/generated/schema/events/failedEvent.py +1 -1
  392. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  393. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  394. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  395. metadata/generated/schema/metadataIngestion/application.py +1 -1
  396. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  397. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  398. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  399. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  400. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  401. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  402. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  403. metadata/generated/schema/metadataIngestion/dbtPipeline.py +9 -11
  404. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  405. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +7 -1
  406. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  407. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +7 -1
  408. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +7 -1
  409. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +7 -1
  410. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +7 -1
  411. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +7 -1
  412. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  413. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  414. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  415. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  416. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  417. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  418. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  419. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  420. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  421. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  422. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  423. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  424. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  425. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  426. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  427. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  428. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  429. metadata/generated/schema/monitoring/__init__.py +1 -1
  430. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  431. metadata/generated/schema/security/__init__.py +1 -1
  432. metadata/generated/schema/security/client/__init__.py +1 -1
  433. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  434. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  435. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  436. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  437. metadata/generated/schema/security/client/oidcClientConfig.py +46 -0
  438. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  439. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  440. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  441. metadata/generated/schema/security/credentials/__init__.py +1 -1
  442. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  443. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  444. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  445. metadata/generated/schema/security/credentials/azureCredentials.py +6 -1
  446. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  447. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  448. metadata/generated/schema/security/credentials/gcpCredentials.py +7 -3
  449. metadata/generated/schema/security/credentials/gcpExternalAccount.py +37 -0
  450. metadata/generated/schema/security/credentials/gcpValues.py +2 -2
  451. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  452. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  453. metadata/generated/schema/security/secrets/__init__.py +1 -1
  454. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  455. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  456. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  457. metadata/generated/schema/security/securityConfiguration.py +1 -1
  458. metadata/generated/schema/security/ssl/__init__.py +1 -1
  459. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  460. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  461. metadata/generated/schema/settings/__init__.py +1 -1
  462. metadata/generated/schema/settings/settings.py +1 -1
  463. metadata/generated/schema/system/__init__.py +1 -1
  464. metadata/generated/schema/system/entityError.py +1 -1
  465. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  466. metadata/generated/schema/system/indexingError.py +1 -1
  467. metadata/generated/schema/system/ui/__init__.py +1 -1
  468. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  469. metadata/generated/schema/system/ui/page.py +1 -1
  470. metadata/generated/schema/system/validationResponse.py +43 -0
  471. metadata/generated/schema/tests/__init__.py +1 -1
  472. metadata/generated/schema/tests/assigned.py +1 -1
  473. metadata/generated/schema/tests/basic.py +1 -1
  474. metadata/generated/schema/tests/customMetric.py +1 -1
  475. metadata/generated/schema/tests/resolved.py +1 -1
  476. metadata/generated/schema/tests/testCase.py +1 -1
  477. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  478. metadata/generated/schema/tests/testDefinition.py +1 -1
  479. metadata/generated/schema/tests/testSuite.py +1 -1
  480. metadata/generated/schema/type/__init__.py +1 -1
  481. metadata/generated/schema/type/auditLog.py +1 -1
  482. metadata/generated/schema/type/basic.py +1 -1
  483. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  484. metadata/generated/schema/type/changeEvent.py +1 -1
  485. metadata/generated/schema/type/changeEventType.py +1 -1
  486. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  487. metadata/generated/schema/type/csvDocumentation.py +1 -1
  488. metadata/generated/schema/type/csvErrorType.py +1 -1
  489. metadata/generated/schema/type/csvFile.py +1 -1
  490. metadata/generated/schema/type/csvImportResult.py +1 -1
  491. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  492. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  493. metadata/generated/schema/type/customProperty.py +1 -1
  494. metadata/generated/schema/type/dailyCount.py +1 -1
  495. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  496. metadata/generated/schema/type/entityHistory.py +1 -1
  497. metadata/generated/schema/type/entityLineage.py +1 -1
  498. metadata/generated/schema/type/entityReference.py +1 -1
  499. metadata/generated/schema/type/entityReferenceList.py +1 -1
  500. metadata/generated/schema/type/entityRelationship.py +1 -1
  501. metadata/generated/schema/type/entityUsage.py +1 -1
  502. metadata/generated/schema/type/filterPattern.py +1 -1
  503. metadata/generated/schema/type/function.py +1 -1
  504. metadata/generated/schema/type/include.py +1 -1
  505. metadata/generated/schema/type/jdbcConnection.py +1 -1
  506. metadata/generated/schema/type/lifeCycle.py +1 -1
  507. metadata/generated/schema/type/paging.py +1 -1
  508. metadata/generated/schema/type/profile.py +1 -1
  509. metadata/generated/schema/type/queryParserData.py +1 -1
  510. metadata/generated/schema/type/reaction.py +1 -1
  511. metadata/generated/schema/type/schedule.py +1 -1
  512. metadata/generated/schema/type/schema.py +1 -1
  513. metadata/generated/schema/type/tableQuery.py +1 -1
  514. metadata/generated/schema/type/tableUsageCount.py +1 -1
  515. metadata/generated/schema/type/tagLabel.py +1 -1
  516. metadata/generated/schema/type/usageDetails.py +1 -1
  517. metadata/generated/schema/type/usageRequest.py +1 -1
  518. metadata/generated/schema/type/votes.py +1 -1
  519. metadata/great_expectations/action.py +5 -3
  520. metadata/ingestion/api/parser.py +87 -23
  521. metadata/ingestion/api/topology_runner.py +4 -3
  522. metadata/ingestion/lineage/parser.py +35 -20
  523. metadata/ingestion/ometa/mixins/patch_mixin.py +2 -4
  524. metadata/ingestion/ometa/routes.py +15 -0
  525. metadata/ingestion/source/dashboard/looker/utils.py +1 -1
  526. metadata/ingestion/source/dashboard/powerbi/client.py +4 -1
  527. metadata/ingestion/source/database/azuresql/connection.py +21 -3
  528. metadata/ingestion/source/database/datalake/connection.py +2 -14
  529. metadata/ingestion/source/database/datalake/metadata.py +3 -2
  530. metadata/ingestion/source/database/dbt/dbt_config.py +3 -15
  531. metadata/ingestion/source/database/mssql/lineage.py +1 -0
  532. metadata/ingestion/source/database/mssql/usage.py +5 -1
  533. metadata/ingestion/source/database/mysql/connection.py +14 -0
  534. metadata/ingestion/source/database/oracle/connection.py +5 -0
  535. metadata/ingestion/source/database/oracle/queries.py +1 -1
  536. metadata/ingestion/source/database/postgres/connection.py +15 -0
  537. metadata/ingestion/source/database/stored_procedures_mixin.py +1 -1
  538. metadata/ingestion/source/database/unitycatalog/connection.py +12 -8
  539. metadata/ingestion/source/pipeline/dagster/metadata.py +3 -1
  540. metadata/ingestion/source/storage/storage_service.py +5 -2
  541. metadata/parsers/json_schema_parser.py +17 -7
  542. metadata/pii/scanners/ner_scanner.py +5 -3
  543. metadata/profiler/interface/profiler_interface.py +4 -4
  544. metadata/profiler/processor/sample_data_handler.py +45 -8
  545. metadata/profiler/source/databricks/profiler_source.py +36 -0
  546. metadata/profiler/source/metadata.py +7 -1
  547. metadata/profiler/source/profiler_source_factory.py +8 -0
  548. metadata/readers/dataframe/json.py +11 -6
  549. metadata/readers/dataframe/models.py +1 -0
  550. metadata/utils/credentials.py +36 -19
  551. metadata/utils/datalake/datalake_utils.py +34 -4
  552. metadata/utils/secrets/azure_kv_secrets_manager.py +3 -19
  553. metadata/utils/source_hash.py +23 -13
  554. metadata/utils/storage_metadata_config.py +2 -15
  555. metadata/workflow/base.py +1 -1
  556. {openmetadata_ingestion-1.3.1.2.dist-info → openmetadata_ingestion-1.3.2.0.dist-info}/METADATA +289 -289
  557. {openmetadata_ingestion-1.3.1.2.dist-info → openmetadata_ingestion-1.3.2.0.dist-info}/RECORD +562 -552
  558. /metadata/examples/workflows/{datalake_azure.yaml → datalake_azure_client_secret.yaml} +0 -0
  559. {openmetadata_ingestion-1.3.1.2.dist-info → openmetadata_ingestion-1.3.2.0.dist-info}/LICENSE +0 -0
  560. {openmetadata_ingestion-1.3.1.2.dist-info → openmetadata_ingestion-1.3.2.0.dist-info}/WHEEL +0 -0
  561. {openmetadata_ingestion-1.3.1.2.dist-info → openmetadata_ingestion-1.3.2.0.dist-info}/entry_points.txt +0 -0
  562. {openmetadata_ingestion-1.3.1.2.dist-info → openmetadata_ingestion-1.3.2.0.dist-info}/top_level.txt +0 -0
@@ -69,6 +69,28 @@ from metadata.generated.schema.metadataIngestion.databaseServiceQueryUsagePipeli
69
69
  DatabaseServiceQueryUsagePipeline,
70
70
  DatabaseUsageConfigType,
71
71
  )
72
+ from metadata.generated.schema.metadataIngestion.dbtconfig.dbtAzureConfig import (
73
+ DbtAzureConfig,
74
+ )
75
+ from metadata.generated.schema.metadataIngestion.dbtconfig.dbtCloudConfig import (
76
+ DbtCloudConfig,
77
+ )
78
+ from metadata.generated.schema.metadataIngestion.dbtconfig.dbtGCSConfig import (
79
+ DbtGcsConfig,
80
+ )
81
+ from metadata.generated.schema.metadataIngestion.dbtconfig.dbtHttpConfig import (
82
+ DbtHttpConfig,
83
+ )
84
+ from metadata.generated.schema.metadataIngestion.dbtconfig.dbtLocalConfig import (
85
+ DbtLocalConfig,
86
+ )
87
+ from metadata.generated.schema.metadataIngestion.dbtconfig.dbtS3Config import (
88
+ DbtS3Config,
89
+ )
90
+ from metadata.generated.schema.metadataIngestion.dbtPipeline import (
91
+ DbtConfigType,
92
+ DbtPipeline,
93
+ )
72
94
  from metadata.generated.schema.metadataIngestion.messagingServiceMetadataPipeline import (
73
95
  MessagingMetadataConfigType,
74
96
  MessagingServiceMetadataPipeline,
@@ -125,6 +147,16 @@ SOURCE_CONFIG_CLASS_MAP = {
125
147
  DatabaseMetadataConfigType.DatabaseMetadata.value: DatabaseServiceMetadataPipeline,
126
148
  StorageMetadataConfigType.StorageMetadata.value: StorageServiceMetadataPipeline,
127
149
  SearchMetadataConfigType.SearchMetadata.value: SearchServiceMetadataPipeline,
150
+ DbtConfigType.DBT.value: DbtPipeline,
151
+ }
152
+
153
+ DBT_CONFIG_TYPE_MAP = {
154
+ "cloud": DbtCloudConfig,
155
+ "local": DbtLocalConfig,
156
+ "http": DbtHttpConfig,
157
+ "s3": DbtS3Config,
158
+ "gcs": DbtGcsConfig,
159
+ "azure": DbtAzureConfig,
128
160
  }
129
161
 
130
162
 
@@ -171,6 +203,7 @@ def get_source_config_class(
171
203
  Type[PipelineServiceMetadataPipeline],
172
204
  Type[MlModelServiceMetadataPipeline],
173
205
  Type[DatabaseServiceMetadataPipeline],
206
+ Type[DbtPipeline],
174
207
  ]:
175
208
  """
176
209
  Return the source config type for a source string
@@ -179,7 +212,7 @@ def get_source_config_class(
179
212
  """
180
213
  source_config_class = SOURCE_CONFIG_CLASS_MAP.get(source_config_type)
181
214
 
182
- if source_config_type:
215
+ if source_config_class:
183
216
  return source_config_class
184
217
 
185
218
  raise ValueError(f"Cannot find the service type of {source_config_type}")
@@ -266,6 +299,27 @@ def _unsafe_parse_config(config: dict, cls: Type[T], message: str) -> None:
266
299
  raise err
267
300
 
268
301
 
302
+ def _unsafe_parse_dbt_config(config: dict, cls: Type[T], message: str) -> None:
303
+ """
304
+ Given a config dictionary and the class it should match,
305
+ try to parse it or log the given message
306
+ """
307
+ logger.debug(f"Parsing message: [{message}]")
308
+ try:
309
+ # Parse the oneOf config types of dbt to check
310
+ dbt_config_type = config["dbtConfigSource"]["dbtConfigType"]
311
+ dbt_config_class = DBT_CONFIG_TYPE_MAP.get(dbt_config_type)
312
+ dbt_config_class.parse_obj(config["dbtConfigSource"])
313
+
314
+ # Parse the entire dbtPipeline object
315
+ cls.parse_obj(config)
316
+ except ValidationError as err:
317
+ logger.debug(
318
+ f"The supported properties for {cls.__name__} are {list(cls.__fields__.keys())}"
319
+ )
320
+ raise err
321
+
322
+
269
323
  def _parse_inner_connection(config_dict: dict, source_type: str) -> None:
270
324
  """
271
325
  Parse the inner connection of the flagged connectors
@@ -291,32 +345,35 @@ def parse_service_connection(config_dict: dict) -> None:
291
345
  :param config_dict: JSON configuration
292
346
  """
293
347
  # Unsafe access to the keys. Allow a KeyError if the config is not well formatted
294
- source_type = config_dict["source"]["serviceConnection"]["config"].get("type")
295
- if source_type is None:
296
- raise InvalidWorkflowException("Missing type in the serviceConnection config")
348
+ if config_dict["source"].get("serviceConnection"):
349
+ source_type = config_dict["source"]["serviceConnection"]["config"].get("type")
350
+ if source_type is None:
351
+ raise InvalidWorkflowException(
352
+ "Missing type in the serviceConnection config"
353
+ )
297
354
 
298
- logger.debug(
299
- f"Error parsing the Workflow Configuration for {source_type} ingestion"
300
- )
355
+ logger.debug(
356
+ f"Error parsing the Workflow Configuration for {source_type} ingestion"
357
+ )
301
358
 
302
- service_type = get_service_type(source_type)
303
- connection_class = get_connection_class(source_type, service_type)
359
+ service_type = get_service_type(source_type)
360
+ connection_class = get_connection_class(source_type, service_type)
304
361
 
305
- if source_type in HAS_INNER_CONNECTION:
306
- # We will first parse the inner `connection` configuration
307
- _parse_inner_connection(
308
- config_dict["source"]["serviceConnection"]["config"]["connection"][
309
- "config"
310
- ]["connection"],
311
- source_type,
312
- )
362
+ if source_type in HAS_INNER_CONNECTION:
363
+ # We will first parse the inner `connection` configuration
364
+ _parse_inner_connection(
365
+ config_dict["source"]["serviceConnection"]["config"]["connection"][
366
+ "config"
367
+ ]["connection"],
368
+ source_type,
369
+ )
313
370
 
314
- # Parse the service connection dictionary with the scoped class
315
- _unsafe_parse_config(
316
- config=config_dict["source"]["serviceConnection"]["config"],
317
- cls=connection_class,
318
- message="Error parsing the service connection",
319
- )
371
+ # Parse the service connection dictionary with the scoped class
372
+ _unsafe_parse_config(
373
+ config=config_dict["source"]["serviceConnection"]["config"],
374
+ cls=connection_class,
375
+ message="Error parsing the service connection",
376
+ )
320
377
 
321
378
 
322
379
  def parse_source_config(config_dict: dict) -> None:
@@ -334,6 +391,13 @@ def parse_source_config(config_dict: dict) -> None:
334
391
 
335
392
  source_config_class = get_source_config_class(source_config_type)
336
393
 
394
+ if source_config_class == DbtPipeline:
395
+ _unsafe_parse_dbt_config(
396
+ config=config_dict["source"]["sourceConfig"]["config"],
397
+ cls=source_config_class,
398
+ message="Error parsing the dbt source config",
399
+ )
400
+
337
401
  _unsafe_parse_config(
338
402
  config=config_dict["source"]["sourceConfig"]["config"],
339
403
  cls=source_config_class,
@@ -265,11 +265,12 @@ class TopologyRunnerMixin(Generic[C]):
265
265
  if entity:
266
266
  same_fingerprint = True
267
267
 
268
- create_entity_request_hash = generate_source_hash(
269
- create_request=entity_request.right,
270
- )
268
+ create_entity_request_hash = None
271
269
 
272
270
  if hasattr(entity_request.right, "sourceHash"):
271
+ create_entity_request_hash = generate_source_hash(
272
+ create_request=entity_request.right,
273
+ )
273
274
  entity_request.right.sourceHash = create_entity_request_hash
274
275
 
275
276
  if entity is None and stage.use_cache:
@@ -217,6 +217,11 @@ class LineageParser:
217
217
  """
218
218
  aliases = self.table_aliases
219
219
  values = identifier.value.split(".")
220
+
221
+ if len(values) > 4:
222
+ logger.debug(f"Invalid comparison element from identifier: {identifier}")
223
+ return None, None
224
+
220
225
  database_name, schema_name, table_or_alias, column_name = (
221
226
  [None] * (4 - len(values))
222
227
  ) + values
@@ -307,29 +312,39 @@ class LineageParser:
307
312
  comparisons.append(sub)
308
313
 
309
314
  for comparison in comparisons:
310
- if "." not in comparison.left.value or "." not in comparison.right.value:
311
- logger.debug(f"Ignoring comparison {comparison}")
312
- continue
313
-
314
- table_left, column_left = self.get_comparison_elements(
315
- identifier=comparison.left
316
- )
317
- table_right, column_right = self.get_comparison_elements(
318
- identifier=comparison.right
319
- )
315
+ try:
316
+ if (
317
+ "." not in comparison.left.value
318
+ or "." not in comparison.right.value
319
+ ):
320
+ logger.debug(f"Ignoring comparison {comparison}")
321
+ continue
322
+
323
+ table_left, column_left = self.get_comparison_elements(
324
+ identifier=comparison.left
325
+ )
326
+ table_right, column_right = self.get_comparison_elements(
327
+ identifier=comparison.right
328
+ )
320
329
 
321
- if not table_left or not table_right:
322
- logger.warning(f"Cannot find ingredients from {comparison}")
323
- continue
330
+ if not table_left or not table_right:
331
+ logger.warning(
332
+ f"Can't extract table names when parsing JOIN information from {comparison}"
333
+ )
334
+ logger.debug(f"Query: {sql_statement}")
335
+ continue
324
336
 
325
- left_table_column = TableColumn(table=table_left, column=column_left)
326
- right_table_column = TableColumn(table=table_right, column=column_right)
337
+ left_table_column = TableColumn(table=table_left, column=column_left)
338
+ right_table_column = TableColumn(table=table_right, column=column_right)
327
339
 
328
- # We just send the info once, from Left -> Right.
329
- # The backend will prepare the symmetric information.
330
- self.stateful_add_table_joins(
331
- join_data, left_table_column, right_table_column
332
- )
340
+ # We just send the info once, from Left -> Right.
341
+ # The backend will prepare the symmetric information.
342
+ self.stateful_add_table_joins(
343
+ join_data, left_table_column, right_table_column
344
+ )
345
+ except Exception as exc:
346
+ logger.debug(f"Cannot process comparison {comparison}: {exc}")
347
+ logger.debug(traceback.format_exc())
333
348
 
334
349
  @cached_property
335
350
  def table_joins(self) -> Dict[str, List[TableColumnJoin]]:
@@ -46,7 +46,7 @@ from metadata.ingestion.ometa.mixins.patch_mixin_utils import (
46
46
  )
47
47
  from metadata.ingestion.ometa.utils import model_str
48
48
  from metadata.utils.deprecation import deprecated
49
- from metadata.utils.logger import ometa_logger
49
+ from metadata.utils.logger import get_log_name, ometa_logger
50
50
 
51
51
  logger = ometa_logger()
52
52
 
@@ -155,9 +155,7 @@ class OMetaPatchMixin(OMetaPatchMixinBase):
155
155
 
156
156
  except Exception as exc:
157
157
  logger.debug(traceback.format_exc())
158
- logger.error(
159
- f"Error trying to PATCH {entity.__name__} [{source.id.__root__}]: {exc}"
160
- )
158
+ logger.error(f"Error trying to PATCH {get_log_name(source)}: {exc}")
161
159
 
162
160
  return None
163
161
 
@@ -90,6 +90,16 @@ from metadata.generated.schema.api.tests.createTestDefinition import (
90
90
  from metadata.generated.schema.api.tests.createTestSuite import CreateTestSuiteRequest
91
91
  from metadata.generated.schema.dataInsight.dataInsightChart import DataInsightChart
92
92
  from metadata.generated.schema.dataInsight.kpi.kpi import Kpi
93
+ from metadata.generated.schema.entity.applications.app import App
94
+ from metadata.generated.schema.entity.applications.createAppRequest import (
95
+ CreateAppRequest,
96
+ )
97
+ from metadata.generated.schema.entity.applications.marketplace.appMarketPlaceDefinition import (
98
+ AppMarketPlaceDefinition,
99
+ )
100
+ from metadata.generated.schema.entity.applications.marketplace.createAppMarketPlaceDefinitionReq import (
101
+ CreateAppMarketPlaceDefinitionRequest,
102
+ )
93
103
  from metadata.generated.schema.entity.automations.workflow import Workflow
94
104
  from metadata.generated.schema.entity.bot import Bot
95
105
  from metadata.generated.schema.entity.classification.classification import (
@@ -232,4 +242,9 @@ ROUTES = {
232
242
  # Suggestions
233
243
  Suggestion.__name__: "/suggestions",
234
244
  CreateSuggestionRequest.__name__: "/suggestions",
245
+ # Apps
246
+ App.__name__: "/apps",
247
+ CreateAppRequest.__name__: "/apps",
248
+ AppMarketPlaceDefinition.__name__: "/apps/marketplace",
249
+ CreateAppMarketPlaceDefinitionRequest.__name__: "/apps/marketplace",
235
250
  }
@@ -58,7 +58,7 @@ def _clone_repo(
58
58
  if isinstance(credential, GitHubCredentials):
59
59
  url = f"https://x-oauth-basic:{credential.token.__root__.get_secret_value()}@github.com/{repo_name}.git"
60
60
  elif isinstance(credential, BitBucketCredentials):
61
- url = f"https://x-token-auth::{credential.token.__root__.get_secret_value()}@bitbucket.or/{repo_name}.git"
61
+ url = f"https://x-token-auth:{credential.token.__root__.get_secret_value()}@bitbucket.org/{repo_name}.git"
62
62
  allow_unsafe_protocols = True
63
63
 
64
64
  assert url is not None
@@ -19,6 +19,9 @@ from typing import List, Optional, Tuple
19
19
 
20
20
  import msal
21
21
 
22
+ from metadata.generated.schema.entity.services.connections.dashboard.powerBIConnection import (
23
+ PowerBIConnection,
24
+ )
22
25
  from metadata.ingestion.api.steps import InvalidSourceException
23
26
  from metadata.ingestion.ometa.client import REST, ClientConfig
24
27
  from metadata.ingestion.source.dashboard.powerbi.models import (
@@ -52,7 +55,7 @@ class PowerBiApiClient:
52
55
 
53
56
  client: REST
54
57
 
55
- def __init__(self, config):
58
+ def __init__(self, config: PowerBIConnection):
56
59
  self.config = config
57
60
  self.msal_client = msal.ConfidentialClientApplication(
58
61
  client_id=self.config.clientId,
@@ -15,12 +15,13 @@ Source connection handler
15
15
  from typing import Optional, Union
16
16
  from urllib.parse import quote_plus
17
17
 
18
- from sqlalchemy.engine import Engine
18
+ from sqlalchemy.engine import URL, Engine
19
19
 
20
20
  from metadata.generated.schema.entity.automations.workflow import (
21
21
  Workflow as AutomationWorkflow,
22
22
  )
23
23
  from metadata.generated.schema.entity.services.connections.database.azureSQLConnection import (
24
+ Authentication,
24
25
  AzureSQLConnection,
25
26
  )
26
27
  from metadata.generated.schema.entity.services.connections.database.mssqlConnection import (
@@ -40,13 +41,29 @@ def get_connection_url(connection: Union[AzureSQLConnection, MssqlConnection]) -
40
41
  Build the connection URL
41
42
  """
42
43
 
44
+ if connection.authenticationMode:
45
+ connection_string = f"Driver={connection.driver};Server={connection.hostPort};Database={connection.database};"
46
+ connection_string += f"Uid={connection.username};"
47
+ if (
48
+ connection.authenticationMode.authentication
49
+ == Authentication.ActiveDirectoryPassword
50
+ ):
51
+ connection_string += f"Pwd={connection.password.get_secret_value()};"
52
+
53
+ connection_string += f"Encrypt={'yes' if connection.authenticationMode.encrypt else 'no'};TrustServerCertificate={'yes' if connection.authenticationMode.trustServerCertificate else 'no'};"
54
+ connection_string += f"Connection Timeout={connection.authenticationMode.connectionTimeout or 30};Authentication={connection.authenticationMode.authentication.value};"
55
+
56
+ connection_url = URL.create(
57
+ "mssql+pyodbc", query={"odbc_connect": connection_string}
58
+ )
59
+ return connection_url
43
60
  url = f"{connection.scheme.value}://"
44
61
 
45
62
  if connection.username:
46
63
  url += f"{quote_plus(connection.username)}"
47
64
  url += (
48
65
  f":{quote_plus(connection.password.get_secret_value())}"
49
- if connection
66
+ if connection.password
50
67
  else ""
51
68
  )
52
69
  url += "@"
@@ -54,12 +71,13 @@ def get_connection_url(connection: Union[AzureSQLConnection, MssqlConnection]) -
54
71
  url += f"{connection.hostPort}"
55
72
  url += f"/{quote_plus(connection.database)}" if connection.database else ""
56
73
  url += f"?driver={quote_plus(connection.driver)}"
74
+
57
75
  options = get_connection_options_dict(connection)
58
76
  if options:
59
77
  if not connection.database:
60
78
  url += "/"
61
79
  params = "&".join(
62
- f"{key}={quote_plus(value)}" for (key, value) in options.items() if value
80
+ f"{key}={quote_plus(value)}" for key, value in options.items() if value
63
81
  )
64
82
  url = f"{url}?{params}"
65
83
 
@@ -20,6 +20,7 @@ from typing import Optional
20
20
 
21
21
  from google.cloud import storage
22
22
 
23
+ from metadata.clients.azure_client import AzureClient
23
24
  from metadata.generated.schema.entity.automations.workflow import (
24
25
  Workflow as AutomationWorkflow,
25
26
  )
@@ -88,22 +89,9 @@ def _(config: GCSConfig):
88
89
 
89
90
  @get_datalake_client.register
90
91
  def _(config: AzureConfig):
91
- from azure.identity import ClientSecretCredential
92
- from azure.storage.blob import BlobServiceClient
93
92
 
94
93
  try:
95
- credentials = ClientSecretCredential(
96
- config.securityConfig.tenantId,
97
- config.securityConfig.clientId,
98
- config.securityConfig.clientSecret.get_secret_value(),
99
- )
100
-
101
- azure_client = BlobServiceClient(
102
- f"https://{config.securityConfig.accountName}.blob.core.windows.net/",
103
- credential=credentials,
104
- )
105
- return azure_client
106
-
94
+ return AzureClient(config.securityConfig).create_blob_client()
107
95
  except Exception as exc:
108
96
  raise RuntimeError(
109
97
  f"Unknown error connecting with {config.securityConfig}: {exc}."
@@ -407,7 +407,7 @@ class DatalakeSource(DatabaseServiceSource):
407
407
  schema_name = self.context.database_schema
408
408
  try:
409
409
  table_constraints = None
410
- data_frame = fetch_dataframe(
410
+ data_frame, raw_data = fetch_dataframe(
411
411
  config_source=self.config_source,
412
412
  client=self.client,
413
413
  file_fqn=DatalakeTableSchemaWrapper(
@@ -415,10 +415,11 @@ class DatalakeSource(DatabaseServiceSource):
415
415
  bucket_name=schema_name,
416
416
  file_extension=table_extension,
417
417
  ),
418
+ fetch_raw_data=True,
418
419
  )
419
420
  if data_frame:
420
421
  column_parser = DataFrameColumnParser.create(
421
- data_frame[0], table_extension
422
+ data_frame[0], table_extension, raw_data=raw_data
422
423
  )
423
424
  columns = column_parser.get_columns()
424
425
  else:
@@ -20,6 +20,7 @@ from typing import Dict, Iterable, List, Optional, Tuple
20
20
  import requests
21
21
 
22
22
  from metadata.clients.aws_client import AWSClient
23
+ from metadata.clients.azure_client import AzureClient
23
24
  from metadata.generated.schema.metadataIngestion.dbtconfig.dbtAzureConfig import (
24
25
  DbtAzureConfig,
25
26
  )
@@ -172,7 +173,7 @@ def _(config: DbtCloudConfig): # pylint: disable=too-many-locals
172
173
  params_data["job_definition_id"] = job_id
173
174
 
174
175
  response = client.get(f"/accounts/{account_id}/runs", data=params_data)
175
- if not response and not response.get("data"):
176
+ if not response or not response.get("data"):
176
177
  raise DBTConfigException(
177
178
  "Unable to get the dbt job runs information.\n"
178
179
  "Please check if the auth token is correct and has the necessary scopes to fetch dbt runs"
@@ -357,21 +358,8 @@ def _(config: DbtGcsConfig):
357
358
  def _(config: DbtAzureConfig):
358
359
  try:
359
360
  bucket_name, prefix = get_dbt_prefix_config(config)
360
- from azure.identity import ( # pylint: disable=import-outside-toplevel
361
- ClientSecretCredential,
362
- )
363
- from azure.storage.blob import ( # pylint: disable=import-outside-toplevel
364
- BlobServiceClient,
365
- )
366
361
 
367
- client = BlobServiceClient(
368
- f"https://{config.dbtSecurityConfig.accountName}.blob.core.windows.net/",
369
- credential=ClientSecretCredential(
370
- config.dbtSecurityConfig.tenantId,
371
- config.dbtSecurityConfig.clientId,
372
- config.dbtSecurityConfig.clientSecret.get_secret_value(),
373
- ),
374
- )
362
+ client = AzureClient(config.dbtSecurityConfig).create_blob_client()
375
363
 
376
364
  if not bucket_name:
377
365
  container_dicts = client.list_containers()
@@ -27,5 +27,6 @@ class MssqlLineageSource(MssqlQueryParserSource, LineageSource):
27
27
  OR lower(t.text) LIKE '%%merge%%'
28
28
  )
29
29
  AND lower(t.text) NOT LIKE '%%create%%procedure%%'
30
+ AND lower(t.text) NOT LIKE '%%create%%function%%'
30
31
  AND lower(t.text) NOT LIKE '%%declare%%'
31
32
  """
@@ -19,4 +19,8 @@ from metadata.ingestion.source.database.usage_source import UsageSource
19
19
  class MssqlUsageSource(MssqlQueryParserSource, UsageSource):
20
20
  sql_stmt = MSSQL_SQL_STATEMENT
21
21
 
22
- filters = "" # No filtering in the queries
22
+ filters = """
23
+ AND lower(t.text) NOT LIKE '%%create%%procedure%%'
24
+ AND lower(t.text) NOT LIKE '%%create%%function%%'
25
+ AND lower(t.text) NOT LIKE '%%declare%%'
26
+ """
@@ -16,9 +16,13 @@ from typing import Optional
16
16
 
17
17
  from sqlalchemy.engine import Engine
18
18
 
19
+ from metadata.clients.azure_client import AzureClient
19
20
  from metadata.generated.schema.entity.automations.workflow import (
20
21
  Workflow as AutomationWorkflow,
21
22
  )
23
+ from metadata.generated.schema.entity.services.connections.database.common.basicAuth import (
24
+ BasicAuth,
25
+ )
22
26
  from metadata.generated.schema.entity.services.connections.database.mysqlConnection import (
23
27
  MysqlConnection,
24
28
  )
@@ -38,6 +42,16 @@ def get_connection(connection: MysqlConnection) -> Engine:
38
42
  """
39
43
  Create connection
40
44
  """
45
+ if hasattr(connection.authType, "azureConfig"):
46
+ azure_client = AzureClient(connection.authType.azureConfig).create_client()
47
+ if not connection.authType.azureConfig.scopes:
48
+ raise ValueError(
49
+ "Azure Scopes are missing, please refer https://learn.microsoft.com/en-gb/azure/mysql/flexible-server/how-to-azure-ad#2---retrieve-microsoft-entra-access-token and fetch the resource associated with it, for e.g. https://ossrdbms-aad.database.windows.net/.default"
50
+ )
51
+ access_token_obj = azure_client.get_token(
52
+ *connection.authType.azureConfig.scopes.split(",")
53
+ )
54
+ connection.authType = BasicAuth(password=access_token_obj.token)
41
55
  if connection.sslCA or connection.sslCert or connection.sslKey:
42
56
  if not connection.connectionOptions:
43
57
  connection.connectionOptions = init_empty_connection_options()
@@ -38,6 +38,7 @@ from metadata.ingestion.connections.builders import (
38
38
  )
39
39
  from metadata.ingestion.connections.test_connections import test_connection_db_common
40
40
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
41
+ from metadata.ingestion.source.database.oracle.queries import CHECK_ACCESS_TO_DBA
41
42
  from metadata.utils.logger import ingestion_logger
42
43
 
43
44
  CX_ORACLE_LIB_VERSION = "8.3.0"
@@ -136,9 +137,13 @@ def test_connection(
136
137
  Test connection. This can be executed either as part
137
138
  of a metadata workflow or during an Automation Workflow
138
139
  """
140
+
141
+ test_conn_queries = {"CheckAccess": CHECK_ACCESS_TO_DBA}
142
+
139
143
  test_connection_db_common(
140
144
  metadata=metadata,
141
145
  engine=engine,
142
146
  service_connection=service_connection,
143
147
  automation_workflow=automation_workflow,
148
+ queries=test_conn_queries,
144
149
  )
@@ -88,7 +88,7 @@ WHERE
88
88
  type = 'PROCEDURE' and owner = '{schema}'
89
89
  """
90
90
  )
91
-
91
+ CHECK_ACCESS_TO_DBA = "SELECT table_name FROM DBA_TABLES where ROWNUM < 2"
92
92
  ORACLE_GET_STORED_PROCEDURE_QUERIES = textwrap.dedent(
93
93
  """
94
94
  WITH SP_HISTORY AS (SELECT
@@ -17,9 +17,13 @@ from typing import Optional
17
17
 
18
18
  from sqlalchemy.engine import Engine
19
19
 
20
+ from metadata.clients.azure_client import AzureClient
20
21
  from metadata.generated.schema.entity.automations.workflow import (
21
22
  Workflow as AutomationWorkflow,
22
23
  )
24
+ from metadata.generated.schema.entity.services.connections.database.common.basicAuth import (
25
+ BasicAuth,
26
+ )
23
27
  from metadata.generated.schema.entity.services.connections.database.postgresConnection import (
24
28
  PostgresConnection,
25
29
  SslMode,
@@ -46,6 +50,17 @@ def get_connection(connection: PostgresConnection) -> Engine:
46
50
  """
47
51
  Create connection
48
52
  """
53
+
54
+ if hasattr(connection.authType, "azureConfig"):
55
+ azure_client = AzureClient(connection.authType.azureConfig).create_client()
56
+ if not connection.authType.azureConfig.scopes:
57
+ raise ValueError(
58
+ "Azure Scopes are missing, please refer https://learn.microsoft.com/en-gb/azure/postgresql/flexible-server/how-to-configure-sign-in-azure-ad-authentication#retrieve-the-microsoft-entra-access-token and fetch the resource associated with it, for e.g. https://ossrdbms-aad.database.windows.net/.default"
59
+ )
60
+ access_token_obj = azure_client.get_token(
61
+ *connection.authType.azureConfig.scopes.split(",")
62
+ )
63
+ connection.authType = BasicAuth(password=access_token_obj.token)
49
64
  if connection.sslMode:
50
65
  if not connection.connectionArguments:
51
66
  connection.connectionArguments = init_empty_connection_arguments()
@@ -138,7 +138,7 @@ class StoredProcedureMixin(ABC):
138
138
  return True
139
139
 
140
140
  if query_type == "INSERT" and re.search(
141
- "^.*insert.*into.*select.*$", query_text, re.IGNORECASE
141
+ "^.*insert.*into.*select.*$", query_text.replace("\n", " "), re.IGNORECASE
142
142
  ):
143
143
  return True
144
144
 
@@ -68,16 +68,20 @@ def test_connection(
68
68
  break
69
69
 
70
70
  def get_schemas(connection: WorkspaceClient, table_obj: DatabricksTable):
71
- for schema in connection.schemas.list(catalog_name=table_obj.catalog_name):
72
- table_obj.schema_name = schema.name
73
- break
71
+ for catalog in connection.catalogs.list():
72
+ for schema in connection.schemas.list(catalog_name=catalog.name):
73
+ if schema.name:
74
+ table_obj.schema_name = schema.name
75
+ table_obj.catalog_name = catalog.name
76
+ return
74
77
 
75
78
  def get_tables(connection: WorkspaceClient, table_obj: DatabricksTable):
76
- for table in connection.tables.list(
77
- catalog_name=table_obj.catalog_name, schema_name=table_obj.schema_name
78
- ):
79
- table_obj.name = table.name
80
- break
79
+ if table_obj.catalog_name and table_obj.schema_name:
80
+ for table in connection.tables.list(
81
+ catalog_name=table_obj.catalog_name, schema_name=table_obj.schema_name
82
+ ):
83
+ table_obj.name = table.name
84
+ break
81
85
 
82
86
  test_fn = {
83
87
  "CheckAccess": connection.catalogs.list,
@@ -214,7 +214,9 @@ class DagsterSource(PipelineServiceSource):
214
214
  service_name=self.context.pipeline_service,
215
215
  pipeline_name=self.context.pipeline,
216
216
  )
217
- pipeline_entity = self.metadata.get_by_name(entity=Pipeline, fqn=pipeline_fqn)
217
+ pipeline_entity = self.metadata.get_by_name(
218
+ entity=Pipeline, fqn=pipeline_fqn, fields=["tasks"]
219
+ )
218
220
  for task in pipeline_entity.tasks or []:
219
221
  try:
220
222
  runs = self.client.get_task_runs(