openmetadata-ingestion 1.3.1.3__py3-none-any.whl → 1.3.2.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/clients/azure_client.py +85 -0
- metadata/data_quality/source/test_suite.py +2 -2
- metadata/examples/workflows/datalake_azure_default.yaml +29 -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/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 +1 -1
- metadata/generated/schema/api/classification/createTag.py +1 -1
- 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/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/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/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/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 +5 -1
- metadata/generated/schema/api/feed/resolveTask.py +1 -1
- metadata/generated/schema/api/feed/threadCount.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/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/services/__init__.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 +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/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 +6 -2
- metadata/generated/schema/configuration/authConfig.py +1 -1
- metadata/generated/schema/configuration/authenticationConfiguration.py +13 -2
- 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/loginConfiguration.py +1 -1
- metadata/generated/schema/configuration/logoConfiguration.py +1 -1
- metadata/generated/schema/configuration/pipelineServiceClientConfiguration.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/dataInsight/__init__.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/percentageOfEntitiesWithDescriptionByType.py +1 -1
- metadata/generated/schema/dataInsight/type/percentageOfEntitiesWithOwnerByType.py +1 -1
- metadata/generated/schema/dataInsight/type/percentageOfServicesWithDescription.py +1 -1
- metadata/generated/schema/dataInsight/type/percentageOfServicesWithOwner.py +1 -1
- metadata/generated/schema/dataInsight/type/totalEntitiesByTier.py +1 -1
- metadata/generated/schema/dataInsight/type/totalEntitiesByType.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/smtpSettings.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 +7 -2
- metadata/generated/schema/entity/applications/appRunRecord.py +2 -7
- 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/autoTaggerAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/external/metaPilotAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/internal/__init__.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/searchIndexingAppConfig.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/__init__.py +1 -1
- metadata/generated/schema/entity/applications/configuration/private/external/metaPilotAppPrivateConfig.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 +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/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 +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/metrics.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/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 +1 -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 +1 -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/suggestion.py +1 -1
- metadata/generated/schema/entity/feed/thread.py +12 -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/connections/__init__.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/modeConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/mstrConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/dashboard/powerBIConnection.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/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 +34 -1
- metadata/generated/schema/entity/services/connections/database/bigQueryConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/bigTableConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/database/clickhouseConnection.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 +20 -0
- 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/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/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/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 +7 -3
- 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 +7 -3
- 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/sapHana/__init__.py +3 -0
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaHDBConnection.py +20 -0
- metadata/generated/schema/entity/services/connections/database/sapHana/sapHanaSQLConnection.py +36 -0
- metadata/generated/schema/entity/services/connections/database/sapHanaConnection.py +6 -40
- 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/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 +1 -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/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/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 +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/gluePipelineConnection.py +1 -1
- metadata/generated/schema/entity/services/connections/pipeline/nifiConnection.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/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/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 +1 -1
- metadata/generated/schema/entity/teams/teamHierarchy.py +1 -1
- metadata/generated/schema/entity/teams/user.py +1 -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/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/filterResourceDescriptor.py +1 -1
- metadata/generated/schema/events/subscriptionResourceDescriptor.py +1 -1
- metadata/generated/schema/metadataIngestion/__init__.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/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/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/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 +46 -0
- 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 +6 -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 +7 -3
- metadata/generated/schema/security/credentials/gcpExternalAccount.py +37 -0
- metadata/generated/schema/security/credentials/gcpValues.py +2 -2
- metadata/generated/schema/security/credentials/gitCredentials.py +1 -1
- metadata/generated/schema/security/credentials/githubCredentials.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 +1 -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/ui/__init__.py +1 -1
- metadata/generated/schema/system/ui/knowledgePanel.py +1 -1
- metadata/generated/schema/system/ui/page.py +1 -1
- metadata/generated/schema/system/validationResponse.py +43 -0
- 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/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/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/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/enumConfig.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/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 +5 -3
- metadata/ingestion/lineage/parser.py +4 -1
- metadata/ingestion/ometa/mixins/patch_mixin.py +2 -4
- metadata/ingestion/source/dashboard/powerbi/client.py +4 -1
- metadata/ingestion/source/database/azuresql/connection.py +21 -3
- metadata/ingestion/source/database/datalake/connection.py +2 -14
- metadata/ingestion/source/database/dbt/dbt_config.py +2 -14
- metadata/ingestion/source/database/mssql/lineage.py +1 -0
- metadata/ingestion/source/database/mssql/usage.py +5 -1
- metadata/ingestion/source/database/mysql/connection.py +14 -0
- metadata/ingestion/source/database/postgres/connection.py +15 -0
- metadata/pii/scanners/ner_scanner.py +5 -3
- metadata/profiler/source/databricks/profiler_source.py +36 -0
- metadata/profiler/source/metadata.py +7 -1
- metadata/profiler/source/profiler_source_factory.py +8 -0
- metadata/utils/credentials.py +36 -19
- metadata/utils/secrets/azure_kv_secrets_manager.py +3 -19
- metadata/utils/storage_metadata_config.py +2 -15
- metadata/workflow/base.py +1 -1
- {openmetadata_ingestion-1.3.1.3.dist-info → openmetadata_ingestion-1.3.2.0rc1.dist-info}/METADATA +297 -297
- {openmetadata_ingestion-1.3.1.3.dist-info → openmetadata_ingestion-1.3.2.0rc1.dist-info}/RECORD +543 -533
- /metadata/examples/workflows/{datalake_azure.yaml → datalake_azure_client_secret.yaml} +0 -0
- {openmetadata_ingestion-1.3.1.3.dist-info → openmetadata_ingestion-1.3.2.0rc1.dist-info}/LICENSE +0 -0
- {openmetadata_ingestion-1.3.1.3.dist-info → openmetadata_ingestion-1.3.2.0rc1.dist-info}/WHEEL +0 -0
- {openmetadata_ingestion-1.3.1.3.dist-info → openmetadata_ingestion-1.3.2.0rc1.dist-info}/entry_points.txt +0 -0
- {openmetadata_ingestion-1.3.1.3.dist-info → openmetadata_ingestion-1.3.2.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -15,6 +15,7 @@ Open Metadata table quality.
|
|
|
15
15
|
This subpackage needs to be used in Great Expectations
|
|
16
16
|
checkpoints actions.
|
|
17
17
|
"""
|
|
18
|
+
import logging
|
|
18
19
|
import traceback
|
|
19
20
|
from datetime import datetime, timezone
|
|
20
21
|
from typing import Dict, List, Optional, Union, cast
|
|
@@ -72,9 +73,10 @@ from metadata.great_expectations.utils.ometa_config_handler import (
|
|
|
72
73
|
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
73
74
|
from metadata.utils import fqn
|
|
74
75
|
from metadata.utils.entity_link import get_entity_link
|
|
75
|
-
from metadata.utils.logger import great_expectations_logger
|
|
76
76
|
|
|
77
|
-
logger =
|
|
77
|
+
logger = logging.getLogger(
|
|
78
|
+
"great_expectations.validation_operators.validation_operators.openmetadata"
|
|
79
|
+
)
|
|
78
80
|
|
|
79
81
|
|
|
80
82
|
class OpenMetadataValidationAction(ValidationAction):
|
|
@@ -429,7 +431,7 @@ class OpenMetadataValidationAction(ValidationAction):
|
|
|
429
431
|
test_case_fqn=test_case.fullyQualifiedName.__root__,
|
|
430
432
|
)
|
|
431
433
|
|
|
432
|
-
logger.
|
|
434
|
+
logger.debug(
|
|
433
435
|
f"Test case result for {test_case.fullyQualifiedName.__root__} successfully ingested"
|
|
434
436
|
)
|
|
435
437
|
|
|
@@ -319,7 +319,10 @@ class LineageParser:
|
|
|
319
319
|
)
|
|
320
320
|
|
|
321
321
|
if not table_left or not table_right:
|
|
322
|
-
logger.warning(
|
|
322
|
+
logger.warning(
|
|
323
|
+
f"Can't extract table names when parsing JOIN information from {comparison}"
|
|
324
|
+
)
|
|
325
|
+
logger.debug(f"Query: {sql_statement}")
|
|
323
326
|
continue
|
|
324
327
|
|
|
325
328
|
left_table_column = TableColumn(table=table_left, column=column_left)
|
|
@@ -46,7 +46,7 @@ from metadata.ingestion.ometa.mixins.patch_mixin_utils import (
|
|
|
46
46
|
)
|
|
47
47
|
from metadata.ingestion.ometa.utils import model_str
|
|
48
48
|
from metadata.utils.deprecation import deprecated
|
|
49
|
-
from metadata.utils.logger import ometa_logger
|
|
49
|
+
from metadata.utils.logger import get_log_name, ometa_logger
|
|
50
50
|
|
|
51
51
|
logger = ometa_logger()
|
|
52
52
|
|
|
@@ -155,9 +155,7 @@ class OMetaPatchMixin(OMetaPatchMixinBase):
|
|
|
155
155
|
|
|
156
156
|
except Exception as exc:
|
|
157
157
|
logger.debug(traceback.format_exc())
|
|
158
|
-
logger.error(
|
|
159
|
-
f"Error trying to PATCH {entity.__name__} [{source.id.__root__}]: {exc}"
|
|
160
|
-
)
|
|
158
|
+
logger.error(f"Error trying to PATCH {get_log_name(source)}: {exc}")
|
|
161
159
|
|
|
162
160
|
return None
|
|
163
161
|
|
|
@@ -19,6 +19,9 @@ from typing import List, Optional, Tuple
|
|
|
19
19
|
|
|
20
20
|
import msal
|
|
21
21
|
|
|
22
|
+
from metadata.generated.schema.entity.services.connections.dashboard.powerBIConnection import (
|
|
23
|
+
PowerBIConnection,
|
|
24
|
+
)
|
|
22
25
|
from metadata.ingestion.api.steps import InvalidSourceException
|
|
23
26
|
from metadata.ingestion.ometa.client import REST, ClientConfig
|
|
24
27
|
from metadata.ingestion.source.dashboard.powerbi.models import (
|
|
@@ -52,7 +55,7 @@ class PowerBiApiClient:
|
|
|
52
55
|
|
|
53
56
|
client: REST
|
|
54
57
|
|
|
55
|
-
def __init__(self, config):
|
|
58
|
+
def __init__(self, config: PowerBIConnection):
|
|
56
59
|
self.config = config
|
|
57
60
|
self.msal_client = msal.ConfidentialClientApplication(
|
|
58
61
|
client_id=self.config.clientId,
|
|
@@ -15,12 +15,13 @@ Source connection handler
|
|
|
15
15
|
from typing import Optional, Union
|
|
16
16
|
from urllib.parse import quote_plus
|
|
17
17
|
|
|
18
|
-
from sqlalchemy.engine import Engine
|
|
18
|
+
from sqlalchemy.engine import URL, Engine
|
|
19
19
|
|
|
20
20
|
from metadata.generated.schema.entity.automations.workflow import (
|
|
21
21
|
Workflow as AutomationWorkflow,
|
|
22
22
|
)
|
|
23
23
|
from metadata.generated.schema.entity.services.connections.database.azureSQLConnection import (
|
|
24
|
+
Authentication,
|
|
24
25
|
AzureSQLConnection,
|
|
25
26
|
)
|
|
26
27
|
from metadata.generated.schema.entity.services.connections.database.mssqlConnection import (
|
|
@@ -40,13 +41,29 @@ def get_connection_url(connection: Union[AzureSQLConnection, MssqlConnection]) -
|
|
|
40
41
|
Build the connection URL
|
|
41
42
|
"""
|
|
42
43
|
|
|
44
|
+
if connection.authenticationMode:
|
|
45
|
+
connection_string = f"Driver={connection.driver};Server={connection.hostPort};Database={connection.database};"
|
|
46
|
+
connection_string += f"Uid={connection.username};"
|
|
47
|
+
if (
|
|
48
|
+
connection.authenticationMode.authentication
|
|
49
|
+
== Authentication.ActiveDirectoryPassword
|
|
50
|
+
):
|
|
51
|
+
connection_string += f"Pwd={connection.password.get_secret_value()};"
|
|
52
|
+
|
|
53
|
+
connection_string += f"Encrypt={'yes' if connection.authenticationMode.encrypt else 'no'};TrustServerCertificate={'yes' if connection.authenticationMode.trustServerCertificate else 'no'};"
|
|
54
|
+
connection_string += f"Connection Timeout={connection.authenticationMode.connectionTimeout or 30};Authentication={connection.authenticationMode.authentication.value};"
|
|
55
|
+
|
|
56
|
+
connection_url = URL.create(
|
|
57
|
+
"mssql+pyodbc", query={"odbc_connect": connection_string}
|
|
58
|
+
)
|
|
59
|
+
return connection_url
|
|
43
60
|
url = f"{connection.scheme.value}://"
|
|
44
61
|
|
|
45
62
|
if connection.username:
|
|
46
63
|
url += f"{quote_plus(connection.username)}"
|
|
47
64
|
url += (
|
|
48
65
|
f":{quote_plus(connection.password.get_secret_value())}"
|
|
49
|
-
if connection
|
|
66
|
+
if connection.password
|
|
50
67
|
else ""
|
|
51
68
|
)
|
|
52
69
|
url += "@"
|
|
@@ -54,12 +71,13 @@ def get_connection_url(connection: Union[AzureSQLConnection, MssqlConnection]) -
|
|
|
54
71
|
url += f"{connection.hostPort}"
|
|
55
72
|
url += f"/{quote_plus(connection.database)}" if connection.database else ""
|
|
56
73
|
url += f"?driver={quote_plus(connection.driver)}"
|
|
74
|
+
|
|
57
75
|
options = get_connection_options_dict(connection)
|
|
58
76
|
if options:
|
|
59
77
|
if not connection.database:
|
|
60
78
|
url += "/"
|
|
61
79
|
params = "&".join(
|
|
62
|
-
f"{key}={quote_plus(value)}" for
|
|
80
|
+
f"{key}={quote_plus(value)}" for key, value in options.items() if value
|
|
63
81
|
)
|
|
64
82
|
url = f"{url}?{params}"
|
|
65
83
|
|
|
@@ -20,6 +20,7 @@ from typing import Optional
|
|
|
20
20
|
|
|
21
21
|
from google.cloud import storage
|
|
22
22
|
|
|
23
|
+
from metadata.clients.azure_client import AzureClient
|
|
23
24
|
from metadata.generated.schema.entity.automations.workflow import (
|
|
24
25
|
Workflow as AutomationWorkflow,
|
|
25
26
|
)
|
|
@@ -88,22 +89,9 @@ def _(config: GCSConfig):
|
|
|
88
89
|
|
|
89
90
|
@get_datalake_client.register
|
|
90
91
|
def _(config: AzureConfig):
|
|
91
|
-
from azure.identity import ClientSecretCredential
|
|
92
|
-
from azure.storage.blob import BlobServiceClient
|
|
93
92
|
|
|
94
93
|
try:
|
|
95
|
-
|
|
96
|
-
config.securityConfig.tenantId,
|
|
97
|
-
config.securityConfig.clientId,
|
|
98
|
-
config.securityConfig.clientSecret.get_secret_value(),
|
|
99
|
-
)
|
|
100
|
-
|
|
101
|
-
azure_client = BlobServiceClient(
|
|
102
|
-
f"https://{config.securityConfig.accountName}.blob.core.windows.net/",
|
|
103
|
-
credential=credentials,
|
|
104
|
-
)
|
|
105
|
-
return azure_client
|
|
106
|
-
|
|
94
|
+
return AzureClient(config.securityConfig).create_blob_client()
|
|
107
95
|
except Exception as exc:
|
|
108
96
|
raise RuntimeError(
|
|
109
97
|
f"Unknown error connecting with {config.securityConfig}: {exc}."
|
|
@@ -20,6 +20,7 @@ from typing import Dict, Iterable, List, Optional, Tuple
|
|
|
20
20
|
import requests
|
|
21
21
|
|
|
22
22
|
from metadata.clients.aws_client import AWSClient
|
|
23
|
+
from metadata.clients.azure_client import AzureClient
|
|
23
24
|
from metadata.generated.schema.metadataIngestion.dbtconfig.dbtAzureConfig import (
|
|
24
25
|
DbtAzureConfig,
|
|
25
26
|
)
|
|
@@ -357,21 +358,8 @@ def _(config: DbtGcsConfig):
|
|
|
357
358
|
def _(config: DbtAzureConfig):
|
|
358
359
|
try:
|
|
359
360
|
bucket_name, prefix = get_dbt_prefix_config(config)
|
|
360
|
-
from azure.identity import ( # pylint: disable=import-outside-toplevel
|
|
361
|
-
ClientSecretCredential,
|
|
362
|
-
)
|
|
363
|
-
from azure.storage.blob import ( # pylint: disable=import-outside-toplevel
|
|
364
|
-
BlobServiceClient,
|
|
365
|
-
)
|
|
366
361
|
|
|
367
|
-
client =
|
|
368
|
-
f"https://{config.dbtSecurityConfig.accountName}.blob.core.windows.net/",
|
|
369
|
-
credential=ClientSecretCredential(
|
|
370
|
-
config.dbtSecurityConfig.tenantId,
|
|
371
|
-
config.dbtSecurityConfig.clientId,
|
|
372
|
-
config.dbtSecurityConfig.clientSecret.get_secret_value(),
|
|
373
|
-
),
|
|
374
|
-
)
|
|
362
|
+
client = AzureClient(config.dbtSecurityConfig).create_blob_client()
|
|
375
363
|
|
|
376
364
|
if not bucket_name:
|
|
377
365
|
container_dicts = client.list_containers()
|
|
@@ -19,4 +19,8 @@ from metadata.ingestion.source.database.usage_source import UsageSource
|
|
|
19
19
|
class MssqlUsageSource(MssqlQueryParserSource, UsageSource):
|
|
20
20
|
sql_stmt = MSSQL_SQL_STATEMENT
|
|
21
21
|
|
|
22
|
-
filters = ""
|
|
22
|
+
filters = """
|
|
23
|
+
AND lower(t.text) NOT LIKE '%%create%%procedure%%'
|
|
24
|
+
AND lower(t.text) NOT LIKE '%%create%%function%%'
|
|
25
|
+
AND lower(t.text) NOT LIKE '%%declare%%'
|
|
26
|
+
"""
|
|
@@ -16,9 +16,13 @@ from typing import Optional
|
|
|
16
16
|
|
|
17
17
|
from sqlalchemy.engine import Engine
|
|
18
18
|
|
|
19
|
+
from metadata.clients.azure_client import AzureClient
|
|
19
20
|
from metadata.generated.schema.entity.automations.workflow import (
|
|
20
21
|
Workflow as AutomationWorkflow,
|
|
21
22
|
)
|
|
23
|
+
from metadata.generated.schema.entity.services.connections.database.common.basicAuth import (
|
|
24
|
+
BasicAuth,
|
|
25
|
+
)
|
|
22
26
|
from metadata.generated.schema.entity.services.connections.database.mysqlConnection import (
|
|
23
27
|
MysqlConnection,
|
|
24
28
|
)
|
|
@@ -38,6 +42,16 @@ def get_connection(connection: MysqlConnection) -> Engine:
|
|
|
38
42
|
"""
|
|
39
43
|
Create connection
|
|
40
44
|
"""
|
|
45
|
+
if hasattr(connection.authType, "azureConfig"):
|
|
46
|
+
azure_client = AzureClient(connection.authType.azureConfig).create_client()
|
|
47
|
+
if not connection.authType.azureConfig.scopes:
|
|
48
|
+
raise ValueError(
|
|
49
|
+
"Azure Scopes are missing, please refer https://learn.microsoft.com/en-gb/azure/mysql/flexible-server/how-to-azure-ad#2---retrieve-microsoft-entra-access-token and fetch the resource associated with it, for e.g. https://ossrdbms-aad.database.windows.net/.default"
|
|
50
|
+
)
|
|
51
|
+
access_token_obj = azure_client.get_token(
|
|
52
|
+
*connection.authType.azureConfig.scopes.split(",")
|
|
53
|
+
)
|
|
54
|
+
connection.authType = BasicAuth(password=access_token_obj.token)
|
|
41
55
|
if connection.sslCA or connection.sslCert or connection.sslKey:
|
|
42
56
|
if not connection.connectionOptions:
|
|
43
57
|
connection.connectionOptions = init_empty_connection_options()
|
|
@@ -17,9 +17,13 @@ from typing import Optional
|
|
|
17
17
|
|
|
18
18
|
from sqlalchemy.engine import Engine
|
|
19
19
|
|
|
20
|
+
from metadata.clients.azure_client import AzureClient
|
|
20
21
|
from metadata.generated.schema.entity.automations.workflow import (
|
|
21
22
|
Workflow as AutomationWorkflow,
|
|
22
23
|
)
|
|
24
|
+
from metadata.generated.schema.entity.services.connections.database.common.basicAuth import (
|
|
25
|
+
BasicAuth,
|
|
26
|
+
)
|
|
23
27
|
from metadata.generated.schema.entity.services.connections.database.postgresConnection import (
|
|
24
28
|
PostgresConnection,
|
|
25
29
|
SslMode,
|
|
@@ -46,6 +50,17 @@ def get_connection(connection: PostgresConnection) -> Engine:
|
|
|
46
50
|
"""
|
|
47
51
|
Create connection
|
|
48
52
|
"""
|
|
53
|
+
|
|
54
|
+
if hasattr(connection.authType, "azureConfig"):
|
|
55
|
+
azure_client = AzureClient(connection.authType.azureConfig).create_client()
|
|
56
|
+
if not connection.authType.azureConfig.scopes:
|
|
57
|
+
raise ValueError(
|
|
58
|
+
"Azure Scopes are missing, please refer https://learn.microsoft.com/en-gb/azure/postgresql/flexible-server/how-to-configure-sign-in-azure-ad-authentication#retrieve-the-microsoft-entra-access-token and fetch the resource associated with it, for e.g. https://ossrdbms-aad.database.windows.net/.default"
|
|
59
|
+
)
|
|
60
|
+
access_token_obj = azure_client.get_token(
|
|
61
|
+
*connection.authType.azureConfig.scopes.split(",")
|
|
62
|
+
)
|
|
63
|
+
connection.authType = BasicAuth(password=access_token_obj.token)
|
|
49
64
|
if connection.sslMode:
|
|
50
65
|
if not connection.connectionArguments:
|
|
51
66
|
connection.connectionArguments = init_empty_connection_arguments()
|
|
@@ -21,7 +21,7 @@ from pydantic import BaseModel
|
|
|
21
21
|
|
|
22
22
|
from metadata.generated.schema.entity.classification.tag import Tag
|
|
23
23
|
from metadata.pii.constants import PII, SPACY_EN_MODEL
|
|
24
|
-
from metadata.pii.models import TagAndConfidence
|
|
24
|
+
from metadata.pii.models import TagAndConfidence
|
|
25
25
|
from metadata.pii.ner import NEREntity
|
|
26
26
|
from metadata.utils import fqn
|
|
27
27
|
from metadata.utils.logger import pii_logger
|
|
@@ -119,13 +119,15 @@ class NERScanner:
|
|
|
119
119
|
|
|
120
120
|
if entities_score:
|
|
121
121
|
label, score = self.get_highest_score_label(entities_score)
|
|
122
|
-
tag_type = NEREntity.__members__.get(label
|
|
122
|
+
tag_type = NEREntity.__members__.get(label)
|
|
123
|
+
if not tag_type:
|
|
124
|
+
return None
|
|
123
125
|
return TagAndConfidence(
|
|
124
126
|
tag_fqn=fqn.build(
|
|
125
127
|
metadata=None,
|
|
126
128
|
entity_type=Tag,
|
|
127
129
|
classification_name=PII,
|
|
128
|
-
tag_name=tag_type,
|
|
130
|
+
tag_name=tag_type.value,
|
|
129
131
|
),
|
|
130
132
|
confidence=score,
|
|
131
133
|
)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""Extend the ProfilerSource class to add support for Databricks is_disconnect SQA method"""
|
|
2
|
+
|
|
3
|
+
from metadata.generated.schema.entity.services.databaseService import DatabaseService
|
|
4
|
+
from metadata.generated.schema.metadataIngestion.workflow import (
|
|
5
|
+
OpenMetadataWorkflowConfig,
|
|
6
|
+
)
|
|
7
|
+
from metadata.ingestion.ometa.ometa_api import OpenMetadata
|
|
8
|
+
from metadata.profiler.source.base.profiler_source import ProfilerSource
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def is_disconnect(self, e, connection, cursor):
|
|
12
|
+
"""is_disconnect method for the Databricks dialect"""
|
|
13
|
+
if "Invalid SessionHandle: SessionHandle" in str(e):
|
|
14
|
+
return True
|
|
15
|
+
return False
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class DataBricksProfilerSource(ProfilerSource):
|
|
19
|
+
"""Databricks Profiler source"""
|
|
20
|
+
|
|
21
|
+
def __init__(
|
|
22
|
+
self,
|
|
23
|
+
config: OpenMetadataWorkflowConfig,
|
|
24
|
+
database: DatabaseService,
|
|
25
|
+
ometa_client: OpenMetadata,
|
|
26
|
+
):
|
|
27
|
+
super().__init__(config, database, ometa_client)
|
|
28
|
+
self.set_is_disconnect()
|
|
29
|
+
|
|
30
|
+
def set_is_disconnect(self):
|
|
31
|
+
"""Set the is_disconnect method for the Databricks dialect"""
|
|
32
|
+
from databricks.sqlalchemy import (
|
|
33
|
+
DatabricksDialect, # pylint: disable=import-outside-toplevel
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
DatabricksDialect.is_disconnect = is_disconnect
|
|
@@ -43,6 +43,10 @@ from metadata.utils.logger import profiler_logger
|
|
|
43
43
|
logger = profiler_logger()
|
|
44
44
|
|
|
45
45
|
|
|
46
|
+
TABLE_FIELDS = ["tableProfilerConfig", "columns", "customMetrics"]
|
|
47
|
+
TAGS_FIELD = ["tags"]
|
|
48
|
+
|
|
49
|
+
|
|
46
50
|
class ProfilerSourceAndEntity(BaseModel):
|
|
47
51
|
"""Return class for the OpenMetadata Profiler Source"""
|
|
48
52
|
|
|
@@ -273,7 +277,9 @@ class OpenMetadataSource(Source):
|
|
|
273
277
|
"""
|
|
274
278
|
tables = self.metadata.list_all_entities(
|
|
275
279
|
entity=Table,
|
|
276
|
-
fields=
|
|
280
|
+
fields=TABLE_FIELDS
|
|
281
|
+
if not self.source_config.processPiiSensitive
|
|
282
|
+
else TABLE_FIELDS + TAGS_FIELD,
|
|
277
283
|
params={
|
|
278
284
|
"service": self.config.source.serviceName,
|
|
279
285
|
"database": fqn.build(
|
|
@@ -16,8 +16,12 @@ Factory class for creating profiler source objects
|
|
|
16
16
|
from metadata.generated.schema.entity.services.connections.database.bigQueryConnection import (
|
|
17
17
|
BigqueryType,
|
|
18
18
|
)
|
|
19
|
+
from metadata.generated.schema.entity.services.connections.database.databricksConnection import (
|
|
20
|
+
DatabricksType,
|
|
21
|
+
)
|
|
19
22
|
from metadata.profiler.source.base.profiler_source import ProfilerSource
|
|
20
23
|
from metadata.profiler.source.bigquery.profiler_source import BigQueryProfilerSource
|
|
24
|
+
from metadata.profiler.source.databricks.profiler_source import DataBricksProfilerSource
|
|
21
25
|
|
|
22
26
|
|
|
23
27
|
class ProfilerSourceFactory:
|
|
@@ -44,3 +48,7 @@ profiler_source_factory.register_source(
|
|
|
44
48
|
BigqueryType.BigQuery.value.lower(),
|
|
45
49
|
BigQueryProfilerSource,
|
|
46
50
|
)
|
|
51
|
+
profiler_source_factory.register_source(
|
|
52
|
+
DatabricksType.Databricks.value.lower(),
|
|
53
|
+
DataBricksProfilerSource,
|
|
54
|
+
)
|
metadata/utils/credentials.py
CHANGED
|
@@ -15,7 +15,7 @@ import base64
|
|
|
15
15
|
import json
|
|
16
16
|
import os
|
|
17
17
|
import tempfile
|
|
18
|
-
from typing import Dict, List, Optional
|
|
18
|
+
from typing import Dict, List, Optional, Union
|
|
19
19
|
|
|
20
20
|
from cryptography.hazmat.primitives import serialization
|
|
21
21
|
from google import auth
|
|
@@ -25,6 +25,9 @@ from metadata.generated.schema.security.credentials.gcpCredentials import (
|
|
|
25
25
|
GCPCredentials,
|
|
26
26
|
GcpCredentialsPath,
|
|
27
27
|
)
|
|
28
|
+
from metadata.generated.schema.security.credentials.gcpExternalAccount import (
|
|
29
|
+
GcpExternalAccount,
|
|
30
|
+
)
|
|
28
31
|
from metadata.generated.schema.security.credentials.gcpValues import (
|
|
29
32
|
GcpCredentialsValues,
|
|
30
33
|
)
|
|
@@ -85,30 +88,44 @@ def create_credential_tmp_file(credentials: dict) -> str:
|
|
|
85
88
|
return temp_file_path
|
|
86
89
|
|
|
87
90
|
|
|
88
|
-
def build_google_credentials_dict(
|
|
91
|
+
def build_google_credentials_dict(
|
|
92
|
+
gcp_values: Union[GcpCredentialsValues, GcpExternalAccount]
|
|
93
|
+
) -> Dict[str, str]:
|
|
89
94
|
"""
|
|
90
95
|
Given GcPCredentialsValues, build a dictionary as the JSON file
|
|
91
96
|
downloaded from GCP with the service_account
|
|
92
97
|
:param gcp_values: GCP credentials
|
|
93
98
|
:return: Dictionary with credentials
|
|
94
99
|
"""
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
100
|
+
if isinstance(gcp_values, GcpCredentialsValues):
|
|
101
|
+
private_key_str = gcp_values.privateKey.get_secret_value()
|
|
102
|
+
# adding the replace string here to escape line break if passed from env
|
|
103
|
+
private_key_str = private_key_str.replace("\\n", "\n")
|
|
104
|
+
validate_private_key(private_key_str)
|
|
105
|
+
|
|
106
|
+
return {
|
|
107
|
+
"type": gcp_values.type,
|
|
108
|
+
"project_id": gcp_values.projectId.__root__,
|
|
109
|
+
"private_key_id": gcp_values.privateKeyId,
|
|
110
|
+
"private_key": private_key_str,
|
|
111
|
+
"client_email": gcp_values.clientEmail,
|
|
112
|
+
"client_id": gcp_values.clientId,
|
|
113
|
+
"auth_uri": str(gcp_values.authUri),
|
|
114
|
+
"token_uri": str(gcp_values.tokenUri),
|
|
115
|
+
"auth_provider_x509_cert_url": str(gcp_values.authProviderX509CertUrl),
|
|
116
|
+
"client_x509_cert_url": str(gcp_values.clientX509CertUrl),
|
|
117
|
+
}
|
|
118
|
+
if isinstance(gcp_values, GcpExternalAccount):
|
|
119
|
+
return {
|
|
120
|
+
"type": gcp_values.externalType,
|
|
121
|
+
"audience": gcp_values.audience,
|
|
122
|
+
"subject_token_type": gcp_values.subjectTokenType,
|
|
123
|
+
"token_url": gcp_values.tokenURL,
|
|
124
|
+
"credential_source": gcp_values.credentialSource,
|
|
125
|
+
}
|
|
126
|
+
raise InvalidGcpConfigException(
|
|
127
|
+
f"Error trying to build GCP credentials dict due to Invalid GCP config {type(gcp_values)}"
|
|
128
|
+
)
|
|
112
129
|
|
|
113
130
|
|
|
114
131
|
def set_google_credentials(gcp_credentials: GCPCredentials) -> None:
|
|
@@ -17,9 +17,9 @@ import traceback
|
|
|
17
17
|
from abc import ABC
|
|
18
18
|
from typing import Optional
|
|
19
19
|
|
|
20
|
-
from azure.
|
|
21
|
-
from azure.keyvault.secrets import KeyVaultSecret, SecretClient
|
|
20
|
+
from azure.keyvault.secrets import KeyVaultSecret
|
|
22
21
|
|
|
22
|
+
from metadata.clients.azure_client import AzureClient
|
|
23
23
|
from metadata.generated.schema.security.secrets.secretsManagerClientLoader import (
|
|
24
24
|
SecretsManagerClientLoader,
|
|
25
25
|
)
|
|
@@ -105,23 +105,7 @@ class AzureKVSecretsManager(ExternalSecretsManager, ABC):
|
|
|
105
105
|
):
|
|
106
106
|
super().__init__(provider=SecretsManagerProvider.azure_kv, loader=loader)
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
self.credentials.tenantId
|
|
110
|
-
and self.credentials.clientId
|
|
111
|
-
and self.credentials.clientSecret
|
|
112
|
-
):
|
|
113
|
-
azure_identity = ClientSecretCredential(
|
|
114
|
-
tenant_id=self.credentials.tenantId,
|
|
115
|
-
client_id=self.credentials.clientId,
|
|
116
|
-
client_secret=self.credentials.clientSecret.get_secret_value(),
|
|
117
|
-
)
|
|
118
|
-
else:
|
|
119
|
-
azure_identity = DefaultAzureCredential()
|
|
120
|
-
|
|
121
|
-
self.client = SecretClient(
|
|
122
|
-
vault_url=f"https://{self.credentials.vaultName}.vault.azure.net/",
|
|
123
|
-
credential=azure_identity,
|
|
124
|
-
)
|
|
108
|
+
self.client = AzureClient(self.credentials).create_secret_client()
|
|
125
109
|
|
|
126
110
|
def get_string_value(self, secret_id: str) -> str:
|
|
127
111
|
"""
|
|
@@ -17,6 +17,7 @@ from functools import singledispatch
|
|
|
17
17
|
|
|
18
18
|
import requests
|
|
19
19
|
|
|
20
|
+
from metadata.clients.azure_client import AzureClient
|
|
20
21
|
from metadata.generated.schema.entity.services.connections.database.datalake.azureConfig import (
|
|
21
22
|
AzureConfig,
|
|
22
23
|
)
|
|
@@ -153,21 +154,7 @@ def _(config: StorageMetadataAdlsConfig) -> ManifestMetadataConfig:
|
|
|
153
154
|
else STORAGE_METADATA_MANIFEST_FILE_NAME
|
|
154
155
|
)
|
|
155
156
|
|
|
156
|
-
|
|
157
|
-
ClientSecretCredential,
|
|
158
|
-
)
|
|
159
|
-
from azure.storage.blob import ( # pylint: disable=import-outside-toplevel
|
|
160
|
-
BlobServiceClient,
|
|
161
|
-
)
|
|
162
|
-
|
|
163
|
-
blob_client = BlobServiceClient(
|
|
164
|
-
account_url=f"https://{config.securityConfig.accountName}.blob.core.windows.net/",
|
|
165
|
-
credential=ClientSecretCredential(
|
|
166
|
-
config.securityConfig.tenantId,
|
|
167
|
-
config.securityConfig.clientId,
|
|
168
|
-
config.securityConfig.clientSecret.get_secret_value(),
|
|
169
|
-
),
|
|
170
|
-
)
|
|
157
|
+
blob_client = AzureClient(config.securityConfig).create_blob_client()
|
|
171
158
|
|
|
172
159
|
reader = get_reader(
|
|
173
160
|
config_source=AzureConfig(securityConfig=config.securityConfig),
|
metadata/workflow/base.py
CHANGED
|
@@ -108,7 +108,7 @@ class BaseWorkflow(ABC, WorkflowStatusMixin):
|
|
|
108
108
|
@property
|
|
109
109
|
def ingestion_pipeline(self):
|
|
110
110
|
"""Get or create the Ingestion Pipeline from the configuration"""
|
|
111
|
-
if not self._ingestion_pipeline:
|
|
111
|
+
if not self._ingestion_pipeline and self.config.ingestionPipelineFQN:
|
|
112
112
|
self._ingestion_pipeline = self.get_or_create_ingestion_pipeline()
|
|
113
113
|
|
|
114
114
|
return self._ingestion_pipeline
|