openmetadata-ingestion 1.9.3.0__py3-none-any.whl → 1.9.4.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 (771) hide show
  1. metadata/data_quality/validations/runtime_param_setter/base_diff_params_setter.py +27 -4
  2. metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +1 -0
  3. metadata/generated/schema/analytics/__init__.py +1 -1
  4. metadata/generated/schema/analytics/basic.py +1 -1
  5. metadata/generated/schema/analytics/reportData.py +1 -1
  6. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  7. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  8. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  9. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  10. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  11. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  12. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  13. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  14. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  15. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  16. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  17. metadata/generated/schema/api/__init__.py +1 -1
  18. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  19. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
  20. metadata/generated/schema/api/analytics/__init__.py +1 -1
  21. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  22. metadata/generated/schema/api/automations/__init__.py +1 -1
  23. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  24. metadata/generated/schema/api/bulkAssets.py +1 -1
  25. metadata/generated/schema/api/classification/__init__.py +1 -1
  26. metadata/generated/schema/api/classification/createClassification.py +1 -1
  27. metadata/generated/schema/api/classification/createTag.py +1 -1
  28. metadata/generated/schema/api/classification/loadTags.py +1 -1
  29. metadata/generated/schema/api/createBot.py +1 -1
  30. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  31. metadata/generated/schema/api/createType.py +1 -1
  32. metadata/generated/schema/api/data/__init__.py +1 -1
  33. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  34. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  35. metadata/generated/schema/api/data/createChart.py +1 -1
  36. metadata/generated/schema/api/data/createContainer.py +1 -1
  37. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  38. metadata/generated/schema/api/data/createDashboard.py +1 -1
  39. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  40. metadata/generated/schema/api/data/createDataContract.py +1 -1
  41. metadata/generated/schema/api/data/createDatabase.py +1 -1
  42. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  43. metadata/generated/schema/api/data/createDirectory.py +1 -1
  44. metadata/generated/schema/api/data/createFile.py +1 -1
  45. metadata/generated/schema/api/data/createGlossary.py +1 -1
  46. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  47. metadata/generated/schema/api/data/createMetric.py +1 -1
  48. metadata/generated/schema/api/data/createMlModel.py +1 -1
  49. metadata/generated/schema/api/data/createPipeline.py +1 -1
  50. metadata/generated/schema/api/data/createQuery.py +1 -1
  51. metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
  52. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  53. metadata/generated/schema/api/data/createSpreadsheet.py +1 -1
  54. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  55. metadata/generated/schema/api/data/createTable.py +1 -1
  56. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  57. metadata/generated/schema/api/data/createTopic.py +1 -1
  58. metadata/generated/schema/api/data/createWorksheet.py +1 -1
  59. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  60. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  61. metadata/generated/schema/api/data/updateColumn.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/custom/__init__.py +1 -1
  65. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  66. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  67. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  68. metadata/generated/schema/api/docStore/__init__.py +1 -1
  69. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  70. metadata/generated/schema/api/domains/__init__.py +1 -1
  71. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  72. metadata/generated/schema/api/domains/createDomain.py +1 -1
  73. metadata/generated/schema/api/entityRelationship/__init__.py +1 -1
  74. metadata/generated/schema/api/entityRelationship/entityRelationshipDirection.py +1 -1
  75. metadata/generated/schema/api/entityRelationship/esEntityRelationshipData.py +1 -1
  76. metadata/generated/schema/api/entityRelationship/relationshipRef.py +1 -1
  77. metadata/generated/schema/api/entityRelationship/searchEntityRelationshipRequest.py +1 -1
  78. metadata/generated/schema/api/entityRelationship/searchEntityRelationshipResult.py +1 -1
  79. metadata/generated/schema/api/entityRelationship/searchSchemaEntityRelationshipResult.py +1 -1
  80. metadata/generated/schema/api/feed/__init__.py +1 -1
  81. metadata/generated/schema/api/feed/closeTask.py +1 -1
  82. metadata/generated/schema/api/feed/createPost.py +1 -1
  83. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  84. metadata/generated/schema/api/feed/createThread.py +1 -1
  85. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  86. metadata/generated/schema/api/feed/threadCount.py +1 -1
  87. metadata/generated/schema/api/governance/__init__.py +1 -1
  88. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  89. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  90. metadata/generated/schema/api/lineage/__init__.py +1 -1
  91. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  92. metadata/generated/schema/api/lineage/esLineageData.py +1 -1
  93. metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
  94. metadata/generated/schema/api/lineage/nodeInformation.py +1 -1
  95. metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
  96. metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
  97. metadata/generated/schema/api/mcp/__init__.py +1 -1
  98. metadata/generated/schema/api/mcp/mcpSearchResponse.py +1 -1
  99. metadata/generated/schema/api/mcp/mcpToolDefinition.py +1 -1
  100. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  101. metadata/generated/schema/api/policies/__init__.py +1 -1
  102. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  103. metadata/generated/schema/api/scim/__init__.py +1 -1
  104. metadata/generated/schema/api/scim/scimGroup.py +1 -1
  105. metadata/generated/schema/api/scim/scimPatchOp.py +1 -1
  106. metadata/generated/schema/api/scim/scimUser.py +1 -1
  107. metadata/generated/schema/api/search/__init__.py +1 -1
  108. metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
  109. metadata/generated/schema/api/services/__init__.py +1 -1
  110. metadata/generated/schema/api/services/createApiService.py +1 -1
  111. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  112. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  113. metadata/generated/schema/api/services/createDriveService.py +1 -1
  114. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  115. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  116. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  117. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  118. metadata/generated/schema/api/services/createSearchService.py +1 -1
  119. metadata/generated/schema/api/services/createSecurityService.py +1 -1
  120. metadata/generated/schema/api/services/createStorageService.py +1 -1
  121. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  122. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  123. metadata/generated/schema/api/setOwner.py +1 -1
  124. metadata/generated/schema/api/teams/__init__.py +1 -1
  125. metadata/generated/schema/api/teams/createPersona.py +1 -1
  126. metadata/generated/schema/api/teams/createRole.py +1 -1
  127. metadata/generated/schema/api/teams/createTeam.py +1 -1
  128. metadata/generated/schema/api/teams/createUser.py +1 -1
  129. metadata/generated/schema/api/tests/__init__.py +1 -1
  130. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  131. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  132. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  133. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  134. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  135. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  136. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  137. metadata/generated/schema/api/tests/moveGlossaryTermRequest.py +1 -1
  138. metadata/generated/schema/api/validateGlossaryTagsRequest.py +1 -1
  139. metadata/generated/schema/api/voteRequest.py +1 -1
  140. metadata/generated/schema/auth/__init__.py +1 -1
  141. metadata/generated/schema/auth/basicAuth.py +1 -1
  142. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  143. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  144. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  145. metadata/generated/schema/auth/emailRequest.py +1 -1
  146. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  147. metadata/generated/schema/auth/generateToken.py +1 -1
  148. metadata/generated/schema/auth/jwtAuth.py +1 -1
  149. metadata/generated/schema/auth/loginRequest.py +1 -1
  150. metadata/generated/schema/auth/logoutRequest.py +1 -1
  151. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  152. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  153. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  154. metadata/generated/schema/auth/refreshToken.py +1 -1
  155. metadata/generated/schema/auth/registrationRequest.py +1 -1
  156. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  157. metadata/generated/schema/auth/revokeToken.py +1 -1
  158. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  159. metadata/generated/schema/auth/ssoAuth.py +1 -1
  160. metadata/generated/schema/auth/supportToken.py +1 -1
  161. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  162. metadata/generated/schema/configuration/__init__.py +1 -1
  163. metadata/generated/schema/configuration/aiPlatformConfiguration.py +1 -1
  164. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  165. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  166. metadata/generated/schema/configuration/authConfig.py +1 -1
  167. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  168. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  169. metadata/generated/schema/configuration/cacheConfiguration.py +1 -1
  170. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  171. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  172. metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
  173. metadata/generated/schema/configuration/entityRulesSettings.py +1 -1
  174. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  175. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  176. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  177. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  178. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  179. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  180. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  181. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  182. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  183. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  184. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  185. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  186. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  187. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  188. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  189. metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +1 -1
  190. metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
  191. metadata/generated/schema/configuration/opsConfig.py +1 -1
  192. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  193. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  194. metadata/generated/schema/configuration/searchSettings.py +1 -1
  195. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  196. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  197. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  198. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  199. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  200. metadata/generated/schema/configuration/workflowSettings.py +1 -1
  201. metadata/generated/schema/dataInsight/__init__.py +1 -1
  202. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  203. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  204. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  205. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  206. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  207. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  208. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  209. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  210. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  211. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  212. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  213. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  214. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  215. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  216. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  217. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  218. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  219. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  220. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  221. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  222. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  223. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  224. metadata/generated/schema/email/__init__.py +1 -1
  225. metadata/generated/schema/email/emailRequest.py +1 -1
  226. metadata/generated/schema/email/emailTemplate.py +1 -1
  227. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  228. metadata/generated/schema/email/smtpSettings.py +1 -1
  229. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  230. metadata/generated/schema/entity/__init__.py +1 -1
  231. metadata/generated/schema/entity/applications/__init__.py +1 -1
  232. metadata/generated/schema/entity/applications/app.py +1 -1
  233. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  234. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  235. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  236. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  237. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  238. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  239. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  240. metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
  241. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  242. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  243. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  244. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  245. metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
  246. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  247. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  248. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  249. metadata/generated/schema/entity/applications/configuration/external/automator/propagationStopConfig.py +1 -1
  250. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  251. metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  253. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  254. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  255. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  256. metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  262. metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
  263. metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
  264. metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
  265. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  266. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  267. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
  268. metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
  269. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  270. metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
  271. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  272. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  273. metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
  274. metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
  275. metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
  276. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  277. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  278. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  279. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  280. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  281. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  282. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  283. metadata/generated/schema/entity/automations/__init__.py +1 -1
  284. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  285. metadata/generated/schema/entity/automations/workflow.py +1 -1
  286. metadata/generated/schema/entity/bot.py +1 -1
  287. metadata/generated/schema/entity/classification/__init__.py +1 -1
  288. metadata/generated/schema/entity/classification/classification.py +1 -1
  289. metadata/generated/schema/entity/classification/tag.py +1 -1
  290. metadata/generated/schema/entity/data/__init__.py +1 -1
  291. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  292. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  293. metadata/generated/schema/entity/data/chart.py +1 -1
  294. metadata/generated/schema/entity/data/container.py +1 -1
  295. metadata/generated/schema/entity/data/dashboard.py +1 -1
  296. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  297. metadata/generated/schema/entity/data/dataContract.py +1 -1
  298. metadata/generated/schema/entity/data/database.py +1 -1
  299. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  300. metadata/generated/schema/entity/data/directory.py +1 -1
  301. metadata/generated/schema/entity/data/file.py +1 -1
  302. metadata/generated/schema/entity/data/glossary.py +1 -1
  303. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  304. metadata/generated/schema/entity/data/metric.py +1 -1
  305. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  306. metadata/generated/schema/entity/data/pipeline.py +1 -1
  307. metadata/generated/schema/entity/data/query.py +1 -1
  308. metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
  309. metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
  310. metadata/generated/schema/entity/data/report.py +1 -1
  311. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  312. metadata/generated/schema/entity/data/spreadsheet.py +1 -1
  313. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  314. metadata/generated/schema/entity/data/table.py +1 -1
  315. metadata/generated/schema/entity/data/topic.py +1 -1
  316. metadata/generated/schema/entity/data/worksheet.py +1 -1
  317. metadata/generated/schema/entity/datacontract/__init__.py +1 -1
  318. metadata/generated/schema/entity/datacontract/dataContractResult.py +1 -1
  319. metadata/generated/schema/entity/datacontract/qualityValidation.py +1 -1
  320. metadata/generated/schema/entity/datacontract/schemaValidation.py +1 -1
  321. metadata/generated/schema/entity/datacontract/semanticsValidation.py +1 -1
  322. metadata/generated/schema/entity/datacontract/slaValidation.py +1 -1
  323. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  324. metadata/generated/schema/entity/docStore/document.py +1 -1
  325. metadata/generated/schema/entity/domains/__init__.py +1 -1
  326. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  327. metadata/generated/schema/entity/domains/domain.py +1 -1
  328. metadata/generated/schema/entity/events/__init__.py +1 -1
  329. metadata/generated/schema/entity/events/webhook.py +1 -1
  330. metadata/generated/schema/entity/feed/__init__.py +1 -1
  331. metadata/generated/schema/entity/feed/assets.py +1 -1
  332. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  333. metadata/generated/schema/entity/feed/description.py +1 -1
  334. metadata/generated/schema/entity/feed/domain.py +1 -1
  335. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  336. metadata/generated/schema/entity/feed/owner.py +1 -1
  337. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  338. metadata/generated/schema/entity/feed/tag.py +1 -1
  339. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  340. metadata/generated/schema/entity/feed/thread.py +1 -1
  341. metadata/generated/schema/entity/policies/__init__.py +1 -1
  342. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  343. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  344. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  345. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  346. metadata/generated/schema/entity/policies/filters.py +1 -1
  347. metadata/generated/schema/entity/policies/policy.py +1 -1
  348. metadata/generated/schema/entity/services/__init__.py +1 -1
  349. metadata/generated/schema/entity/services/apiService.py +1 -1
  350. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  351. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  352. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  353. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  354. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  355. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  356. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  357. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  358. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  359. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  360. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  361. metadata/generated/schema/entity/services/connections/dashboard/grafanaConnection.py +1 -1
  362. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  363. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  364. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  367. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  369. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  370. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  371. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  372. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  373. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  374. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  375. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  376. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  377. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  378. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  379. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/dashboard/thoughtSpotConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  383. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/epicConnection.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  422. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  430. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  431. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  432. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  441. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  446. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/database/ssasConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/drive/__init__.py +1 -1
  455. metadata/generated/schema/entity/services/connections/drive/customDriveConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/drive/googleDriveConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/drive/sharePointConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  459. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  460. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  461. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  462. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  463. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  464. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  465. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  466. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  470. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  471. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  473. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  474. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  476. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  477. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  478. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  479. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  482. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  484. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  487. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  488. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  489. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  490. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  491. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  492. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  493. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  494. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  495. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  496. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  497. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  498. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  499. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  500. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  501. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  502. metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
  503. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  504. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  505. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  506. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  507. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  508. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  509. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  510. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  511. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  512. metadata/generated/schema/entity/services/connections/security/__init__.py +1 -1
  513. metadata/generated/schema/entity/services/connections/security/ranger/__init__.py +1 -1
  514. metadata/generated/schema/entity/services/connections/security/ranger/basicAuth.py +1 -1
  515. metadata/generated/schema/entity/services/connections/security/rangerConnection.py +1 -1
  516. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  517. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  518. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  519. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  520. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  521. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  522. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  523. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  524. metadata/generated/schema/entity/services/dashboardService.py +1 -1
  525. metadata/generated/schema/entity/services/databaseService.py +1 -1
  526. metadata/generated/schema/entity/services/driveService.py +1 -1
  527. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  528. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  529. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  530. metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
  531. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  532. metadata/generated/schema/entity/services/messagingService.py +1 -1
  533. metadata/generated/schema/entity/services/metadataService.py +1 -1
  534. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  535. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  536. metadata/generated/schema/entity/services/searchService.py +1 -1
  537. metadata/generated/schema/entity/services/securityService.py +1 -1
  538. metadata/generated/schema/entity/services/serviceType.py +1 -1
  539. metadata/generated/schema/entity/services/storageService.py +1 -1
  540. metadata/generated/schema/entity/teams/__init__.py +1 -1
  541. metadata/generated/schema/entity/teams/persona.py +1 -1
  542. metadata/generated/schema/entity/teams/role.py +1 -1
  543. metadata/generated/schema/entity/teams/team.py +1 -1
  544. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  545. metadata/generated/schema/entity/teams/user.py +1 -1
  546. metadata/generated/schema/entity/type.py +1 -1
  547. metadata/generated/schema/entity/utils/__init__.py +1 -1
  548. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  549. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  550. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  551. metadata/generated/schema/events/__init__.py +1 -1
  552. metadata/generated/schema/events/alertMetrics.py +1 -1
  553. metadata/generated/schema/events/api/__init__.py +1 -1
  554. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  555. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  556. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  557. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  558. metadata/generated/schema/events/api/typedEvent.py +1 -1
  559. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  560. metadata/generated/schema/events/eventFilterRule.py +1 -1
  561. metadata/generated/schema/events/eventSubscription.py +1 -1
  562. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  563. metadata/generated/schema/events/failedEvent.py +1 -1
  564. metadata/generated/schema/events/failedEventResponse.py +1 -1
  565. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  566. metadata/generated/schema/events/statusContext.py +1 -1
  567. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  568. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  569. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  570. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  571. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  572. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  573. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  574. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  575. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  576. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  577. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  578. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
  579. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
  580. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  581. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  582. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  583. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  584. metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
  585. metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
  586. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  587. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  588. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  589. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  590. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  591. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  592. metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
  593. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  594. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  595. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  596. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  597. metadata/generated/schema/jobs/__init__.py +1 -1
  598. metadata/generated/schema/jobs/backgroundJob.py +1 -1
  599. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  600. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  601. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  602. metadata/generated/schema/metadataIngestion/application.py +1 -1
  603. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  604. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  605. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  606. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  607. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  608. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  609. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  610. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  611. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  612. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  613. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  614. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  615. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  616. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  617. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  618. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  619. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  620. metadata/generated/schema/metadataIngestion/driveServiceMetadataPipeline.py +1 -1
  621. metadata/generated/schema/metadataIngestion/engine/__init__.py +1 -1
  622. metadata/generated/schema/metadataIngestion/engine/nativeEngineConfig.py +1 -1
  623. metadata/generated/schema/metadataIngestion/engine/sparkEngineConfig.py +1 -1
  624. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  625. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  626. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  627. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  628. metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
  629. metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
  630. metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
  631. metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
  632. metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
  633. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  634. metadata/generated/schema/metadataIngestion/securityServiceMetadataPipeline.py +1 -1
  635. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  636. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  637. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  638. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  639. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  640. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  641. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  642. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  643. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  644. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  645. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  646. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  647. metadata/generated/schema/monitoring/__init__.py +1 -1
  648. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  649. metadata/generated/schema/scim/__init__.py +1 -1
  650. metadata/generated/schema/scim/scimConfiguration.py +1 -1
  651. metadata/generated/schema/search/__init__.py +1 -1
  652. metadata/generated/schema/search/aggregationRequest.py +1 -1
  653. metadata/generated/schema/search/searchRequest.py +1 -1
  654. metadata/generated/schema/security/__init__.py +1 -1
  655. metadata/generated/schema/security/client/__init__.py +1 -1
  656. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  657. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  658. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  659. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  660. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  661. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  662. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  663. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  664. metadata/generated/schema/security/credentials/__init__.py +1 -1
  665. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  666. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  667. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  668. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  669. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  670. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  671. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  672. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  673. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  674. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  675. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  676. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  677. metadata/generated/schema/security/credentials/kubernetesCredentials.py +1 -1
  678. metadata/generated/schema/security/sasl/__init__.py +1 -1
  679. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  680. metadata/generated/schema/security/secrets/__init__.py +1 -1
  681. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  682. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  683. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  684. metadata/generated/schema/security/securityConfiguration.py +1 -1
  685. metadata/generated/schema/security/ssl/__init__.py +1 -1
  686. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  687. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  688. metadata/generated/schema/settings/__init__.py +1 -1
  689. metadata/generated/schema/settings/settings.py +1 -1
  690. metadata/generated/schema/system/__init__.py +1 -1
  691. metadata/generated/schema/system/entityError.py +1 -1
  692. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  693. metadata/generated/schema/system/indexingError.py +1 -1
  694. metadata/generated/schema/system/limitsResponse.py +1 -1
  695. metadata/generated/schema/system/ui/__init__.py +1 -1
  696. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  697. metadata/generated/schema/system/ui/navigationItem.py +1 -1
  698. metadata/generated/schema/system/ui/page.py +1 -1
  699. metadata/generated/schema/system/ui/tab.py +1 -1
  700. metadata/generated/schema/system/ui/uiCustomization.py +1 -1
  701. metadata/generated/schema/system/validationResponse.py +1 -1
  702. metadata/generated/schema/tests/__init__.py +1 -1
  703. metadata/generated/schema/tests/assigned.py +1 -1
  704. metadata/generated/schema/tests/basic.py +1 -1
  705. metadata/generated/schema/tests/customMetric.py +1 -1
  706. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  707. metadata/generated/schema/tests/resolved.py +1 -1
  708. metadata/generated/schema/tests/testCase.py +1 -1
  709. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  710. metadata/generated/schema/tests/testDefinition.py +1 -1
  711. metadata/generated/schema/tests/testSuite.py +1 -1
  712. metadata/generated/schema/type/__init__.py +1 -1
  713. metadata/generated/schema/type/apiSchema.py +1 -1
  714. metadata/generated/schema/type/assetCertification.py +1 -1
  715. metadata/generated/schema/type/auditLog.py +1 -1
  716. metadata/generated/schema/type/basic.py +1 -1
  717. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  718. metadata/generated/schema/type/changeEvent.py +1 -1
  719. metadata/generated/schema/type/changeEventType.py +1 -1
  720. metadata/generated/schema/type/changeSummaryMap.py +1 -1
  721. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  722. metadata/generated/schema/type/contractExecutionStatus.py +1 -1
  723. metadata/generated/schema/type/csvDocumentation.py +1 -1
  724. metadata/generated/schema/type/csvErrorType.py +1 -1
  725. metadata/generated/schema/type/csvFile.py +1 -1
  726. metadata/generated/schema/type/csvImportResult.py +1 -1
  727. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  728. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  729. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  730. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  731. metadata/generated/schema/type/customProperty.py +1 -1
  732. metadata/generated/schema/type/dailyCount.py +1 -1
  733. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  734. metadata/generated/schema/type/entityHierarchy.py +1 -1
  735. metadata/generated/schema/type/entityHistory.py +1 -1
  736. metadata/generated/schema/type/entityLineage.py +1 -1
  737. metadata/generated/schema/type/entityReference.py +1 -1
  738. metadata/generated/schema/type/entityReferenceList.py +1 -1
  739. metadata/generated/schema/type/entityRelationship/__init__.py +1 -1
  740. metadata/generated/schema/type/entityRelationship/nodeInformation.py +1 -1
  741. metadata/generated/schema/type/entityUsage.py +1 -1
  742. metadata/generated/schema/type/filterPattern.py +1 -1
  743. metadata/generated/schema/type/function.py +1 -1
  744. metadata/generated/schema/type/include.py +1 -1
  745. metadata/generated/schema/type/jdbcConnection.py +1 -1
  746. metadata/generated/schema/type/layerPaging.py +1 -1
  747. metadata/generated/schema/type/lifeCycle.py +1 -1
  748. metadata/generated/schema/type/paging.py +1 -1
  749. metadata/generated/schema/type/personaPreferences.py +1 -1
  750. metadata/generated/schema/type/profile.py +1 -1
  751. metadata/generated/schema/type/queryParserData.py +1 -1
  752. metadata/generated/schema/type/reaction.py +1 -1
  753. metadata/generated/schema/type/schedule.py +1 -1
  754. metadata/generated/schema/type/schema.py +1 -1
  755. metadata/generated/schema/type/tableQuery.py +1 -1
  756. metadata/generated/schema/type/tableUsageCount.py +1 -1
  757. metadata/generated/schema/type/tagLabel.py +1 -1
  758. metadata/generated/schema/type/usageDetails.py +1 -1
  759. metadata/generated/schema/type/usageRequest.py +1 -1
  760. metadata/generated/schema/type/votes.py +1 -1
  761. metadata/ingestion/lineage/sql_lineage.py +10 -3
  762. metadata/ingestion/source/database/oracle/connection.py +162 -106
  763. metadata/ingestion/source/database/oracle/service_spec.py +2 -0
  764. metadata/ingestion/source/database/saphana/cdata_parser.py +151 -48
  765. metadata/ingestion/source/database/unitycatalog/lineage.py +33 -20
  766. {openmetadata_ingestion-1.9.3.0.dist-info → openmetadata_ingestion-1.9.4.0.dist-info}/METADATA +536 -536
  767. {openmetadata_ingestion-1.9.3.0.dist-info → openmetadata_ingestion-1.9.4.0.dist-info}/RECORD +771 -771
  768. {openmetadata_ingestion-1.9.3.0.dist-info → openmetadata_ingestion-1.9.4.0.dist-info}/LICENSE +0 -0
  769. {openmetadata_ingestion-1.9.3.0.dist-info → openmetadata_ingestion-1.9.4.0.dist-info}/WHEEL +0 -0
  770. {openmetadata_ingestion-1.9.3.0.dist-info → openmetadata_ingestion-1.9.4.0.dist-info}/entry_points.txt +0 -0
  771. {openmetadata_ingestion-1.9.3.0.dist-info → openmetadata_ingestion-1.9.4.0.dist-info}/top_level.txt +0 -0
