openmetadata-ingestion 1.7.5.3__py3-none-any.whl → 1.8.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of openmetadata-ingestion might be problematic. Click here for more details.
- _openmetadata_testutils/helpers/login_user.py +22 -0
- metadata/__init__.py +31 -0
- metadata/automations/runner.py +24 -14
- metadata/cli/ingest_dbt.py +1 -1
- metadata/data_quality/processor/test_case_runner.py +2 -11
- metadata/data_quality/source/test_suite.py +3 -1
- metadata/data_quality/validations/models.py +2 -2
- metadata/data_quality/validations/runtime_param_setter/base_diff_params_setter.py +3 -30
- metadata/data_quality/validations/runtime_param_setter/table_diff_params_setter.py +5 -11
- metadata/data_quality/validations/table/pandas/tableRowInsertedCountToBeBetween.py +17 -2
- metadata/data_quality/validations/table/sqlalchemy/tableDiff.py +1 -4
- metadata/generated/schema/analytics/__init__.py +1 -1
- metadata/generated/schema/analytics/basic.py +1 -1
- metadata/generated/schema/analytics/reportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/__init__.py +1 -1
- metadata/generated/schema/analytics/reportDataType/aggregatedCostAnalysisReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/entityReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/rawCostAnalysisReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/webAnalyticEntityViewReportData.py +1 -1
- metadata/generated/schema/analytics/reportDataType/webAnalyticUserActivityReportData.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEvent.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventData.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventType/__init__.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventType/customEvent.py +1 -1
- metadata/generated/schema/analytics/webAnalyticEventType/pageViewEvent.py +1 -1
- metadata/generated/schema/api/__init__.py +1 -1
- metadata/generated/schema/api/addGlossaryToAssetsRequest.py +3 -16
- metadata/generated/schema/api/addTagToAssetsRequest.py +1 -10
- metadata/generated/schema/api/analytics/__init__.py +1 -1
- metadata/generated/schema/api/analytics/createWebAnalyticEvent.py +1 -1
- metadata/generated/schema/api/automations/__init__.py +1 -1
- metadata/generated/schema/api/automations/createWorkflow.py +1 -1
- metadata/generated/schema/api/bulkAssets.py +1 -1
- metadata/generated/schema/api/classification/__init__.py +1 -1
- metadata/generated/schema/api/classification/createClassification.py +6 -2
- metadata/generated/schema/api/classification/createTag.py +6 -2
- metadata/generated/schema/api/classification/loadTags.py +1 -1
- metadata/generated/schema/api/createBot.py +1 -1
- metadata/generated/schema/api/createEventPublisherJob.py +1 -1
- metadata/generated/schema/api/createType.py +1 -1
- metadata/generated/schema/api/data/__init__.py +1 -1
- metadata/generated/schema/api/data/createAPICollection.py +1 -1
- metadata/generated/schema/api/data/createAPIEndpoint.py +1 -1
- metadata/generated/schema/api/data/createChart.py +1 -1
- metadata/generated/schema/api/data/createContainer.py +1 -1
- metadata/generated/schema/api/data/createCustomProperty.py +1 -1
- metadata/generated/schema/api/data/createDashboard.py +1 -1
- metadata/generated/schema/api/data/createDashboardDataModel.py +1 -1
- metadata/generated/schema/api/data/createDataContract.py +66 -0
- metadata/generated/schema/api/data/createDatabase.py +1 -1
- metadata/generated/schema/api/data/createDatabaseSchema.py +1 -1
- metadata/generated/schema/api/data/createGlossary.py +1 -1
- metadata/generated/schema/api/data/createGlossaryTerm.py +1 -1
- metadata/generated/schema/api/data/createMetric.py +1 -1
- metadata/generated/schema/api/data/createMlModel.py +1 -1
- metadata/generated/schema/api/data/createPipeline.py +1 -1
- metadata/generated/schema/api/data/createQuery.py +1 -1
- metadata/generated/schema/api/data/createQueryCostRecord.py +1 -1
- metadata/generated/schema/api/data/createSearchIndex.py +1 -1
- metadata/generated/schema/api/data/createStoredProcedure.py +1 -1
- metadata/generated/schema/api/data/createTable.py +1 -1
- metadata/generated/schema/api/data/createTableProfile.py +1 -1
- metadata/generated/schema/api/data/createTopic.py +1 -1
- metadata/generated/schema/api/data/loadGlossary.py +1 -1
- metadata/generated/schema/api/data/restoreEntity.py +1 -1
- metadata/generated/schema/api/data/updateColumn.py +49 -0
- metadata/generated/schema/api/dataInsight/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/createDataInsightChart.py +1 -1
- metadata/generated/schema/api/dataInsight/custom/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/custom/createDataInsightCustomChart.py +1 -1
- metadata/generated/schema/api/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/api/dataInsight/kpi/createKpiRequest.py +1 -1
- metadata/generated/schema/api/docStore/__init__.py +1 -1
- metadata/generated/schema/api/docStore/createDocument.py +1 -1
- metadata/generated/schema/api/domains/__init__.py +1 -1
- metadata/generated/schema/api/domains/createDataProduct.py +1 -1
- metadata/generated/schema/api/domains/createDomain.py +1 -1
- metadata/generated/schema/api/feed/__init__.py +1 -1
- metadata/generated/schema/api/feed/closeTask.py +1 -1
- metadata/generated/schema/api/feed/createPost.py +1 -1
- metadata/generated/schema/api/feed/createSuggestion.py +1 -1
- metadata/generated/schema/api/feed/createThread.py +1 -1
- metadata/generated/schema/api/feed/resolveTask.py +1 -1
- metadata/generated/schema/api/feed/threadCount.py +1 -1
- metadata/generated/schema/api/governance/__init__.py +1 -1
- metadata/generated/schema/api/governance/createWorkflowDefinition.py +1 -1
- metadata/generated/schema/api/governance/createWorkflowInstanceState.py +1 -1
- metadata/generated/schema/api/lineage/__init__.py +1 -1
- metadata/generated/schema/api/lineage/addLineage.py +1 -1
- metadata/generated/schema/api/lineage/esLineageData.py +1 -1
- metadata/generated/schema/api/lineage/lineageDirection.py +1 -1
- metadata/generated/schema/api/lineage/nodeInformation.py +1 -1
- metadata/generated/schema/api/lineage/searchLineageRequest.py +1 -1
- metadata/generated/schema/api/lineage/searchLineageResult.py +1 -1
- metadata/generated/schema/api/mcp/__init__.py +3 -0
- metadata/generated/schema/api/mcp/mcpToolDefinition.py +54 -0
- metadata/generated/schema/api/openMetadataServerVersion.py +1 -1
- metadata/generated/schema/api/policies/__init__.py +1 -1
- metadata/generated/schema/api/policies/createPolicy.py +1 -1
- metadata/generated/schema/api/scim/__init__.py +3 -0
- metadata/generated/schema/api/scim/scimGroup.py +52 -0
- metadata/generated/schema/api/scim/scimPatchOp.py +32 -0
- metadata/generated/schema/api/scim/scimUser.py +83 -0
- metadata/generated/schema/api/search/__init__.py +1 -1
- metadata/generated/schema/api/search/previewSearchRequest.py +1 -1
- metadata/generated/schema/api/services/__init__.py +1 -1
- metadata/generated/schema/api/services/createApiService.py +1 -1
- metadata/generated/schema/api/services/createDashboardService.py +1 -1
- metadata/generated/schema/api/services/createDatabaseService.py +1 -1
- metadata/generated/schema/api/services/createMessagingService.py +1 -1
- metadata/generated/schema/api/services/createMetadataService.py +1 -1
- metadata/generated/schema/api/services/createMlModelService.py +1 -1
- metadata/generated/schema/api/services/createPipelineService.py +1 -1
- metadata/generated/schema/api/services/createSearchService.py +1 -1
- metadata/generated/schema/api/services/createStorageService.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/api/services/ingestionPipelines/createIngestionPipeline.py +1 -1
- metadata/generated/schema/api/setOwner.py +1 -1
- metadata/generated/schema/api/teams/__init__.py +1 -1
- metadata/generated/schema/api/teams/createPersona.py +1 -1
- metadata/generated/schema/api/teams/createRole.py +1 -1
- metadata/generated/schema/api/teams/createTeam.py +8 -1
- metadata/generated/schema/api/teams/createUser.py +11 -1
- metadata/generated/schema/api/tests/__init__.py +1 -1
- metadata/generated/schema/api/tests/createCustomMetric.py +1 -1
- metadata/generated/schema/api/tests/createLogicalTestCases.py +1 -1
- metadata/generated/schema/api/tests/createTestCase.py +9 -6
- metadata/generated/schema/api/tests/createTestCaseResolutionStatus.py +1 -1
- metadata/generated/schema/api/tests/createTestCaseResult.py +1 -1
- metadata/generated/schema/api/tests/createTestDefinition.py +1 -1
- metadata/generated/schema/api/tests/createTestSuite.py +1 -1
- metadata/generated/schema/api/validateGlossaryTagsRequest.py +31 -0
- metadata/generated/schema/api/voteRequest.py +1 -1
- metadata/generated/schema/auth/__init__.py +1 -1
- metadata/generated/schema/auth/basicAuth.py +1 -1
- metadata/generated/schema/auth/basicLoginRequest.py +1 -1
- metadata/generated/schema/auth/changePasswordRequest.py +1 -1
- metadata/generated/schema/auth/createPersonalToken.py +1 -1
- metadata/generated/schema/auth/emailRequest.py +1 -1
- metadata/generated/schema/auth/emailVerificationToken.py +2 -1
- metadata/generated/schema/auth/generateToken.py +1 -1
- metadata/generated/schema/auth/jwtAuth.py +1 -1
- metadata/generated/schema/auth/loginRequest.py +1 -1
- metadata/generated/schema/auth/logoutRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetRequest.py +1 -1
- metadata/generated/schema/auth/passwordResetToken.py +1 -1
- metadata/generated/schema/auth/personalAccessToken.py +1 -1
- metadata/generated/schema/auth/refreshToken.py +1 -1
- metadata/generated/schema/auth/registrationRequest.py +1 -1
- metadata/generated/schema/auth/revokePersonalToken.py +1 -1
- metadata/generated/schema/auth/revokeToken.py +1 -1
- metadata/generated/schema/auth/serviceTokenEnum.py +1 -1
- metadata/generated/schema/auth/ssoAuth.py +1 -1
- metadata/generated/schema/auth/supportToken.py +35 -0
- metadata/generated/schema/auth/tokenRefreshRequest.py +1 -1
- metadata/generated/schema/configuration/__init__.py +1 -1
- metadata/generated/schema/configuration/appsPrivateConfiguration.py +1 -1
- metadata/generated/schema/configuration/assetCertificationSettings.py +1 -1
- metadata/generated/schema/configuration/authConfig.py +1 -1
- metadata/generated/schema/configuration/authenticationConfiguration.py +1 -1
- metadata/generated/schema/configuration/authorizerConfiguration.py +1 -1
- metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
- metadata/generated/schema/configuration/elasticSearchConfiguration.py +1 -1
- metadata/generated/schema/configuration/eventHandlerConfiguration.py +1 -1
- metadata/generated/schema/configuration/fernetConfiguration.py +1 -1
- metadata/generated/schema/configuration/jwtTokenConfiguration.py +1 -1
- metadata/generated/schema/configuration/kafkaEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/ldapConfiguration.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/__init__.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/customTrustManagerConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/hostNameConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/jvmDefaultConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/trustAllConfig.py +1 -1
- metadata/generated/schema/configuration/ldapTrustStoreConfig/truststoreConfig.py +1 -1
- metadata/generated/schema/configuration/limitsConfiguration.py +1 -1
- metadata/generated/schema/configuration/lineageSettings.py +1 -1
- metadata/generated/schema/configuration/loginConfiguration.py +1 -1
- metadata/generated/schema/configuration/logoConfiguration.py +1 -1
- metadata/generated/schema/configuration/openMetadataBaseUrlConfiguration.py +1 -1
- metadata/generated/schema/configuration/opertionalConfiguration.py +1 -1
- metadata/generated/schema/configuration/opsConfig.py +1 -1
- metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
- metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
- metadata/generated/schema/configuration/searchSettings.py +1 -1
- metadata/generated/schema/configuration/slackAppConfiguration.py +1 -1
- metadata/generated/schema/configuration/taskNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/testResultNotificationConfiguration.py +1 -1
- metadata/generated/schema/configuration/themeConfiguration.py +1 -1
- metadata/generated/schema/configuration/uiThemePreference.py +1 -1
- metadata/generated/schema/configuration/workflowSettings.py +1 -1
- metadata/generated/schema/dataInsight/__init__.py +1 -1
- metadata/generated/schema/dataInsight/custom/__init__.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChart.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResult.py +1 -1
- metadata/generated/schema/dataInsight/custom/dataInsightCustomChartResultList.py +1 -1
- metadata/generated/schema/dataInsight/custom/formulaHolder.py +1 -1
- metadata/generated/schema/dataInsight/custom/lineChart.py +1 -1
- metadata/generated/schema/dataInsight/custom/summaryCard.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChart.py +1 -1
- metadata/generated/schema/dataInsight/dataInsightChartResult.py +1 -1
- metadata/generated/schema/dataInsight/kpi/__init__.py +1 -1
- metadata/generated/schema/dataInsight/kpi/basic.py +1 -1
- metadata/generated/schema/dataInsight/kpi/kpi.py +1 -1
- metadata/generated/schema/dataInsight/type/__init__.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsCount.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUnusedAssetsSize.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsCount.py +1 -1
- metadata/generated/schema/dataInsight/type/aggregatedUsedVsUnusedAssetsSize.py +1 -1
- metadata/generated/schema/dataInsight/type/dailyActiveUsers.py +1 -1
- metadata/generated/schema/dataInsight/type/mostActiveUsers.py +1 -1
- metadata/generated/schema/dataInsight/type/mostViewedEntities.py +1 -1
- metadata/generated/schema/dataInsight/type/pageViewsByEntities.py +1 -1
- metadata/generated/schema/dataInsight/type/unusedAssets.py +1 -1
- metadata/generated/schema/email/__init__.py +1 -1
- metadata/generated/schema/email/emailRequest.py +1 -1
- metadata/generated/schema/email/emailTemplate.py +1 -1
- metadata/generated/schema/email/emailTemplatePlaceholder.py +1 -1
- metadata/generated/schema/email/smtpSettings.py +1 -1
- metadata/generated/schema/email/templateValidationReponse.py +1 -1
- metadata/generated/schema/entity/__init__.py +1 -1
- metadata/generated/schema/entity/applications/__init__.py +1 -1
- metadata/generated/schema/entity/applications/app.py +3 -2
- metadata/generated/schema/entity/applications/appExtension.py +1 -1
- metadata/generated/schema/entity/applications/appRunRecord.py +2 -1
- metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/applicationConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addCustomProperties.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDataProductAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/addTestCaseAction.py +5 -2
- metadata/generated/schema/entity/applications/configuration/external/automator/addTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/lineagePropagationAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/mlTaggingAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeCustomPropertiesAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDataProductAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDescriptionAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeDomainAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeOwnerAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTagsAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTestCaseAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/collateAIAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/slackAppTokenConfiguration.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/autoPilotAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/collateAIQualityAgentAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +9 -1
- metadata/generated/schema/entity/applications/configuration/internal/helloPipelinesConfiguration.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +9 -1
- metadata/generated/schema/entity/applications/configuration/private/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/limits.py +1 -1
- metadata/generated/schema/entity/applications/createAppRequest.py +1 -1
- metadata/generated/schema/entity/applications/jobStatus.py +1 -1
- metadata/generated/schema/entity/applications/liveExecutionContext.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/__init__.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/appMarketPlaceDefinition.py +1 -1
- metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +1 -1
- metadata/generated/schema/entity/applications/scheduledExecutionContext.py +1 -1
- metadata/generated/schema/entity/automations/__init__.py +1 -1
- metadata/generated/schema/entity/automations/testServiceConnection.py +1 -1
- metadata/generated/schema/entity/automations/workflow.py +1 -1
- metadata/generated/schema/entity/bot.py +1 -1
- metadata/generated/schema/entity/classification/__init__.py +1 -1
- metadata/generated/schema/entity/classification/classification.py +7 -4
- metadata/generated/schema/entity/classification/tag.py +6 -3
- metadata/generated/schema/entity/data/__init__.py +1 -1
- metadata/generated/schema/entity/data/apiCollection.py +1 -1
- metadata/generated/schema/entity/data/apiEndpoint.py +1 -1
- metadata/generated/schema/entity/data/chart.py +1 -1
- metadata/generated/schema/entity/data/container.py +1 -1
- metadata/generated/schema/entity/data/dashboard.py +1 -1
- metadata/generated/schema/entity/data/dashboardDataModel.py +1 -1
- metadata/generated/schema/entity/data/dataContract.py +180 -0
- metadata/generated/schema/entity/data/database.py +1 -1
- metadata/generated/schema/entity/data/databaseSchema.py +1 -1
- metadata/generated/schema/entity/data/glossary.py +1 -1
- metadata/generated/schema/entity/data/glossaryTerm.py +1 -1
- metadata/generated/schema/entity/data/metric.py +1 -1
- metadata/generated/schema/entity/data/mlmodel.py +1 -1
- metadata/generated/schema/entity/data/pipeline.py +1 -1
- metadata/generated/schema/entity/data/query.py +1 -1
- metadata/generated/schema/entity/data/queryCostRecord.py +1 -1
- metadata/generated/schema/entity/data/queryCostSearchResult.py +1 -1
- metadata/generated/schema/entity/data/report.py +1 -1
- metadata/generated/schema/entity/data/searchIndex.py +1 -1
- metadata/generated/schema/entity/data/storedProcedure.py +1 -1
- metadata/generated/schema/entity/data/table.py +10 -1
- metadata/generated/schema/entity/data/topic.py +1 -1
- metadata/generated/schema/entity/docStore/__init__.py +1 -1
- metadata/generated/schema/entity/docStore/document.py +1 -1
- metadata/generated/schema/entity/domains/__init__.py +1 -1
- metadata/generated/schema/entity/domains/dataProduct.py +5 -1
- metadata/generated/schema/entity/domains/domain.py +5 -1
- metadata/generated/schema/entity/events/__init__.py +1 -1
- metadata/generated/schema/entity/events/webhook.py +7 -1
- metadata/generated/schema/entity/feed/__init__.py +1 -1
- metadata/generated/schema/entity/feed/assets.py +1 -1
- metadata/generated/schema/entity/feed/customProperty.py +1 -1
- metadata/generated/schema/entity/feed/description.py +1 -1
- metadata/generated/schema/entity/feed/domain.py +1 -1
- metadata/generated/schema/entity/feed/entityInfo.py +1 -1
- metadata/generated/schema/entity/feed/owner.py +1 -1
- metadata/generated/schema/entity/feed/suggestion.py +1 -1
- metadata/generated/schema/entity/feed/tag.py +1 -1
- metadata/generated/schema/entity/feed/testCaseResult.py +1 -1
- metadata/generated/schema/entity/feed/thread.py +1 -1
- metadata/generated/schema/entity/policies/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/__init__.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/resourceDescriptor.py +6 -1
- metadata/generated/schema/entity/policies/accessControl/resourcePermission.py +1 -1
- metadata/generated/schema/entity/policies/accessControl/rule.py +1 -1
- metadata/generated/schema/entity/policies/filters.py +1 -1
- metadata/generated/schema/entity/policies/policy.py +1 -1
- metadata/generated/schema/entity/services/__init__.py +1 -1
- metadata/generated/schema/entity/services/apiService.py +1 -1
- metadata/generated/schema/entity/services/connections/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/api/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/api/restConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslCertPaths.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslCertValues.py +1 -1
- metadata/generated/schema/entity/services/connections/common/sslConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/connectionBasicType.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/bucketDetails.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerbi/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikCloudConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/athenaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +5 -1
- metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/iamAuthConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/jwtAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/database/common/noConfigAuthenticationTypes.py +1 -1
- metadata/generated/schema/entity/services/connections/database/couchbaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/databricksConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/azureConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/gcsConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalake/s3Config.py +1 -1
- metadata/generated/schema/entity/services/connections/database/datalakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/db2Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/metastoreConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/deltalake/storageConfig.py +1 -1
- metadata/generated/schema/entity/services/connections/database/domoDatabaseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dorisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/druidConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/exasolConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/glueConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/hiveConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/dynamoDbCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/glueCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/hiveCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergCatalog.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/icebergFileSystem.py +1 -1
- metadata/generated/schema/entity/services/connections/database/iceberg/restCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/icebergConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/impalaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/synapseConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/teradataConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/trinoConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/verticaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +9 -1
- metadata/generated/schema/entity/services/connections/messaging/saslMechanismType.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/alationConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +9 -1
- metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/matillion/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/matillion/matillionETL.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/matillionConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifi/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifi/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifi/clientCertificateAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/ssisConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/wherescapeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/apiAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearch/basicAuth.py +1 -1
- metadata/generated/schema/entity/services/connections/search/elasticSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/serviceConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/adlsConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/storage/s3Connection.py +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionDefinition.py +1 -1
- metadata/generated/schema/entity/services/connections/testConnectionResult.py +1 -1
- metadata/generated/schema/entity/services/dashboardService.py +1 -1
- metadata/generated/schema/entity/services/databaseService.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
- metadata/generated/schema/entity/services/messagingService.py +1 -1
- metadata/generated/schema/entity/services/metadataService.py +1 -1
- metadata/generated/schema/entity/services/mlmodelService.py +1 -1
- metadata/generated/schema/entity/services/pipelineService.py +1 -1
- metadata/generated/schema/entity/services/searchService.py +1 -1
- metadata/generated/schema/entity/services/serviceType.py +1 -1
- metadata/generated/schema/entity/services/storageService.py +1 -1
- metadata/generated/schema/entity/teams/__init__.py +1 -1
- metadata/generated/schema/entity/teams/persona.py +1 -1
- metadata/generated/schema/entity/teams/role.py +1 -1
- metadata/generated/schema/entity/teams/team.py +8 -1
- metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
- metadata/generated/schema/entity/teams/user.py +11 -1
- metadata/generated/schema/entity/type.py +1 -1
- metadata/generated/schema/entity/utils/__init__.py +1 -1
- metadata/generated/schema/entity/utils/entitiesCount.py +1 -1
- metadata/generated/schema/entity/utils/servicesCount.py +1 -1
- metadata/generated/schema/entity/utils/supersetApiConnection.py +1 -1
- metadata/generated/schema/events/__init__.py +1 -1
- metadata/generated/schema/events/alertMetrics.py +1 -1
- metadata/generated/schema/events/api/__init__.py +1 -1
- metadata/generated/schema/events/api/createEventSubscription.py +1 -1
- metadata/generated/schema/events/api/eventSubscriptionDiagnosticInfo.py +1 -1
- metadata/generated/schema/events/api/eventsRecord.py +1 -1
- metadata/generated/schema/events/api/testEventSubscriptionDestination.py +1 -1
- metadata/generated/schema/events/api/typedEvent.py +1 -1
- metadata/generated/schema/events/emailAlertConfig.py +1 -1
- metadata/generated/schema/events/eventFilterRule.py +1 -1
- metadata/generated/schema/events/eventSubscription.py +1 -1
- metadata/generated/schema/events/eventSubscriptionOffset.py +1 -1
- metadata/generated/schema/events/failedEvent.py +1 -1
- metadata/generated/schema/events/failedEventResponse.py +1 -1
- metadata/generated/schema/events/filterResourceDescriptor.py +1 -1
- metadata/generated/schema/events/statusContext.py +1 -1
- metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
- metadata/generated/schema/events/subscriptionStatus.py +1 -1
- metadata/generated/schema/events/testDestinationStatus.py +1 -1
- metadata/generated/schema/governance/workflows/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/edge.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodeSubType.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodeType.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/checkEntityAttributesTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +1 -1
- metadata/generated/schema/governance/workflows/workflowDefinition.py +1 -1
- metadata/generated/schema/governance/workflows/workflowInstance.py +1 -1
- metadata/generated/schema/governance/workflows/workflowInstanceState.py +1 -1
- metadata/generated/schema/jobs/__init__.py +1 -1
- metadata/generated/schema/jobs/backgroundJob.py +12 -3
- metadata/generated/schema/jobs/enumCleanupArgs.py +1 -1
- metadata/generated/schema/metadataIngestion/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/apiServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/application.py +1 -1
- metadata/generated/schema/metadataIngestion/applicationPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dashboardServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dataInsightPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceAutoClassificationPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtAzureConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtCloudConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/dbtconfig/dbtS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/messagingServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/metadataToElasticSearchPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/mlmodelServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/pipelineServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseIngestionPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/searchServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/__init__.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/containerMetadataConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/manifestMetadataConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageBucketDetails.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataADLSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataGCSConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataHttpConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataLocalConfig.py +1 -1
- metadata/generated/schema/metadataIngestion/storage/storageMetadataS3Config.py +1 -1
- metadata/generated/schema/metadataIngestion/storageServiceMetadataPipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/testSuitePipeline.py +1 -1
- metadata/generated/schema/metadataIngestion/workflow.py +1 -1
- metadata/generated/schema/monitoring/__init__.py +1 -1
- metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
- metadata/generated/schema/scim/__init__.py +3 -0
- metadata/generated/schema/scim/scimConfiguration.py +32 -0
- metadata/generated/schema/search/__init__.py +1 -1
- metadata/generated/schema/search/aggregationRequest.py +1 -1
- metadata/generated/schema/search/searchRequest.py +8 -1
- metadata/generated/schema/security/__init__.py +1 -1
- metadata/generated/schema/security/client/__init__.py +1 -1
- metadata/generated/schema/security/client/auth0SSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/azureSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/customOidcSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/googleSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/oidcClientConfig.py +1 -1
- metadata/generated/schema/security/client/oktaSSOClientConfig.py +1 -1
- metadata/generated/schema/security/client/openMetadataJWTClientConfig.py +1 -1
- metadata/generated/schema/security/client/samlSSOClientConfig.py +1 -1
- metadata/generated/schema/security/credentials/__init__.py +1 -1
- metadata/generated/schema/security/credentials/accessTokenAuth.py +1 -1
- metadata/generated/schema/security/credentials/apiAccessTokenAuth.py +1 -1
- metadata/generated/schema/security/credentials/awsCredentials.py +1 -1
- metadata/generated/schema/security/credentials/azureCredentials.py +1 -1
- metadata/generated/schema/security/credentials/basicAuth.py +1 -1
- metadata/generated/schema/security/credentials/bitbucketCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gcpCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gcpExternalAccount.py +1 -1
- metadata/generated/schema/security/credentials/gcpValues.py +1 -1
- metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
- metadata/generated/schema/security/credentials/githubCredentials.py +1 -1
- metadata/generated/schema/security/credentials/gitlabCredentials.py +1 -1
- metadata/generated/schema/security/sasl/__init__.py +1 -1
- metadata/generated/schema/security/sasl/saslClientConfig.py +1 -1
- metadata/generated/schema/security/secrets/__init__.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerClientLoader.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerConfiguration.py +1 -1
- metadata/generated/schema/security/secrets/secretsManagerProvider.py +1 -1
- metadata/generated/schema/security/securityConfiguration.py +1 -1
- metadata/generated/schema/security/ssl/__init__.py +1 -1
- metadata/generated/schema/security/ssl/validateSSLClientConfig.py +1 -1
- metadata/generated/schema/security/ssl/verifySSLConfig.py +1 -1
- metadata/generated/schema/settings/__init__.py +1 -1
- metadata/generated/schema/settings/settings.py +2 -1
- metadata/generated/schema/system/__init__.py +1 -1
- metadata/generated/schema/system/entityError.py +1 -1
- metadata/generated/schema/system/eventPublisherJob.py +8 -1
- metadata/generated/schema/system/indexingError.py +1 -1
- metadata/generated/schema/system/limitsResponse.py +1 -1
- metadata/generated/schema/system/ui/__init__.py +1 -1
- metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
- metadata/generated/schema/system/ui/navigationItem.py +1 -1
- metadata/generated/schema/system/ui/page.py +1 -1
- metadata/generated/schema/system/ui/tab.py +1 -1
- metadata/generated/schema/system/ui/uiCustomization.py +1 -1
- metadata/generated/schema/system/validationResponse.py +1 -1
- metadata/generated/schema/tests/__init__.py +1 -1
- metadata/generated/schema/tests/assigned.py +1 -1
- metadata/generated/schema/tests/basic.py +1 -1
- metadata/generated/schema/tests/customMetric.py +1 -1
- metadata/generated/schema/tests/dataQualityReport.py +1 -1
- metadata/generated/schema/tests/resolved.py +1 -1
- metadata/generated/schema/tests/testCase.py +1 -1
- metadata/generated/schema/tests/testCaseResolutionStatus.py +1 -1
- metadata/generated/schema/tests/testDefinition.py +1 -1
- metadata/generated/schema/tests/testSuite.py +1 -1
- metadata/generated/schema/type/__init__.py +1 -1
- metadata/generated/schema/type/apiSchema.py +1 -1
- metadata/generated/schema/type/assetCertification.py +1 -1
- metadata/generated/schema/type/auditLog.py +1 -1
- metadata/generated/schema/type/basic.py +1 -1
- metadata/generated/schema/type/bulkOperationResult.py +1 -1
- metadata/generated/schema/type/changeEvent.py +1 -1
- metadata/generated/schema/type/changeEventType.py +1 -1
- metadata/generated/schema/type/changeSummaryMap.py +1 -1
- metadata/generated/schema/type/collectionDescriptor.py +1 -1
- metadata/generated/schema/type/csvDocumentation.py +1 -1
- metadata/generated/schema/type/csvErrorType.py +1 -1
- metadata/generated/schema/type/csvFile.py +1 -1
- metadata/generated/schema/type/csvImportResult.py +1 -1
- metadata/generated/schema/type/customProperties/__init__.py +1 -1
- metadata/generated/schema/type/customProperties/complexTypes.py +1 -1
- metadata/generated/schema/type/customProperties/enumConfig.py +1 -1
- metadata/generated/schema/type/customProperties/tableConfig.py +1 -1
- metadata/generated/schema/type/customProperty.py +1 -1
- metadata/generated/schema/type/dailyCount.py +1 -1
- metadata/generated/schema/type/databaseConnectionConfig.py +1 -1
- metadata/generated/schema/type/entityHierarchy.py +1 -1
- metadata/generated/schema/type/entityHistory.py +1 -1
- metadata/generated/schema/type/entityLineage.py +1 -1
- metadata/generated/schema/type/entityReference.py +1 -1
- metadata/generated/schema/type/entityReferenceList.py +1 -1
- metadata/generated/schema/type/entityRelationship.py +1 -1
- metadata/generated/schema/type/entityUsage.py +1 -1
- metadata/generated/schema/type/filterPattern.py +1 -1
- metadata/generated/schema/type/function.py +1 -1
- metadata/generated/schema/type/include.py +1 -1
- metadata/generated/schema/type/jdbcConnection.py +1 -1
- metadata/generated/schema/type/lifeCycle.py +1 -1
- metadata/generated/schema/type/paging.py +1 -1
- metadata/generated/schema/type/profile.py +1 -1
- metadata/generated/schema/type/queryParserData.py +1 -1
- metadata/generated/schema/type/reaction.py +1 -1
- metadata/generated/schema/type/schedule.py +1 -1
- metadata/generated/schema/type/schema.py +1 -1
- metadata/generated/schema/type/tableQuery.py +1 -1
- metadata/generated/schema/type/tableUsageCount.py +1 -1
- metadata/generated/schema/type/tagLabel.py +1 -1
- metadata/generated/schema/type/usageDetails.py +1 -1
- metadata/generated/schema/type/usageRequest.py +1 -1
- metadata/generated/schema/type/votes.py +1 -1
- metadata/great_expectations/action.py +4 -8
- metadata/great_expectations/action1xx.py +395 -0
- metadata/ingestion/connections/builders.py +14 -4
- metadata/ingestion/connections/connection.py +63 -0
- metadata/ingestion/connections/query_logger.py +115 -0
- metadata/ingestion/connections/test_connections.py +1 -1
- metadata/ingestion/ometa/mixins/tests_mixin.py +3 -5
- metadata/ingestion/ometa/routes.py +2 -0
- metadata/ingestion/sink/metadata_rest.py +54 -11
- metadata/ingestion/source/api/api_service.py +2 -7
- metadata/ingestion/source/api/rest/metadata.py +0 -1
- metadata/ingestion/source/connections.py +80 -14
- metadata/ingestion/source/connections_utils.py +32 -0
- metadata/ingestion/source/dashboard/dashboard_service.py +2 -7
- metadata/ingestion/source/dashboard/qlikcloud/client.py +34 -2
- metadata/ingestion/source/dashboard/qlikcloud/constants.py +6 -0
- metadata/ingestion/source/dashboard/qlikcloud/models.py +8 -0
- metadata/ingestion/source/dashboard/superset/connection.py +8 -8
- metadata/ingestion/source/dashboard/superset/queries.py +1 -1
- metadata/ingestion/source/dashboard/tableau/client.py +4 -4
- metadata/ingestion/source/dashboard/tableau/metadata.py +0 -1
- metadata/ingestion/source/database/bigquery/connection.py +13 -9
- metadata/ingestion/source/database/bigquery/helper.py +11 -9
- metadata/ingestion/source/database/bigquery/metadata.py +102 -13
- metadata/ingestion/source/database/bigquery/profiler/system.py +1 -1
- metadata/ingestion/source/database/bigquery/queries.py +15 -3
- metadata/ingestion/source/database/common_db_source.py +2 -4
- metadata/ingestion/source/database/database_service.py +2 -7
- metadata/ingestion/source/database/databricks/client.py +149 -14
- metadata/ingestion/source/database/databricks/queries.py +26 -0
- metadata/ingestion/source/database/datalake/metadata.py +1 -1
- metadata/ingestion/source/database/dbt/metadata.py +0 -5
- metadata/ingestion/source/database/mysql/connection.py +52 -45
- metadata/ingestion/source/database/mysql/service_spec.py +2 -0
- metadata/ingestion/source/database/postgres/metadata.py +16 -4
- metadata/ingestion/source/database/postgres/models.py +1 -0
- metadata/ingestion/source/database/postgres/queries.py +7 -4
- metadata/ingestion/source/database/query_parser_source.py +2 -7
- metadata/ingestion/source/database/redshift/connection.py +1 -1
- metadata/ingestion/source/database/sample_data.py +1 -1
- metadata/ingestion/source/database/saphana/lineage.py +2 -7
- metadata/ingestion/source/database/sas/metadata.py +2 -7
- metadata/ingestion/source/database/trino/connection.py +10 -79
- metadata/ingestion/source/database/trino/profiler/system_tables_profiler.py +26 -17
- metadata/ingestion/source/database/unitycatalog/connection.py +33 -0
- metadata/ingestion/source/database/unitycatalog/lineage.py +2 -7
- metadata/ingestion/source/database/unitycatalog/metadata.py +126 -13
- metadata/ingestion/source/database/unitycatalog/queries.py +19 -0
- metadata/ingestion/source/messaging/messaging_service.py +2 -7
- metadata/ingestion/source/metadata/alationsink/metadata.py +2 -7
- metadata/ingestion/source/metadata/amundsen/metadata.py +2 -7
- metadata/ingestion/source/metadata/atlas/metadata.py +2 -7
- metadata/ingestion/source/mlmodel/mlmodel_service.py +2 -7
- metadata/ingestion/source/pipeline/airflow/connection.py +4 -6
- metadata/ingestion/source/pipeline/databrickspipeline/connection.py +26 -2
- metadata/ingestion/source/pipeline/databrickspipeline/metadata.py +175 -13
- metadata/ingestion/source/pipeline/nifi/metadata.py +133 -3
- metadata/ingestion/source/pipeline/pipeline_service.py +20 -7
- metadata/ingestion/source/search/search_service.py +2 -7
- metadata/ingestion/source/storage/storage_service.py +2 -7
- metadata/profiler/interface/sqlalchemy/bigquery/profiler_interface.py +3 -3
- metadata/profiler/interface/sqlalchemy/profiler_interface.py +1 -0
- metadata/profiler/metrics/static/not_regexp_match_count.py +4 -3
- metadata/profiler/metrics/static/regexp_match_count.py +3 -2
- metadata/profiler/orm/functions/length.py +1 -0
- metadata/profiler/orm/functions/md5.py +9 -0
- metadata/profiler/orm/functions/modulo.py +1 -0
- metadata/profiler/orm/functions/random_num.py +4 -0
- metadata/profiler/orm/functions/regexp.py +40 -0
- metadata/profiler/orm/functions/table_metric_computer.py +34 -8
- metadata/profiler/orm/registry.py +1 -0
- metadata/profiler/processor/core.py +2 -2
- metadata/profiler/processor/default.py +29 -28
- metadata/profiler/processor/metric_filter.py +16 -3
- metadata/profiler/processor/models.py +14 -4
- metadata/profiler/source/database/base/profiler_resolver.py +35 -0
- metadata/profiler/source/database/base/profiler_source.py +45 -30
- metadata/profiler/source/profiler_source_interface.py +8 -13
- metadata/sampler/sampler_interface.py +15 -10
- metadata/sampler/sqlalchemy/bigquery/sampler.py +7 -0
- metadata/utils/dependency_injector/dependency_injector.py +403 -0
- metadata/utils/service_spec/service_spec.py +66 -10
- metadata/workflow/profiler.py +2 -7
- {openmetadata_ingestion-1.7.5.3.dist-info → openmetadata_ingestion-1.8.1.0.dist-info}/METADATA +523 -516
- {openmetadata_ingestion-1.7.5.3.dist-info → openmetadata_ingestion-1.8.1.0.dist-info}/RECORD +805 -782
- {openmetadata_ingestion-1.7.5.3.dist-info → openmetadata_ingestion-1.8.1.0.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.7.5.3.dist-info → openmetadata_ingestion-1.8.1.0.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.7.5.3.dist-info → openmetadata_ingestion-1.8.1.0.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.7.5.3.dist-info → openmetadata_ingestion-1.8.1.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,115 @@
|
|
|
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
|
+
# pylint: disable=W0613
|
|
12
|
+
|
|
13
|
+
"""
|
|
14
|
+
Query tracking implementation using SQLAlchemy event listeners
|
|
15
|
+
"""
|
|
16
|
+
from datetime import datetime, timezone
|
|
17
|
+
from typing import Any, Dict, Optional, Tuple, Union
|
|
18
|
+
|
|
19
|
+
from pydantic import BaseModel, ConfigDict
|
|
20
|
+
from sqlalchemy.event import listen
|
|
21
|
+
from sqlalchemy.sql.elements import TextClause
|
|
22
|
+
|
|
23
|
+
from metadata.utils.logger import ingestion_logger
|
|
24
|
+
|
|
25
|
+
logger = ingestion_logger()
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class QueryInfo(BaseModel):
|
|
29
|
+
"""Class to store information about a query execution"""
|
|
30
|
+
|
|
31
|
+
model_config = ConfigDict(arbitrary_types_allowed=True)
|
|
32
|
+
|
|
33
|
+
statement: Union[str, TextClause]
|
|
34
|
+
parameters: Optional[Union[Dict[str, Any], Tuple[Any, ...]]]
|
|
35
|
+
start_time: datetime
|
|
36
|
+
end_time: Optional[datetime] = None
|
|
37
|
+
duration_ms: Optional[float] = None
|
|
38
|
+
error: Optional[Exception] = None
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class QueryLogger:
|
|
42
|
+
"""Class to track SQL query execution using SQLAlchemy event listeners"""
|
|
43
|
+
|
|
44
|
+
def __init__(self):
|
|
45
|
+
self._current_query: Optional[QueryInfo] = None
|
|
46
|
+
|
|
47
|
+
def before_cursor_execute(
|
|
48
|
+
self,
|
|
49
|
+
conn: Any,
|
|
50
|
+
cursor: Any,
|
|
51
|
+
statement: Union[str, TextClause],
|
|
52
|
+
parameters: Optional[Dict[str, Any]],
|
|
53
|
+
context: Any,
|
|
54
|
+
executemany: bool,
|
|
55
|
+
) -> Tuple[Union[str, TextClause], Optional[Dict[str, Any]]]:
|
|
56
|
+
"""Event listener for before cursor execute"""
|
|
57
|
+
self._current_query = QueryInfo(
|
|
58
|
+
statement=statement,
|
|
59
|
+
parameters=parameters,
|
|
60
|
+
start_time=datetime.now(timezone.utc),
|
|
61
|
+
)
|
|
62
|
+
return statement, parameters
|
|
63
|
+
|
|
64
|
+
def after_cursor_execute(
|
|
65
|
+
self,
|
|
66
|
+
conn: Any,
|
|
67
|
+
cursor: Any,
|
|
68
|
+
statement: Union[str, TextClause],
|
|
69
|
+
parameters: Optional[Dict[str, Any]],
|
|
70
|
+
context: Any,
|
|
71
|
+
executemany: bool,
|
|
72
|
+
) -> None:
|
|
73
|
+
"""Event listener for after cursor execute"""
|
|
74
|
+
if self._current_query:
|
|
75
|
+
query = self._current_query
|
|
76
|
+
query.end_time = datetime.now(timezone.utc)
|
|
77
|
+
query.duration_ms = (
|
|
78
|
+
query.end_time - query.start_time
|
|
79
|
+
).total_seconds() * 1000
|
|
80
|
+
|
|
81
|
+
logger.debug(
|
|
82
|
+
"Query execution details:\n"
|
|
83
|
+
f" Start Time: {query.start_time}\n"
|
|
84
|
+
f" End Time: {query.end_time}\n"
|
|
85
|
+
f" Duration: {query.duration_ms:.2f} ms\n"
|
|
86
|
+
f" Query: {query.statement}\n"
|
|
87
|
+
f" Parameters: {query.parameters}"
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
self._current_query = None
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def attach_query_tracker(engine: Any):
|
|
94
|
+
"""
|
|
95
|
+
Attach query tracking event listeners to a SQLAlchemy engine
|
|
96
|
+
|
|
97
|
+
Args:
|
|
98
|
+
engine: SQLAlchemy engine to attach listeners to
|
|
99
|
+
|
|
100
|
+
Returns:
|
|
101
|
+
QueryLogger instance that can be used to access query execution data
|
|
102
|
+
"""
|
|
103
|
+
tracker = QueryLogger()
|
|
104
|
+
|
|
105
|
+
listen(
|
|
106
|
+
engine,
|
|
107
|
+
"before_cursor_execute",
|
|
108
|
+
tracker.before_cursor_execute,
|
|
109
|
+
retval=True,
|
|
110
|
+
)
|
|
111
|
+
listen(
|
|
112
|
+
engine,
|
|
113
|
+
"after_cursor_execute",
|
|
114
|
+
tracker.after_cursor_execute,
|
|
115
|
+
)
|
|
@@ -38,7 +38,7 @@ from metadata.generated.schema.entity.services.connections.testConnectionResult
|
|
|
38
38
|
)
|
|
39
39
|
from metadata.generated.schema.type.basic import Timestamp
|
|
40
40
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
41
|
-
from metadata.ingestion.source.
|
|
41
|
+
from metadata.ingestion.source.connections_utils import kill_active_connections
|
|
42
42
|
from metadata.profiler.orm.functions.conn_test import ConnTestFn
|
|
43
43
|
from metadata.utils.constants import THREE_MIN
|
|
44
44
|
from metadata.utils.logger import cli_logger
|
|
@@ -74,8 +74,8 @@ class OMetaTestsMixin:
|
|
|
74
74
|
Returns:
|
|
75
75
|
_type_: _description_
|
|
76
76
|
"""
|
|
77
|
-
resp = self.client.
|
|
78
|
-
f"{self.get_suffix(
|
|
77
|
+
resp = self.client.post(
|
|
78
|
+
f"{self.get_suffix(TestCaseResult)}/{quote(test_case_fqn)}",
|
|
79
79
|
test_results.model_dump_json(),
|
|
80
80
|
)
|
|
81
81
|
|
|
@@ -167,7 +167,6 @@ class OMetaTestsMixin:
|
|
|
167
167
|
self,
|
|
168
168
|
test_case_fqn: str,
|
|
169
169
|
entity_link: Optional[str] = None,
|
|
170
|
-
test_suite_fqn: Optional[str] = None,
|
|
171
170
|
test_definition_fqn: Optional[str] = None,
|
|
172
171
|
test_case_parameter_values: Optional[List[TestCaseParameterValue]] = None,
|
|
173
172
|
):
|
|
@@ -196,7 +195,6 @@ class OMetaTestsMixin:
|
|
|
196
195
|
CreateTestCaseRequest(
|
|
197
196
|
name=test_case_fqn.split(".")[-1],
|
|
198
197
|
entityLink=entity_link,
|
|
199
|
-
testSuite=test_suite_fqn,
|
|
200
198
|
testDefinition=test_definition_fqn,
|
|
201
199
|
parameterValues=test_case_parameter_values,
|
|
202
200
|
) # type: ignore
|
|
@@ -253,7 +251,7 @@ class OMetaTestsMixin:
|
|
|
253
251
|
}
|
|
254
252
|
|
|
255
253
|
resp = self.client.get(
|
|
256
|
-
f"/
|
|
254
|
+
f"{self.get_suffix(TestCaseResult)}/{test_case_fqn}",
|
|
257
255
|
params,
|
|
258
256
|
)
|
|
259
257
|
|
|
@@ -167,6 +167,7 @@ from metadata.generated.schema.entity.teams.role import Role
|
|
|
167
167
|
from metadata.generated.schema.entity.teams.team import Team
|
|
168
168
|
from metadata.generated.schema.entity.teams.user import AuthenticationMechanism, User
|
|
169
169
|
from metadata.generated.schema.settings.settings import Settings
|
|
170
|
+
from metadata.generated.schema.tests.basic import TestCaseResult
|
|
170
171
|
from metadata.generated.schema.tests.testCase import TestCase
|
|
171
172
|
from metadata.generated.schema.tests.testDefinition import TestDefinition
|
|
172
173
|
from metadata.generated.schema.tests.testSuite import TestSuite
|
|
@@ -264,6 +265,7 @@ ROUTES = {
|
|
|
264
265
|
TestSuite.__name__: "/dataQuality/testSuites",
|
|
265
266
|
CreateTestSuiteRequest.__name__: "/dataQuality/testSuites",
|
|
266
267
|
TestCase.__name__: "/dataQuality/testCases",
|
|
268
|
+
TestCaseResult.__name__: "/dataQuality/testCases/testCaseResults",
|
|
267
269
|
CreateTestCaseRequest.__name__: "/dataQuality/testCases",
|
|
268
270
|
# Analytics
|
|
269
271
|
WebAnalyticEventData.__name__: "/analytics/web/events/collect",
|
|
@@ -79,7 +79,7 @@ from metadata.ingestion.models.tests_data import (
|
|
|
79
79
|
OMetaTestSuiteSample,
|
|
80
80
|
)
|
|
81
81
|
from metadata.ingestion.models.user import OMetaUserProfile
|
|
82
|
-
from metadata.ingestion.ometa.client import APIError
|
|
82
|
+
from metadata.ingestion.ometa.client import APIError, LimitsException
|
|
83
83
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
84
84
|
from metadata.ingestion.source.dashboard.dashboard_service import DashboardUsage
|
|
85
85
|
from metadata.ingestion.source.database.database_service import DataModelLink
|
|
@@ -118,6 +118,7 @@ class MetadataRestSink(Sink): # pylint: disable=too-many-public-methods
|
|
|
118
118
|
self.metadata = metadata
|
|
119
119
|
self.role_entities = {}
|
|
120
120
|
self.team_entities = {}
|
|
121
|
+
self.limit_reached = set()
|
|
121
122
|
|
|
122
123
|
@classmethod
|
|
123
124
|
def create(
|
|
@@ -166,16 +167,30 @@ class MetadataRestSink(Sink): # pylint: disable=too-many-public-methods
|
|
|
166
167
|
Send to OM the request creation received as is.
|
|
167
168
|
:param entity_request: Create Entity request
|
|
168
169
|
"""
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
170
|
+
if type(entity_request).__name__ in self.limit_reached:
|
|
171
|
+
# If the limit has been reached, we don't need to try to ingest the entity
|
|
172
|
+
# Note: We use PatchRequest to update the entity, so updating is not affected by the limit
|
|
173
|
+
return None
|
|
174
|
+
try:
|
|
175
|
+
created = self.metadata.create_or_update(entity_request)
|
|
176
|
+
if created:
|
|
177
|
+
return Either(right=created)
|
|
172
178
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
179
|
+
error = f"Failed to ingest {type(entity_request).__name__}"
|
|
180
|
+
return Either(
|
|
181
|
+
left=StackTraceError(
|
|
182
|
+
name=type(entity_request).__name__, error=error, stackTrace=None
|
|
183
|
+
)
|
|
184
|
+
)
|
|
185
|
+
except LimitsException as _:
|
|
186
|
+
self.limit_reached.add(type(entity_request).__name__)
|
|
187
|
+
return Either(
|
|
188
|
+
left=StackTraceError(
|
|
189
|
+
name=type(entity_request).__name__,
|
|
190
|
+
error=f"Limit reached for {type(entity_request).__name__}",
|
|
191
|
+
stackTrace=None,
|
|
192
|
+
)
|
|
177
193
|
)
|
|
178
|
-
)
|
|
179
194
|
|
|
180
195
|
@_run_dispatch.register
|
|
181
196
|
def patch_entity(self, record: PatchRequest) -> Either[Entity]:
|
|
@@ -329,12 +344,26 @@ class MetadataRestSink(Sink): # pylint: disable=too-many-public-methods
|
|
|
329
344
|
team = self.metadata.create_or_update(create_team)
|
|
330
345
|
self.team_entities[team.name.root] = str(team.id.root)
|
|
331
346
|
return team
|
|
347
|
+
except LimitsException as _:
|
|
348
|
+
if type(create_team).__name__ in self.limit_reached:
|
|
349
|
+
# Note: We do not have a way to patch the team,
|
|
350
|
+
# so we try to put and handle exception
|
|
351
|
+
return None
|
|
352
|
+
self.limit_reached.add(type(create_team).__name__)
|
|
353
|
+
return Either(
|
|
354
|
+
left=StackTraceError(
|
|
355
|
+
name=type(create_team).__name__,
|
|
356
|
+
error=f"Limit reached for {type(create_team).__name__}",
|
|
357
|
+
stackTrace=None,
|
|
358
|
+
)
|
|
359
|
+
)
|
|
332
360
|
except Exception as exc:
|
|
333
361
|
logger.debug(traceback.format_exc())
|
|
334
362
|
logger.error(f"Unexpected error creating team [{create_team}]: {exc}")
|
|
335
363
|
|
|
336
364
|
return None
|
|
337
365
|
|
|
366
|
+
# pylint: disable=too-many-branches
|
|
338
367
|
@_run_dispatch.register
|
|
339
368
|
def write_users(self, record: OMetaUserProfile) -> Either[User]:
|
|
340
369
|
"""
|
|
@@ -388,8 +417,22 @@ class MetadataRestSink(Sink): # pylint: disable=too-many-public-methods
|
|
|
388
417
|
metadata_user = CreateUserRequest(**user_profile)
|
|
389
418
|
|
|
390
419
|
# Create user
|
|
391
|
-
|
|
392
|
-
|
|
420
|
+
try:
|
|
421
|
+
user = self.metadata.create_or_update(metadata_user)
|
|
422
|
+
return Either(right=user)
|
|
423
|
+
except LimitsException as _:
|
|
424
|
+
if type(metadata_user).__name__ in self.limit_reached:
|
|
425
|
+
# Note: We do not have a way to patch the user,
|
|
426
|
+
# so we try to put and handle exception
|
|
427
|
+
return None
|
|
428
|
+
self.limit_reached.add(type(metadata_user).__name__)
|
|
429
|
+
return Either(
|
|
430
|
+
left=StackTraceError(
|
|
431
|
+
name=type(metadata_user).__name__,
|
|
432
|
+
error=f"Limit reached for {type(metadata_user).__name__}",
|
|
433
|
+
stackTrace=None,
|
|
434
|
+
)
|
|
435
|
+
)
|
|
393
436
|
|
|
394
437
|
@_run_dispatch.register
|
|
395
438
|
def delete_entity(self, record: DeleteEntity) -> Either[Entity]:
|
|
@@ -39,9 +39,6 @@ from metadata.ingestion.api.delete import delete_entity_from_source
|
|
|
39
39
|
from metadata.ingestion.api.models import Either
|
|
40
40
|
from metadata.ingestion.api.steps import Source
|
|
41
41
|
from metadata.ingestion.api.topology_runner import TopologyRunnerMixin
|
|
42
|
-
from metadata.ingestion.connections.test_connections import (
|
|
43
|
-
raise_test_connection_exception,
|
|
44
|
-
)
|
|
45
42
|
from metadata.ingestion.models.delete_entity import DeleteEntity
|
|
46
43
|
from metadata.ingestion.models.topology import (
|
|
47
44
|
NodeStage,
|
|
@@ -50,7 +47,7 @@ from metadata.ingestion.models.topology import (
|
|
|
50
47
|
TopologyNode,
|
|
51
48
|
)
|
|
52
49
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
53
|
-
from metadata.ingestion.source.connections import get_connection,
|
|
50
|
+
from metadata.ingestion.source.connections import get_connection, test_connection_common
|
|
54
51
|
from metadata.utils import fqn
|
|
55
52
|
from metadata.utils.logger import ingestion_logger
|
|
56
53
|
|
|
@@ -177,11 +174,9 @@ class ApiServiceSource(TopologyRunnerMixin, Source, ABC):
|
|
|
177
174
|
"""By default, nothing to close"""
|
|
178
175
|
|
|
179
176
|
def test_connection(self) -> None:
|
|
180
|
-
|
|
181
|
-
result = test_connection_fn(
|
|
177
|
+
test_connection_common(
|
|
182
178
|
self.metadata, self.connection_obj, self.service_connection
|
|
183
179
|
)
|
|
184
|
-
raise_test_connection_exception(result)
|
|
185
180
|
|
|
186
181
|
def mark_api_collections_as_deleted(self) -> Iterable[Either[DeleteEntity]]:
|
|
187
182
|
"""Method to mark the api collection as deleted"""
|
|
@@ -14,11 +14,16 @@ Main entrypoints to create and test connections
|
|
|
14
14
|
for any source.
|
|
15
15
|
"""
|
|
16
16
|
import traceback
|
|
17
|
-
from typing import Any, Callable
|
|
17
|
+
from typing import Any, Callable, Optional, Type
|
|
18
18
|
|
|
19
19
|
from pydantic import BaseModel
|
|
20
|
-
from sqlalchemy.engine import Engine
|
|
21
20
|
|
|
21
|
+
from metadata.ingestion.connections.connection import BaseConnection
|
|
22
|
+
from metadata.ingestion.connections.test_connections import (
|
|
23
|
+
raise_test_connection_exception,
|
|
24
|
+
)
|
|
25
|
+
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
26
|
+
from metadata.utils.class_helper import get_service_type_from_source_type
|
|
22
27
|
from metadata.utils.importer import import_connection_fn
|
|
23
28
|
from metadata.utils.logger import cli_logger
|
|
24
29
|
|
|
@@ -28,10 +33,71 @@ GET_CONNECTION_FN_NAME = "get_connection"
|
|
|
28
33
|
TEST_CONNECTION_FN_NAME = "test_connection"
|
|
29
34
|
|
|
30
35
|
|
|
36
|
+
# TODO: This is a temporary solution to get the connection class from the service spec.
|
|
37
|
+
# Once we migrate all connectors we shouldn't need this.
|
|
38
|
+
def _get_connection_class_from_spec(
|
|
39
|
+
connection: BaseModel,
|
|
40
|
+
) -> Optional[Type[BaseConnection]]:
|
|
41
|
+
"""
|
|
42
|
+
Helper method to get the connection class from the connection spec.
|
|
43
|
+
Returns the connection class if successful, None otherwise.
|
|
44
|
+
"""
|
|
45
|
+
from metadata.utils.service_spec.service_spec import ( # pylint: disable=import-outside-toplevel
|
|
46
|
+
BaseSpec,
|
|
47
|
+
import_connection_class,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
connection_type = getattr(connection, "type", None)
|
|
51
|
+
if connection_type:
|
|
52
|
+
service_type = get_service_type_from_source_type(connection_type.value)
|
|
53
|
+
try:
|
|
54
|
+
spec = BaseSpec.get_for_source(service_type, connection_type.value.lower())
|
|
55
|
+
if getattr(spec, "connection_class", None):
|
|
56
|
+
connection_class = import_connection_class(
|
|
57
|
+
service_type, connection_type.value.lower()
|
|
58
|
+
)
|
|
59
|
+
return connection_class
|
|
60
|
+
except Exception:
|
|
61
|
+
logger.error(
|
|
62
|
+
f"Error importing connection class for {connection_type.value}"
|
|
63
|
+
)
|
|
64
|
+
logger.debug(traceback.format_exc())
|
|
65
|
+
return None
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _get_connection_fn_from_service_spec(connection: BaseModel) -> Optional[Callable]:
|
|
69
|
+
"""
|
|
70
|
+
Import the get_connection function from the source, or use ServiceSpec connection_class if defined.
|
|
71
|
+
"""
|
|
72
|
+
connection_class = _get_connection_class_from_spec(connection)
|
|
73
|
+
if connection_class:
|
|
74
|
+
|
|
75
|
+
def _get_client(conn):
|
|
76
|
+
return connection_class(conn).get_client()
|
|
77
|
+
|
|
78
|
+
return _get_client
|
|
79
|
+
return None
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def _get_test_fn_from_service_spec(connection: BaseModel) -> Optional[Callable]:
|
|
83
|
+
"""
|
|
84
|
+
Import the get_connection function from the source, or use ServiceSpec connection_class if defined.
|
|
85
|
+
"""
|
|
86
|
+
connection_class = _get_connection_class_from_spec(connection)
|
|
87
|
+
if connection_class:
|
|
88
|
+
return connection_class(connection).test_connection
|
|
89
|
+
return None
|
|
90
|
+
|
|
91
|
+
|
|
31
92
|
def get_connection_fn(connection: BaseModel) -> Callable:
|
|
32
93
|
"""
|
|
33
|
-
Import the get_connection function from the source
|
|
94
|
+
Import the get_connection function from the source, or use ServiceSpec connection_class if defined.
|
|
34
95
|
"""
|
|
96
|
+
# Try ServiceSpec path first
|
|
97
|
+
connection_fn = _get_connection_fn_from_service_spec(connection)
|
|
98
|
+
if connection_fn:
|
|
99
|
+
return connection_fn
|
|
100
|
+
# Fallback to default
|
|
35
101
|
return import_connection_fn(
|
|
36
102
|
connection=connection, function_name=GET_CONNECTION_FN_NAME
|
|
37
103
|
)
|
|
@@ -41,6 +107,10 @@ def get_test_connection_fn(connection: BaseModel) -> Callable:
|
|
|
41
107
|
"""
|
|
42
108
|
Import the test_connection function from the source
|
|
43
109
|
"""
|
|
110
|
+
test_fn = _get_test_fn_from_service_spec(connection)
|
|
111
|
+
if test_fn:
|
|
112
|
+
return test_fn
|
|
113
|
+
# Fallback to default
|
|
44
114
|
return import_connection_fn(
|
|
45
115
|
connection=connection, function_name=TEST_CONNECTION_FN_NAME
|
|
46
116
|
)
|
|
@@ -54,15 +124,11 @@ def get_connection(connection: BaseModel) -> Any:
|
|
|
54
124
|
return get_connection_fn(connection)(connection)
|
|
55
125
|
|
|
56
126
|
|
|
57
|
-
def
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
as well as idle connections in the engine
|
|
61
|
-
"""
|
|
127
|
+
def test_connection_common(metadata: OpenMetadata, connection_obj, service_connection):
|
|
128
|
+
test_connection_fn = get_test_connection_fn(service_connection)
|
|
129
|
+
# TODO: Remove this once we migrate all connectors to use the new test connection function
|
|
62
130
|
try:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
logger.warning(f"Error Killing the active connections {exc}")
|
|
68
|
-
logger.debug(traceback.format_exc())
|
|
131
|
+
result = test_connection_fn(metadata)
|
|
132
|
+
except TypeError:
|
|
133
|
+
result = test_connection_fn(metadata, connection_obj, service_connection)
|
|
134
|
+
raise_test_connection_exception(result)
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
import traceback
|
|
13
|
+
|
|
14
|
+
from sqlalchemy.engine import Engine
|
|
15
|
+
|
|
16
|
+
from metadata.utils.logger import cli_logger
|
|
17
|
+
|
|
18
|
+
logger = cli_logger()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def kill_active_connections(engine: Engine):
|
|
22
|
+
"""
|
|
23
|
+
Method to kill the active connections
|
|
24
|
+
as well as idle connections in the engine
|
|
25
|
+
"""
|
|
26
|
+
try:
|
|
27
|
+
active_conn = engine.pool.checkedout() + engine.pool.checkedin()
|
|
28
|
+
if active_conn:
|
|
29
|
+
engine.dispose()
|
|
30
|
+
except Exception as exc:
|
|
31
|
+
logger.warning(f"Error Killing the active connections {exc}")
|
|
32
|
+
logger.debug(traceback.format_exc())
|
|
@@ -55,9 +55,6 @@ from metadata.ingestion.api.delete import delete_entity_from_source
|
|
|
55
55
|
from metadata.ingestion.api.models import Either, Entity
|
|
56
56
|
from metadata.ingestion.api.steps import Source
|
|
57
57
|
from metadata.ingestion.api.topology_runner import C, TopologyRunnerMixin
|
|
58
|
-
from metadata.ingestion.connections.test_connections import (
|
|
59
|
-
raise_test_connection_exception,
|
|
60
|
-
)
|
|
61
58
|
from metadata.ingestion.lineage.sql_lineage import get_column_fqn
|
|
62
59
|
from metadata.ingestion.models.delete_entity import DeleteEntity
|
|
63
60
|
from metadata.ingestion.models.ometa_classification import OMetaTagAndClassification
|
|
@@ -70,7 +67,7 @@ from metadata.ingestion.models.topology import (
|
|
|
70
67
|
TopologyNode,
|
|
71
68
|
)
|
|
72
69
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
73
|
-
from metadata.ingestion.source.connections import get_connection,
|
|
70
|
+
from metadata.ingestion.source.connections import get_connection, test_connection_common
|
|
74
71
|
from metadata.utils import fqn
|
|
75
72
|
from metadata.utils.filters import filter_by_dashboard, filter_by_project
|
|
76
73
|
from metadata.utils.logger import ingestion_logger
|
|
@@ -595,11 +592,9 @@ class DashboardServiceSource(TopologyRunnerMixin, Source, ABC):
|
|
|
595
592
|
yield dashboard_details
|
|
596
593
|
|
|
597
594
|
def test_connection(self) -> None:
|
|
598
|
-
|
|
599
|
-
result = test_connection_fn(
|
|
595
|
+
test_connection_common(
|
|
600
596
|
self.metadata, self.connection_obj, self.service_connection
|
|
601
597
|
)
|
|
602
|
-
raise_test_connection_exception(result)
|
|
603
598
|
|
|
604
599
|
def prepare(self):
|
|
605
600
|
"""By default, nothing to prepare"""
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
REST Auth & Client for QlikCloud
|
|
13
13
|
"""
|
|
14
14
|
import json
|
|
15
|
+
import re
|
|
15
16
|
import traceback
|
|
16
17
|
from typing import Dict, Iterable, List, Optional
|
|
17
18
|
|
|
@@ -23,12 +24,14 @@ from metadata.ingestion.source.dashboard.qlikcloud.constants import (
|
|
|
23
24
|
APP_LOADMODEL_REQ,
|
|
24
25
|
CREATE_SHEET_SESSION,
|
|
25
26
|
GET_LOADMODEL_LAYOUT,
|
|
27
|
+
GET_SCRIPT,
|
|
26
28
|
GET_SHEET_LAYOUT,
|
|
27
29
|
OPEN_DOC_REQ,
|
|
28
30
|
)
|
|
29
31
|
from metadata.ingestion.source.dashboard.qlikcloud.models import (
|
|
30
32
|
QlikApp,
|
|
31
33
|
QlikAppResponse,
|
|
34
|
+
QlikScriptResult,
|
|
32
35
|
QlikSpace,
|
|
33
36
|
QlikSpaceResponse,
|
|
34
37
|
)
|
|
@@ -173,12 +176,18 @@ class QlikCloudClient:
|
|
|
173
176
|
models = self._websocket_send_request(GET_LOADMODEL_LAYOUT, response=True)
|
|
174
177
|
data_models = QlikDataModelResult(**models)
|
|
175
178
|
layout = data_models.result.qLayout
|
|
179
|
+
parsed_datamodels = []
|
|
176
180
|
if isinstance(layout, list):
|
|
177
181
|
tables = []
|
|
178
182
|
for layout in data_models.result.qLayout:
|
|
179
183
|
tables.extend(layout.value.tables)
|
|
180
|
-
|
|
181
|
-
|
|
184
|
+
parsed_datamodels.extend(tables)
|
|
185
|
+
else:
|
|
186
|
+
parsed_datamodels.extend(layout.tables)
|
|
187
|
+
script_tables = self.get_script_tables()
|
|
188
|
+
if script_tables:
|
|
189
|
+
parsed_datamodels.extend(script_tables)
|
|
190
|
+
return parsed_datamodels
|
|
182
191
|
except Exception:
|
|
183
192
|
logger.debug(traceback.format_exc())
|
|
184
193
|
logger.warning("Failed to fetch the dashboard datamodels")
|
|
@@ -204,3 +213,26 @@ class QlikCloudClient:
|
|
|
204
213
|
except Exception:
|
|
205
214
|
logger.debug(traceback.format_exc())
|
|
206
215
|
logger.warning("Failed to fetch the space list")
|
|
216
|
+
|
|
217
|
+
def get_script_tables(self) -> Optional[List[QlikTable]]:
|
|
218
|
+
"""Get script tables from the dashboard script"""
|
|
219
|
+
script_tables = []
|
|
220
|
+
try:
|
|
221
|
+
script_response = self._websocket_send_request(GET_SCRIPT, response=True)
|
|
222
|
+
script_result = QlikScriptResult(**script_response)
|
|
223
|
+
if script_result.result.qScript:
|
|
224
|
+
script_value = script_result.result.qScript
|
|
225
|
+
matches = re.findall(
|
|
226
|
+
r'FROM\s+["\']?([a-zA-Z0-9_.]+)["\']?', script_value, re.IGNORECASE
|
|
227
|
+
)
|
|
228
|
+
if isinstance(matches, list):
|
|
229
|
+
for table in matches:
|
|
230
|
+
table_name = table.split(".")[-1]
|
|
231
|
+
script_tables.append(QlikTable(tableName=table_name))
|
|
232
|
+
if not script_tables:
|
|
233
|
+
logger.warning("No script tables found")
|
|
234
|
+
return script_tables
|
|
235
|
+
except Exception:
|
|
236
|
+
logger.debug(traceback.format_exc())
|
|
237
|
+
logger.warning("Failed to fetch the script tables")
|
|
238
|
+
return script_tables
|
|
@@ -84,3 +84,11 @@ class QlikAppResponse(BaseModel):
|
|
|
84
84
|
|
|
85
85
|
apps: Optional[List[QlikApp]] = Field(None, alias="data")
|
|
86
86
|
links: Optional[QlikLinks] = None
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class QlikScript(BaseModel):
|
|
90
|
+
qScript: Optional[str] = None
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
class QlikScriptResult(BaseModel):
|
|
94
|
+
result: Optional[QlikScript] = QlikScript()
|
|
@@ -24,7 +24,7 @@ from metadata.generated.schema.entity.services.connections.dashboard.supersetCon
|
|
|
24
24
|
SupersetConnection,
|
|
25
25
|
)
|
|
26
26
|
from metadata.generated.schema.entity.services.connections.database.mysqlConnection import (
|
|
27
|
-
MysqlConnection,
|
|
27
|
+
MysqlConnection as MysqlConnectionConfig,
|
|
28
28
|
)
|
|
29
29
|
from metadata.generated.schema.entity.services.connections.database.postgresConnection import (
|
|
30
30
|
PostgresConnection,
|
|
@@ -46,16 +46,16 @@ from metadata.ingestion.source.dashboard.superset.queries import (
|
|
|
46
46
|
FETCH_ALL_CHARTS_TEST,
|
|
47
47
|
FETCH_DASHBOARDS_TEST,
|
|
48
48
|
)
|
|
49
|
-
from metadata.ingestion.source.database.mysql.connection import
|
|
50
|
-
get_connection as mysql_get_connection,
|
|
51
|
-
)
|
|
49
|
+
from metadata.ingestion.source.database.mysql.connection import MySQLConnection
|
|
52
50
|
from metadata.ingestion.source.database.postgres.connection import (
|
|
53
51
|
get_connection as pg_get_connection,
|
|
54
52
|
)
|
|
55
53
|
from metadata.utils.constants import THREE_MIN
|
|
56
54
|
|
|
57
55
|
|
|
58
|
-
def get_connection(
|
|
56
|
+
def get_connection(
|
|
57
|
+
connection: SupersetConnection,
|
|
58
|
+
) -> Union[SupersetAPIClient, Engine, None]:
|
|
59
59
|
"""
|
|
60
60
|
Create connection
|
|
61
61
|
"""
|
|
@@ -63,8 +63,8 @@ def get_connection(connection: SupersetConnection) -> SupersetAPIClient:
|
|
|
63
63
|
return SupersetAPIClient(connection)
|
|
64
64
|
if isinstance(connection.connection, PostgresConnection):
|
|
65
65
|
return pg_get_connection(connection=connection.connection)
|
|
66
|
-
if isinstance(connection.connection,
|
|
67
|
-
return
|
|
66
|
+
if isinstance(connection.connection, MysqlConnectionConfig):
|
|
67
|
+
return MySQLConnection(connection.connection).get_client()
|
|
68
68
|
return None
|
|
69
69
|
|
|
70
70
|
|
|
@@ -89,7 +89,7 @@ def test_connection(
|
|
|
89
89
|
else:
|
|
90
90
|
test_fn["CheckAccess"] = partial(test_connection_engine_step, client)
|
|
91
91
|
test_fn["GetDashboards"] = partial(test_query, client, FETCH_DASHBOARDS_TEST)
|
|
92
|
-
if isinstance(service_connection.connection,
|
|
92
|
+
if isinstance(service_connection.connection, MysqlConnectionConfig):
|
|
93
93
|
test_fn["GetCharts"] = partial(
|
|
94
94
|
test_query, client, FETCH_ALL_CHARTS_TEST.replace('"', "`")
|
|
95
95
|
)
|