openmetadata-ingestion 1.6.7.0__py3-none-any.whl → 1.7.0.0rc1__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.
- metadata/automations/execute_runner.py +49 -0
- metadata/automations/extended_runner.py +13 -0
- metadata/automations/runner.py +34 -35
- metadata/data_quality/validations/table/base/tableCustomSQLQuery.py +11 -1
- metadata/examples/workflows/cassandra.yaml +35 -0
- metadata/examples/workflows/cockroach.yaml +24 -0
- metadata/examples/workflows/nifi.yaml +51 -0
- metadata/examples/workflows/opensearch.yaml +20 -0
- 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 +1 -1
- metadata/generated/schema/api/addTagToAssetsRequest.py +1 -1
- 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 +14 -4
- metadata/generated/schema/api/bulkAssets.py +1 -1
- metadata/generated/schema/api/classification/__init__.py +1 -1
- metadata/generated/schema/api/classification/createClassification.py +2 -2
- metadata/generated/schema/api/classification/createTag.py +2 -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/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 +5 -1
- metadata/generated/schema/api/data/createQuery.py +1 -1
- metadata/generated/schema/api/data/createQueryCostRecord.py +35 -0
- 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/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 +8 -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 +25 -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 +85 -0
- metadata/generated/schema/api/lineage/lineageDirection.py +12 -0
- metadata/generated/schema/api/lineage/nodeInformation.py +19 -0
- metadata/generated/schema/api/lineage/searchLineageRequest.py +45 -0
- metadata/generated/schema/api/lineage/searchLineageResult.py +46 -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/search/__init__.py +3 -0
- metadata/generated/schema/api/search/previewSearchRequest.py +47 -0
- metadata/generated/schema/api/services/__init__.py +1 -1
- metadata/generated/schema/api/services/createApiService.py +9 -2
- metadata/generated/schema/api/services/createDashboardService.py +9 -2
- metadata/generated/schema/api/services/createDatabaseService.py +9 -2
- metadata/generated/schema/api/services/createMessagingService.py +9 -2
- metadata/generated/schema/api/services/createMetadataService.py +9 -2
- metadata/generated/schema/api/services/createMlModelService.py +9 -2
- metadata/generated/schema/api/services/createPipelineService.py +9 -2
- metadata/generated/schema/api/services/createSearchService.py +9 -2
- metadata/generated/schema/api/services/createStorageService.py +9 -2
- 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 +1 -1
- metadata/generated/schema/api/teams/createUser.py +1 -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 +1 -1
- 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/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 +1 -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/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 +4 -1
- metadata/generated/schema/configuration/changeEventConfiguration.py +1 -1
- metadata/generated/schema/configuration/dataQualityConfiguration.py +1 -1
- metadata/generated/schema/configuration/elasticSearchConfiguration.py +55 -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 +21 -0
- metadata/generated/schema/configuration/pipelineServiceClientConfiguration.py +1 -1
- metadata/generated/schema/configuration/profilerConfiguration.py +1 -1
- metadata/generated/schema/configuration/searchSettings.py +428 -4
- 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 +8 -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 +15 -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 -2
- 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 +14 -1
- metadata/generated/schema/entity/applications/appExtension.py +1 -1
- metadata/generated/schema/entity/applications/appRunRecord.py +23 -4
- metadata/generated/schema/entity/applications/configuration/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/applicationConfig.py +9 -3
- 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 +41 -0
- 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 +71 -0
- 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 +33 -0
- 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 +45 -0
- metadata/generated/schema/entity/applications/configuration/external/automator/removeTierAction.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/automatorAppConfig.py +13 -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/collateAIQualityAgentAppConfig.py +46 -0
- metadata/generated/schema/entity/applications/configuration/internal/collateAITierAgentAppConfig.py +46 -0
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsAppConfig.py +109 -2
- metadata/generated/schema/entity/applications/configuration/internal/dataInsightsReportAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dataRetentionConfiguration.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/dayOneExperienceAppConfig.py +48 -0
- metadata/generated/schema/entity/applications/configuration/internal/searchIndexingAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/__init__.py +3 -0
- metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/collateAIAppPrivateConfig.py +3 -22
- metadata/generated/schema/entity/applications/configuration/private/internal/__init__.py +3 -0
- metadata/generated/schema/entity/applications/configuration/private/internal/collateAITierAgentAppPrivateConfig.py +24 -0
- metadata/generated/schema/entity/applications/configuration/private/limits.py +33 -0
- 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 +13 -1
- metadata/generated/schema/entity/applications/marketplace/createAppMarketPlaceDefinitionReq.py +13 -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 +15 -4
- metadata/generated/schema/entity/bot.py +1 -1
- metadata/generated/schema/entity/classification/__init__.py +1 -1
- metadata/generated/schema/entity/classification/classification.py +1 -1
- metadata/generated/schema/entity/classification/tag.py +1 -1
- 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/database.py +5 -1
- metadata/generated/schema/entity/data/databaseSchema.py +7 -5
- 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 +14 -1
- metadata/generated/schema/entity/data/query.py +1 -1
- metadata/generated/schema/entity/data/queryCostRecord.py +47 -0
- metadata/generated/schema/entity/data/queryCostSearchResult.py +56 -0
- 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 +3 -1
- metadata/generated/schema/entity/data/table.py +8 -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 +1 -1
- metadata/generated/schema/entity/domains/domain.py +8 -1
- metadata/generated/schema/entity/events/__init__.py +1 -1
- metadata/generated/schema/entity/events/webhook.py +1 -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 +1 -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 +8 -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 +11 -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 +7 -1
- metadata/generated/schema/entity/services/connections/dashboard/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/customDashboardConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/domoDashboardConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/lightdashConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/lookerConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/metabaseConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/microStrategyConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/modeConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIReportServerConnection.py +34 -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 +50 -2
- metadata/generated/schema/entity/services/connections/dashboard/qlikSenseConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/quickSightConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/redashConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/sigmaConnection.py +35 -1
- metadata/generated/schema/entity/services/connections/dashboard/supersetConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/dashboard/tableauConnection.py +34 -1
- metadata/generated/schema/entity/services/connections/database/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/database/athenaConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/azureSQLConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +36 -1
- metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/cassandra/__init__.py +3 -0
- metadata/generated/schema/entity/services/connections/database/cassandra/cloudConfig.py +61 -0
- metadata/generated/schema/entity/services/connections/database/cassandraConnection.py +106 -0
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/cockroachConnection.py +136 -0
- 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 +26 -1
- metadata/generated/schema/entity/services/connections/database/customDatabaseConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/databricksConnection.py +37 -2
- 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 +26 -1
- metadata/generated/schema/entity/services/connections/database/db2Connection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/deltaLakeConnection.py +26 -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 +26 -1
- metadata/generated/schema/entity/services/connections/database/dorisConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/druidConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/dynamoDBConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/exasolConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/glueConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/greenplumConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/hiveConnection.py +26 -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 +26 -1
- metadata/generated/schema/entity/services/connections/database/impalaConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/mariaDBConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/mongoDBConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/mssqlConnection.py +42 -2
- metadata/generated/schema/entity/services/connections/database/mysqlConnection.py +32 -2
- metadata/generated/schema/entity/services/connections/database/oracleConnection.py +32 -2
- metadata/generated/schema/entity/services/connections/database/pinotDBConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/postgresConnection.py +37 -2
- metadata/generated/schema/entity/services/connections/database/prestoConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/redshiftConnection.py +41 -2
- metadata/generated/schema/entity/services/connections/database/salesforceConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/sapErpConnection.py +26 -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 +26 -1
- metadata/generated/schema/entity/services/connections/database/sasConnection.py +27 -1
- metadata/generated/schema/entity/services/connections/database/singleStoreConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/snowflakeConnection.py +58 -3
- metadata/generated/schema/entity/services/connections/database/sqliteConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/synapseConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/teradataConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/trinoConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/database/unityCatalogConnection.py +37 -2
- metadata/generated/schema/entity/services/connections/database/verticaConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/messaging/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/messaging/customMessagingConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/messaging/kafkaConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/messaging/kinesisConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/messaging/pulsarConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/messaging/redpandaConnection.py +10 -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 +26 -1
- metadata/generated/schema/entity/services/connections/metadata/alationSinkConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/metadata/amundsenConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/metadata/atlasConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/metadata/metadataESConnection.py +26 -1
- metadata/generated/schema/entity/services/connections/metadata/openMetadataConnection.py +26 -2
- metadata/generated/schema/entity/services/connections/mlmodel/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/mlmodel/customMlModelConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/mlmodel/mlflowConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sageMakerConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/mlmodel/sklearnConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/mlmodel/vertexaiConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/airbyteConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/airflowConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/backendConnection.py +11 -1
- metadata/generated/schema/entity/services/connections/pipeline/customPipelineConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/dagsterConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/databricksPipelineConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/datafactoryConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/dbtCloudConnection.py +11 -1
- metadata/generated/schema/entity/services/connections/pipeline/domoPipelineConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/fivetranConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/flinkConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/gluePipelineConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/kafkaConnectConnection.py +11 -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 +10 -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 +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/openLineageConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/sparkConnection.py +11 -1
- metadata/generated/schema/entity/services/connections/pipeline/splineConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/pipeline/stitchConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/search/__init__.py +1 -1
- metadata/generated/schema/entity/services/connections/search/customSearchConnection.py +10 -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 +10 -1
- metadata/generated/schema/entity/services/connections/search/openSearchConnection.py +37 -29
- 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 +10 -1
- metadata/generated/schema/entity/services/connections/storage/customStorageConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/storage/gcsConnection.py +10 -1
- metadata/generated/schema/entity/services/connections/storage/s3Connection.py +10 -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 +8 -1
- metadata/generated/schema/entity/services/databaseService.py +14 -1
- metadata/generated/schema/entity/services/ingestionPipelines/__init__.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/ingestionPipeline.py +8 -1
- metadata/generated/schema/entity/services/ingestionPipelines/pipelineServiceClientResponse.py +1 -1
- metadata/generated/schema/entity/services/ingestionPipelines/reverseIngestionResponse.py +47 -0
- metadata/generated/schema/entity/services/ingestionPipelines/status.py +1 -1
- metadata/generated/schema/entity/services/messagingService.py +8 -1
- metadata/generated/schema/entity/services/metadataService.py +8 -1
- metadata/generated/schema/entity/services/mlmodelService.py +8 -1
- metadata/generated/schema/entity/services/pipelineService.py +8 -1
- metadata/generated/schema/entity/services/searchService.py +9 -2
- metadata/generated/schema/entity/services/serviceType.py +1 -1
- metadata/generated/schema/entity/services/storageService.py +8 -1
- metadata/generated/schema/entity/teams/__init__.py +1 -1
- metadata/generated/schema/entity/teams/persona.py +5 -1
- metadata/generated/schema/entity/teams/role.py +1 -1
- metadata/generated/schema/entity/teams/team.py +1 -1
- metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
- metadata/generated/schema/entity/teams/user.py +5 -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 +9 -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 +9 -2
- 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 +2 -2
- metadata/generated/schema/governance/workflows/elements/nodeSubType.py +4 -1
- metadata/generated/schema/governance/workflows/elements/nodeType.py +2 -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 +28 -8
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/createAndRunIngestionPipelineTask.py +86 -0
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/runAppTask.py +73 -0
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setEntityCertificationTask.py +27 -6
- metadata/generated/schema/governance/workflows/elements/nodes/automatedTask/setGlossaryTermStatusTask.py +28 -7
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/endEvent/endEvent.py +9 -4
- metadata/generated/schema/governance/workflows/elements/nodes/gateway/__init__.py +3 -0
- metadata/generated/schema/governance/workflows/elements/nodes/gateway/parallelGateway.py +30 -0
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/startEvent/startEvent.py +9 -4
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/nodes/userTask/userApprovalTask.py +24 -7
- metadata/generated/schema/governance/workflows/elements/triggers/__init__.py +1 -1
- metadata/generated/schema/governance/workflows/elements/triggers/eventBasedEntityTrigger.py +8 -4
- metadata/generated/schema/governance/workflows/elements/triggers/noOpTrigger.py +20 -0
- metadata/generated/schema/governance/workflows/elements/triggers/periodicBatchEntityTrigger.py +18 -5
- metadata/generated/schema/governance/workflows/workflowDefinition.py +30 -7
- metadata/generated/schema/governance/workflows/workflowInstance.py +11 -8
- metadata/generated/schema/governance/workflows/workflowInstanceState.py +4 -8
- metadata/generated/schema/jobs/__init__.py +1 -1
- metadata/generated/schema/jobs/backgroundJob.py +1 -1
- 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 +4 -4
- metadata/generated/schema/metadataIngestion/databaseServiceProfilerPipeline.py +5 -1
- metadata/generated/schema/metadataIngestion/databaseServiceQueryLineagePipeline.py +18 -2
- metadata/generated/schema/metadataIngestion/databaseServiceQueryUsagePipeline.py +9 -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 +64 -0
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/__init__.py +3 -0
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/descriptionConfig.py +24 -0
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/ownerConfig.py +28 -0
- metadata/generated/schema/metadataIngestion/reverseingestionconfig/tagsConfig.py +28 -0
- 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 +3 -1
- metadata/generated/schema/monitoring/__init__.py +1 -1
- metadata/generated/schema/monitoring/eventMonitorProvider.py +1 -1
- metadata/generated/schema/search/__init__.py +3 -0
- metadata/generated/schema/search/searchRequest.py +106 -0
- 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 +42 -22
- metadata/generated/schema/security/credentials/gcpExternalAccount.py +2 -2
- 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 +4 -1
- metadata/generated/schema/system/__init__.py +1 -1
- metadata/generated/schema/system/entityError.py +1 -1
- metadata/generated/schema/system/eventPublisherJob.py +1 -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 +38 -0
- metadata/generated/schema/system/ui/page.py +23 -15
- metadata/generated/schema/system/ui/tab.py +36 -0
- metadata/generated/schema/system/ui/uiCustomization.py +45 -0
- 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 +4 -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 +37 -0
- 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 +6 -3
- metadata/generated/schema/type/entityLineage.py +27 -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 +4 -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 +4 -1
- metadata/generated/schema/type/tableUsageCount.py +18 -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/ingestion/api/topology_runner.py +3 -3
- metadata/ingestion/bulksink/metadata_usage.py +27 -6
- metadata/ingestion/lineage/masker.py +13 -2
- metadata/ingestion/models/custom_pydantic.py +44 -6
- metadata/ingestion/ometa/client.py +20 -0
- metadata/ingestion/ometa/mixins/domain_mixin.py +80 -0
- metadata/ingestion/ometa/mixins/es_mixin.py +42 -2
- metadata/ingestion/ometa/mixins/lineage_mixin.py +7 -7
- metadata/ingestion/ometa/mixins/patch_mixin.py +15 -5
- metadata/ingestion/ometa/mixins/pipeline_mixin.py +18 -0
- metadata/ingestion/ometa/mixins/query_mixin.py +43 -0
- metadata/ingestion/ometa/ometa_api.py +28 -3
- metadata/ingestion/ometa/routes.py +7 -0
- metadata/ingestion/ometa/utils.py +13 -0
- metadata/ingestion/processor/query_parser.py +1 -0
- metadata/ingestion/sink/metadata_rest.py +21 -1
- metadata/ingestion/source/dashboard/dashboard_service.py +9 -1
- metadata/ingestion/source/dashboard/domodashboard/metadata.py +3 -1
- metadata/ingestion/source/dashboard/lightdash/metadata.py +1 -1
- metadata/ingestion/source/dashboard/looker/metadata.py +8 -2
- metadata/ingestion/source/dashboard/metabase/client.py +65 -6
- metadata/ingestion/source/dashboard/metabase/metadata.py +88 -37
- metadata/ingestion/source/dashboard/metabase/models.py +2 -1
- metadata/ingestion/source/dashboard/microstrategy/metadata.py +3 -1
- metadata/ingestion/source/dashboard/mode/metadata.py +16 -9
- metadata/ingestion/source/dashboard/powerbi/client.py +89 -1
- metadata/ingestion/source/dashboard/powerbi/metadata.py +270 -258
- metadata/ingestion/source/dashboard/powerbi/models.py +25 -0
- metadata/ingestion/source/dashboard/qlikcloud/client.py +25 -2
- metadata/ingestion/source/dashboard/qlikcloud/metadata.py +69 -15
- metadata/ingestion/source/dashboard/qlikcloud/models.py +44 -1
- metadata/ingestion/source/dashboard/qliksense/metadata.py +26 -18
- metadata/ingestion/source/dashboard/quicksight/metadata.py +32 -29
- metadata/ingestion/source/dashboard/redash/metadata.py +12 -10
- metadata/ingestion/source/dashboard/sigma/metadata.py +12 -14
- metadata/ingestion/source/dashboard/superset/api_source.py +25 -26
- metadata/ingestion/source/dashboard/superset/db_source.py +22 -20
- metadata/ingestion/source/dashboard/superset/mixin.py +207 -53
- metadata/ingestion/source/dashboard/superset/models.py +3 -0
- metadata/ingestion/source/dashboard/superset/queries.py +7 -4
- metadata/ingestion/source/dashboard/superset/utils.py +36 -0
- metadata/ingestion/source/dashboard/tableau/client.py +56 -1
- metadata/ingestion/source/dashboard/tableau/metadata.py +243 -128
- metadata/ingestion/source/database/bigquery/helper.py +9 -1
- metadata/ingestion/source/database/bigquery/metadata.py +82 -10
- metadata/ingestion/source/database/bigquery/queries.py +2 -1
- metadata/ingestion/source/database/bigquery/query_parser.py +1 -0
- metadata/ingestion/source/database/bigtable/metadata.py +11 -3
- metadata/ingestion/source/database/cassandra/__init__.py +0 -0
- metadata/ingestion/source/database/cassandra/connection.py +138 -0
- metadata/ingestion/source/database/cassandra/helpers.py +100 -0
- metadata/ingestion/source/database/cassandra/metadata.py +138 -0
- metadata/ingestion/source/database/cassandra/queries.py +45 -0
- metadata/ingestion/source/database/cassandra/service_spec.py +10 -0
- metadata/ingestion/source/database/cockroach/__init__.py +0 -0
- metadata/ingestion/source/database/cockroach/connection.py +71 -0
- metadata/ingestion/source/database/cockroach/metadata.py +206 -0
- metadata/ingestion/source/database/cockroach/queries.py +90 -0
- metadata/ingestion/source/database/cockroach/service_spec.py +4 -0
- metadata/ingestion/source/database/common_db_source.py +9 -0
- metadata/ingestion/source/database/common_nosql_source.py +78 -29
- metadata/ingestion/source/database/common_pg_mappings.py +49 -0
- metadata/ingestion/source/database/couchbase/metadata.py +8 -2
- metadata/ingestion/source/database/databricks/metadata.py +8 -0
- metadata/ingestion/source/database/datalake/metadata.py +15 -9
- metadata/ingestion/source/database/db2/service_spec.py +4 -1
- metadata/ingestion/source/database/dbt/dbt_config.py +1 -0
- metadata/ingestion/source/database/dbt/dbt_utils.py +1 -1
- metadata/ingestion/source/database/dbt/metadata.py +5 -1
- metadata/ingestion/source/database/doris/metadata.py +7 -2
- metadata/ingestion/source/database/druid/service_spec.py +5 -1
- metadata/ingestion/source/database/dynamodb/metadata.py +6 -3
- metadata/ingestion/source/database/greenplum/metadata.py +6 -37
- metadata/ingestion/source/database/greenplum/service_spec.py +5 -1
- metadata/ingestion/source/database/hive/metastore_dialects/mysql/dialect.py +35 -13
- metadata/ingestion/source/database/hive/metastore_dialects/postgres/dialect.py +38 -14
- metadata/ingestion/source/database/hive/service_spec.py +5 -1
- metadata/ingestion/source/database/impala/service_spec.py +5 -1
- metadata/ingestion/source/database/life_cycle_query_mixin.py +11 -7
- metadata/ingestion/source/database/lineage_source.py +76 -2
- metadata/ingestion/source/database/mariadb/service_spec.py +9 -1
- metadata/ingestion/source/database/mongodb/metadata.py +8 -3
- metadata/ingestion/source/database/mssql/metadata.py +68 -2
- metadata/ingestion/source/database/mssql/queries.py +43 -0
- metadata/ingestion/source/database/mysql/utils.py +5 -3
- metadata/ingestion/source/database/oracle/connection.py +24 -2
- metadata/ingestion/source/database/oracle/metadata.py +36 -19
- metadata/ingestion/source/database/oracle/models.py +5 -4
- metadata/ingestion/source/database/oracle/queries.py +22 -1
- metadata/ingestion/source/database/pinotdb/service_spec.py +5 -1
- metadata/ingestion/source/database/postgres/metadata.py +32 -56
- metadata/ingestion/source/database/postgres/models.py +1 -0
- metadata/ingestion/source/database/postgres/queries.py +18 -1
- metadata/ingestion/source/database/query_parser_source.py +11 -6
- metadata/ingestion/source/database/sample_data.py +11 -0
- metadata/ingestion/source/database/sample_usage.py +2 -0
- metadata/ingestion/source/database/saphana/lineage.py +1 -1
- metadata/ingestion/source/database/singlestore/service_spec.py +6 -1
- metadata/ingestion/source/database/snowflake/connection.py +6 -0
- metadata/ingestion/source/database/snowflake/constants.py +48 -0
- metadata/ingestion/source/database/snowflake/metadata.py +114 -3
- metadata/ingestion/source/database/snowflake/models.py +3 -3
- metadata/ingestion/source/database/snowflake/queries.py +27 -1
- metadata/ingestion/source/database/snowflake/query_parser.py +2 -0
- metadata/ingestion/source/database/snowflake/utils.py +110 -26
- metadata/ingestion/source/database/sql_column_handler.py +95 -60
- metadata/ingestion/source/database/sqlite/service_spec.py +5 -1
- metadata/ingestion/source/database/teradata/service_spec.py +5 -1
- metadata/ingestion/source/database/trino/lineage.py +95 -0
- metadata/ingestion/source/database/unitycatalog/connection.py +23 -0
- metadata/ingestion/source/database/unitycatalog/lineage.py +2 -0
- metadata/ingestion/source/database/unitycatalog/metadata.py +2 -0
- metadata/ingestion/source/database/usage_source.py +2 -0
- metadata/ingestion/source/messaging/messaging_service.py +2 -0
- metadata/ingestion/source/metadata/alationsink/metadata.py +32 -18
- metadata/ingestion/source/metadata/amundsen/metadata.py +7 -4
- metadata/ingestion/source/metadata/atlas/metadata.py +2 -1
- metadata/ingestion/source/mlmodel/mlmodel_service.py +2 -0
- metadata/ingestion/source/pipeline/airflow/metadata.py +25 -0
- metadata/ingestion/source/pipeline/airflow/models.py +1 -0
- metadata/ingestion/source/pipeline/nifi/client.py +68 -74
- metadata/ingestion/source/pipeline/nifi/connection.py +1 -18
- metadata/ingestion/source/pipeline/openlineage/metadata.py +1 -0
- metadata/ingestion/source/pipeline/pipeline_service.py +121 -2
- metadata/ingestion/source/search/opensearch/connection.py +215 -0
- metadata/ingestion/source/search/opensearch/metadata.py +270 -0
- metadata/ingestion/source/search/opensearch/parser.py +71 -0
- metadata/ingestion/source/search/opensearch/service_spec.py +4 -0
- metadata/ingestion/source/search/search_service.py +2 -0
- metadata/ingestion/source/storage/storage_service.py +2 -0
- metadata/ingestion/stage/table_usage.py +53 -1
- metadata/profiler/interface/sqlalchemy/unity_catalog/sampler_interface.py +3 -4
- metadata/profiler/orm/converter/azuresql/converter.py +39 -0
- metadata/profiler/orm/converter/converter_registry.py +2 -0
- metadata/profiler/orm/functions/length.py +2 -0
- metadata/profiler/orm/functions/median.py +19 -0
- metadata/profiler/orm/functions/modulo.py +1 -0
- metadata/profiler/orm/functions/random_num.py +1 -0
- metadata/profiler/orm/functions/sum.py +1 -0
- metadata/profiler/orm/registry.py +2 -0
- metadata/profiler/processor/core.py +1 -0
- metadata/profiler/processor/metric_filter.py +1 -1
- metadata/profiler/source/database/base/profiler_source.py +1 -0
- metadata/profiler/source/fetcher/fetcher_strategy.py +4 -0
- metadata/sampler/config.py +1 -0
- metadata/sampler/models.py +3 -0
- metadata/sampler/nosql/sampler.py +4 -0
- metadata/sampler/pandas/sampler.py +1 -0
- metadata/sampler/partition.py +9 -2
- metadata/sampler/sampler_interface.py +0 -1
- metadata/sampler/sqlalchemy/azuresql/sampler.py +30 -3
- metadata/sampler/sqlalchemy/mssql/sampler.py +2 -1
- metadata/sampler/sqlalchemy/sampler.py +51 -42
- metadata/sampler/sqlalchemy/snowflake/sampler.py +2 -1
- metadata/sampler/sqlalchemy/trino/sampler.py +9 -8
- metadata/utils/constants.py +1 -0
- metadata/utils/credentials.py +25 -4
- metadata/utils/elasticsearch.py +4 -0
- metadata/utils/helpers.py +91 -0
- metadata/utils/logger.py +9 -0
- metadata/utils/ssl_manager.py +35 -0
- metadata/utils/tag_utils.py +72 -27
- metadata/workflow/classification.py +3 -0
- metadata/workflow/profiler.py +13 -5
- metadata/workflow/workflow_status_mixin.py +6 -0
- {openmetadata_ingestion-1.6.7.0.dist-info → openmetadata_ingestion-1.7.0.0rc1.dist-info}/METADATA +444 -381
- {openmetadata_ingestion-1.6.7.0.dist-info → openmetadata_ingestion-1.7.0.0rc1.dist-info}/RECORD +865 -796
- {openmetadata_ingestion-1.6.7.0.dist-info → openmetadata_ingestion-1.7.0.0rc1.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.6.7.0.dist-info → openmetadata_ingestion-1.7.0.0rc1.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.6.7.0.dist-info → openmetadata_ingestion-1.7.0.0rc1.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.6.7.0.dist-info → openmetadata_ingestion-1.7.0.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -17,12 +17,13 @@ be self-sufficient with only pydantic at import time.
|
|
|
17
17
|
"""
|
|
18
18
|
import json
|
|
19
19
|
import logging
|
|
20
|
-
from typing import Any, Dict, Literal, Optional, Union
|
|
20
|
+
from typing import Any, Callable, Dict, Literal, Optional, Union
|
|
21
21
|
|
|
22
22
|
from pydantic import BaseModel as PydanticBaseModel
|
|
23
|
-
from pydantic import
|
|
23
|
+
from pydantic import WrapSerializer, model_validator
|
|
24
24
|
from pydantic.main import IncEx
|
|
25
25
|
from pydantic.types import SecretStr
|
|
26
|
+
from pydantic_core.core_schema import SerializationInfo
|
|
26
27
|
from typing_extensions import Annotated
|
|
27
28
|
|
|
28
29
|
from metadata.ingestion.models.custom_basemodel_validation import (
|
|
@@ -69,9 +70,10 @@ class BaseModel(PydanticBaseModel):
|
|
|
69
70
|
raise exc
|
|
70
71
|
return values
|
|
71
72
|
|
|
72
|
-
def model_dump_json( # pylint: disable=too-many-arguments
|
|
73
|
+
def model_dump_json( # pylint: disable=too-many-arguments,unused-argument
|
|
73
74
|
self,
|
|
74
75
|
*,
|
|
76
|
+
mask_secrets: Optional[bool] = None,
|
|
75
77
|
indent: Optional[int] = None,
|
|
76
78
|
include: IncEx = None,
|
|
77
79
|
exclude: IncEx = None,
|
|
@@ -82,6 +84,7 @@ class BaseModel(PydanticBaseModel):
|
|
|
82
84
|
exclude_none: bool = True,
|
|
83
85
|
round_trip: bool = False,
|
|
84
86
|
warnings: Union[bool, Literal["none", "warn", "error"]] = True,
|
|
87
|
+
fallback: Optional[Callable[[Any], Any]] = None,
|
|
85
88
|
serialize_as_any: bool = False,
|
|
86
89
|
) -> str:
|
|
87
90
|
"""
|
|
@@ -92,10 +95,20 @@ class BaseModel(PydanticBaseModel):
|
|
|
92
95
|
|
|
93
96
|
This solution is covered in the `test_pydantic_v2` test comparing the
|
|
94
97
|
dump results from V1 vs. V2.
|
|
98
|
+
|
|
99
|
+
mask_secrets: bool - Can be overridedn by either passing it as an argument or setting it in the context.
|
|
100
|
+
With the following rules:
|
|
101
|
+
- if mask_secrets is not None, it will be used as is
|
|
102
|
+
- if mask_secrets is None and context is not None, it will be set to context.get("mask_secrets", True)
|
|
103
|
+
- if mask_secrets is None and context is None, it will be set to True
|
|
104
|
+
|
|
95
105
|
"""
|
|
106
|
+
if mask_secrets is None:
|
|
107
|
+
mask_secrets = context.get("mask_secrets", True) if context else True
|
|
96
108
|
return json.dumps(
|
|
97
109
|
self.model_dump(
|
|
98
110
|
mode="json",
|
|
111
|
+
mask_secrets=mask_secrets,
|
|
99
112
|
include=include,
|
|
100
113
|
exclude=exclude,
|
|
101
114
|
context=context,
|
|
@@ -110,6 +123,18 @@ class BaseModel(PydanticBaseModel):
|
|
|
110
123
|
ensure_ascii=True,
|
|
111
124
|
)
|
|
112
125
|
|
|
126
|
+
def model_dump(
|
|
127
|
+
self,
|
|
128
|
+
*,
|
|
129
|
+
mask_secrets: bool = False,
|
|
130
|
+
**kwargs,
|
|
131
|
+
) -> Dict[str, Any]:
|
|
132
|
+
if mask_secrets:
|
|
133
|
+
context = kwargs.pop("context", None) or {}
|
|
134
|
+
context["mask_secrets"] = True
|
|
135
|
+
kwargs["context"] = context
|
|
136
|
+
return super().model_dump(**kwargs)
|
|
137
|
+
|
|
113
138
|
|
|
114
139
|
class _CustomSecretStr(SecretStr):
|
|
115
140
|
"""
|
|
@@ -117,6 +142,9 @@ class _CustomSecretStr(SecretStr):
|
|
|
117
142
|
|
|
118
143
|
If the secret string value starts with `config:` it will use the rest of the string as secret id to search for it
|
|
119
144
|
in the secrets store.
|
|
145
|
+
|
|
146
|
+
By default the secrets will be unmasked when dumping ot python objects and masked when dumping to json unless
|
|
147
|
+
explicitly set otherwise using the `mask_secrets` or `context` arguments.
|
|
120
148
|
"""
|
|
121
149
|
|
|
122
150
|
def __repr__(self) -> str:
|
|
@@ -154,9 +182,19 @@ class _CustomSecretStr(SecretStr):
|
|
|
154
182
|
return self._secret_value
|
|
155
183
|
|
|
156
184
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
185
|
+
def handle_secret(value: Any, handler, info: SerializationInfo) -> str:
|
|
186
|
+
"""
|
|
187
|
+
Handle the secret value in the model.
|
|
188
|
+
"""
|
|
189
|
+
if not (info.context is not None and info.context.get("mask_secrets", False)):
|
|
190
|
+
if info.mode == "json":
|
|
191
|
+
# short circuit the json serialization and return the actual value
|
|
192
|
+
return value.get_secret_value()
|
|
193
|
+
return handler(value.get_secret_value())
|
|
194
|
+
return str(value) # use pydantic's logic to mask the secret
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
CustomSecretStr = Annotated[_CustomSecretStr, WrapSerializer(handle_secret)]
|
|
160
198
|
|
|
161
199
|
|
|
162
200
|
def ignore_type_decoder(type_: Any) -> None:
|
|
@@ -14,6 +14,7 @@ Python API REST wrapper and helpers
|
|
|
14
14
|
import time
|
|
15
15
|
import traceback
|
|
16
16
|
from datetime import datetime, timezone
|
|
17
|
+
from json import JSONDecodeError
|
|
17
18
|
from typing import Any, Callable, Dict, List, Optional, Union
|
|
18
19
|
|
|
19
20
|
import requests
|
|
@@ -117,6 +118,8 @@ class ClientConfig(ConfigModel):
|
|
|
117
118
|
verify: Optional[Union[bool, str]] = None
|
|
118
119
|
cookies: Optional[Any] = None
|
|
119
120
|
ttl_cache: int = 60
|
|
121
|
+
timeout: Optional[int] = None
|
|
122
|
+
cert: Optional[Union[str, tuple]] = None
|
|
120
123
|
|
|
121
124
|
|
|
122
125
|
# pylint: disable=too-many-instance-attributes
|
|
@@ -140,6 +143,8 @@ class REST:
|
|
|
140
143
|
self._auth_token_mode = self.config.auth_token_mode
|
|
141
144
|
self._verify = self.config.verify
|
|
142
145
|
self._cookies = self.config.cookies
|
|
146
|
+
self._cert = self.config.cert
|
|
147
|
+
self._timeout = self.config.timeout
|
|
143
148
|
|
|
144
149
|
self._limits_reached = TTLCache(config.ttl_cache)
|
|
145
150
|
|
|
@@ -177,6 +182,7 @@ class REST:
|
|
|
177
182
|
self.config.expires_in = (
|
|
178
183
|
datetime.now(timezone.utc).timestamp() + expiry - 120
|
|
179
184
|
)
|
|
185
|
+
|
|
180
186
|
if self.config.auth_header:
|
|
181
187
|
headers[self.config.auth_header] = (
|
|
182
188
|
f"{self._auth_token_mode} {self.config.access_token}"
|
|
@@ -189,6 +195,7 @@ class REST:
|
|
|
189
195
|
# the value will be set to that value.
|
|
190
196
|
# Example: "Proxy-Authorization": "%(Authorization)s"
|
|
191
197
|
# This will result in the Authorization value being set for the Proxy-Authorization Extra Header
|
|
198
|
+
# Any header which is comming as extra header from client will overwrite the header with same name in headers
|
|
192
199
|
if self.config.extra_headers:
|
|
193
200
|
extra_headers: Dict[str, str] = self.config.extra_headers
|
|
194
201
|
extra_headers = {k: (v % headers) for k, v in extra_headers.items()}
|
|
@@ -210,6 +217,12 @@ class REST:
|
|
|
210
217
|
if json:
|
|
211
218
|
opts["json"] = json
|
|
212
219
|
|
|
220
|
+
if self._cert:
|
|
221
|
+
opts["cert"] = self._cert
|
|
222
|
+
|
|
223
|
+
if self._timeout:
|
|
224
|
+
opts["timeout"] = self._timeout
|
|
225
|
+
|
|
213
226
|
total_retries = self._retry if self._retry > 0 else 0
|
|
214
227
|
retry = total_retries
|
|
215
228
|
while retry >= 0:
|
|
@@ -250,6 +263,12 @@ class REST:
|
|
|
250
263
|
if resp.text != "":
|
|
251
264
|
try:
|
|
252
265
|
return resp.json()
|
|
266
|
+
except JSONDecodeError as json_decode_error:
|
|
267
|
+
logger.error(
|
|
268
|
+
f"Json decoding error while returning response {resp} in json format - {json_decode_error}."
|
|
269
|
+
f"The Response still returned to be handled by client..."
|
|
270
|
+
)
|
|
271
|
+
return resp
|
|
253
272
|
except Exception as exc:
|
|
254
273
|
logger.debug(traceback.format_exc())
|
|
255
274
|
logger.warning(
|
|
@@ -308,6 +327,7 @@ class REST:
|
|
|
308
327
|
Parameters:
|
|
309
328
|
path (str):
|
|
310
329
|
data ():
|
|
330
|
+
json ():
|
|
311
331
|
|
|
312
332
|
Returns:
|
|
313
333
|
Response
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Copyright 2021 Collate
|
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
# you may not use this file except in compliance with the License.
|
|
4
|
+
# You may obtain a copy of the License at
|
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
7
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
8
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
9
|
+
# See the License for the specific language governing permissions and
|
|
10
|
+
# limitations under the License.
|
|
11
|
+
"""Domain and Data Product specific operations"""
|
|
12
|
+
from typing import Dict, List
|
|
13
|
+
|
|
14
|
+
from metadata.generated.schema.type.entityReference import EntityReference
|
|
15
|
+
from metadata.ingestion.models.custom_pydantic import BaseModel
|
|
16
|
+
from metadata.ingestion.ometa.client import REST
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class AssetsRequest(BaseModel):
|
|
20
|
+
"""Request to add assets to a data product"""
|
|
21
|
+
|
|
22
|
+
assets: List[EntityReference]
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class OMetaDomainMixin:
|
|
26
|
+
"""Mixin class containing Data Product specific methods"""
|
|
27
|
+
|
|
28
|
+
client: REST
|
|
29
|
+
|
|
30
|
+
def add_assets_to_data_product(
|
|
31
|
+
self, name: str, assets: List[EntityReference]
|
|
32
|
+
) -> Dict:
|
|
33
|
+
"""
|
|
34
|
+
Add assets to a data product
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
name: Name of the data product
|
|
38
|
+
assets: List of entity references to add as assets
|
|
39
|
+
|
|
40
|
+
Returns:
|
|
41
|
+
API response as a dictionary
|
|
42
|
+
"""
|
|
43
|
+
return self._handle_data_product_assets(name, assets, "add")
|
|
44
|
+
|
|
45
|
+
def remove_assets_from_data_product(
|
|
46
|
+
self, name: str, assets: List[EntityReference]
|
|
47
|
+
) -> Dict:
|
|
48
|
+
"""
|
|
49
|
+
Remove assets from a data product
|
|
50
|
+
|
|
51
|
+
Args:
|
|
52
|
+
name: Name of the data product
|
|
53
|
+
assets: List of entity references to remove from assets
|
|
54
|
+
|
|
55
|
+
Returns:
|
|
56
|
+
API response as a dictionary
|
|
57
|
+
"""
|
|
58
|
+
return self._handle_data_product_assets(name, assets, "remove")
|
|
59
|
+
|
|
60
|
+
def _handle_data_product_assets(
|
|
61
|
+
self,
|
|
62
|
+
name: str,
|
|
63
|
+
assets: List[EntityReference],
|
|
64
|
+
operation: str,
|
|
65
|
+
) -> Dict:
|
|
66
|
+
"""
|
|
67
|
+
Handle adding or removing assets from a data product
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
name: Name of the data product
|
|
71
|
+
assets: List of entity references to add/remove
|
|
72
|
+
operation: Operation to perform ("add" or "remove")
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
API response as a dictionary
|
|
76
|
+
"""
|
|
77
|
+
path = f"/dataProducts/{name}/assets/{operation}"
|
|
78
|
+
payload = AssetsRequest(assets=assets)
|
|
79
|
+
|
|
80
|
+
return self.client.put(path, payload.model_dump_json())
|
|
@@ -16,7 +16,17 @@ To be used by OpenMetadata class
|
|
|
16
16
|
import functools
|
|
17
17
|
import json
|
|
18
18
|
import traceback
|
|
19
|
-
from typing import
|
|
19
|
+
from typing import (
|
|
20
|
+
Generic,
|
|
21
|
+
Iterable,
|
|
22
|
+
Iterator,
|
|
23
|
+
List,
|
|
24
|
+
Optional,
|
|
25
|
+
Set,
|
|
26
|
+
Type,
|
|
27
|
+
TypeVar,
|
|
28
|
+
Union,
|
|
29
|
+
)
|
|
20
30
|
from urllib.parse import quote_plus
|
|
21
31
|
|
|
22
32
|
from pydantic import Field
|
|
@@ -29,7 +39,7 @@ from metadata.ingestion.models.custom_pydantic import BaseModel
|
|
|
29
39
|
from metadata.ingestion.ometa.client import REST, APIError
|
|
30
40
|
from metadata.ingestion.ometa.utils import quote
|
|
31
41
|
from metadata.ingestion.source.models import TableView
|
|
32
|
-
from metadata.utils.elasticsearch import ES_INDEX_MAP
|
|
42
|
+
from metadata.utils.elasticsearch import ES_INDEX_MAP, get_entity_from_es_result
|
|
33
43
|
from metadata.utils.logger import ometa_logger
|
|
34
44
|
|
|
35
45
|
logger = ometa_logger()
|
|
@@ -436,6 +446,11 @@ class ESMixin(Generic[T]):
|
|
|
436
446
|
"tableType": TableType.Dynamic.value
|
|
437
447
|
}
|
|
438
448
|
},
|
|
449
|
+
{
|
|
450
|
+
"term": {
|
|
451
|
+
"tableType": TableType.Stream.value
|
|
452
|
+
}
|
|
453
|
+
},
|
|
439
454
|
]
|
|
440
455
|
}
|
|
441
456
|
}
|
|
@@ -487,3 +502,28 @@ class ESMixin(Generic[T]):
|
|
|
487
502
|
schema_name=schema_name,
|
|
488
503
|
table_name=table_name,
|
|
489
504
|
)
|
|
505
|
+
|
|
506
|
+
def search_in_any_service(
|
|
507
|
+
self,
|
|
508
|
+
entity_type: Type[T],
|
|
509
|
+
fqn_search_string: str,
|
|
510
|
+
fetch_multiple_entities: bool = False,
|
|
511
|
+
) -> Optional[Union[List[Table], Table]]:
|
|
512
|
+
"""
|
|
513
|
+
fetch table from es when with/without `db_service_name`
|
|
514
|
+
"""
|
|
515
|
+
try:
|
|
516
|
+
entity_result = get_entity_from_es_result(
|
|
517
|
+
entity_list=self.es_search_from_fqn(
|
|
518
|
+
entity_type=entity_type,
|
|
519
|
+
fqn_search_string=fqn_search_string,
|
|
520
|
+
),
|
|
521
|
+
fetch_multiple_entities=fetch_multiple_entities,
|
|
522
|
+
)
|
|
523
|
+
return entity_result
|
|
524
|
+
except Exception as exc:
|
|
525
|
+
logger.debug(
|
|
526
|
+
f"Error to fetch entity: fqn={fqn_search_string} from es: {exc}"
|
|
527
|
+
)
|
|
528
|
+
logger.debug(traceback.format_exc())
|
|
529
|
+
return None
|
|
@@ -171,13 +171,9 @@ class OMetaLineageMixin(Generic[T]):
|
|
|
171
171
|
|
|
172
172
|
except APIError as err:
|
|
173
173
|
logger.debug(traceback.format_exc())
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
data.model_dump_json(),
|
|
178
|
-
str(err),
|
|
179
|
-
)
|
|
180
|
-
raise err
|
|
174
|
+
error = f"Error {err.status_code} trying to PUT lineage for {data.model_dump_json()}: {str(err)}"
|
|
175
|
+
logger.error(error)
|
|
176
|
+
return {"error": error}
|
|
181
177
|
|
|
182
178
|
from_entity_lineage = self.get_lineage_by_id(
|
|
183
179
|
data.edge.fromEntity.type, str(data.edge.fromEntity.id.root)
|
|
@@ -397,6 +393,10 @@ class OMetaLineageMixin(Generic[T]):
|
|
|
397
393
|
resp = self.add_lineage(
|
|
398
394
|
lineage_request.right, check_patch=check_patch
|
|
399
395
|
)
|
|
396
|
+
if resp.get("error"):
|
|
397
|
+
logger.error(resp["error"])
|
|
398
|
+
continue
|
|
399
|
+
|
|
400
400
|
entity_name = resp.get("entity", {}).get("name")
|
|
401
401
|
for node in resp.get("nodes", []):
|
|
402
402
|
logger.info(
|
|
@@ -29,6 +29,9 @@ from metadata.generated.schema.entity.domains.domain import Domain
|
|
|
29
29
|
from metadata.generated.schema.entity.services.connections.testConnectionResult import (
|
|
30
30
|
TestConnectionResult,
|
|
31
31
|
)
|
|
32
|
+
from metadata.generated.schema.entity.services.ingestionPipelines.reverseIngestionResponse import (
|
|
33
|
+
ReverseIngestionResponse,
|
|
34
|
+
)
|
|
32
35
|
from metadata.generated.schema.tests.testCase import TestCase, TestCaseParameterValue
|
|
33
36
|
from metadata.generated.schema.type.basic import EntityLink, Markdown
|
|
34
37
|
from metadata.generated.schema.type.entityReference import EntityReference
|
|
@@ -488,7 +491,7 @@ class OMetaPatchMixin(OMetaPatchMixinBase):
|
|
|
488
491
|
def patch_automation_workflow_response(
|
|
489
492
|
self,
|
|
490
493
|
automation_workflow: AutomationWorkflow,
|
|
491
|
-
|
|
494
|
+
result: Union[TestConnectionResult, ReverseIngestionResponse],
|
|
492
495
|
workflow_status: WorkflowStatus,
|
|
493
496
|
) -> None:
|
|
494
497
|
"""
|
|
@@ -496,14 +499,21 @@ class OMetaPatchMixin(OMetaPatchMixinBase):
|
|
|
496
499
|
"""
|
|
497
500
|
result_data: Dict = {
|
|
498
501
|
PatchField.PATH: PatchPath.RESPONSE,
|
|
499
|
-
PatchField.VALUE:
|
|
502
|
+
PatchField.VALUE: result.model_dump(),
|
|
500
503
|
PatchField.OPERATION: PatchOperation.ADD,
|
|
501
504
|
}
|
|
502
505
|
|
|
503
506
|
# for deserializing into json convert enum object to string
|
|
504
|
-
|
|
505
|
-
"status"
|
|
506
|
-
|
|
507
|
+
if isinstance(result, TestConnectionResult):
|
|
508
|
+
result_data[PatchField.VALUE]["status"] = result_data[PatchField.VALUE][
|
|
509
|
+
"status"
|
|
510
|
+
].value
|
|
511
|
+
else:
|
|
512
|
+
# Convert UUID in string
|
|
513
|
+
data = result_data[PatchField.VALUE]
|
|
514
|
+
data["serviceId"] = str(data["serviceId"])
|
|
515
|
+
for operation_result in data["results"]:
|
|
516
|
+
operation_result["id"] = str(operation_result["id"])
|
|
507
517
|
|
|
508
518
|
status_data: Dict = {
|
|
509
519
|
PatchField.PATH: PatchPath.STATUS,
|
|
@@ -21,6 +21,7 @@ from metadata.generated.schema.entity.data.pipeline import (
|
|
|
21
21
|
PipelineStatus,
|
|
22
22
|
Task,
|
|
23
23
|
)
|
|
24
|
+
from metadata.generated.schema.type.usageRequest import UsageRequest
|
|
24
25
|
from metadata.ingestion.ometa.client import REST
|
|
25
26
|
from metadata.utils.logger import ometa_logger
|
|
26
27
|
|
|
@@ -83,6 +84,7 @@ class OMetaPipelineMixin:
|
|
|
83
84
|
sourceUrl=pipeline.sourceUrl,
|
|
84
85
|
concurrency=pipeline.concurrency,
|
|
85
86
|
pipelineLocation=pipeline.pipelineLocation,
|
|
87
|
+
state=pipeline.state,
|
|
86
88
|
startDate=pipeline.startDate,
|
|
87
89
|
service=pipeline.service.fullyQualifiedName,
|
|
88
90
|
tasks=all_tasks,
|
|
@@ -110,6 +112,7 @@ class OMetaPipelineMixin:
|
|
|
110
112
|
sourceUrl=pipeline.sourceUrl,
|
|
111
113
|
concurrency=pipeline.concurrency,
|
|
112
114
|
pipelineLocation=pipeline.pipelineLocation,
|
|
115
|
+
state=pipeline.state,
|
|
113
116
|
startDate=pipeline.startDate,
|
|
114
117
|
service=pipeline.service.fullyQualifiedName,
|
|
115
118
|
tasks=[task for task in pipeline.tasks if task.name in task_ids],
|
|
@@ -118,3 +121,18 @@ class OMetaPipelineMixin:
|
|
|
118
121
|
)
|
|
119
122
|
|
|
120
123
|
return self.create_or_update(updated_pipeline)
|
|
124
|
+
|
|
125
|
+
def publish_pipeline_usage(
|
|
126
|
+
self, pipeline: Pipeline, pipeline_usage_request: UsageRequest
|
|
127
|
+
) -> None:
|
|
128
|
+
"""
|
|
129
|
+
POST usage details for a Pipeline
|
|
130
|
+
|
|
131
|
+
:param pipeline: Pipeline Entity to update
|
|
132
|
+
:param pipeline_usage_request: Usage data to add
|
|
133
|
+
"""
|
|
134
|
+
resp = self.client.put(
|
|
135
|
+
f"/usage/pipeline/{pipeline.id.root}",
|
|
136
|
+
data=pipeline_usage_request.model_dump_json(),
|
|
137
|
+
)
|
|
138
|
+
logger.debug("Published pipeline usage %s", resp)
|
|
@@ -15,14 +15,20 @@ To be used by OpenMetadata class
|
|
|
15
15
|
"""
|
|
16
16
|
import hashlib
|
|
17
17
|
import json
|
|
18
|
+
from functools import lru_cache
|
|
18
19
|
from typing import List, Optional, Union
|
|
19
20
|
|
|
20
21
|
from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
|
|
22
|
+
from metadata.generated.schema.api.data.createQueryCostRecord import (
|
|
23
|
+
CreateQueryCostRecordRequest,
|
|
24
|
+
)
|
|
21
25
|
from metadata.generated.schema.entity.data.dashboard import Dashboard
|
|
22
26
|
from metadata.generated.schema.entity.data.query import Query
|
|
27
|
+
from metadata.generated.schema.entity.data.queryCostRecord import QueryCostRecord
|
|
23
28
|
from metadata.generated.schema.entity.data.table import Table
|
|
24
29
|
from metadata.generated.schema.type.basic import Uuid
|
|
25
30
|
from metadata.generated.schema.type.entityReference import EntityReference
|
|
31
|
+
from metadata.generated.schema.type.tableUsageCount import QueryCostWrapper
|
|
26
32
|
from metadata.ingestion.lineage.masker import mask_query
|
|
27
33
|
from metadata.ingestion.ometa.client import REST
|
|
28
34
|
from metadata.ingestion.ometa.utils import model_str
|
|
@@ -115,3 +121,40 @@ class OMetaQueryMixin:
|
|
|
115
121
|
if res and res.get("data"):
|
|
116
122
|
return [Query(**query) for query in res.get("data")]
|
|
117
123
|
return None
|
|
124
|
+
|
|
125
|
+
@lru_cache(maxsize=5000)
|
|
126
|
+
def __get_query_by_hash(
|
|
127
|
+
self, query_hash: str, service_name: str
|
|
128
|
+
) -> Optional[Query]:
|
|
129
|
+
return self.get_by_name(entity=Query, fqn=f"{service_name}.{query_hash}")
|
|
130
|
+
|
|
131
|
+
def publish_query_cost(self, query_cost_data: QueryCostWrapper, service_name: str):
|
|
132
|
+
"""
|
|
133
|
+
Create Query Cost Record
|
|
134
|
+
|
|
135
|
+
Args:
|
|
136
|
+
query_cost_record: QueryCostWrapper
|
|
137
|
+
"""
|
|
138
|
+
|
|
139
|
+
masked_query = mask_query(query_cost_data.query, query_cost_data.dialect)
|
|
140
|
+
|
|
141
|
+
query_hash = self._get_query_hash(masked_query)
|
|
142
|
+
|
|
143
|
+
query = self.__get_query_by_hash(
|
|
144
|
+
query_hash=query_hash, service_name=service_name
|
|
145
|
+
)
|
|
146
|
+
if not query:
|
|
147
|
+
return None
|
|
148
|
+
|
|
149
|
+
create_request = CreateQueryCostRecordRequest(
|
|
150
|
+
timestamp=int(query_cost_data.date),
|
|
151
|
+
jsonSchema="queryCostRecord",
|
|
152
|
+
queryReference=EntityReference(id=query.id.root, type="query"),
|
|
153
|
+
cost=query_cost_data.cost,
|
|
154
|
+
count=query_cost_data.count,
|
|
155
|
+
totalDuration=query_cost_data.totalDuration,
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
return self.client.post(
|
|
159
|
+
self.get_suffix(QueryCostRecord), data=create_request.model_dump_json()
|
|
160
|
+
)
|
|
@@ -17,7 +17,7 @@ working with OpenMetadata entities.
|
|
|
17
17
|
import traceback
|
|
18
18
|
from typing import Dict, Generic, Iterable, List, Optional, Type, TypeVar, Union
|
|
19
19
|
|
|
20
|
-
from
|
|
20
|
+
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
21
21
|
|
|
22
22
|
from metadata.generated.schema.api.createBot import CreateBot
|
|
23
23
|
from metadata.generated.schema.api.services.ingestionPipelines.createIngestionPipeline import (
|
|
@@ -30,6 +30,7 @@ from metadata.generated.schema.type import basic
|
|
|
30
30
|
from metadata.generated.schema.type.basic import FullyQualifiedEntityName
|
|
31
31
|
from metadata.generated.schema.type.entityHistory import EntityVersionHistory
|
|
32
32
|
from metadata.generated.schema.type.entityReference import EntityReference
|
|
33
|
+
from metadata.ingestion.models.custom_pydantic import BaseModel
|
|
33
34
|
from metadata.ingestion.ometa.auth_provider import OpenMetadataAuthenticationProvider
|
|
34
35
|
from metadata.ingestion.ometa.client import REST, APIError, ClientConfig
|
|
35
36
|
from metadata.ingestion.ometa.mixins.custom_property_mixin import (
|
|
@@ -37,6 +38,7 @@ from metadata.ingestion.ometa.mixins.custom_property_mixin import (
|
|
|
37
38
|
)
|
|
38
39
|
from metadata.ingestion.ometa.mixins.dashboard_mixin import OMetaDashboardMixin
|
|
39
40
|
from metadata.ingestion.ometa.mixins.data_insight_mixin import DataInsightMixin
|
|
41
|
+
from metadata.ingestion.ometa.mixins.domain_mixin import OMetaDomainMixin
|
|
40
42
|
from metadata.ingestion.ometa.mixins.es_mixin import ESMixin
|
|
41
43
|
from metadata.ingestion.ometa.mixins.ingestion_pipeline_mixin import (
|
|
42
44
|
OMetaIngestionPipelineMixin,
|
|
@@ -89,6 +91,16 @@ class EmptyPayloadException(Exception):
|
|
|
89
91
|
"""
|
|
90
92
|
|
|
91
93
|
|
|
94
|
+
class OpenMetadataSettings(BaseSettings):
|
|
95
|
+
"""OpenMetadataConnection settings wrapper"""
|
|
96
|
+
|
|
97
|
+
model_config = SettingsConfigDict(
|
|
98
|
+
env_prefix="OPENMETADATA__", env_nested_delimiter="__", case_sensitive=True
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
connection: OpenMetadataConnection
|
|
102
|
+
|
|
103
|
+
|
|
92
104
|
class OpenMetadata(
|
|
93
105
|
OMetaPipelineMixin,
|
|
94
106
|
OMetaMlModelMixin,
|
|
@@ -109,6 +121,7 @@ class OpenMetadata(
|
|
|
109
121
|
OMetaSearchIndexMixin,
|
|
110
122
|
OMetaCustomPropertyMixin,
|
|
111
123
|
OMetaSuggestionsMixin,
|
|
124
|
+
OMetaDomainMixin,
|
|
112
125
|
Generic[T, C],
|
|
113
126
|
):
|
|
114
127
|
"""
|
|
@@ -145,11 +158,14 @@ class OpenMetadata(
|
|
|
145
158
|
|
|
146
159
|
get_verify_ssl = get_verify_ssl_fn(self.config.verifySSL)
|
|
147
160
|
|
|
161
|
+
extra_headers: Optional[dict[str, str]] = None
|
|
162
|
+
if self.config.extraHeaders:
|
|
163
|
+
extra_headers = self.config.extraHeaders.root
|
|
148
164
|
client_config: ClientConfig = ClientConfig(
|
|
149
165
|
base_url=self.config.hostPort,
|
|
150
166
|
api_version=self.config.apiVersion,
|
|
151
167
|
auth_header="Authorization",
|
|
152
|
-
extra_headers=
|
|
168
|
+
extra_headers=extra_headers,
|
|
153
169
|
auth_token=self._auth_provider.get_access_token,
|
|
154
170
|
verify=get_verify_ssl(self.config.sslConfig),
|
|
155
171
|
)
|
|
@@ -158,6 +174,11 @@ class OpenMetadata(
|
|
|
158
174
|
if self.config.enableVersionValidation:
|
|
159
175
|
self.validate_versions()
|
|
160
176
|
|
|
177
|
+
@classmethod
|
|
178
|
+
def from_env(cls) -> "OpenMetadata":
|
|
179
|
+
settings = OpenMetadataSettings()
|
|
180
|
+
return cls(settings.connection)
|
|
181
|
+
|
|
161
182
|
@staticmethod
|
|
162
183
|
def get_suffix(entity: Type[T]) -> str:
|
|
163
184
|
"""
|
|
@@ -268,7 +289,11 @@ class OpenMetadata(
|
|
|
268
289
|
)
|
|
269
290
|
|
|
270
291
|
fn = getattr(self.client, method)
|
|
271
|
-
resp = fn(
|
|
292
|
+
resp = fn(
|
|
293
|
+
# this might be a regular pydantic model so we build the context manually
|
|
294
|
+
self.get_suffix(entity),
|
|
295
|
+
data=data.model_dump_json(context={"mask_secrets": False}),
|
|
296
|
+
)
|
|
272
297
|
if not resp:
|
|
273
298
|
raise EmptyPayloadException(
|
|
274
299
|
f"Got an empty response when trying to PUT to {self.get_suffix(entity)}, {data.model_dump_json()}"
|
|
@@ -46,6 +46,9 @@ from metadata.generated.schema.api.data.createMetric import CreateMetricRequest
|
|
|
46
46
|
from metadata.generated.schema.api.data.createMlModel import CreateMlModelRequest
|
|
47
47
|
from metadata.generated.schema.api.data.createPipeline import CreatePipelineRequest
|
|
48
48
|
from metadata.generated.schema.api.data.createQuery import CreateQueryRequest
|
|
49
|
+
from metadata.generated.schema.api.data.createQueryCostRecord import (
|
|
50
|
+
CreateQueryCostRecordRequest,
|
|
51
|
+
)
|
|
49
52
|
from metadata.generated.schema.api.data.createSearchIndex import (
|
|
50
53
|
CreateSearchIndexRequest,
|
|
51
54
|
)
|
|
@@ -133,6 +136,7 @@ from metadata.generated.schema.entity.data.metric import Metric
|
|
|
133
136
|
from metadata.generated.schema.entity.data.mlmodel import MlModel
|
|
134
137
|
from metadata.generated.schema.entity.data.pipeline import Pipeline
|
|
135
138
|
from metadata.generated.schema.entity.data.query import Query
|
|
139
|
+
from metadata.generated.schema.entity.data.queryCostRecord import QueryCostRecord
|
|
136
140
|
from metadata.generated.schema.entity.data.report import Report
|
|
137
141
|
from metadata.generated.schema.entity.data.searchIndex import SearchIndex
|
|
138
142
|
from metadata.generated.schema.entity.data.storedProcedure import StoredProcedure
|
|
@@ -280,4 +284,7 @@ ROUTES = {
|
|
|
280
284
|
CreateAppMarketPlaceDefinitionRequest.__name__: "/apps/marketplace",
|
|
281
285
|
# Settings
|
|
282
286
|
Settings.__name__: "/system/settings",
|
|
287
|
+
# Query Cost
|
|
288
|
+
QueryCostRecord.__name__: "/queryCostRecord",
|
|
289
|
+
CreateQueryCostRecordRequest.__name__: "/queryCostRecord",
|
|
283
290
|
}
|
|
@@ -20,6 +20,7 @@ from pydantic import BaseModel
|
|
|
20
20
|
from requests.utils import quote as url_quote
|
|
21
21
|
|
|
22
22
|
from metadata.generated.schema.type.basic import FullyQualifiedEntityName
|
|
23
|
+
from metadata.generated.schema.type.entityReference import EntityReference
|
|
23
24
|
|
|
24
25
|
T = TypeVar("T", bound=BaseModel)
|
|
25
26
|
|
|
@@ -85,3 +86,15 @@ def quote(fqn: Union[FullyQualifiedEntityName, str]) -> str:
|
|
|
85
86
|
E.g., `"foo.bar/baz"` -> `%22foo.bar%2Fbaz%22`
|
|
86
87
|
"""
|
|
87
88
|
return url_quote(model_str(fqn), safe="")
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def build_entity_reference(entity: T) -> EntityReference:
|
|
92
|
+
"""Get the EntityReference from the Entity itself"""
|
|
93
|
+
return EntityReference(
|
|
94
|
+
id=entity.id,
|
|
95
|
+
type=get_entity_type(type(entity)),
|
|
96
|
+
name=model_str(entity.name),
|
|
97
|
+
fullyQualifiedName=model_str(entity.fullyQualifiedName),
|
|
98
|
+
description=entity.description,
|
|
99
|
+
href=entity.href,
|
|
100
|
+
)
|