@@ -14,6 +14,7 @@ Source connection handler
14
14
  """
15
15
  import os
16
16
  import sys
17
+ from copy import deepcopy
17
18
  from typing import Optional
18
19
  from urllib.parse import quote_plus
19
20
 
@@ -26,7 +27,9 @@ from metadata.generated.schema.entity.automations.workflow import (
26
27
  Workflow as AutomationWorkflow,
27
28
  )
28
29
  from metadata.generated.schema.entity.services.connections.database.oracleConnection import (
29
- OracleConnection,
30
+ OracleConnection as OracleConnectionConfig,
31
+ )
32
+ from metadata.generated.schema.entity.services.connections.database.oracleConnection import (
30
33
  OracleDatabaseSchema,
31
34
  OracleServiceName,
32
35
  OracleTNSConnection,
@@ -39,6 +42,8 @@ from metadata.ingestion.connections.builders import (
39
42
  get_connection_args_common,
40
43
  get_connection_options_dict,
41
44
  )
45
+ from metadata.ingestion.connections.connection import BaseConnection
46
+ from metadata.ingestion.connections.secrets import connection_with_options_secrets
42
47
  from metadata.ingestion.connections.test_connections import test_connection_db_common
43
48
  from metadata.ingestion.ometa.ometa_api import OpenMetadata
44
49
  from metadata.ingestion.source.database.oracle.queries import (
@@ -55,123 +60,174 @@ LD_LIB_ENV = "LD_LIBRARY_PATH"
55
60
  logger = ingestion_logger()
56
61
 
57
62
 
58
- def get_connection_url(connection: OracleConnection) -> str:
59
- """
60
- Build the URL and handle driver version at system level
61
- """
62
-
63
- oracledb.version = CX_ORACLE_LIB_VERSION
64
- sys.modules["cx_Oracle"] = oracledb
63
+ class OracleConnection(BaseConnection[OracleConnectionConfig, Engine]):
64
+ def __init__(self, connection: OracleConnectionConfig):
65
+ super().__init__(connection)
65
66
 
66
- url = f"{connection.scheme.value}://"
67
- if connection.username:
68
- url += f"{quote_plus(connection.username)}"
69
- if not connection.password:
70
- connection.password = SecretStr("")
71
- url += f":{quote_plus(connection.password.get_secret_value())}"
72
- url += "@"
73
-
74
- url = _handle_connection_type(url=url, connection=connection)
75
-
76
- options = get_connection_options_dict(connection)
77
- if options:
78
- params = "&".join(
79
- f"{key}={quote_plus(value)}" for (key, value) in options.items() if value
67
+ def _get_client(self) -> Engine:
68
+ """
69
+ Create connection
70
+ """
71
+ try:
72
+ if self.service_connection.instantClientDirectory:
73
+ logger.info(
74
+ f"Initializing Oracle thick client at {self.service_connection.instantClientDirectory}"
75
+ )
76
+ os.environ[LD_LIB_ENV] = self.service_connection.instantClientDirectory
77
+ oracledb.init_oracle_client(
78
+ lib_dir=self.service_connection.instantClientDirectory
79
+ )
80
+ except DatabaseError as err:
81
+ logger.info(f"Could not initialize Oracle thick client: {err}")
82
+
83
+ return create_generic_db_connection(
84
+ connection=self.service_connection,
85
+ get_connection_url_fn=self.get_connection_url,
86
+ get_connection_args_fn=get_connection_args_common,
80
87
  )
81
- if isinstance(connection.oracleConnectionType, OracleServiceName):
82
- url = f"{url}&{params}"
83
- else:
84
- url = f"{url}?{params}"
85
-
86
- return url
87
-
88
-
89
- def _handle_connection_type(url: str, connection: OracleConnection) -> str:
90
- """
91
- Depending on the oracle connection type, we need to handle the URL differently
92
- """
93
-
94
- if isinstance(connection.oracleConnectionType, OracleTNSConnection):
95
- # ref https://stackoverflow.com/questions/14140902/using-oracle-service-names-with-sqlalchemy
96
- url += connection.oracleConnectionType.oracleTNSConnection
97
- return url
98
-
99
- # If not TNS, we add the hostPort
100
- url += connection.hostPort
101
88
 
102
- if isinstance(connection.oracleConnectionType, OracleDatabaseSchema):
103
- url += (
104
- f"/{connection.oracleConnectionType.databaseSchema}"
105
- if connection.oracleConnectionType.databaseSchema
106
- else ""
89
+ def test_connection(
90
+ self,
91
+ metadata: OpenMetadata,
92
+ automation_workflow: Optional[AutomationWorkflow] = None,
93
+ timeout_seconds: Optional[int] = THREE_MIN,
94
+ ) -> TestConnectionResult:
95
+ """
96
+ Test connection. This can be executed either as part
97
+ of a metadata workflow or during an Automation Workflow
98
+ """
99
+
100
+ def test_oracle_package_access(engine):
101
+ try:
102
+ schema_name = engine.execute(ORACLE_GET_SCHEMA).scalar()
103
+ return ORACLE_GET_STORED_PACKAGES.format(schema=schema_name)
104
+ except Exception as e:
105
+ raise OraclePackageAccessError(
106
+ f"Failed to access Oracle stored packages: {e}"
107
+ )
108
+
109
+ test_conn_queries = {
110
+ "CheckAccess": CHECK_ACCESS_TO_ALL,
111
+ "PackageAccess": test_oracle_package_access(self.client),
112
+ }
113
+
114
+ return test_connection_db_common(
115
+ metadata=metadata,
116
+ engine=self.client,
117
+ service_connection=self.service_connection,
118
+ automation_workflow=automation_workflow,
119
+ queries=test_conn_queries,
120
+ timeout_seconds=timeout_seconds,
107
121
  )
108
- return url
109
-
110
- if isinstance(connection.oracleConnectionType, OracleServiceName):
111
- url = f"{url}/?service_name={connection.oracleConnectionType.oracleServiceName}"
112
- return url
113
122
 
114
- raise ValueError(f"Unknown connection type {connection.oracleConnectionType}")
123
+ def get_connection_dict(self) -> dict:
124
+ """
125
+ Return the connection dictionary for this service.
126
+ """
127
+ url = self.client.url
128
+ connection_copy = deepcopy(self.service_connection)
129
+
130
+ connection_dict = {
131
+ "driver": url.drivername,
132
+ "host": f"{url.host}:{url.port}", # This is the format expected by data-diff. If we start using this for something else, we need to change it and modify the data-diff code.
133
+ "user": url.username,
134
+ }
135
+
136
+ # Add password if present in the connection
137
+ if connection_copy.password:
138
+ connection_dict["password"] = connection_copy.password.get_secret_value()
139
+
140
+ # Add connection type specific information
141
+ if isinstance(connection_copy.oracleConnectionType, OracleDatabaseSchema):
142
+ connection_dict[
143
+ "database"
144
+ ] = connection_copy.oracleConnectionType.databaseSchema
145
+ elif isinstance(connection_copy.oracleConnectionType, OracleServiceName):
146
+ connection_dict[
147
+ "database"
148
+ ] = connection_copy.oracleConnectionType.oracleServiceName
149
+ elif isinstance(connection_copy.oracleConnectionType, OracleTNSConnection):
150
+ connection_dict[
151
+ "host"
152
+ ] = connection_copy.oracleConnectionType.oracleTNSConnection
153
+
154
+ # Add connection options if present
155
+ if connection_copy.connectionOptions and connection_copy.connectionOptions.root:
156
+ connection_with_options_secrets(lambda: connection_copy)
157
+ connection_dict.update(connection_copy.connectionOptions.root)
158
+
159
+ # Add connection arguments if present
160
+ if (
161
+ connection_copy.connectionArguments
162
+ and connection_copy.connectionArguments.root
163
+ ):
164
+ connection_dict.update(get_connection_args_common(connection_copy))
165
+
166
+ return connection_dict
167
+
168
+ @staticmethod
169
+ def get_connection_url(connection: OracleConnectionConfig) -> str:
170
+ """
171
+ Build the URL and handle driver version at system level
172
+ """
173
+
174
+ oracledb.version = CX_ORACLE_LIB_VERSION
175
+ sys.modules["cx_Oracle"] = oracledb
176
+
177
+ url = f"{connection.scheme.value}://"
178
+ if connection.username:
179
+ url += f"{quote_plus(connection.username)}"
180
+ if not connection.password:
181
+ connection.password = SecretStr("")
182
+ url += f":{quote_plus(connection.password.get_secret_value())}"
183
+ url += "@"
184
+
185
+ url = OracleConnection._handle_connection_type(url=url, connection=connection)
186
+
187
+ options = get_connection_options_dict(connection)
188
+ if options:
189
+ params = "&".join(
190
+ f"{key}={quote_plus(value)}"
191
+ for (key, value) in options.items()
192
+ if value
193
+ )
194
+ if isinstance(connection.oracleConnectionType, OracleServiceName):
195
+ url = f"{url}&{params}"
196
+ else:
197
+ url = f"{url}?{params}"
115
198
 
199
+ return url
116
200
 
117
- def get_connection(connection: OracleConnection) -> Engine:
118
- """
119
- Create connection
120
- """
121
- try:
122
- if connection.instantClientDirectory:
123
- logger.info(
124
- f"Initializing Oracle thick client at {connection.instantClientDirectory}"
201
+ @staticmethod
202
+ def _handle_connection_type(url: str, connection: OracleConnectionConfig) -> str:
203
+ """
204
+ Depending on the oracle connection type, we need to handle the URL differently
205
+ """
206
+
207
+ if isinstance(connection.oracleConnectionType, OracleTNSConnection):
208
+ # ref https://stackoverflow.com/questions/14140902/using-oracle-service-names-with-sqlalchemy
209
+ url += connection.oracleConnectionType.oracleTNSConnection
210
+ return url
211
+
212
+ # If not TNS, we add the hostPort
213
+ url += connection.hostPort
214
+
215
+ if isinstance(connection.oracleConnectionType, OracleDatabaseSchema):
216
+ url += (
217
+ f"/{connection.oracleConnectionType.databaseSchema}"
218
+ if connection.oracleConnectionType.databaseSchema
219
+ else ""
125
220
  )
126
- os.environ[LD_LIB_ENV] = connection.instantClientDirectory
127
- oracledb.init_oracle_client()
128
- except DatabaseError as err:
129
- logger.info(f"Could not initialize Oracle thick client: {err}")
221
+ return url
222
+
223
+ if isinstance(connection.oracleConnectionType, OracleServiceName):
224
+ url = f"{url}/?service_name={connection.oracleConnectionType.oracleServiceName}"
225
+ return url
130
226
 
131
- return create_generic_db_connection(
132
- connection=connection,
133
- get_connection_url_fn=get_connection_url,
134
- get_connection_args_fn=get_connection_args_common,
135
- )
227
+ raise ValueError(f"Unknown connection type {connection.oracleConnectionType}")
136
228
 
137
229
 
138
230
  class OraclePackageAccessError(Exception):
139
231
  """
