openmetadata-ingestion 1.9.0.0__py3-none-any.whl → 1.9.2.0__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (807) hide show
  1. metadata/data_quality/validations/models.py +11 -1
  2. metadata/data_quality/validations/runtime_param_setter/param_setter_factory.py +9 -0
  3. metadata/data_quality/validations/runtime_param_setter/table_custom_sql_query_params_setter.py +31 -0
  4. metadata/data_quality/validations/table/base/tableCustomSQLQuery.py +24 -0
  5. metadata/data_quality/validations/table/pandas/tableCustomSQLQuery.py +38 -0
  6. metadata/data_quality/validations/table/sqlalchemy/tableCustomSQLQuery.py +57 -0
  7. metadata/examples/workflows/exasol.yaml +25 -0
  8. metadata/examples/workflows/grafana.yaml +115 -0
  9. metadata/generated/schema/analytics/__init__.py +1 -1
  10. metadata/generated/schema/analytics/basic.py +1 -1
  11. metadata/generated/schema/analytics/reportData.py +1 -1
  12. metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
  13. metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
  14. metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
  15. metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
  16. metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
  17. metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
  18. metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
  19. metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
  20. metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
  21. metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
  22. metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
  23. metadata/generated/schema/api/__init__.py +1 -1
  24. metadata/generated/schema/api/addGlossaryToAssetsRequest.py +1 -1
  25. metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
  26. metadata/generated/schema/api/analytics/__init__.py +1 -1
  27. metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
  28. metadata/generated/schema/api/automations/__init__.py +1 -1
  29. metadata/generated/schema/api/automations/createWorkflow.py +1 -1
  30. metadata/generated/schema/api/bulkAssets.py +1 -1
  31. metadata/generated/schema/api/classification/__init__.py +1 -1
  32. metadata/generated/schema/api/classification/createClassification.py +1 -1
  33. metadata/generated/schema/api/classification/createTag.py +1 -1
  34. metadata/generated/schema/api/classification/loadTags.py +1 -1
  35. metadata/generated/schema/api/createBot.py +1 -1
  36. metadata/generated/schema/api/createEventPublisherJob.py +1 -1
  37. metadata/generated/schema/api/createType.py +1 -1
  38. metadata/generated/schema/api/data/__init__.py +1 -1
  39. metadata/generated/schema/api/data/createAPICollection.py +1 -1
  40. metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
  41. metadata/generated/schema/api/data/createChart.py +1 -1
  42. metadata/generated/schema/api/data/createContainer.py +1 -1
  43. metadata/generated/schema/api/data/createCustomProperty.py +1 -1
  44. metadata/generated/schema/api/data/createDashboard.py +1 -1
  45. metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
  46. metadata/generated/schema/api/data/createDataContract.py +1 -1
  47. metadata/generated/schema/api/data/createDatabase.py +1 -1
  48. metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
  49. metadata/generated/schema/api/data/createDirectory.py +1 -1
  50. metadata/generated/schema/api/data/createFile.py +1 -1
  51. metadata/generated/schema/api/data/createGlossary.py +1 -1
  52. metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
  53. metadata/generated/schema/api/data/createMetric.py +1 -1
  54. metadata/generated/schema/api/data/createMlModel.py +1 -1
  55. metadata/generated/schema/api/data/createPipeline.py +1 -1
  56. metadata/generated/schema/api/data/createQuery.py +1 -1
  57. metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
  58. metadata/generated/schema/api/data/createSearchIndex.py +1 -1
  59. metadata/generated/schema/api/data/createSpreadsheet.py +1 -1
  60. metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
  61. metadata/generated/schema/api/data/createTable.py +1 -1
  62. metadata/generated/schema/api/data/createTableProfile.py +1 -1
  63. metadata/generated/schema/api/data/createTopic.py +1 -1
  64. metadata/generated/schema/api/data/createWorksheet.py +1 -1
  65. metadata/generated/schema/api/data/loadGlossary.py +1 -1
  66. metadata/generated/schema/api/data/restoreEntity.py +1 -1
  67. metadata/generated/schema/api/data/updateColumn.py +1 -1
  68. metadata/generated/schema/api/dataInsight/__init__.py +1 -1
  69. metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
  70. metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
  71. metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
  72. metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
  73. metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
  74. metadata/generated/schema/api/docStore/__init__.py +1 -1
  75. metadata/generated/schema/api/docStore/createDocument.py +1 -1
  76. metadata/generated/schema/api/domains/__init__.py +1 -1
  77. metadata/generated/schema/api/domains/createDataProduct.py +1 -1
  78. metadata/generated/schema/api/domains/createDomain.py +1 -1
  79. metadata/generated/schema/api/entityRelationship/__init__.py +1 -1
  80. metadata/generated/schema/api/entityRelationship/entityRelationshipDirection.py +1 -1
  81. metadata/generated/schema/api/entityRelationship/esEntityRelationshipData.py +1 -1
  82. metadata/generated/schema/api/entityRelationship/relationshipRef.py +1 -1
  83. metadata/generated/schema/api/entityRelationship/searchEntityRelationshipRequest.py +1 -1
  84. metadata/generated/schema/api/entityRelationship/searchEntityRelationshipResult.py +1 -1
  85. metadata/generated/schema/api/entityRelationship/searchSchemaEntityRelationshipResult.py +1 -1
  86. metadata/generated/schema/api/feed/__init__.py +1 -1
  87. metadata/generated/schema/api/feed/closeTask.py +1 -1
  88. metadata/generated/schema/api/feed/createPost.py +1 -1
  89. metadata/generated/schema/api/feed/createSuggestion.py +1 -1
  90. metadata/generated/schema/api/feed/createThread.py +1 -1
  91. metadata/generated/schema/api/feed/resolveTask.py +1 -1
  92. metadata/generated/schema/api/feed/threadCount.py +1 -1
  93. metadata/generated/schema/api/governance/__init__.py +1 -1
  94. metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
  95. metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
  96. metadata/generated/schema/api/lineage/__init__.py +1 -1
  97. metadata/generated/schema/api/lineage/addLineage.py +1 -1
  98. metadata/generated/schema/api/lineage/esLineageData.py +1 -1
  99. metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
  100. metadata/generated/schema/api/lineage/nodeInformation.py +2 -2
  101. metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
  102. metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
  103. metadata/generated/schema/api/mcp/__init__.py +1 -1
  104. metadata/generated/schema/api/mcp/mcpToolDefinition.py +1 -1
  105. metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
  106. metadata/generated/schema/api/policies/__init__.py +1 -1
  107. metadata/generated/schema/api/policies/createPolicy.py +1 -1
  108. metadata/generated/schema/api/scim/__init__.py +1 -1
  109. metadata/generated/schema/api/scim/scimGroup.py +1 -1
  110. metadata/generated/schema/api/scim/scimPatchOp.py +1 -1
  111. metadata/generated/schema/api/scim/scimUser.py +1 -1
  112. metadata/generated/schema/api/search/__init__.py +1 -1
  113. metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
  114. metadata/generated/schema/api/services/__init__.py +1 -1
  115. metadata/generated/schema/api/services/createApiService.py +1 -1
  116. metadata/generated/schema/api/services/createDashboardService.py +1 -1
  117. metadata/generated/schema/api/services/createDatabaseService.py +1 -1
  118. metadata/generated/schema/api/services/createDriveService.py +1 -1
  119. metadata/generated/schema/api/services/createMessagingService.py +1 -1
  120. metadata/generated/schema/api/services/createMetadataService.py +1 -1
  121. metadata/generated/schema/api/services/createMlModelService.py +1 -1
  122. metadata/generated/schema/api/services/createPipelineService.py +1 -1
  123. metadata/generated/schema/api/services/createSearchService.py +1 -1
  124. metadata/generated/schema/api/services/createSecurityService.py +1 -1
  125. metadata/generated/schema/api/services/createStorageService.py +1 -1
  126. metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
  127. metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
  128. metadata/generated/schema/api/setOwner.py +1 -1
  129. metadata/generated/schema/api/teams/__init__.py +1 -1
  130. metadata/generated/schema/api/teams/createPersona.py +1 -1
  131. metadata/generated/schema/api/teams/createRole.py +1 -1
  132. metadata/generated/schema/api/teams/createTeam.py +1 -1
  133. metadata/generated/schema/api/teams/createUser.py +1 -1
  134. metadata/generated/schema/api/tests/__init__.py +1 -1
  135. metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
  136. metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
  137. metadata/generated/schema/api/tests/createTestCase.py +1 -1
  138. metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
  139. metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
  140. metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
  141. metadata/generated/schema/api/tests/createTestSuite.py +1 -1
  142. metadata/generated/schema/api/tests/moveGlossaryTermRequest.py +1 -1
  143. metadata/generated/schema/api/validateGlossaryTagsRequest.py +1 -1
  144. metadata/generated/schema/api/voteRequest.py +1 -1
  145. metadata/generated/schema/auth/__init__.py +1 -1
  146. metadata/generated/schema/auth/basicAuth.py +1 -1
  147. metadata/generated/schema/auth/basicLoginRequest.py +1 -1
  148. metadata/generated/schema/auth/changePasswordRequest.py +1 -1
  149. metadata/generated/schema/auth/createPersonalToken.py +1 -1
  150. metadata/generated/schema/auth/emailRequest.py +1 -1
  151. metadata/generated/schema/auth/emailVerificationToken.py +1 -1
  152. metadata/generated/schema/auth/generateToken.py +1 -1
  153. metadata/generated/schema/auth/jwtAuth.py +1 -1
  154. metadata/generated/schema/auth/loginRequest.py +1 -1
  155. metadata/generated/schema/auth/logoutRequest.py +1 -1
  156. metadata/generated/schema/auth/passwordResetRequest.py +1 -1
  157. metadata/generated/schema/auth/passwordResetToken.py +1 -1
  158. metadata/generated/schema/auth/personalAccessToken.py +1 -1
  159. metadata/generated/schema/auth/refreshToken.py +1 -1
  160. metadata/generated/schema/auth/registrationRequest.py +1 -1
  161. metadata/generated/schema/auth/revokePersonalToken.py +1 -1
  162. metadata/generated/schema/auth/revokeToken.py +1 -1
  163. metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
  164. metadata/generated/schema/auth/ssoAuth.py +1 -1
  165. metadata/generated/schema/auth/supportToken.py +1 -1
  166. metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
  167. metadata/generated/schema/configuration/__init__.py +1 -1
  168. metadata/generated/schema/configuration/aiPlatformConfiguration.py +1 -1
  169. metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
  170. metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
  171. metadata/generated/schema/configuration/authConfig.py +1 -1
  172. metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
  173. metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
  174. metadata/generated/schema/configuration/cacheConfiguration.py +1 -1
  175. metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
  176. metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
  177. metadata/generated/schema/configuration/elasticSearchConfiguration.py +18 -1
  178. metadata/generated/schema/configuration/entityRulesSettings.py +1 -1
  179. metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
  180. metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
  181. metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
  182. metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
  183. metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
  184. metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
  185. metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
  186. metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
  187. metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
  188. metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
  189. metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
  190. metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
  191. metadata/generated/schema/configuration/lineageSettings.py +1 -1
  192. metadata/generated/schema/configuration/loginConfiguration.py +1 -1
  193. metadata/generated/schema/configuration/logoConfiguration.py +1 -1
  194. metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +1 -1
  195. metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
  196. metadata/generated/schema/configuration/opsConfig.py +1 -1
  197. metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
  198. metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
  199. metadata/generated/schema/configuration/searchSettings.py +1 -1
  200. metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
  201. metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
  202. metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
  203. metadata/generated/schema/configuration/themeConfiguration.py +1 -1
  204. metadata/generated/schema/configuration/uiThemePreference.py +1 -1
  205. metadata/generated/schema/configuration/workflowSettings.py +1 -1
  206. metadata/generated/schema/dataInsight/__init__.py +1 -1
  207. metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
  208. metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
  209. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
  210. metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
  211. metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
  212. metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
  213. metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
  214. metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
  215. metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
  216. metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
  217. metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
  218. metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
  219. metadata/generated/schema/dataInsight/type/__init__.py +1 -1
  220. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
  221. metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
  222. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
  223. metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
  224. metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
  225. metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
  226. metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
  227. metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
  228. metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
  229. metadata/generated/schema/email/__init__.py +1 -1
  230. metadata/generated/schema/email/emailRequest.py +1 -1
  231. metadata/generated/schema/email/emailTemplate.py +1 -1
  232. metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
  233. metadata/generated/schema/email/smtpSettings.py +1 -1
  234. metadata/generated/schema/email/templateValidationReponse.py +1 -1
  235. metadata/generated/schema/entity/__init__.py +1 -1
  236. metadata/generated/schema/entity/applications/__init__.py +1 -1
  237. metadata/generated/schema/entity/applications/app.py +1 -1
  238. metadata/generated/schema/entity/applications/appExtension.py +1 -1
  239. metadata/generated/schema/entity/applications/appRunRecord.py +1 -1
  240. metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
  241. metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
  242. metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
  243. metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
  244. metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
  245. metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
  246. metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
  247. metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
  248. metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
  249. metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
  250. metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +1 -1
  251. metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
  252. metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
  253. metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
  254. metadata/generated/schema/entity/applications/configuration/external/automator/propagationStopConfig.py +1 -1
  255. metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
  256. metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
  257. metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
  258. metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
  259. metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
  260. metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
  261. metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
  262. metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
  263. metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
  264. metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
  265. metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
  266. metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
  267. metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
  268. metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
  269. metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
  270. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
  271. metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
  272. metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
  273. metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
  274. metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
  275. metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
  276. metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
  277. metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
  278. metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
  279. metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
  280. metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
  281. metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
  282. metadata/generated/schema/entity/applications/jobStatus.py +1 -1
  283. metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
  284. metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
  285. metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
  286. metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
  287. metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
  288. metadata/generated/schema/entity/automations/__init__.py +1 -1
  289. metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
  290. metadata/generated/schema/entity/automations/workflow.py +1 -1
  291. metadata/generated/schema/entity/bot.py +1 -1
  292. metadata/generated/schema/entity/classification/__init__.py +1 -1
  293. metadata/generated/schema/entity/classification/classification.py +1 -1
  294. metadata/generated/schema/entity/classification/tag.py +1 -1
  295. metadata/generated/schema/entity/data/__init__.py +1 -1
  296. metadata/generated/schema/entity/data/apiCollection.py +1 -1
  297. metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
  298. metadata/generated/schema/entity/data/chart.py +6 -1
  299. metadata/generated/schema/entity/data/container.py +1 -1
  300. metadata/generated/schema/entity/data/dashboard.py +1 -1
  301. metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
  302. metadata/generated/schema/entity/data/dataContract.py +1 -1
  303. metadata/generated/schema/entity/data/database.py +1 -1
  304. metadata/generated/schema/entity/data/databaseSchema.py +1 -1
  305. metadata/generated/schema/entity/data/directory.py +1 -1
  306. metadata/generated/schema/entity/data/file.py +1 -1
  307. metadata/generated/schema/entity/data/glossary.py +1 -1
  308. metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
  309. metadata/generated/schema/entity/data/metric.py +1 -1
  310. metadata/generated/schema/entity/data/mlmodel.py +1 -1
  311. metadata/generated/schema/entity/data/pipeline.py +1 -1
  312. metadata/generated/schema/entity/data/query.py +1 -1
  313. metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
  314. metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
  315. metadata/generated/schema/entity/data/report.py +1 -1
  316. metadata/generated/schema/entity/data/searchIndex.py +1 -1
  317. metadata/generated/schema/entity/data/spreadsheet.py +1 -1
  318. metadata/generated/schema/entity/data/storedProcedure.py +1 -1
  319. metadata/generated/schema/entity/data/table.py +1 -1
  320. metadata/generated/schema/entity/data/topic.py +1 -1
  321. metadata/generated/schema/entity/data/worksheet.py +1 -1
  322. metadata/generated/schema/entity/datacontract/__init__.py +1 -1
  323. metadata/generated/schema/entity/datacontract/dataContractResult.py +1 -1
  324. metadata/generated/schema/entity/datacontract/qualityValidation.py +1 -1
  325. metadata/generated/schema/entity/datacontract/schemaValidation.py +1 -1
  326. metadata/generated/schema/entity/datacontract/semanticsValidation.py +1 -1
  327. metadata/generated/schema/entity/datacontract/slaValidation.py +1 -1
  328. metadata/generated/schema/entity/docStore/__init__.py +1 -1
  329. metadata/generated/schema/entity/docStore/document.py +1 -1
  330. metadata/generated/schema/entity/domains/__init__.py +1 -1
  331. metadata/generated/schema/entity/domains/dataProduct.py +1 -1
  332. metadata/generated/schema/entity/domains/domain.py +1 -1
  333. metadata/generated/schema/entity/events/__init__.py +1 -1
  334. metadata/generated/schema/entity/events/webhook.py +1 -1
  335. metadata/generated/schema/entity/feed/__init__.py +1 -1
  336. metadata/generated/schema/entity/feed/assets.py +1 -1
  337. metadata/generated/schema/entity/feed/customProperty.py +1 -1
  338. metadata/generated/schema/entity/feed/description.py +1 -1
  339. metadata/generated/schema/entity/feed/domain.py +1 -1
  340. metadata/generated/schema/entity/feed/entityInfo.py +1 -1
  341. metadata/generated/schema/entity/feed/owner.py +1 -1
  342. metadata/generated/schema/entity/feed/suggestion.py +1 -1
  343. metadata/generated/schema/entity/feed/tag.py +1 -1
  344. metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
  345. metadata/generated/schema/entity/feed/thread.py +1 -1
  346. metadata/generated/schema/entity/policies/__init__.py +1 -1
  347. metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
  348. metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +1 -1
  349. metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
  350. metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
  351. metadata/generated/schema/entity/policies/filters.py +1 -1
  352. metadata/generated/schema/entity/policies/policy.py +1 -1
  353. metadata/generated/schema/entity/services/__init__.py +1 -1
  354. metadata/generated/schema/entity/services/apiService.py +1 -1
  355. metadata/generated/schema/entity/services/connections/__init__.py +1 -1
  356. metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
  357. metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
  358. metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
  359. metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
  360. metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
  361. metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
  362. metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
  363. metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
  364. metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
  365. metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
  366. metadata/generated/schema/entity/services/connections/dashboard/grafanaConnection.py +77 -0
  367. metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
  368. metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
  369. metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
  370. metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
  371. metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
  372. metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
  373. metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
  374. metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
  375. metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
  376. metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
  377. metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
  378. metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
  379. metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
  380. metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
  381. metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
  382. metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
  383. metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
  384. metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
  385. metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
  386. metadata/generated/schema/entity/services/connections/dashboard/thoughtSpotConnection.py +1 -1
  387. metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
  388. metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
  389. metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
  390. metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
  391. metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
  392. metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
  393. metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
  394. metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
  395. metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
  396. metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
  397. metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
  398. metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
  399. metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
  400. metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
  401. metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
  402. metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
  403. metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
  404. metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
  405. metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
  406. metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
  407. metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
  408. metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
  409. metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
  410. metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
  411. metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
  412. metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
  413. metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
  414. metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
  415. metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
  416. metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
  417. metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
  418. metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
  419. metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
  420. metadata/generated/schema/entity/services/connections/database/epicConnection.py +1 -1
  421. metadata/generated/schema/entity/services/connections/database/exasolConnection.py +4 -1
  422. metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
  423. metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
  424. metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
  425. metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
  426. metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
  427. metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
  428. metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
  429. metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
  430. metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
  431. metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
  432. metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
  433. metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
  434. metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
  435. metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
  436. metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
  437. metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
  438. metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
  439. metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
  440. metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
  441. metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
  442. metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
  443. metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
  444. metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
  445. metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
  446. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
  447. metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
  448. metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
  449. metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
  450. metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
  451. metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
  452. metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
  453. metadata/generated/schema/entity/services/connections/database/ssasConnection.py +1 -1
  454. metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
  455. metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
  456. metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
  457. metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
  458. metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
  459. metadata/generated/schema/entity/services/connections/drive/__init__.py +1 -1
  460. metadata/generated/schema/entity/services/connections/drive/customDriveConnection.py +1 -1
  461. metadata/generated/schema/entity/services/connections/drive/googleDriveConnection.py +1 -1
  462. metadata/generated/schema/entity/services/connections/drive/sharePointConnection.py +1 -1
  463. metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
  464. metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
  465. metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
  466. metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
  467. metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
  468. metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +1 -1
  469. metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
  470. metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
  471. metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
  472. metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
  473. metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
  474. metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
  475. metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
  476. metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
  477. metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
  478. metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
  479. metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
  480. metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
  481. metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
  482. metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
  483. metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
  484. metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
  485. metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
  486. metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
  487. metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
  488. metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
  489. metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +1 -1
  490. metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
  491. metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
  492. metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
  493. metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
  494. metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
  495. metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
  496. metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
  497. metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
  498. metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
  499. metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
  500. metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
  501. metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
  502. metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
  503. metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
  504. metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
  505. metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
  506. metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
  507. metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
  508. metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
  509. metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
  510. metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
  511. metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
  512. metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
  513. metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
  514. metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
  515. metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
  516. metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
  517. metadata/generated/schema/entity/services/connections/security/__init__.py +1 -1
  518. metadata/generated/schema/entity/services/connections/security/ranger/__init__.py +1 -1
  519. metadata/generated/schema/entity/services/connections/security/ranger/basicAuth.py +1 -1
  520. metadata/generated/schema/entity/services/connections/security/rangerConnection.py +1 -1
  521. metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
  522. metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
  523. metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
  524. metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
  525. metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
  526. metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
  527. metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
  528. metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
  529. metadata/generated/schema/entity/services/dashboardService.py +4 -1
  530. metadata/generated/schema/entity/services/databaseService.py +1 -1
  531. metadata/generated/schema/entity/services/driveService.py +1 -1
  532. metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
  533. metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
  534. metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
  535. metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
  536. metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
  537. metadata/generated/schema/entity/services/messagingService.py +1 -1
  538. metadata/generated/schema/entity/services/metadataService.py +1 -1
  539. metadata/generated/schema/entity/services/mlmodelService.py +1 -1
  540. metadata/generated/schema/entity/services/pipelineService.py +1 -1
  541. metadata/generated/schema/entity/services/searchService.py +1 -1
  542. metadata/generated/schema/entity/services/securityService.py +1 -1
  543. metadata/generated/schema/entity/services/serviceType.py +1 -1
  544. metadata/generated/schema/entity/services/storageService.py +1 -1
  545. metadata/generated/schema/entity/teams/__init__.py +1 -1
  546. metadata/generated/schema/entity/teams/persona.py +1 -1
  547. metadata/generated/schema/entity/teams/role.py +1 -1
  548. metadata/generated/schema/entity/teams/team.py +1 -1
  549. metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
  550. metadata/generated/schema/entity/teams/user.py +1 -1
  551. metadata/generated/schema/entity/type.py +1 -1
  552. metadata/generated/schema/entity/utils/__init__.py +1 -1
  553. metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
  554. metadata/generated/schema/entity/utils/servicesCount.py +1 -1
  555. metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
  556. metadata/generated/schema/events/__init__.py +1 -1
  557. metadata/generated/schema/events/alertMetrics.py +1 -1
  558. metadata/generated/schema/events/api/__init__.py +1 -1
  559. metadata/generated/schema/events/api/createEventSubscription.py +1 -1
  560. metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
  561. metadata/generated/schema/events/api/eventsRecord.py +1 -1
  562. metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
  563. metadata/generated/schema/events/api/typedEvent.py +1 -1
  564. metadata/generated/schema/events/emailAlertConfig.py +1 -1
  565. metadata/generated/schema/events/eventFilterRule.py +1 -1
  566. metadata/generated/schema/events/eventSubscription.py +1 -1
  567. metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
  568. metadata/generated/schema/events/failedEvent.py +1 -1
  569. metadata/generated/schema/events/failedEventResponse.py +1 -1
  570. metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
  571. metadata/generated/schema/events/statusContext.py +1 -1
  572. metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
  573. metadata/generated/schema/events/subscriptionStatus.py +1 -1
  574. metadata/generated/schema/events/testDestinationStatus.py +1 -1
  575. metadata/generated/schema/governance/workflows/__init__.py +1 -1
  576. metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
  577. metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
  578. metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
  579. metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
  580. metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
  581. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
  582. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
  583. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
  584. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
  585. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
  586. metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
  587. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
  588. metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
  589. metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
  590. metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
  591. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
  592. metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
  593. metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
  594. metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
  595. metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
  596. metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
  597. metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
  598. metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
  599. metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
  600. metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
  601. metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
  602. metadata/generated/schema/jobs/__init__.py +1 -1
  603. metadata/generated/schema/jobs/backgroundJob.py +1 -1
  604. metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
  605. metadata/generated/schema/metadataIngestion/__init__.py +1 -1
  606. metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
  607. metadata/generated/schema/metadataIngestion/application.py +1 -1
  608. metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
  609. metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
  610. metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
  611. metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
  612. metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
  613. metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
  614. metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
  615. metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
  616. metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
  617. metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
  618. metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
  619. metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
  620. metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
  621. metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
  622. metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
  623. metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
  624. metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
  625. metadata/generated/schema/metadataIngestion/driveServiceMetadataPipeline.py +1 -1
  626. metadata/generated/schema/metadataIngestion/engine/__init__.py +1 -1
  627. metadata/generated/schema/metadataIngestion/engine/nativeEngineConfig.py +1 -1
  628. metadata/generated/schema/metadataIngestion/engine/sparkEngineConfig.py +1 -1
  629. metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
  630. metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
  631. metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
  632. metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
  633. metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
  634. metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
  635. metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
  636. metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
  637. metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
  638. metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
  639. metadata/generated/schema/metadataIngestion/securityServiceMetadataPipeline.py +1 -1
  640. metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
  641. metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
  642. metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
  643. metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
  644. metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
  645. metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
  646. metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
  647. metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
  648. metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
  649. metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
  650. metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
  651. metadata/generated/schema/metadataIngestion/workflow.py +1 -1
  652. metadata/generated/schema/monitoring/__init__.py +1 -1
  653. metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
  654. metadata/generated/schema/scim/__init__.py +1 -1
  655. metadata/generated/schema/scim/scimConfiguration.py +1 -1
  656. metadata/generated/schema/search/__init__.py +1 -1
  657. metadata/generated/schema/search/aggregationRequest.py +1 -1
  658. metadata/generated/schema/search/searchRequest.py +1 -1
  659. metadata/generated/schema/security/__init__.py +1 -1
  660. metadata/generated/schema/security/client/__init__.py +1 -1
  661. metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
  662. metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
  663. metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
  664. metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
  665. metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
  666. metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
  667. metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
  668. metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
  669. metadata/generated/schema/security/credentials/__init__.py +1 -1
  670. metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
  671. metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
  672. metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
  673. metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
  674. metadata/generated/schema/security/credentials/basicAuth.py +1 -1
  675. metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
  676. metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
  677. metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
  678. metadata/generated/schema/security/credentials/gcpValues.py +1 -1
  679. metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
  680. metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
  681. metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
  682. metadata/generated/schema/security/credentials/kubernetesCredentials.py +1 -1
  683. metadata/generated/schema/security/sasl/__init__.py +1 -1
  684. metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
  685. metadata/generated/schema/security/secrets/__init__.py +1 -1
  686. metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
  687. metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
  688. metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
  689. metadata/generated/schema/security/securityConfiguration.py +1 -1
  690. metadata/generated/schema/security/ssl/__init__.py +1 -1
  691. metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
  692. metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
  693. metadata/generated/schema/settings/__init__.py +1 -1
  694. metadata/generated/schema/settings/settings.py +1 -1
  695. metadata/generated/schema/system/__init__.py +1 -1
  696. metadata/generated/schema/system/entityError.py +1 -1
  697. metadata/generated/schema/system/eventPublisherJob.py +1 -1
  698. metadata/generated/schema/system/indexingError.py +1 -1
  699. metadata/generated/schema/system/limitsResponse.py +1 -1
  700. metadata/generated/schema/system/ui/__init__.py +1 -1
  701. metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
  702. metadata/generated/schema/system/ui/navigationItem.py +1 -1
  703. metadata/generated/schema/system/ui/page.py +1 -1
  704. metadata/generated/schema/system/ui/tab.py +1 -1
  705. metadata/generated/schema/system/ui/uiCustomization.py +1 -1
  706. metadata/generated/schema/system/validationResponse.py +1 -1
  707. metadata/generated/schema/tests/__init__.py +1 -1
  708. metadata/generated/schema/tests/assigned.py +1 -1
  709. metadata/generated/schema/tests/basic.py +1 -1
  710. metadata/generated/schema/tests/customMetric.py +1 -1
  711. metadata/generated/schema/tests/dataQualityReport.py +1 -1
  712. metadata/generated/schema/tests/resolved.py +1 -1
  713. metadata/generated/schema/tests/testCase.py +1 -1
  714. metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
  715. metadata/generated/schema/tests/testDefinition.py +1 -1
  716. metadata/generated/schema/tests/testSuite.py +1 -1
  717. metadata/generated/schema/type/__init__.py +1 -1
  718. metadata/generated/schema/type/apiSchema.py +1 -1
  719. metadata/generated/schema/type/assetCertification.py +1 -1
  720. metadata/generated/schema/type/auditLog.py +1 -1
  721. metadata/generated/schema/type/basic.py +1 -1
  722. metadata/generated/schema/type/bulkOperationResult.py +1 -1
  723. metadata/generated/schema/type/changeEvent.py +1 -1
  724. metadata/generated/schema/type/changeEventType.py +1 -1
  725. metadata/generated/schema/type/changeSummaryMap.py +1 -1
  726. metadata/generated/schema/type/collectionDescriptor.py +1 -1
  727. metadata/generated/schema/type/contractExecutionStatus.py +1 -1
  728. metadata/generated/schema/type/csvDocumentation.py +1 -1
  729. metadata/generated/schema/type/csvErrorType.py +1 -1
  730. metadata/generated/schema/type/csvFile.py +1 -1
  731. metadata/generated/schema/type/csvImportResult.py +1 -1
  732. metadata/generated/schema/type/customProperties/__init__.py +1 -1
  733. metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
  734. metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
  735. metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
  736. metadata/generated/schema/type/customProperty.py +1 -1
  737. metadata/generated/schema/type/dailyCount.py +1 -1
  738. metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
  739. metadata/generated/schema/type/entityHierarchy.py +1 -1
  740. metadata/generated/schema/type/entityHistory.py +1 -1
  741. metadata/generated/schema/type/entityLineage.py +1 -1
  742. metadata/generated/schema/type/entityReference.py +1 -1
  743. metadata/generated/schema/type/entityReferenceList.py +1 -1
  744. metadata/generated/schema/type/entityRelationship/__init__.py +1 -1
  745. metadata/generated/schema/type/entityRelationship/nodeInformation.py +1 -1
  746. metadata/generated/schema/type/entityUsage.py +1 -1
  747. metadata/generated/schema/type/filterPattern.py +1 -1
  748. metadata/generated/schema/type/function.py +1 -1
  749. metadata/generated/schema/type/include.py +1 -1
  750. metadata/generated/schema/type/jdbcConnection.py +1 -1
  751. metadata/generated/schema/type/layerPaging.py +1 -1
  752. metadata/generated/schema/type/lifeCycle.py +1 -1
  753. metadata/generated/schema/type/paging.py +1 -1
  754. metadata/generated/schema/type/personaPreferences.py +1 -1
  755. metadata/generated/schema/type/profile.py +1 -1
  756. metadata/generated/schema/type/queryParserData.py +1 -1
  757. metadata/generated/schema/type/reaction.py +1 -1
  758. metadata/generated/schema/type/schedule.py +1 -1
  759. metadata/generated/schema/type/schema.py +1 -1
  760. metadata/generated/schema/type/tableQuery.py +1 -1
  761. metadata/generated/schema/type/tableUsageCount.py +1 -1
  762. metadata/generated/schema/type/tagLabel.py +1 -1
  763. metadata/generated/schema/type/usageDetails.py +1 -1
  764. metadata/generated/schema/type/usageRequest.py +1 -1
  765. metadata/generated/schema/type/votes.py +1 -1
  766. metadata/ingestion/bulksink/metadata_usage.py +2 -2
  767. metadata/ingestion/lineage/sql_lineage.py +77 -65
  768. metadata/ingestion/ometa/mixins/lineage_mixin.py +1 -1
  769. metadata/ingestion/source/api/rest/connection.py +12 -6
  770. metadata/ingestion/source/api/rest/metadata.py +2 -1
  771. metadata/ingestion/source/api/rest/parser.py +103 -0
  772. metadata/ingestion/source/dashboard/grafana/__init__.py +10 -0
  773. metadata/ingestion/source/dashboard/grafana/client.py +223 -0
  774. metadata/ingestion/source/dashboard/grafana/connection.py +66 -0
  775. metadata/ingestion/source/dashboard/grafana/metadata.py +476 -0
  776. metadata/ingestion/source/dashboard/grafana/models.py +159 -0
  777. metadata/ingestion/source/dashboard/grafana/service_spec.py +17 -0
  778. metadata/ingestion/source/dashboard/microstrategy/metadata.py +1 -1
  779. metadata/ingestion/source/dashboard/powerbi/metadata.py +9 -9
  780. metadata/ingestion/source/dashboard/powerbi/models.py +1 -1
  781. metadata/ingestion/source/database/dbt/metadata.py +1 -1
  782. metadata/ingestion/source/database/exasol/connection.py +6 -0
  783. metadata/ingestion/source/database/exasol/lineage.py +24 -0
  784. metadata/ingestion/source/database/exasol/metadata.py +6 -0
  785. metadata/ingestion/source/database/exasol/queries.py +22 -0
  786. metadata/ingestion/source/database/exasol/query_parser.py +33 -0
  787. metadata/ingestion/source/database/exasol/service_spec.py +5 -1
  788. metadata/ingestion/source/database/lineage_source.py +18 -2
  789. metadata/ingestion/source/database/saphana/cdata_parser.py +220 -49
  790. metadata/ingestion/source/database/saphana/lineage.py +12 -0
  791. metadata/ingestion/source/database/saphana/queries.py +7 -0
  792. metadata/ingestion/source/database/snowflake/constants.py +3 -0
  793. metadata/ingestion/source/database/snowflake/metadata.py +108 -6
  794. metadata/ingestion/source/database/snowflake/queries.py +13 -1
  795. metadata/ingestion/source/database/stored_procedures_mixin.py +9 -1
  796. metadata/ingestion/source/pipeline/airflow/connection.py +8 -6
  797. metadata/ingestion/source/pipeline/nifi/metadata.py +62 -5
  798. metadata/profiler/orm/functions/table_metric_computer.py +1 -10
  799. metadata/profiler/processor/core.py +1 -1
  800. metadata/utils/db_utils.py +8 -5
  801. metadata/utils/helpers.py +6 -1
  802. {openmetadata_ingestion-1.9.0.0.dist-info → openmetadata_ingestion-1.9.2.0.dist-info}/METADATA +537 -530
  803. {openmetadata_ingestion-1.9.0.0.dist-info → openmetadata_ingestion-1.9.2.0.dist-info}/RECORD +807 -794
  804. {openmetadata_ingestion-1.9.0.0.dist-info → openmetadata_ingestion-1.9.2.0.dist-info}/LICENSE +0 -0
  805. {openmetadata_ingestion-1.9.0.0.dist-info → openmetadata_ingestion-1.9.2.0.dist-info}/WHEEL +0 -0
  806. {openmetadata_ingestion-1.9.0.0.dist-info → openmetadata_ingestion-1.9.2.0.dist-info}/entry_points.txt +0 -0
  807. {openmetadata_ingestion-1.9.0.0.dist-info → openmetadata_ingestion-1.9.2.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,476 @@
1
+ # Copyright 2025 Collate
2
+ # Licensed under the Collate Community License, Version 1.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
+ # https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE
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
+ Grafana source module
13
+ """
14
+ import traceback
15
+ from typing import Dict, Iterable, List, Optional, Set
16
+
17
+ from metadata.generated.schema.api.data.createChart import CreateChartRequest
18
+ from metadata.generated.schema.api.data.createDashboard import CreateDashboardRequest
19
+ from metadata.generated.schema.api.lineage.addLineage import AddLineageRequest
20
+ from metadata.generated.schema.entity.data.chart import Chart
21
+ from metadata.generated.schema.entity.data.dashboard import (
22
+ Dashboard as LineageDashboard,
23
+ )
24
+ from metadata.generated.schema.entity.data.table import Table
25
+ from metadata.generated.schema.entity.services.connections.dashboard.grafanaConnection import (
26
+ GrafanaConnection,
27
+ )
28
+ from metadata.generated.schema.entity.services.databaseService import DatabaseService
29
+ from metadata.generated.schema.entity.services.ingestionPipelines.status import (
30
+ StackTraceError,
31
+ )
32
+ from metadata.generated.schema.metadataIngestion.workflow import (
33
+ Source as WorkflowSource,
34
+ )
35
+ from metadata.generated.schema.type.basic import (
36
+ EntityName,
37
+ FullyQualifiedEntityName,
38
+ Markdown,
39
+ SourceUrl,
40
+ )
41
+ from metadata.generated.schema.type.entityReferenceList import EntityReferenceList
42
+ from metadata.ingestion.api.models import Either
43
+ from metadata.ingestion.api.steps import InvalidSourceException
44
+ from metadata.ingestion.lineage.models import ConnectionTypeDialectMapper, Dialect
45
+ from metadata.ingestion.lineage.parser import LineageParser
46
+ from metadata.ingestion.ometa.ometa_api import OpenMetadata
47
+ from metadata.ingestion.source.dashboard.dashboard_service import DashboardServiceSource
48
+ from metadata.ingestion.source.dashboard.grafana.client import GrafanaApiClient
49
+ from metadata.ingestion.source.dashboard.grafana.models import (
50
+ GrafanaDashboardResponse,
51
+ GrafanaDatasource,
52
+ GrafanaFolder,
53
+ GrafanaPanel,
54
+ GrafanaSearchResult,
55
+ GrafanaTarget,
56
+ )
57
+ from metadata.utils import fqn
58
+ from metadata.utils.filters import filter_by_chart
59
+ from metadata.utils.fqn import build_es_fqn_search_string
60
+ from metadata.utils.helpers import clean_uri, get_standard_chart_type
61
+ from metadata.utils.logger import ingestion_logger
62
+ from metadata.utils.tag_utils import get_tag_labels
63
+
64
+ logger = ingestion_logger()
65
+
66
+ GRAFANA_TAG_CATEGORY = "GrafanaTags"
67
+
68
+
69
+ class GrafanaSource(DashboardServiceSource):
70
+ """
71
+ Grafana Source Class
72
+ """
73
+
74
+ def __init__(
75
+ self,
76
+ config: WorkflowSource,
77
+ metadata: OpenMetadata,
78
+ ):
79
+ super().__init__(config, metadata)
80
+ self.client: GrafanaApiClient = self.connection_obj
81
+ self.folders: List[GrafanaFolder] = []
82
+ self.datasources: Dict[str, GrafanaDatasource] = {}
83
+ self.dashboards: List[GrafanaSearchResult] = []
84
+ self.tags: Set[str] = set()
85
+
86
+ @classmethod
87
+ def create(
88
+ cls,
89
+ config_dict: dict,
90
+ metadata: OpenMetadata,
91
+ pipeline_name: Optional[str] = None,
92
+ ):
93
+ config: WorkflowSource = WorkflowSource.model_validate(config_dict)
94
+ connection: GrafanaConnection = config.serviceConnection.root.config
95
+ if not isinstance(connection, GrafanaConnection):
96
+ raise InvalidSourceException(
97
+ f"Expected GrafanaConnection, but got {connection}"
98
+ )
99
+ return cls(config, metadata)
100
+
101
+ def prepare(self):
102
+ """Fetch the list of folders, dashboards, and datasources"""
103
+ # Fetch all datasources
104
+ datasources = self.client.get_datasources()
105
+ # Key by both UID and name for flexibility
106
+ self.datasources = {}
107
+ for ds in datasources:
108
+ self.datasources[ds.uid] = ds
109
+ self.datasources[ds.name] = ds
110
+ logger.info(f"Found {len(datasources)} datasources")
111
+
112
+ def get_dashboards_list(self) -> Optional[List[dict]]:
113
+ """Get list of dashboards"""
114
+ dashboards_list = self.client.search_dashboards()
115
+ return dashboards_list
116
+
117
+ def get_dashboard_name(self, dashboard: dict) -> str:
118
+ """Get dashboard name"""
119
+ return dashboard.uid
120
+
121
+ def get_dashboard_details(
122
+ self, dashboard: dict
123
+ ) -> Optional[GrafanaDashboardResponse]:
124
+ """Get detailed dashboard information"""
125
+ try:
126
+ return self.client.get_dashboard(dashboard.uid)
127
+ except Exception as exc:
128
+ logger.warning(
129
+ f"Failed to get dashboard details for {dashboard['uid']}: {exc}"
130
+ )
131
+ return None
132
+
133
+ def get_owner_ref(
134
+ self, dashboard_details: GrafanaDashboardResponse
135
+ ) -> Optional[EntityReferenceList]:
136
+ """Get owner reference from dashboard metadata"""
137
+ try:
138
+ if dashboard_details.meta.createdBy:
139
+ # Try to get user by email if available
140
+ return self.metadata.get_reference_by_email(
141
+ dashboard_details.meta.createdBy
142
+ )
143
+ except Exception as err:
144
+ logger.debug(f"Could not fetch owner data: {err}")
145
+ return None
146
+
147
+ def yield_dashboard(
148
+ self, dashboard_details: GrafanaDashboardResponse
149
+ ) -> Iterable[Either[CreateDashboardRequest]]:
150
+ """Method to Get Dashboard Entity"""
151
+ try:
152
+ dashboard_url = f"{clean_uri(self.service_connection.hostPort)}{dashboard_details.meta.url}"
153
+
154
+ # Build folder hierarchy display name
155
+ display_name = dashboard_details.dashboard.title
156
+
157
+ dashboard_request = CreateDashboardRequest(
158
+ name=EntityName(dashboard_details.dashboard.uid),
159
+ displayName=display_name,
160
+ description=(
161
+ Markdown(dashboard_details.dashboard.description)
162
+ if dashboard_details.dashboard.description
163
+ else None
164
+ ),
165
+ charts=[
166
+ FullyQualifiedEntityName(
167
+ fqn.build(
168
+ self.metadata,
169
+ entity_type=Chart,
170
+ service_name=self.context.get().dashboard_service,
171
+ chart_name=chart,
172
+ )
173
+ )
174
+ for chart in self.context.get().charts or []
175
+ ],
176
+ service=FullyQualifiedEntityName(self.context.get().dashboard_service),
177
+ sourceUrl=SourceUrl(dashboard_url),
178
+ tags=get_tag_labels(
179
+ metadata=self.metadata,
180
+ tags=dashboard_details.dashboard.tags,
181
+ classification_name=GRAFANA_TAG_CATEGORY,
182
+ include_tags=self.source_config.includeTags,
183
+ ),
184
+ owners=self.get_owner_ref(dashboard_details),
185
+ )
186
+
187
+ yield Either(right=dashboard_request)
188
+ self.register_record(dashboard_request=dashboard_request)
189
+
190
+ except Exception as exc:
191
+ yield Either(
192
+ left=StackTraceError(
193
+ name="Dashboard",
194
+ error=f"Error yielding dashboard {dashboard_details.dashboard.uid}: {exc}",
195
+ stackTrace=traceback.format_exc(),
196
+ )
197
+ )
198
+
199
+ def yield_dashboard_chart(
200
+ self, dashboard_details: GrafanaDashboardResponse
201
+ ) -> Iterable[Either[CreateChartRequest]]:
202
+ """Method to fetch charts (panels) linked to dashboard"""
203
+ if not dashboard_details.dashboard.panels:
204
+ return
205
+
206
+ for panel in dashboard_details.dashboard.panels:
207
+ try:
208
+ # Skip row panels and panels without visualizations
209
+ if panel.type in ["row", "text"]:
210
+ continue
211
+
212
+ # We use the combination of dashboard UID and panel ID as the chart name,
213
+ # to ensure uniqueness across all dashboards and panels,
214
+ # since panel IDs are only unique within a dashboard, but not globally in Grafana.
215
+ chart_name = f"{dashboard_details.dashboard.uid}_{panel.id}"
216
+ chart_display_name = panel.title or f"Panel {panel.id}"
217
+
218
+ if filter_by_chart(
219
+ self.source_config.chartFilterPattern, chart_display_name
220
+ ):
221
+ self.status.filter(chart_display_name, "Chart filtered out")
222
+ continue
223
+
224
+ # Map Grafana panel types to standard chart types
225
+ chart_type = self._map_panel_type_to_chart_type(panel.type)
226
+
227
+ yield Either(
228
+ right=CreateChartRequest(
229
+ name=EntityName(chart_name),
230
+ displayName=chart_display_name,
231
+ description=(
232
+ Markdown(panel.description) if panel.description else None
233
+ ),
234
+ chartType=chart_type,
235
+ service=FullyQualifiedEntityName(
236
+ self.context.get().dashboard_service
237
+ ),
238
+ sourceUrl=SourceUrl(
239
+ f"{clean_uri(self.service_connection.hostPort)}"
240
+ f"{dashboard_details.meta.url}?viewPanel={panel.id}"
241
+ ),
242
+ )
243
+ )
244
+ except Exception as exc:
245
+ yield Either(
246
+ left=StackTraceError(
247
+ name="Chart",
248
+ error=f"Error yielding chart for panel {panel.id}: {exc}",
249
+ stackTrace=traceback.format_exc(),
250
+ )
251
+ )
252
+
253
+ def yield_dashboard_lineage_details(
254
+ self,
255
+ dashboard_details: GrafanaDashboardResponse,
256
+ db_service_prefix: Optional[str] = None,
257
+ ) -> Iterable[Either[AddLineageRequest]]:
258
+ """
259
+ Get lineage between dashboard and data sources
260
+ """
261
+ if not dashboard_details.dashboard.panels:
262
+ return
263
+
264
+ try:
265
+ to_fqn = fqn.build(
266
+ self.metadata,
267
+ entity_type=LineageDashboard,
268
+ service_name=self.context.get().dashboard_service,
269
+ dashboard_name=dashboard_details.dashboard.uid,
270
+ )
271
+ to_entity = self.metadata.get_by_name(
272
+ entity=LineageDashboard,
273
+ fqn=to_fqn,
274
+ )
275
+
276
+ if not to_entity:
277
+ return
278
+
279
+ # Extract lineage from panels
280
+ for panel in dashboard_details.dashboard.panels:
281
+ if not panel.targets:
282
+ continue
283
+
284
+ for target in panel.targets:
285
+ yield from self._process_panel_lineage(
286
+ target=target,
287
+ panel=panel,
288
+ to_entity=to_entity,
289
+ db_service_prefix=db_service_prefix,
290
+ )
291
+
292
+ except Exception as exc:
293
+ yield Either(
294
+ left=StackTraceError(
295
+ name="Lineage",
296
+ error=f"Error extracting lineage: {exc}",
297
+ stackTrace=traceback.format_exc(),
298
+ )
299
+ )
300
+
301
+ def _process_panel_lineage(
302
+ self,
303
+ target: GrafanaTarget,
304
+ panel: GrafanaPanel,
305
+ to_entity: LineageDashboard,
306
+ db_service_prefix: Optional[str] = None,
307
+ ) -> Iterable[Either[AddLineageRequest]]:
308
+ """Process lineage for a single panel target"""
309
+ try:
310
+ # Get datasource information
311
+ datasource_name = self._extract_datasource_name(target, panel)
312
+ if not datasource_name:
313
+ return
314
+
315
+ datasource = self.datasources.get(datasource_name)
316
+ if not datasource:
317
+ return
318
+
319
+ # Extract SQL query if available
320
+ sql_query = self._extract_sql_query(target, datasource)
321
+ if not sql_query:
322
+ return
323
+
324
+ # Parse db service prefix into components
325
+ (
326
+ prefix_service_name,
327
+ prefix_database_name,
328
+ prefix_schema_name,
329
+ prefix_table_name,
330
+ ) = self.parse_db_service_prefix(db_service_prefix)
331
+
332
+ # Determine dialect. Prefer service type when service name is provided, else fallback to ANSI
333
+ dialect = Dialect.ANSI
334
+ try:
335
+ if prefix_service_name:
336
+ db_service_entity = self.metadata.get_by_name(
337
+ entity=DatabaseService, fqn=prefix_service_name
338
+ )
339
+ if db_service_entity and db_service_entity.serviceType:
340
+ dialect = ConnectionTypeDialectMapper.dialect_of(
341
+ db_service_entity.serviceType.value
342
+ )
343
+ except Exception:
344
+ pass
345
+
346
+ # Extract table references from the SQL
347
+ parser = LineageParser(sql_query, dialect)
348
+ database_name_hint = getattr(datasource, "database", None)
349
+
350
+ for table in parser.source_tables or []:
351
+ table_name_str = str(table)
352
+ db_sch_table = fqn.split_table_name(table_name_str)
353
+ database_name = db_sch_table.get("database") or database_name_hint
354
+ schema_name = self.check_database_schema_name(
355
+ db_sch_table.get("database_schema")
356
+ )
357
+ base_table_name = db_sch_table.get("table")
358
+
359
+ # Apply prefix filters when provided
360
+ if (
361
+ prefix_database_name
362
+ and database_name
363
+ and prefix_database_name.lower() != str(database_name).lower()
364
+ ):
365
+ continue
366
+ if (
367
+ prefix_schema_name
368
+ and schema_name
369
+ and prefix_schema_name.lower() != str(schema_name).lower()
370
+ ):
371
+ continue
372
+ if (
373
+ prefix_table_name
374
+ and base_table_name
375
+ and prefix_table_name.lower() != str(base_table_name).lower()
376
+ ):
377
+ continue
378
+
379
+ # Build ES FQN search string and fetch matching table entities
380
+ fqn_search_string = build_es_fqn_search_string(
381
+ database_name=prefix_database_name or database_name,
382
+ schema_name=prefix_schema_name or schema_name,
383
+ service_name=prefix_service_name or "*",
384
+ table_name=prefix_table_name or base_table_name,
385
+ )
386
+
387
+ from_entities = self.metadata.search_in_any_service(
388
+ entity_type=Table,
389
+ fqn_search_string=fqn_search_string,
390
+ fetch_multiple_entities=True,
391
+ )
392
+
393
+ for table_entity in from_entities or []:
394
+ lineage_request = DashboardServiceSource._get_add_lineage_request(
395
+ to_entity=to_entity,
396
+ from_entity=table_entity,
397
+ sql=sql_query,
398
+ )
399
+ if lineage_request:
400
+ yield lineage_request
401
+
402
+ except Exception as exc:
403
+ logger.debug(f"Error processing panel lineage: {exc}")
404
+ logger.error(traceback.format_exc())
405
+
406
+ def _extract_datasource_name(
407
+ self, target: GrafanaTarget, panel: GrafanaPanel
408
+ ) -> Optional[str]:
409
+ """Extract datasource name from target or panel"""
410
+ try:
411
+ # Try target datasource first
412
+ if target.datasource:
413
+ if isinstance(target.datasource, str):
414
+ return target.datasource
415
+ elif isinstance(target.datasource, dict):
416
+ return target.datasource.get("uid") or target.datasource.get("type")
417
+
418
+ # Fall back to panel datasource
419
+ if panel.datasource:
420
+ if isinstance(panel.datasource, str):
421
+ return panel.datasource
422
+ elif isinstance(panel.datasource, dict):
423
+ return panel.datasource.get("uid") or panel.datasource.get("type")
424
+
425
+ return None
426
+ except Exception as exc:
427
+ logger.debug(f"Error extracting datasource name: {exc}")
428
+ return None
429
+
430
+ def _extract_sql_query(
431
+ self, target: GrafanaTarget, datasource: GrafanaDatasource
432
+ ) -> Optional[str]:
433
+ """Extract SQL query from target based on datasource type"""
434
+ try:
435
+ # Handle different datasource types
436
+ if datasource.type in [
437
+ "mysql",
438
+ "grafana-postgresql-datasource",
439
+ "mssql",
440
+ "clickhouse",
441
+ ]:
442
+ return target.rawSql or target.query
443
+ elif datasource.type in ["prometheus", "elasticsearch"]:
444
+ # Prometheus and Elasticsearch queries aren't SQL
445
+ return None
446
+ else:
447
+ # Try generic query field
448
+ return target.query
449
+ except Exception as exc:
450
+ logger.debug(f"Error extracting SQL query: {exc}")
451
+ return None
452
+
453
+ def _map_panel_type_to_chart_type(self, panel_type: str) -> str:
454
+ """Map Grafana panel types to OpenMetadata chart types"""
455
+ mapping = {
456
+ "graph": "Line",
457
+ "timeseries": "Line",
458
+ "table": "Table",
459
+ "stat": "Text",
460
+ "gauge": "Gauge",
461
+ "bargauge": "Bar",
462
+ "bar": "Bar",
463
+ "piechart": "Pie",
464
+ "heatmap": "Heatmap",
465
+ "histogram": "Histogram",
466
+ "geomap": "Map",
467
+ "nodeGraph": "Graph",
468
+ "candlestick": "Other",
469
+ "state-timeline": "Timeline",
470
+ "status-history": "Timeline",
471
+ "alertlist": "Table",
472
+ "logs": "Table",
473
+ "news": "Text",
474
+ "text": "Text",
475
+ }
476
+ return get_standard_chart_type(mapping.get(panel_type, "Other"))
@@ -0,0 +1,159 @@
1
+ # Copyright 2025 Collate
2
+ # Licensed under the Collate Community License, Version 1.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
+ # https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE
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
+ Grafana API response models
13
+ """
14
+ from datetime import datetime
15
+ from typing import Any, Dict, List, Optional, Union
16
+
17
+ from pydantic import BaseModel, Field
18
+
19
+
20
+ class GrafanaUser(BaseModel):
21
+ """Grafana user model"""
22
+
23
+ id: int
24
+ email: Optional[str] = None
25
+ name: Optional[str] = None
26
+ login: Optional[str] = None
27
+
28
+
29
+ class GrafanaFolder(BaseModel):
30
+ """Grafana folder model"""
31
+
32
+ id: int
33
+ uid: str
34
+ title: str
35
+ url: Optional[str] = None
36
+ type: Optional[str] = None
37
+ tags: Optional[List[str]] = None
38
+ created: Optional[datetime] = None
39
+ updated: Optional[datetime] = None
40
+ createdBy: Optional[str] = None
41
+ updatedBy: Optional[str] = None
42
+ version: Optional[int] = None
43
+
44
+
45
+ class GrafanaDatasource(BaseModel):
46
+ """Grafana datasource model"""
47
+
48
+ id: Optional[int] = None
49
+ uid: Optional[str] = None
50
+ name: str
51
+ type: str
52
+ url: Optional[str] = None
53
+ database: Optional[str] = None
54
+ isDefault: Optional[bool] = None
55
+ jsonData: Optional[Dict[str, Any]] = None
56
+
57
+
58
+ class GrafanaTarget(BaseModel):
59
+ """Grafana panel target/query model"""
60
+
61
+ refId: Optional[str] = None
62
+ datasource: Optional[Union[str, Dict[str, Any]]] = None
63
+ rawSql: Optional[str] = None
64
+ query: Optional[str] = None
65
+ expr: Optional[str] = None # For Prometheus queries
66
+ format: Optional[str] = None
67
+ hide: Optional[bool] = False
68
+
69
+
70
+ class GrafanaPanel(BaseModel):
71
+ """Grafana panel model"""
72
+
73
+ id: int
74
+ type: str
75
+ title: Optional[str] = None
76
+ description: Optional[str] = None
77
+ datasource: Optional[Union[str, Dict[str, Any]]] = None
78
+ targets: Optional[List[GrafanaTarget]] = Field(default_factory=list)
79
+ gridPos: Optional[Dict[str, int]] = None
80
+ options: Optional[Dict[str, Any]] = None
81
+ fieldConfig: Optional[Dict[str, Any]] = None
82
+ transparent: Optional[bool] = None
83
+ pluginVersion: Optional[str] = None
84
+
85
+
86
+ class GrafanaDashboard(BaseModel):
87
+ """Grafana dashboard model"""
88
+
89
+ id: Optional[int] = None
90
+ uid: str
91
+ title: str
92
+ tags: Optional[List[str]] = Field(default_factory=list)
93
+ style: Optional[str] = None
94
+ timezone: Optional[str] = None
95
+ panels: Optional[List[GrafanaPanel]] = Field(default_factory=list)
96
+ editable: Optional[bool] = None
97
+ time: Optional[Dict[str, Any]] = None
98
+ timepicker: Optional[Dict[str, Any]] = None
99
+ templating: Optional[Dict[str, Any]] = None
100
+ annotations: Optional[Dict[str, Any]] = None
101
+ refresh: Optional[Union[str, bool]] = None
102
+ schemaVersion: Optional[int] = None
103
+ version: Optional[int] = None
104
+ description: Optional[str] = None
105
+ gnetId: Optional[Any] = None
106
+ links: Optional[List[Dict[str, Any]]] = None
107
+
108
+
109
+ class GrafanaDashboardMeta(BaseModel):
110
+ """Grafana dashboard metadata model"""
111
+
112
+ type: str
113
+ canSave: bool
114
+ canEdit: bool
115
+ canAdmin: bool
116
+ canStar: bool
117
+ canDelete: bool
118
+ slug: str
119
+ url: str
120
+ expires: Optional[datetime] = None
121
+ created: Optional[datetime] = None
122
+ updated: Optional[datetime] = None
123
+ updatedBy: Optional[str] = None
124
+ createdBy: Optional[str] = None
125
+ version: Optional[int] = None
126
+ hasAcl: Optional[bool] = None
127
+ isFolder: Optional[bool] = None
128
+ folderId: Optional[int] = None
129
+ folderUid: Optional[str] = None
130
+ folderTitle: Optional[str] = None
131
+ folderUrl: Optional[str] = None
132
+ provisioned: Optional[bool] = None
133
+ provisionedExternalId: Optional[str] = None
134
+ annotationsPermissions: Optional[Dict[str, Any]] = None
135
+
136
+
137
+ class GrafanaDashboardResponse(BaseModel):
138
+ """Full Grafana dashboard API response"""
139
+
140
+ dashboard: GrafanaDashboard
141
+ meta: GrafanaDashboardMeta
142
+
143
+
144
+ class GrafanaSearchResult(BaseModel):
145
+ """Grafana search API result model"""
146
+
147
+ id: int
148
+ uid: str
149
+ title: str
150
+ uri: str
151
+ url: str
152
+ slug: str
153
+ type: str # "dash-db" for dashboards, "dash-folder" for folders
154
+ tags: Optional[List[str]] = Field(default_factory=list)
155
+ isStarred: bool
156
+ folderId: Optional[int] = None
157
+ folderUid: Optional[str] = None
158
+ folderTitle: Optional[str] = None
159
+ folderUrl: Optional[str] = None
@@ -0,0 +1,17 @@
1
+ # Copyright 2025 Collate
2
+ # Licensed under the Collate Community License, Version 1.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
+ # https://github.com/open-metadata/OpenMetadata/blob/main/ingestion/LICENSE
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
+ Grafana Service Specification
13
+ """
14
+ from metadata.ingestion.source.dashboard.grafana.metadata import GrafanaSource
15
+ from metadata.utils.service_spec import BaseSpec
16
+
17
+ ServiceSpec = BaseSpec(metadata_source_class=GrafanaSource)
@@ -228,7 +228,7 @@ class MicrostrategySource(DashboardServiceSource):
228
228
  for table in lineage_parser.source_tables:
229
229
  table_entities = get_table_entities_from_query(
230
230
  metadata=self.metadata,
231
- service_name=prefix_db_service_name,
231
+ service_names=prefix_db_service_name,
232
232
  database_name="*",
233
233
  database_schema="*",
234
234
  table_name=str(table),