openmetadata-ingestion 1.3.0.1__py3-none-any.whl → 1.3.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of openmetadata-ingestion might be problematic. Click here for more details.

Files changed (574) hide show
  1. metadata/cli/db_dump.py +1 -0
  2. metadata/data_insight/processor/reports/cost_analysis_report_data_processor.py +39 -47
  3. metadata/data_insight/processor/reports/data_processor.py +1 -0
  4. metadata/data_insight/producer/cost_analysis_producer.py +78 -14
  5. metadata/data_insight/producer/entity_producer.py +1 -1
  6. metadata/data_insight/producer/producer_interface.py +1 -1
  7. metadata/data_insight/producer/web_analytics_producer.py +1 -1
  8. metadata/data_insight/source/metadata.py +10 -1
  9. metadata/data_quality/validations/table/base/tableColumnToMatchSet.py +2 -1
  10. metadata/data_quality/validations/table/pandas/tableColumnToMatchSet.py +2 -1
  11. metadata/data_quality/validations/table/sqlalchemy/tableColumnToMatchSet.py +7 -2
  12. metadata/examples/workflows/bigtable.yaml +32 -0
  13. metadata/generated/antlr/EntityLinkLexer.py +353 -319
  14. metadata/generated/schema/analytics/__init__.py +1 -1
  15. metadata/generated/schema/analytics/basic.py +1 -1
  16. metadata/generated/schema/analytics/reportData.py +1 -1
  17. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  18. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  19. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  20. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  21. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  22. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  23. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  24. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  25. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  26. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  27. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  28. metadata/generated/schema/api/__init__.py +1 -1
  29. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  30. metadata/generated/schema/api/analytics/__init__.py +1 -1
  31. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  32. metadata/generated/schema/api/automations/__init__.py +1 -1
  33. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  34. metadata/generated/schema/api/bulkAssets.py +1 -1
  35. metadata/generated/schema/api/classification/__init__.py +1 -1
  36. metadata/generated/schema/api/classification/createClassification.py +1 -1
  37. metadata/generated/schema/api/classification/createTag.py +1 -1
  38. metadata/generated/schema/api/classification/loadTags.py +1 -1
  39. metadata/generated/schema/api/createBot.py +1 -1
  40. metadata/generated/schema/api/createEventPublisherJob.py +2 -2
  41. metadata/generated/schema/api/createType.py +1 -1
  42. metadata/generated/schema/api/data/__init__.py +1 -1
  43. metadata/generated/schema/api/data/createChart.py +1 -1
  44. metadata/generated/schema/api/data/createContainer.py +1 -1
  45. metadata/generated/schema/api/data/createCustomProperty.py +6 -10
  46. metadata/generated/schema/api/data/createDashboard.py +1 -1
  47. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  48. metadata/generated/schema/api/data/createDatabase.py +1 -1
  49. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  50. metadata/generated/schema/api/data/createGlossary.py +1 -1
  51. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  52. metadata/generated/schema/api/data/createMlModel.py +1 -1
  53. metadata/generated/schema/api/data/createPipeline.py +1 -1
  54. metadata/generated/schema/api/data/createQuery.py +1 -1
  55. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  56. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  57. metadata/generated/schema/api/data/createTable.py +1 -1
  58. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  59. metadata/generated/schema/api/data/createTopic.py +1 -1
  60. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  61. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  62. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  63. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  64. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  65. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  66. metadata/generated/schema/api/docStore/__init__.py +1 -1
  67. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  68. metadata/generated/schema/api/domains/__init__.py +1 -1
  69. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  70. metadata/generated/schema/api/domains/createDomain.py +1 -1
  71. metadata/generated/schema/api/feed/__init__.py +1 -1
  72. metadata/generated/schema/api/feed/closeTask.py +1 -1
  73. metadata/generated/schema/api/feed/createPost.py +1 -1
  74. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  75. metadata/generated/schema/api/feed/createThread.py +1 -1
  76. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  77. metadata/generated/schema/api/feed/threadCount.py +1 -1
  78. metadata/generated/schema/api/lineage/__init__.py +1 -1
  79. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  80. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  81. metadata/generated/schema/api/policies/__init__.py +1 -1
  82. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  83. metadata/generated/schema/api/services/__init__.py +1 -1
  84. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  85. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  86. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  87. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  88. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  89. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  90. metadata/generated/schema/api/services/createSearchService.py +1 -1
  91. metadata/generated/schema/api/services/createStorageService.py +1 -1
  92. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  93. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  94. metadata/generated/schema/api/setOwner.py +1 -1
  95. metadata/generated/schema/api/teams/__init__.py +1 -1
  96. metadata/generated/schema/api/teams/createPersona.py +1 -1
  97. metadata/generated/schema/api/teams/createRole.py +1 -1
  98. metadata/generated/schema/api/teams/createTeam.py +1 -1
  99. metadata/generated/schema/api/teams/createUser.py +1 -1
  100. metadata/generated/schema/api/tests/__init__.py +1 -1
  101. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  102. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  103. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  104. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  105. metadata/generated/schema/api/tests/createTestDefinition.py +2 -1
  106. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  107. metadata/generated/schema/api/voteRequest.py +1 -1
  108. metadata/generated/schema/auth/__init__.py +1 -1
  109. metadata/generated/schema/auth/basicAuth.py +1 -1
  110. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  111. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  112. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  113. metadata/generated/schema/auth/emailRequest.py +1 -1
  114. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  115. metadata/generated/schema/auth/generateToken.py +1 -1
  116. metadata/generated/schema/auth/jwtAuth.py +1 -1
  117. metadata/generated/schema/auth/loginRequest.py +1 -1
  118. metadata/generated/schema/auth/logoutRequest.py +1 -1
  119. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  120. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  121. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  122. metadata/generated/schema/auth/refreshToken.py +1 -1
  123. metadata/generated/schema/auth/registrationRequest.py +1 -1
  124. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  125. metadata/generated/schema/auth/revokeToken.py +1 -1
  126. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  127. metadata/generated/schema/auth/ssoAuth.py +1 -1
  128. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  129. metadata/generated/schema/configuration/__init__.py +1 -1
  130. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  131. metadata/generated/schema/configuration/authConfig.py +1 -1
  132. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  133. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  134. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  135. metadata/generated/schema/configuration/dataQualityConfiguration.py +16 -0
  136. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  137. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  138. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  139. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  140. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  141. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  142. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  143. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  144. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  145. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  146. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  147. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  148. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  149. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  150. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  151. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  152. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  153. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  154. metadata/generated/schema/dataInsight/__init__.py +1 -1
  155. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  156. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  157. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  158. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  159. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  160. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  161. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  162. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  163. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  164. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  165. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  166. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  167. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  168. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  169. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithDescriptionByType.py +1 -1
  170. metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +1 -1
  171. metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +1 -1
  172. metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +1 -1
  173. metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +1 -1
  174. metadata/generated/schema/dataInsight/type/totalEntitiesByType.py +1 -1
  175. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  176. metadata/generated/schema/email/__init__.py +1 -1
  177. metadata/generated/schema/email/emailRequest.py +1 -1
  178. metadata/generated/schema/email/smtpSettings.py +1 -1
  179. metadata/generated/schema/entity/__init__.py +1 -1
  180. metadata/generated/schema/entity/applications/__init__.py +1 -1
  181. metadata/generated/schema/entity/applications/app.py +1 -1
  182. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  183. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  184. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  185. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  186. metadata/generated/schema/entity/applications/configuration/external/autoTaggerAppConfig.py +1 -1
  187. metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +1 -1
  188. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  189. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  190. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  191. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +2 -2
  192. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  193. metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.py +1 -1
  194. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  195. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  196. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  197. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  198. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  199. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  200. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  201. metadata/generated/schema/entity/automations/__init__.py +1 -1
  202. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  203. metadata/generated/schema/entity/automations/workflow.py +1 -1
  204. metadata/generated/schema/entity/bot.py +1 -1
  205. metadata/generated/schema/entity/classification/__init__.py +1 -1
  206. metadata/generated/schema/entity/classification/classification.py +1 -1
  207. metadata/generated/schema/entity/classification/tag.py +1 -1
  208. metadata/generated/schema/entity/data/__init__.py +1 -1
  209. metadata/generated/schema/entity/data/chart.py +1 -1
  210. metadata/generated/schema/entity/data/container.py +1 -1
  211. metadata/generated/schema/entity/data/dashboard.py +1 -1
  212. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  213. metadata/generated/schema/entity/data/database.py +1 -1
  214. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  215. metadata/generated/schema/entity/data/glossary.py +1 -1
  216. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  217. metadata/generated/schema/entity/data/metrics.py +1 -1
  218. metadata/generated/schema/entity/data/mlmodel.py +2 -2
  219. metadata/generated/schema/entity/data/pipeline.py +1 -1
  220. metadata/generated/schema/entity/data/query.py +1 -1
  221. metadata/generated/schema/entity/data/report.py +1 -1
  222. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  223. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  224. metadata/generated/schema/entity/data/table.py +1 -1
  225. metadata/generated/schema/entity/data/topic.py +1 -1
  226. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  227. metadata/generated/schema/entity/docStore/document.py +1 -1
  228. metadata/generated/schema/entity/domains/__init__.py +1 -1
  229. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  230. metadata/generated/schema/entity/domains/domain.py +1 -1
  231. metadata/generated/schema/entity/events/__init__.py +1 -1
  232. metadata/generated/schema/entity/events/webhook.py +1 -1
  233. metadata/generated/schema/entity/feed/__init__.py +1 -1
  234. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  235. metadata/generated/schema/entity/feed/thread.py +1 -1
  236. metadata/generated/schema/entity/policies/__init__.py +1 -1
  237. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  238. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  239. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  240. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  241. metadata/generated/schema/entity/policies/filters.py +1 -1
  242. metadata/generated/schema/entity/policies/policy.py +1 -1
  243. metadata/generated/schema/entity/services/__init__.py +1 -1
  244. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  245. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  246. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  247. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  248. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  249. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  250. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  251. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  252. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  253. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  254. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  255. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  256. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  257. metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +1 -1
  258. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  259. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  260. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  261. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  262. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  263. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  264. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  265. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  266. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  267. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  268. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +41 -0
  269. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  270. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  271. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  272. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  273. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  274. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  275. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  276. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  277. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  278. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  279. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  280. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  281. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  282. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  283. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  284. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  285. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  286. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  287. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  288. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  289. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  290. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  291. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  292. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  293. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  294. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  295. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  296. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  297. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  298. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  299. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  300. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  301. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  302. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  303. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  304. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  305. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +8 -6
  306. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  307. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  308. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  309. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  310. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  311. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  312. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  313. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  314. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  315. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  316. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  317. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  318. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  319. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  320. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +14 -2
  321. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  322. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  323. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +14 -2
  324. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  325. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  326. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  327. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  328. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  329. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +2 -2
  330. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  331. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  332. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  333. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  334. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  335. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  336. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  337. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  338. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  339. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  340. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  341. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  342. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  343. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  344. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  345. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  346. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  347. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  348. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  349. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  350. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  351. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  352. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  353. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  354. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  355. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  356. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  357. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  358. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  359. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  360. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  361. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  363. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  364. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  365. metadata/generated/schema/entity/services/databaseService.py +4 -1
  366. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  367. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  368. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  369. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  370. metadata/generated/schema/entity/services/messagingService.py +1 -1
  371. metadata/generated/schema/entity/services/metadataService.py +1 -1
  372. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  373. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  374. metadata/generated/schema/entity/services/searchService.py +1 -1
  375. metadata/generated/schema/entity/services/serviceType.py +1 -1
  376. metadata/generated/schema/entity/services/storageService.py +1 -1
  377. metadata/generated/schema/entity/teams/__init__.py +1 -1
  378. metadata/generated/schema/entity/teams/persona.py +1 -1
  379. metadata/generated/schema/entity/teams/role.py +1 -1
  380. metadata/generated/schema/entity/teams/team.py +1 -1
  381. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  382. metadata/generated/schema/entity/teams/user.py +1 -1
  383. metadata/generated/schema/entity/type.py +3 -18
  384. metadata/generated/schema/entity/utils/__init__.py +1 -1
  385. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  386. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  387. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  388. metadata/generated/schema/events/__init__.py +1 -1
  389. metadata/generated/schema/events/alertMetrics.py +1 -1
  390. metadata/generated/schema/events/api/__init__.py +1 -1
  391. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  392. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  393. metadata/generated/schema/events/eventFilterRule.py +1 -1
  394. metadata/generated/schema/events/eventSubscription.py +3 -2
  395. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  396. metadata/generated/schema/events/failedEvent.py +1 -1
  397. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  398. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  399. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  400. metadata/generated/schema/metadataIngestion/application.py +1 -1
  401. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  402. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  403. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  404. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  405. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  406. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  407. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  408. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  409. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  410. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  411. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  412. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  413. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  414. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  415. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  416. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  417. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  418. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  419. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  420. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  421. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  422. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  423. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  424. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  425. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  426. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  427. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  428. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  429. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  430. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  431. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  432. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  433. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  434. metadata/generated/schema/monitoring/__init__.py +1 -1
  435. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  436. metadata/generated/schema/security/__init__.py +1 -1
  437. metadata/generated/schema/security/client/__init__.py +1 -1
  438. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  439. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  440. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  441. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  442. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  443. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  444. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  445. metadata/generated/schema/security/credentials/__init__.py +1 -1
  446. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  447. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  448. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  449. metadata/generated/schema/security/credentials/azureCredentials.py +16 -9
  450. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  451. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  452. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  453. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  454. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  455. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  456. metadata/generated/schema/security/secrets/__init__.py +1 -1
  457. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  458. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  459. metadata/generated/schema/security/secrets/secretsManagerProvider.py +3 -1
  460. metadata/generated/schema/security/securityConfiguration.py +1 -1
  461. metadata/generated/schema/security/ssl/__init__.py +1 -1
  462. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  463. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  464. metadata/generated/schema/settings/__init__.py +1 -1
  465. metadata/generated/schema/settings/settings.py +1 -1
  466. metadata/generated/schema/system/__init__.py +1 -1
  467. metadata/generated/schema/system/entityError.py +1 -1
  468. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  469. metadata/generated/schema/system/indexingError.py +1 -1
  470. metadata/generated/schema/system/ui/__init__.py +1 -1
  471. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  472. metadata/generated/schema/system/ui/page.py +1 -1
  473. metadata/generated/schema/tests/__init__.py +1 -1
  474. metadata/generated/schema/tests/assigned.py +1 -1
  475. metadata/generated/schema/tests/basic.py +1 -1
  476. metadata/generated/schema/tests/customMetric.py +1 -1
  477. metadata/generated/schema/tests/resolved.py +1 -1
  478. metadata/generated/schema/tests/testCase.py +1 -1
  479. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  480. metadata/generated/schema/tests/testDefinition.py +2 -1
  481. metadata/generated/schema/tests/testSuite.py +1 -1
  482. metadata/generated/schema/type/__init__.py +1 -1
  483. metadata/generated/schema/type/auditLog.py +1 -1
  484. metadata/generated/schema/type/basic.py +6 -2
  485. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  486. metadata/generated/schema/type/changeEvent.py +1 -1
  487. metadata/generated/schema/type/changeEventType.py +1 -1
  488. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  489. metadata/generated/schema/type/csvDocumentation.py +1 -1
  490. metadata/generated/schema/type/csvErrorType.py +1 -1
  491. metadata/generated/schema/type/csvFile.py +1 -1
  492. metadata/generated/schema/type/csvImportResult.py +1 -1
  493. metadata/generated/schema/type/customProperties/__init__.py +3 -0
  494. metadata/generated/schema/type/customProperties/enumConfig.py +17 -0
  495. metadata/generated/schema/type/customProperty.py +52 -0
  496. metadata/generated/schema/type/dailyCount.py +1 -1
  497. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  498. metadata/generated/schema/type/entityHistory.py +1 -1
  499. metadata/generated/schema/type/entityLineage.py +1 -1
  500. metadata/generated/schema/type/entityReference.py +1 -1
  501. metadata/generated/schema/type/entityReferenceList.py +1 -1
  502. metadata/generated/schema/type/entityRelationship.py +1 -1
  503. metadata/generated/schema/type/entityUsage.py +1 -1
  504. metadata/generated/schema/type/filterPattern.py +1 -1
  505. metadata/generated/schema/type/function.py +1 -1
  506. metadata/generated/schema/type/include.py +1 -1
  507. metadata/generated/schema/type/jdbcConnection.py +1 -1
  508. metadata/generated/schema/type/lifeCycle.py +1 -1
  509. metadata/generated/schema/type/paging.py +1 -1
  510. metadata/generated/schema/type/profile.py +1 -1
  511. metadata/generated/schema/type/queryParserData.py +1 -1
  512. metadata/generated/schema/type/reaction.py +1 -1
  513. metadata/generated/schema/type/schedule.py +1 -1
  514. metadata/generated/schema/type/schema.py +1 -1
  515. metadata/generated/schema/type/tableQuery.py +1 -1
  516. metadata/generated/schema/type/tableUsageCount.py +1 -1
  517. metadata/generated/schema/type/tagLabel.py +1 -1
  518. metadata/generated/schema/type/usageDetails.py +1 -1
  519. metadata/generated/schema/type/usageRequest.py +1 -1
  520. metadata/generated/schema/type/votes.py +1 -1
  521. metadata/great_expectations/action.py +4 -15
  522. metadata/ingestion/api/steps.py +14 -1
  523. metadata/ingestion/api/topology_runner.py +4 -1
  524. metadata/ingestion/models/custom_properties.py +0 -1
  525. metadata/ingestion/ometa/client.py +6 -0
  526. metadata/ingestion/ometa/mixins/custom_property_mixin.py +11 -11
  527. metadata/ingestion/ometa/ometa_api.py +1 -1
  528. metadata/ingestion/sink/metadata_rest.py +2 -2
  529. metadata/ingestion/source/dashboard/looker/metadata.py +3 -4
  530. metadata/ingestion/source/dashboard/metabase/client.py +4 -0
  531. metadata/ingestion/source/dashboard/metabase/metadata.py +5 -4
  532. metadata/ingestion/source/dashboard/metabase/models.py +2 -2
  533. metadata/ingestion/source/dashboard/tableau/metadata.py +18 -0
  534. metadata/ingestion/source/database/bigquery/helper.py +68 -1
  535. metadata/ingestion/source/database/bigquery/metadata.py +12 -3
  536. metadata/ingestion/source/database/bigquery/queries.py +22 -0
  537. metadata/ingestion/source/database/bigtable/client.py +62 -0
  538. metadata/ingestion/source/database/bigtable/connection.py +116 -0
  539. metadata/ingestion/source/database/bigtable/metadata.py +224 -0
  540. metadata/ingestion/source/database/bigtable/models.py +60 -0
  541. metadata/ingestion/source/database/common_db_source.py +2 -2
  542. metadata/ingestion/source/database/common_nosql_source.py +19 -2
  543. metadata/ingestion/source/database/databricks/metadata.py +132 -46
  544. metadata/ingestion/source/database/databricks/queries.py +3 -4
  545. metadata/ingestion/source/database/dbt/metadata.py +16 -28
  546. metadata/ingestion/source/database/oracle/queries.py +2 -2
  547. metadata/ingestion/source/messaging/common_broker_source.py +9 -7
  548. metadata/ingestion/source/messaging/kafka/connection.py +45 -4
  549. metadata/ingestion/source/mlmodel/sagemaker/metadata.py +20 -8
  550. metadata/profiler/orm/functions/conn_test.py +1 -0
  551. metadata/profiler/orm/functions/sum.py +1 -0
  552. metadata/profiler/orm/registry.py +1 -0
  553. metadata/profiler/processor/core.py +2 -2
  554. metadata/utils/datalake/datalake_utils.py +7 -1
  555. metadata/utils/execution_time_tracker.py +199 -0
  556. metadata/utils/filters.py +4 -0
  557. metadata/utils/helpers.py +0 -51
  558. metadata/utils/secrets/aws_based_secrets_manager.py +67 -4
  559. metadata/utils/secrets/aws_secrets_manager.py +7 -2
  560. metadata/utils/secrets/aws_ssm_secrets_manager.py +7 -2
  561. metadata/utils/secrets/azure_kv_secrets_manager.py +148 -0
  562. metadata/utils/secrets/external_secrets_manager.py +25 -3
  563. metadata/utils/secrets/secrets_manager_factory.py +13 -30
  564. metadata/workflow/base.py +4 -0
  565. metadata/workflow/output_handler.py +22 -0
  566. {openmetadata_ingestion-1.3.0.1.dist-info → openmetadata_ingestion-1.3.1.0.dist-info}/METADATA +297 -288
  567. {openmetadata_ingestion-1.3.0.1.dist-info → openmetadata_ingestion-1.3.1.0.dist-info}/RECORD +573 -562
  568. metadata/utils/secrets/client/loader.py +0 -77
  569. /metadata/{utils/secrets/client → ingestion/source/database/bigtable}/__init__.py +0 -0
  570. /metadata/utils/secrets/{noop_secrets_manager.py → db_secrets_manager.py} +0 -0
  571. {openmetadata_ingestion-1.3.0.1.dist-info → openmetadata_ingestion-1.3.1.0.dist-info}/LICENSE +0 -0
  572. {openmetadata_ingestion-1.3.0.1.dist-info → openmetadata_ingestion-1.3.1.0.dist-info}/WHEEL +0 -0
  573. {openmetadata_ingestion-1.3.0.1.dist-info → openmetadata_ingestion-1.3.1.0.dist-info}/entry_points.txt +0 -0
  574. {openmetadata_ingestion-1.3.0.1.dist-info → openmetadata_ingestion-1.3.1.0.dist-info}/top_level.txt +0 -0