140
232
  Raised when unable to access Oracle stored packages
141
233
  """
142
-
143
-
144
- def test_connection(
145
- metadata: OpenMetadata,
146
- engine: Engine,
147
- service_connection: OracleConnection,
148
- automation_workflow: Optional[AutomationWorkflow] = None,
149
- timeout_seconds: Optional[int] = THREE_MIN,
150
- ) -> TestConnectionResult:
151
- """
152
- Test connection. This can be executed either as part
153
- of a metadata workflow or during an Automation Workflow
154
- """
155
-
156
- def test_oracle_package_access(engine):
157
- try:
158
- schema_name = engine.execute(ORACLE_GET_SCHEMA).scalar()
159
- return ORACLE_GET_STORED_PACKAGES.format(schema=schema_name)
160
- except Exception as e:
161
- raise OraclePackageAccessError(
162
- f"Failed to access Oracle stored packages: {e}"
163
- )
164
-
165
- test_conn_queries = {
166
- "CheckAccess": CHECK_ACCESS_TO_ALL,
167
- "PackageAccess": test_oracle_package_access(engine),
168
- }
169
-
170
- return test_connection_db_common(
171
- metadata=metadata,
172
- engine=engine,
173
- service_connection=service_connection,
174
- automation_workflow=automation_workflow,
175
- queries=test_conn_queries,
176
- timeout_seconds=timeout_seconds,
177
- )
@@ -1,3 +1,4 @@
1
+ from metadata.ingestion.source.database.oracle.connection import OracleConnection
1
2
  from metadata.ingestion.source.database.oracle.lineage import OracleLineageSource
2
3
  from metadata.ingestion.source.database.oracle.metadata import OracleSource
3
4
  from metadata.ingestion.source.database.oracle.usage import OracleUsageSource
@@ -7,4 +8,5 @@ ServiceSpec = DefaultDatabaseSpec(
7
8
  metadata_source_class=OracleSource,
8
9
  lineage_source_class=OracleLineageSource,
9
10
  usage_source_class=OracleUsageSource,
11
+ connection_class=OracleConnection,
10
12
  )
@@ -105,6 +105,7 @@ class CDATAKeys(Enum):
105
105
  BASE_MEASURES = "baseMeasures"
106
106
  MEASURE = "measure"
107
107
  MEASURE_MAPPING = "measureMapping"
108
+ CALCULATED_MEASURES = "calculatedMeasures"
108
109
  PRIVATE_MEASURE_GROUP = "privateMeasureGroup"
109
110
  LOGICAL_MODEL = "logicalModel"
110
111
  DATA_SOURCES = "dataSources"
@@ -136,6 +137,9 @@ class DataSourceMapping(BaseModel):
136
137
  parents: Annotated[
137
138
  List[ParentSource], Field(..., description="Parent Sources for a target col")
138
139
  ]
140
+ formula: Annotated[
141
+ Optional[str], Field(None, description="Formula used to derive the column")
142
+ ]
139
143
 
140
144
 
141
145
  class DataSource(BaseModel):
@@ -372,10 +376,10 @@ def _get_column_datasources(
372
376
 
373
377
  def _get_column_datasources_with_names(
374
378
  entry: ET.Element, datasource_map: Optional[DataSourceMap] = None
375
- ) -> List[Tuple[DataSource, str]]:
379
+ ) -> List[Tuple[DataSource, str, Optional[str]]]:
376
380
  """
377
381
  Get the DataSource and the actual source column name after traversal.
378
- Returns a list of tuples (DataSource, column_name).
382
+ Returns a list of tuples (DataSource, column_name, formula).
379
383
  """
380
384
  if (
381
385
  datasource_map
@@ -387,6 +391,7 @@ def _get_column_datasources_with_names(
387
391
  ds_origin_list=[],
388
392
  current_ds=datasource_map[entry.get(CDATAKeys.COLUMN_OBJECT_NAME.value)],
389
393
  datasource_map=datasource_map,
394
+ formula=None,
390
395
  )
391
396
  return ds_col_pairs
392
397
 
@@ -399,6 +404,7 @@ def _get_column_datasources_with_names(
399
404
  source_type=ViewType.DATA_BASE_TABLE,
400
405
  ),
401
406
  entry.get(CDATAKeys.COLUMN_NAME.value),
407
+ None, # No formula for direct table sources
402
408
  )
403
409
  ]
404
410
 
@@ -441,7 +447,7 @@ def _traverse_ds(
441
447
  else:
442
448
  logger.info(
443
449
  f"Can't find mapping for column [{current_column}] in [{current_ds}]. "
444
- f"We still have to implement `calculatedViewAttributes`."
450
+ f"This might be a constant or derived column."
445
451
  )
446
452
 
447
453
  return ds_origin_list
@@ -449,19 +455,20 @@ def _traverse_ds(
449
455
 
450
456
  def _traverse_ds_with_columns(
451
457
  current_column: str,
452
- ds_origin_list: List[Tuple[DataSource, str]],
458
+ ds_origin_list: List[Tuple[DataSource, str, Optional[str]]],
453
459
  current_ds: DataSource,
454
460
  datasource_map: Optional[DataSourceMap],
455
- ) -> List[Tuple[DataSource, str]]:
461
+ formula: Optional[str] = None,
462
+ ) -> List[Tuple[DataSource, str, Optional[str]]]:
456
463
  """