@@ -31,8 +31,6 @@ from metadata.generated.schema.entity.services.databaseService import DatabaseSe
31
31
  from metadata.generated.schema.entity.services.ingestionPipelines.status import (
32
32
  StackTraceError,
33
33
  )
34
- from metadata.generated.schema.entity.teams.team import Team
35
- from metadata.generated.schema.entity.teams.user import User
36
34
  from metadata.generated.schema.metadataIngestion.workflow import (
37
35
  Source as WorkflowSource,
38
36
  )
@@ -140,39 +138,29 @@ class DbtSource(DbtServiceSource):
140
138
 
141
139
  def get_dbt_owner(
142
140
  self, manifest_node: dict, catalog_node: Optional[dict]
143
- ) -> Optional[str]:
141
+ ) -> Optional[EntityReference]:
144
142
  """
145
143
  Returns dbt owner
146
144
  """
147
- owner = None
148
- dbt_owner = None
149
- if catalog_node:
150
- dbt_owner = catalog_node.metadata.owner
151
- if manifest_node:
152
- dbt_owner = manifest_node.meta.get(DbtCommonEnum.OWNER.value)
153
- if dbt_owner:
154
- owner_name = dbt_owner
155
- user_owner_fqn = fqn.build(
156
- self.metadata, entity_type=User, user_name=owner_name
157
- )
158
- if user_owner_fqn:
159
- owner = self.metadata.get_entity_reference(
160
- entity=User, fqn=user_owner_fqn
161
- )
162
- else:
163
- team_owner_fqn = fqn.build(
164
- self.metadata, entity_type=Team, team_name=owner_name
165
- )
166
- if team_owner_fqn:
167
- owner = self.metadata.get_entity_reference(
168
- entity=Team, fqn=team_owner_fqn
169
- )
170
- else:
145
+ try:
146
+ owner = None
147
+ dbt_owner = None
148
+ if catalog_node:
149
+ dbt_owner = catalog_node.metadata.owner
150
+ if manifest_node:
151
+ dbt_owner = manifest_node.meta.get(DbtCommonEnum.OWNER.value)
152
+ if dbt_owner:
153
+ owner = self.metadata.get_reference_by_name(name=dbt_owner)
154
+ if not owner:
171
155
  logger.warning(
172
156
  "Unable to ingest owner from DBT since no user or"
173
157
  f" team was found with name {dbt_owner}"
174
158
  )
175
- return owner
159
+ return owner
160
+ except Exception as exc:
161
+ logger.debug(traceback.format_exc())
162
+ logger.warning(f"Unable to ingest owner from DBT due to: {exc}")
163
+ return None
176
164
 
177
165
  def check_columns(self, catalog_node):
178
166
  for catalog_key, catalog_column in catalog_node.get("columns").items():
@@ -172,14 +172,14 @@ SELECT
172
172
  SQL_FULLTEXT AS query_text,
173
173
  TO_TIMESTAMP(FIRST_LOAD_TIME, 'yy-MM-dd/HH24:MI:SS') AS start_time,
174
174
  ELAPSED_TIME / 1000 AS duration,
175
- TO_TIMESTAMP(FIRST_LOAD_TIME, 'yy-MM-dd/HH24:MI:SS') + NUMTODSINTERVAL(ELAPSED_TIME / 1000, 'SECOND') AS end_time
175
+ TO_TIMESTAMP(FIRST_LOAD_TIME, 'yy-MM-dd/HH24:MI:SS') + NUMTODSINTERVAL(ELAPSED_TIME / 1000000, 'SECOND') AS end_time
176
176
  FROM gv$sql
177
177
  WHERE OBJECT_STATUS = 'VALID'
178
178
  {filters}
179
179
  AND SQL_FULLTEXT NOT LIKE '/* {{"app": "OpenMetadata", %%}} */%%'
180
180
  AND SQL_FULLTEXT NOT LIKE '/* {{"app": "dbt", %%}} */%%'
181
181
  AND TO_TIMESTAMP(FIRST_LOAD_TIME, 'yy-MM-dd/HH24:MI:SS') >= TO_TIMESTAMP('{start_time}', 'yy-MM-dd HH24:MI:SS')
182
- AND TO_TIMESTAMP(FIRST_LOAD_TIME, 'yy-MM-dd/HH24:MI:SS') + NUMTODSINTERVAL(ELAPSED_TIME / 1000, 'SECOND')
182
+ AND TO_TIMESTAMP(FIRST_LOAD_TIME, 'yy-MM-dd/HH24:MI:SS') + NUMTODSINTERVAL(ELAPSED_TIME / 1000000, 'SECOND')
183
183
  < TO_TIMESTAMP('{end_time}', 'yy-MM-dd HH24:MI:SS')
184
184
  ORDER BY FIRST_LOAD_TIME DESC
185
185
  OFFSET 0 ROWS FETCH NEXT {result_limit} ROWS ONLY
@@ -226,14 +226,16 @@ class CommonBrokerSource(MessagingServiceSource, ABC):
226
226
  if topic_entity and self.generate_sample_data:
227
227
  topic_name = topic_details.topic_name
228
228
  sample_data = []
229
+ messages = None
229
230
  try:
230
- self.consumer_client.subscribe(
231
- [topic_name], on_assign=on_partitions_assignment_to_consumer
232
- )
233
- logger.info(
234
- f"Broker consumer polling for sample messages in topic {topic_name}"
235
- )
236
- messages = self.consumer_client.consume(num_messages=10, timeout=10)
231
+ if self.consumer_client:
232
+ self.consumer_client.subscribe(
233
+ [topic_name], on_assign=on_partitions_assignment_to_consumer
234
+ )
235
+ logger.info(
236
+ f"Broker consumer polling for sample messages in topic {topic_name}"
237
+ )
238
+ messages = self.consumer_client.consume(num_messages=10, timeout=10)
237
239
  except Exception as exc:
238
240
  yield Either(
239
241
  left=StackTraceError(
@@ -15,7 +15,7 @@ Source connection handler
15
15
  from dataclasses import dataclass
16
16
  from typing import Optional, Union
17
17
 
18
- from confluent_kafka.admin import AdminClient
18
+ from confluent_kafka.admin import AdminClient, KafkaException
19
19
  from confluent_kafka.avro import AvroConsumer
20
20
  from confluent_kafka.schema_registry.schema_registry_client import SchemaRegistryClient
21
21
 
@@ -35,6 +35,21 @@ from metadata.utils.logger import ingestion_logger
35
35
  logger = ingestion_logger()
36
36
 
37
37
 
38
+ class InvalidKafkaCreds(Exception):
39
+ """
40
+ Class to indicate invalid kafka credentials exception
41
+ """
42
+
43
+
44
+ class SchemaRegistryException(Exception):
45
+ """
46
+ Class to indicate invalid schema registry not initialized
47
+ """
48
+
49
+
50
+ TIMEOUT_SECONDS = 10
51
+
52
+
38
53
  @dataclass
39
54
  class KafkaClient:
40
55
  def __init__(self, admin_client, schema_registry_client, consumer_client) -> None:
@@ -60,6 +75,14 @@ def get_connection(
60
75
  if connection.saslMechanism:
61
76
  connection.consumerConfig["sasl.mechanism"] = connection.saslMechanism.value
62
77
 
78
+ if (
79
+ connection.consumerConfig.get("security.protocol") is None
80
+ and connection.securityProtocol
81
+ ):
82
+ connection.consumerConfig[
83
+ "security.protocol"
84
+ ] = connection.securityProtocol.value
85
+
63
86
  if connection.basicAuthUserInfo:
64
87
  connection.schemaRegistryConfig = connection.schemaRegistryConfig or {}
65
88
  connection.schemaRegistryConfig[
@@ -109,9 +132,27 @@ def test_connection(
109
132
  """
110
133
 
111
134
  def custom_executor():
112
- _ = client.admin_client.list_topics().topics
113
-
114
- test_fn = {"GetTopics": custom_executor}
135
+ try:
136
+ client.admin_client.list_topics(timeout=TIMEOUT_SECONDS).topics
137
+ except KafkaException as err:
138
+ raise InvalidKafkaCreds(
139
+ f"Failed to fetch topics due to: {err}. "
140
+ "Please validate credentials and check if you are using correct security protocol"
141
+ )
142
+
143
+ def schema_registry_test():
144
+ if client.schema_registry_client:
145
+ client.schema_registry_client.get_subjects()
146
+ else:
147
+ raise SchemaRegistryException(
148
+ "Schema Registry not initialized, please provide schema registry "
149
+ "credentials in case you want topic schema and sample data to be ingested"
150
+ )
151
+
152
+ test_fn = {
153
+ "GetTopics": custom_executor,
154
+ "CheckSchemaRegistry": schema_registry_test,
155
+ }
115
156
 
116
157
  test_connection_steps(
117
158
  metadata=metadata,
@@ -24,6 +24,9 @@ from metadata.generated.schema.entity.data.mlmodel import (
24
24
  from metadata.generated.schema.entity.services.connections.mlmodel.sageMakerConnection import (
25
25
  SageMakerConnection,
26
26
  )
27
+ from metadata.generated.schema.entity.services.ingestionPipelines.status import (
28
+ StackTraceError,
29
+ )
27
30
  from metadata.generated.schema.metadataIngestion.workflow import (
28
31
  Source as WorkflowSource,
29
32
  )
@@ -128,14 +131,23 @@ class SagemakerSource(MlModelServiceSource):
128
131
  """
129
132
  Prepare the Request model
130
133
  """
131
- mlmodel_request = CreateMlModelRequest(
132
- name=model.name,
133
- algorithm=self._get_algorithm(), # Setting this to a constant
134
- mlStore=self._get_ml_store(model.name),
135
- service=self.context.mlmodel_service,
136
- )
137
- yield mlmodel_request
138
- self.register_record(mlmodel_request=mlmodel_request)
134
+ try:
135
+ mlmodel_request = CreateMlModelRequest(
136
+ name=model.name,
137
+ algorithm=self._get_algorithm(), # Setting this to a constant
138
+ mlStore=self._get_ml_store(model.name),
139
+ service=self.context.mlmodel_service,
140
+ )
141
+ yield Either(right=mlmodel_request)
142
+ self.register_record(mlmodel_request=mlmodel_request)
143
+ except Exception as exc: # pylint: disable=broad-except
144
+ yield Either(
145
+ left=StackTraceError(
146
+ name=model.name,
147
+ error=f"Error creating mlmodel: {exc}",
148
+ stackTrace=traceback.format_exc(),
149
+ )
150
+ )
139
151
 
140
152
  def _get_ml_store( # pylint: disable=arguments-differ
141
153
  self,
@@ -48,6 +48,7 @@ def _(*_, **__):
48
48
 
49
49
  @compiles(ConnTestFn, Dialects.Db2)
50
50
  @compiles(ConnTestFn, Dialects.IbmDbSa)
51
+ @compiles(ConnTestFn, Dialects.Ibmi)
51
52
  def _(*_, **__):
52
53
  return "SELECT 42 FROM SYSIBM.SYSDUMMY1;"
53
54
 
@@ -40,6 +40,7 @@ def _(element, compiler, **kw):
40
40
 
41
41
 
42
42
  @compiles(SumFn, Dialects.BigQuery)
43
+ @compiles(SumFn, Dialects.Postgres)
43
44
  def _(element, compiler, **kw):
44
45
  """Handle case where column type is INTEGER but SUM returns a NUMBER"""
45
46
  proc = compiler.process(element.clauses, **kw)
@@ -64,6 +64,7 @@ class Dialects(Enum):
64
64
  Hive = "hive"
65
65
  Impala = "impala"
66
66
  IbmDbSa = "ibm_db_sa"
67
+ Ibmi = "ibmi"
67
68
  MariaDB = "mariadb"
68
69
  MSSQL = "mssql"
69
70
  MySQL = "mysql"
@@ -53,7 +53,7 @@ from metadata.profiler.metrics.static.row_count import RowCount
53
53
  from metadata.profiler.orm.registry import NOT_COMPUTE
54
54
  from metadata.profiler.processor.sample_data_handler import upload_sample_data
55
55
  from metadata.utils.constants import SAMPLE_DATA_DEFAULT_COUNT
56
- from metadata.utils.helpers import calculate_execution_time
56
+ from metadata.utils.execution_time_tracker import calculate_execution_time
57
57
  from metadata.utils.logger import profiler_logger
58
58
 
59
59
  logger = profiler_logger()
@@ -550,7 +550,7 @@ class Profiler(Generic[TMetric]):
550
550
 
551
551
  return table_profile
552
552
 
553
- @calculate_execution_time
553
+ @calculate_execution_time(store=False)
554
554
  def generate_sample_data(self) -> Optional[TableData]:
555
555
  """Fetch and ingest sample data
556
556
 
@@ -169,6 +169,7 @@ class GenericDataFrameColumnParser:
169
169
  ["datetime64", "timedelta[ns]", "datetime64[ns]"], DataType.DATETIME
170
170
  ),
171
171
  "str": DataType.STRING,
172
+ "bytes": DataType.BYTES,
172
173
  }
173
174
 
174
175
  def __init__(self, data_frame: "DataFrame"):
@@ -247,8 +248,13 @@ class GenericDataFrameColumnParser:
247
248
  data_type = "string"
248
249
 
249
250
  data_type = cls._data_formats.get(
250
- data_type or data_frame[column_name].dtypes.name, DataType.STRING
251
+ data_type or data_frame[column_name].dtypes.name,
251
252
  )
253
+ if not data_type:
254
+ logger.debug(
255
+ f"unknown data type {data_frame[column_name].dtypes.name}. resolving to string."
256
+ )
257
+ data_type = data_type or DataType.STRING
252
258
  except Exception as err:
253
259
  logger.warning(
254
260
  f"Failed to distinguish data type for column {column_name}, Falling back to {data_type}, exc: {err}"
@@ -0,0 +1,199 @@
1
+ # Copyright 2021 Collate
2
+ # Licensed under the Apache License, Version 2.0 (the "License");
3
+ # you may not use this file except in compliance with the License.
4
+ # You may obtain a copy of the License at
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ # Unless required by applicable law or agreed to in writing, software
7
+ # distributed under the License is distributed on an "AS IS" BASIS,
8
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ # See the License for the specific language governing permissions and
10
+ # limitations under the License.
11
+
12
+ """
13
+ ExecutionTimeTracker implementation to help track the execution time of different parts
14
+ of the code.
15
+ """
16
+ from functools import wraps
17
+ from time import perf_counter
18
+ from typing import Dict, List, Optional
19
+
20
+ from pydantic import BaseModel
21
+
22
+ from metadata.utils.helpers import pretty_print_time_duration
23
+ from metadata.utils.logger import utils_logger
24
+ from metadata.utils.singleton import Singleton
25
+
26
+ logger = utils_logger()
27
+
28
+
29
+ class ExecutionTimeTrackerContext(BaseModel):
30
+ """Small Model to hold the ExecutionTimeTracker context."""
31
+
32
+ name: str
33
+ start: float
34
+ stored: bool
35
+
36
+
37
+ class ExecutionTimeTracker(metaclass=Singleton):
38
+ """ExecutionTimeTracker is implemented as a Singleton in order to hold state globally.
39
+
40
+ It works as a Context Manager in order to track and log execution times.
41
+
42
+ Example:
43
+
44
+ def my_function():
45
+ tracker = ExecutionTimeTracker()
46
+
47
+ with tracker(context="MyFunction", store=True):
48
+ other_opeartion()
49
+
50
+ """
51
+
52
+ def __init__(self, enabled: bool = False):
53
+ """When instantiated we can pass if we want it enabled or disabled in order to
54
+ avoid overhead when not needed.
55
+
56
+ Attrs
57
+ ------
58
+ enabled: Defines if it will be enabled or not.
59
+ context: Keeps track of the context levels and their state.
60
+ state: Keeps track of the global state for the Execution Time Tracker.
61
+ """
62
+ self.enabled: bool = enabled
63
+ self.context: List[ExecutionTimeTrackerContext] = []
64
+ self.state: Dict[str, float] = {}
65
+ self.new_context = None
66
+ self.store = True
67
+
68
+ @property
69
+ def last_stored_context_level(self) -> Optional[str]:
70
+ """Returns the last stored context level.
71
+
72
+ In order to provide better logs and keep track where in the code the time is being
73
+ measured we keep track of nested contexts.
74
+
75
+ If a given context is not stored it will only log to debug but won't be part of the
76
+ global state.
77
+ """
78
+ stored_context = [context for context in self.context if context.stored]
79
+
80
+ if stored_context:
81
+ return stored_context[-1].name
82
+
83
+ return None
84
+
85
+ def __call__(self, context: str, store: bool = True):
86
+ """At every point we open a new Context Manager we can pass the current 'context' and
87
+ if we want to 'store' it.
88
+
89
+ Sets the temporary attributes used within the context:
90
+
91
+ new_context: Full Context name, appending the given context to the last stored context level.
92
+ store: If True, it will take part of the global state. Otherwise it will only log to debug.
93
+ """
94
+ self.new_context = ".".join(
95
+ [part for part in [self.last_stored_context_level, context] if part]
96
+ )
97
+ self.store = store
98
+
99
+ return self
100
+
101
+ def __enter__(self):
102
+ """If enabled, when entering the context, we append a new
103
+ ExecutionTimeTrackerContext to the list.
104
+ """
105
+ if self.enabled:
106
+ self.context.append(
107
+ ExecutionTimeTrackerContext(
108
+ name=self.new_context, start=perf_counter(), stored=self.store
109
+ )
110
+ )
111
+
112
+ def __exit__(self, exc_type, exc_val, exc_tb):
113
+ """If enabled, when exiting the context, we calculate the elapsed time and log to debug.
114
+ If the context.stored is True, we also save it to the global state."""
115
+ if self.enabled:
116
+ stop = perf_counter()
117
+ context = self.context.pop(-1)
118
+
119
+ if not context:
120
+ return
121
+
122
+ elapsed = stop - context.start
123
+
124
+ logger.debug(
125
+ "%s executed in %s", context.name, pretty_print_time_duration(elapsed)
126
+ )
127
+
128
+ if context.stored:
129
+ self._save(context, elapsed)
130
+
131
+ def _save(self, context: ExecutionTimeTrackerContext, elapsed: float):
132
+ """Small utility to save the new measure to the global accumulator."""
133
+ self.state[context.name] = self.state.get(context.name, 0) + elapsed
134
+
135
+
136
+ def calculate_execution_time(context: Optional[str] = None, store: bool = True):
137
+ """Utility decorator to be able to use the ExecutionTimeTracker on a function.
138
+
139
+ It receives the context and if it should store it.
140
+
141
+ Example:
142
+
143
+ @calculate_execution_time(context="MyContext")
144
+ def my_function():
145
+ ...
146
+ """
147
+
148
+ def decorator(func):
149
+ @wraps(func)
150
+ def inner(*args, **kwargs):
151
+ execution_time = ExecutionTimeTracker()
152
+
153
+ with execution_time(context or func.__name__, store):
154
+ result = func(*args, **kwargs)
155
+
156
+ return result
157
+
158
+ return inner
159
+
160
+ return decorator
161
+
162
+
163
+ def calculate_execution_time_generator(
164
+ context: Optional[str] = None, store: bool = True
165
+ ):
166
+ """Utility decorator to be able to use the ExecutionTimeTracker on a generator function.
167
+
168
+ It receives the context and if it should store it.
169
+
170
+ Example:
171
+
172
+ @calculate_execution_time_generator(context="MyContext")
173
+ def my_generator():
174
+ ...
175
+ """
176
+
177
+ def decorator(func):
178
+ @wraps(func)
179
+ def inner(*args, **kwargs):
180
+ # NOTE: We are basically implementing by hand a simplified version of 'yield from'
181
+ # in order to be able to calculate the time difference correctly.
182
+ # The 'while True' loop allows us to guarantee we are iterating over all thje values
183
+ # from func(*args, **kwargs).
184
+ execution_time = ExecutionTimeTracker()
185
+
186
+ generator = func(*args, **kwargs)
187
+
188
+ while True:
189
+ with execution_time(context or func.__name__, store):
190
+ try:
191
+ element = next(generator)
192
+ except StopIteration:
193
+ return
194
+
195
+ yield element
196
+
197
+ return inner
198
+
199
+ return decorator
metadata/utils/filters.py CHANGED
@@ -54,6 +54,10 @@ def _filter(filter_pattern: Optional[FilterPattern], name: str) -> bool:
54
54
  # No filter pattern, nothing to filter
55
55
  return False
56
56
 
57
+ if filter_pattern and not name:
58
+ # Filter pattern is present but not the name so we'll filter it out
59
+ return True
60
+
57
61
  if filter_pattern.includes:
58
62
  validate_regex(filter_pattern.includes)
59
63
  return not any( # pylint: disable=use-a-generator
metadata/utils/helpers.py CHANGED
@@ -20,10 +20,8 @@ import re
20
20
  import shutil
21
21
  import sys
22
22
  from datetime import datetime, timedelta
23
- from functools import wraps
24
23
  from math import floor, log
25
24
  from pathlib import Path
26
- from time import perf_counter
27
25
  from typing import Any, Dict, Iterable, List, Optional, Tuple, Union
28
26
 
29
27
  import sqlparse
@@ -101,55 +99,6 @@ om_chart_type_dict = {
101
99
  }
102
100
 
103
101
 
104
- def calculate_execution_time(func):
105
- """
106
- Method to calculate workflow execution time
107
- """
108
-
109
- @wraps(func)
110
- def calculate_debug_time(*args, **kwargs):
111
- start = perf_counter()
112
- result = func(*args, **kwargs)
113
- end = perf_counter()
114
- logger.debug(
115
- f"{func.__name__} executed in { pretty_print_time_duration(end - start)}"
116
- )
117
- return result
118
-
119
- return calculate_debug_time
120
-
121
-
122
- def calculate_execution_time_generator(func):
123
- """
124
- Generator method to calculate workflow execution time
125
- """
126
-
127
- def calculate_debug_time(*args, **kwargs):
128
- # NOTE: We are basically implementing by hand a simplified version of 'yield from'
129
- # in order to be able to calculate the time difference correctly.
130
- # The 'while True' loop allows us to guarantee we are iterating over all thje values
131
- # from func(*args, **kwargs).
132
- generator = func(*args, **kwargs)
133
-
134
- while True:
135
- start = perf_counter()
136
-
137
- try:
138
- element = next(generator)
139
- except StopIteration:
140
- return
141
-
142
- end = perf_counter()
143
-
144
- logger.debug(
145
- f"{func.__name__} executed in { pretty_print_time_duration(end - start)}"
146
- )
147
-
148
- yield element
149
-
150
- return calculate_debug_time
151
-
152
-
153
102
  def pretty_print_time_duration(duration: Union[int, float]) -> str:
154
103
  """
155
104
  Method to format and display the time
@@ -12,20 +12,75 @@
12
12
  """
13
13
  Abstract class for AWS based secrets manager implementations
14
14
  """
15
+ import os
15
16
  from abc import ABC, abstractmethod
16
17
  from typing import Optional
17
18
 
18
19
  from metadata.clients.aws_client import AWSClient
20
+ from metadata.generated.schema.security.secrets.secretsManagerClientLoader import (
21
+ SecretsManagerClientLoader,
22
+ )
19
23
  from metadata.generated.schema.security.secrets.secretsManagerProvider import (
20
24
  SecretsManagerProvider,
21
25
  )
26
+ from metadata.ingestion.models.custom_pydantic import CustomSecretStr
27
+ from metadata.utils.dispatch import enum_register
22
28
  from metadata.utils.logger import utils_logger
23
- from metadata.utils.secrets.external_secrets_manager import ExternalSecretsManager
29
+ from metadata.utils.secrets.external_secrets_manager import (
30
+ SECRET_MANAGER_AIRFLOW_CONF,
31
+ ExternalSecretsManager,
32
+ SecretsManagerConfigException,
33
+ )
24
34
 
25
35
  logger = utils_logger()
26
36
 
27
37
  NULL_VALUE = "null"
28
38
 
39
+ secrets_manager_client_loader = enum_register()
40
+
41
+
42
+ # pylint: disable=import-outside-toplevel
43
+ @secrets_manager_client_loader.add(SecretsManagerClientLoader.noop.value)
44
+ def _() -> None:
45
+ return None
46
+
47
+
48
+ @secrets_manager_client_loader.add(SecretsManagerClientLoader.airflow.value)
49
+ def _() -> Optional["AWSCredentials"]:
50
+ from airflow.configuration import conf
51
+
52
+ from metadata.generated.schema.security.credentials.awsCredentials import (
53
+ AWSCredentials,
54
+ )
55
+
56
+ aws_region = conf.get(SECRET_MANAGER_AIRFLOW_CONF, "aws_region", fallback=None)
57
+ if aws_region:
58
+ credentials = AWSCredentials(awsRegion=aws_region)
59
+ credentials.awsAccessKeyId = conf.get(
60
+ SECRET_MANAGER_AIRFLOW_CONF, "aws_access_key_id", fallback=""
61
+ )
62
+ credentials.awsSecretAccessKey = CustomSecretStr(
63
+ conf.get(SECRET_MANAGER_AIRFLOW_CONF, "aws_secret_access_key", fallback="")
64
+ )
65
+ return credentials
66
+
67
+ return None
68
+
69
+
70
+ @secrets_manager_client_loader.add(SecretsManagerClientLoader.env.value)
71
+ def _() -> Optional["AWSCredentials"]:
72
+ from metadata.generated.schema.security.credentials.awsCredentials import (
73
+ AWSCredentials,
74
+ )
75
+
76
+ # Loading the env vars required by boto3
77
+ # https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html
78
+ aws_region = os.getenv("AWS_DEFAULT_REGION")
79
+ if aws_region:
80
+ return AWSCredentials(awsRegion=aws_region)
81
+
82
+ return None
83
+
29
84
 
30
85
  class AWSBasedSecretsManager(ExternalSecretsManager, ABC):
31
86
  """
@@ -34,12 +89,12 @@ class AWSBasedSecretsManager(ExternalSecretsManager, ABC):
34
89
 
35
90
  def __init__(
36
91
  self,
37
- credentials: Optional["AWSCredentials"],
38
92
  client: str,
39
93
  provider: SecretsManagerProvider,
94
+ loader: SecretsManagerClientLoader,
40
95
  ):
41
- super().__init__(provider)
42
- self.client = AWSClient(credentials).get_client(client)
96
+ super().__init__(provider=provider, loader=loader)
97
+ self.client = AWSClient(self.credentials).get_client(client)
43
98
 
44
99
  @abstractmethod
45
100
  def get_string_value(self, secret_id: str) -> str:
@@ -47,3 +102,11 @@ class AWSBasedSecretsManager(ExternalSecretsManager, ABC):
47
102
  :param secret_id: The secret id to retrieve
48
103
  :return: The value of the secret
49
104
  """
105
+
106
+ def load_credentials(self) -> Optional["AWSCredentials"]:
107
+ """Load the provider credentials based on the loader type"""
108
+ try:
109
+ loader_fn = secrets_manager_client_loader.registry.get(self.loader.value)
110
+ return loader_fn()
111
+ except Exception as err:
112
+ raise SecretsManagerConfigException(f"Error loading credentials - [{err}]")