457
464
  Traverse the ds dict jumping from target -> source columns and getting the right parent.
458
465
  We keep inspecting current datasources and will append to the origin list the ones
459
- that are not LOGICAL, along with the final column name.
460
- Returns a list of tuples (DataSource, column_name).
466
+ that are not LOGICAL, along with the final column name and formula.
467
+ Returns a list of tuples (DataSource, column_name, formula).
461
468
  """
462
469
  if current_ds.source_type != ViewType.LOGICAL:
463
- # This is a final datasource, append it with the current column name
464
- ds_origin_list.append((current_ds, current_column))
470
+ # This is a final datasource, append it with the current column name and formula
471
+ ds_origin_list.append((current_ds, current_column, formula))
465
472
 
466
473
  else:
467
474
  # Based on our current column, find the parents from the mappings in the current_ds
@@ -470,6 +477,10 @@ def _traverse_ds_with_columns(
470
477
  )
471
478
 
472
479
  if current_ds_mapping:
480
+ # Use this layer's formula if we don't have one yet
481
+ if current_ds_mapping.formula and not formula:
482
+ formula = current_ds_mapping.formula
483
+
473
484
  for parent in current_ds_mapping.parents:
474
485
  parent_ds = datasource_map.get(parent.parent)
475
486
  if not parent_ds:
@@ -484,17 +495,44 @@ def _traverse_ds_with_columns(
484
495
  ds_origin_list=ds_origin_list,
485
496
  current_ds=parent_ds,
486
497
  datasource_map=datasource_map,
498
+ formula=formula,
487
499
  )
488
500
  else:
489
- # Current column not in mapping. This can happen for calculated view attributes
490
501
  logger.info(
491
502
  f"Can't find mapping for column [{current_column}] in [{current_ds}]. "
492
- f"We still have to implement `calculatedViewAttributes`."
503
+ f"This might be a constant or derived column."
493
504
  )
494
505
 
495
506
  return ds_origin_list
496
507
 
497
508
 
509
+ def _get_formula_from_logical_mapping(
510
+ entry: Optional[ET.Element], datasource_map: Optional[DataSourceMap]
511
+ ) -> Optional[str]:
512
+ """Extract formula from logical datasource mapping if it exists."""
513
+ if not entry or not datasource_map:
514
+ return None
515
+
516
+ column_object_name = entry.get(CDATAKeys.COLUMN_OBJECT_NAME.value)
517
+ column_name = entry.get(CDATAKeys.COLUMN_NAME.value)
518
+
519
+ if not column_object_name or not column_name:
520
+ return None
521
+
522
+ datasource = datasource_map.get(column_object_name)
523
+ if not datasource:
524
+ return None
525
+
526
+ if datasource.source_type != ViewType.LOGICAL or not datasource.mapping:
527
+ return None
528
+
529
+ mapping = datasource.mapping.get(column_name)
530
+ if not mapping:
531
+ return None
532
+
533
+ return mapping.formula
534
+
535
+
498
536
  def _read_attributes(
499
537
  tree: ET.Element, ns: dict, datasource_map: Optional[DataSourceMap] = None
500
538
  ) -> ParsedLineage:
@@ -506,8 +544,9 @@ def _read_attributes(
506
544
 
507
545
  for attribute in attribute_list.findall(CDATAKeys.ATTRIBUTE.value, ns):
508
546
  key_mapping = attribute.find(CDATAKeys.KEY_MAPPING.value, ns)
547
+ target_name = attribute.get(CDATAKeys.ID.value)
509
548
 
510
- # Get the actual source datasources and their column names
549
+ # Get the actual source datasources, column names, and formulas
511
550
  data_sources_with_columns = _get_column_datasources_with_names(
512
551
  entry=key_mapping, datasource_map=datasource_map
513
552
  )
@@ -517,7 +556,8 @@ def _read_attributes(
517
556
  ColumnMapping(
518
557
  data_source=ds_info[0], # The datasource
519
558
  sources=[ds_info[1]], # The actual source column name
520
- target=attribute.get(CDATAKeys.ID.value),
559
+ target=target_name,
560
+ formula=ds_info[2], # Formula from traversal (if any)
521
561
  )
522
562
  for ds_info in data_sources_with_columns
523
563
  ]
@@ -541,16 +581,39 @@ def _read_calculated_attributes(
541
581
  return lineage
542
582
 
543
583
  for calculated_attr in calculated_attrs.findall(key.value, ns):
544
- formula = (
545
- calculated_attr.find(CDATAKeys.KEY_CALCULATION.value, ns)
546
- .find(CDATAKeys.FORMULA.value, ns)
547
- .text
548
- )
549
- lineage += _explode_formula(
550
- target=calculated_attr.get(CDATAKeys.ID.value),
551
- formula=formula,
552
- base_lineage=base_lineage,
553
- )
584
+ key_calc = calculated_attr.find(CDATAKeys.KEY_CALCULATION.value, ns)
585
+ if key_calc is not None:
586
+ formula_elem = key_calc.find(CDATAKeys.FORMULA.value, ns)
587
+ if formula_elem is not None and formula_elem.text:
588
+ lineage += _explode_formula(
589
+ target=calculated_attr.get(CDATAKeys.ID.value),
590
+ formula=formula_elem.text,
591
+ base_lineage=base_lineage,
592
+ )
593
+
594
+ return lineage
595
+
596
+
597
+ def _read_calculated_measures(
598
+ tree: ET.Element,
599
+ ns: dict,
600
+ base_lineage: ParsedLineage,
601
+ ) -> ParsedLineage:
602
+ """Compute the lineage based on the calculated measures"""
603
+ lineage = ParsedLineage()
604
+
605
+ calculated_measures = tree.find(CDATAKeys.CALCULATED_MEASURES.value, ns)
606
+ if not calculated_measures:
607
+ return lineage
608
+
609
+ for measure in calculated_measures.findall(CDATAKeys.MEASURE.value, ns):
610
+ formula_elem = measure.find(CDATAKeys.FORMULA.value, ns)
611
+ if formula_elem is not None and formula_elem.text:
612
+ lineage += _explode_formula(
613
+ target=measure.get(CDATAKeys.ID.value),
614
+ formula=formula_elem.text,
615
+ base_lineage=base_lineage,
616
+ )
554
617
 
555
618
  return lineage
556
619
 
@@ -573,8 +636,9 @@ def _read_base_measures(
573
636
 
574
637
  for measure in base_measures.findall(CDATAKeys.MEASURE.value, ns):
575
638
  measure_mapping = measure.find(CDATAKeys.MEASURE_MAPPING.value, ns)
639
+ target_name = measure.get(CDATAKeys.ID.value)
576
640
 
577
- # Get the actual source datasources and their column names
641
+ # Get the actual source datasources, column names, and formulas
578
642
  data_sources_with_columns = _get_column_datasources_with_names(
579
643
  entry=measure_mapping, datasource_map=datasource_map
580
644
  )
@@ -584,7 +648,8 @@ def _read_base_measures(
584
648
  ColumnMapping(
585
649
  data_source=ds_info[0], # The datasource
586
650
  sources=[ds_info[1]], # The actual source column name
587
- target=measure.get(CDATAKeys.ID.value),
651
+ target=target_name,
652
+ formula=ds_info[2], # Formula from traversal (if any)
588
653
  )
589
654
  for ds_info in data_sources_with_columns
590
655
  ]
@@ -605,10 +670,16 @@ def _explode_formula(
605
670
  Returns:
606
671
  Parsed Lineage from the formula
607
672
  """
608
- column_ds = {
609
- match.group(1): base_lineage.find_target(match.group(1)).data_source
610
- for match in FORMULA_PATTERN.finditer(formula)
611
- }
673
+ column_ds = {}
674
+ for match in FORMULA_PATTERN.finditer(formula):
675
+ col_name = match.group(1)
676
+ mapping = base_lineage.find_target(col_name)
677
+ if mapping:
678
+ column_ds[col_name] = mapping.data_source
679
+
680
+ # If no columns found in base_lineage, it might be a constant formula
681
+ if not column_ds:
682
+ return ParsedLineage()
612
683
 
613
684
  # Group every datasource (key) with a list of the involved columns (values)
614
685
  ds_columns = defaultdict(list)
@@ -694,17 +765,42 @@ def _(cdata: str) -> ParsedLineage:
694
765
  attribute_lineage = _read_attributes(
695
766
  tree=logical_model, ns=ns, datasource_map=datasource_map
696
767
  )
697
- calculated_attrs_lineage = _read_calculated_attributes(
768
+
769
+ base_measure_lineage = _read_base_measures(
770
+ tree=logical_model, ns=ns, datasource_map=datasource_map
771
+ )
772
+
773
+ # Combine base attributes and measures for calculated columns
774
+ combined_base_lineage = attribute_lineage + base_measure_lineage
775
+
776
+ # Read calculated attributes from calculationViews (if they exist)
777
+ cv_calculated_attrs_lineage = _read_calculated_attributes(
698
778
  tree=tree,
699
779
  ns=ns,
700
- base_lineage=attribute_lineage,
780
+ base_lineage=combined_base_lineage,
701
781
  key=CalculatedAttrKey.CALCULATED_VIEW_ATTRIBUTE,
702
782
  )
703
- base_measure_lineage = _read_base_measures(
704
- tree=logical_model, ns=ns, datasource_map=datasource_map
783
+
784
+ # Read calculated attributes from logical model
785
+ logical_calculated_attrs_lineage = _read_calculated_attributes(
786
+ tree=logical_model,
787
+ ns=ns,
788
+ base_lineage=combined_base_lineage,
789
+ key=CalculatedAttrKey.CALCULATED_ATTRIBUTE,
705
790
  )
706
791
 
707
- return attribute_lineage + calculated_attrs_lineage + base_measure_lineage
792
+ # Read calculated measures from logical model
793
+ calculated_measures_lineage = _read_calculated_measures(
794
+ tree=logical_model, ns=ns, base_lineage=combined_base_lineage
795
+ )
796
+
797
+ return (
798
+ attribute_lineage
799
+ + cv_calculated_attrs_lineage
800
+ + logical_calculated_attrs_lineage
801
+ + base_measure_lineage
802
+ + calculated_measures_lineage
803
+ )
708
804
 
709
805
 
710
806
  def _parse_cv_data_sources(tree: ET.Element, ns: dict) -> DataSourceMap:
@@ -812,11 +908,13 @@ def _build_mappings(calculation_view: ET.Element, ns: dict) -> List[DataSourceMa
812
908
  """
813
909
 
814
910
  input_mappings = _build_input_mappings(calculation_view=calculation_view, ns=ns)
815
- # calculated_view_attrs = _build_cv_attributes(
816
- # calculation_view=calculation_view, ns=ns, input_mappings=input_mappings
817
- # )
911
+ calculated_view_attrs = _build_cv_attributes(
912
+ calculation_view=calculation_view, ns=ns, input_mappings=input_mappings
913
+ )
818
914
 
819
- return input_mappings
915
+ # Combine input mappings and calculated view attributes
916
+ all_mappings = input_mappings + calculated_view_attrs
917
+ return all_mappings
820
918
 
821
919
 
822
920
  def _build_input_mappings(
@@ -875,6 +973,8 @@ def _build_cv_attributes(
875
973
  if view_attrs is None:
876
974
  return mappings
877
975
 
976
+ cv_id = calculation_view.get(CDATAKeys.ID.value)
977
+
878
978
  for view_attr in view_attrs.findall(CDATAKeys.CALCULATION_VIEW_ATTRIBUTE.value, ns):
879
979
  formula = (
880
980
  view_attr.find(CDATAKeys.FORMULA.value, ns).text
@@ -886,25 +986,28 @@ def _build_cv_attributes(
886
986
  continue
887
987
 
888
988
  involved_columns = FORMULA_PATTERN.findall(formula)
989
+ # For calculated columns, all source columns should come from the same calculation view
990
+ # where the formula is defined
991
+ parents = []
889
992
  for col in involved_columns:
890
- # Find the mapping for the involved column
891
- mapping = next(
892
- (mapping for mapping in input_mappings if mapping.target == col), None
893
- )
894
- if not mapping:
895
- logger.debug(
896
- f"Can't find mapping for column [{col}] in [{input_mappings}]"
993
+ # The source columns for the formula are in the same calculation view
994
+ parents.append(
995
+ ParentSource(
996
+ source=col,
997
+ parent=cv_id, # The parent is the current calculation view
897
998
  )
898
- continue
999
+ )
899
1000
 
1001
+ if parents:
900
1002
  mappings.append(
901
1003
  DataSourceMapping(
902
1004
  target=view_attr.get(CDATAKeys.ID.value),
903
- parents=mapping.parents,
1005
+ parents=parents,
1006
+ formula=formula,
904
1007
  )
905
1008
  )
906
1009
 
907
- return _group_mappings(mappings)
1010
+ return mappings
908
1011
 
909
1012
 
910
1013
  def _group_mappings(mappings: List[DataSourceMapping]) -> List[DataSourceMapping]: