From 0a92a897a1d04bc029db7469fa5d40991a0a8ee2 Mon Sep 17 00:00:00 2001 From: Sachin Chaurasiya Date: Wed, 29 Mar 2023 14:18:17 +0530 Subject: [PATCH] chore(ui): add support for service documentation (part-1) (#10668) * chore(ui): add support for service documentation md file * sync local * chore: add method for fetching markdown file * chore(ui): add support for service documentation * chore: move fields to connections * chore: update logic to fetch requirements * chore: right panel component for service * fix: key prop is not present in the skeleton component * chore: only fetch md files when required fields are present * chore: use hook for fetching airflow status * chore: refactor add service component * chore: remove id prefix and id separator prop from form builder * fix: fieldName issue on right panel * fix: active Field name issue * fix:unit test * test: add unit test * chore: handle edit service form * chore: add fallback logic * fix: cy test * chore: update service doc md files/folder structure, * chore: push image example * Athena docs * Add glue docs * Add hive related changes * chore: take last field for fetching field doc * add datalake * Added connection information for oracle and redshift (english + french) * fix: fallback logic * Bigquery & Snowflake Requirements * mysql and amundsen requirements (#10752) * Revert removal of descriptions * Add Doc For Mssql and Postgres * Added powerbi conn md files * Align requirements files * Add Kafka and Redpanda * refined powerbi docs * Add Tableu requirements, move Athena and Glue fields, change footer some connectors * Add missing connectors fields descriptions default * re: datalake * Add Tableau field descriptions * fix: markdown styling * chore: improve button styling * chore: rename right panel to service right panel and move it to common * fix: doc for select and list field , cy test. * fix: unit test * fix: test connection service type issue * Added powerbi docs link in req * Add info on hive * Remove unused markdowns * Add req for datalake * add hive requirements header * Snowflake & Biguqery * Update Mssql and Postgres * mysql and amundsen requirements updated * Update Mssql and Postgres * added username * chore: fix cy expression issue * chore: reset active field state on step change. * fix: affix target container issue * fix: unit test * fix: cypress for postgres and glue --------- Co-authored-by: Milan Bariya <52292922+MilanBariya@users.noreply.github.com> Co-authored-by: Pere Miquel Brull Co-authored-by: Ayush Shah Co-authored-by: Teddy Crepineau Co-authored-by: ulixius9 Co-authored-by: NiharDoshi99 <51595473+NiharDoshi99@users.noreply.github.com> Co-authored-by: Milan Bariya Co-authored-by: Onkar Ravgan Co-authored-by: Nahuel Verdugo Revigliono Co-authored-by: Nihar Doshi --- .../connectors/database/datalake/index.md | 2 +- .../connections/database/hiveConnection.json | 2 +- .../resources/ui/cypress/common/common.js | 25 +- .../e2e/AddNewService/bigquery.spec.js | 14 +- .../ui/cypress/e2e/AddNewService/glue.spec.js | 10 +- .../cypress/e2e/AddNewService/kafka.spec.js | 4 +- .../e2e/AddNewService/metabase.spec.js | 6 +- .../e2e/AddNewService/postgres.spec.js | 8 +- .../e2e/AddNewService/redshiftWithDBT.spec.js | 8 +- .../e2e/AddNewService/snowflake.spec.js | 10 +- .../e2e/AddNewService/superset.spec.js | 6 +- .../Database/Mssql/remote-connection.png | Bin 0 -> 13620 bytes .../Database/Mysql/image-testing.png | Bin 0 -> 518810 bytes .../fields/connectionOptions.md | 2 + .../fields/sourcePythonClass.md | 2 + .../Dashboard/CustomDashboard/requirements.md | 3 + .../DomoDashboard/fields/accessToken.md | 2 + .../Dashboard/DomoDashboard/fields/apiHost.md | 2 + .../DomoDashboard/fields/clientId.md | 2 + .../DomoDashboard/fields/sandboxDomain.md | 2 + .../DomoDashboard/fields/secretToken.md | 2 + .../Dashboard/DomoDashboard/requirements.md | 3 + .../en-US/Dashboard/Looker/fields/clientId.md | 2 + .../Dashboard/Looker/fields/clientSecret.md | 2 + .../en-US/Dashboard/Looker/fields/hostPort.md | 2 + .../en-US/Dashboard/Looker/requirements.md | 3 + .../Dashboard/Metabase/fields/hostPort.md | 2 + .../Dashboard/Metabase/fields/password.md | 2 + .../Dashboard/Metabase/fields/username.md | 2 + .../en-US/Dashboard/Metabase/requirements.md | 3 + .../Dashboard/Mode/fields/accessToken.md | 2 + .../Mode/fields/accessTokenPassword.md | 2 + .../en-US/Dashboard/Mode/fields/hostPort.md | 2 + .../Dashboard/Mode/fields/workspaceName.md | 2 + .../en-US/Dashboard/Mode/requirements.md | 3 + .../Dashboard/PowerBI/fields/authorityURI.md | 3 + .../Dashboard/PowerBI/fields/clientId.md | 9 + .../Dashboard/PowerBI/fields/clientSecret.md | 15 + .../Dashboard/PowerBI/fields/hostPort.md | 3 + .../fields/pagination_entity_per_page.md | 3 + .../en-US/Dashboard/PowerBI/fields/scope.md | 4 + .../Dashboard/PowerBI/fields/tenantId.md | 9 + .../en-US/Dashboard/PowerBI/requirements.md | 28 ++ .../QuickSight/fields/assumeRoleArn.md | 2 + .../fields/assumeRoleSessionName.md | 2 + .../fields/assumeRoleSourceIdentity.md | 2 + .../QuickSight/fields/awsAccessKeyId.md | 2 + .../QuickSight/fields/awsAccountId.md | 2 + .../Dashboard/QuickSight/fields/awsConfig.md | 2 + .../Dashboard/QuickSight/fields/awsRegion.md | 2 + .../QuickSight/fields/awsSecretAccessKey.md | 2 + .../QuickSight/fields/awsSessionToken.md | 2 + .../QuickSight/fields/endPointURL.md | 2 + .../QuickSight/fields/identityType.md | 2 + .../Dashboard/QuickSight/fields/namespace.md | 2 + .../QuickSight/fields/profileName.md | 2 + .../Dashboard/QuickSight/requirements.md | 3 + .../en-US/Dashboard/Redash/fields/apiKey.md | 2 + .../en-US/Dashboard/Redash/fields/hostPort.md | 2 + .../Dashboard/Redash/fields/redashVersion.md | 2 + .../en-US/Dashboard/Redash/fields/username.md | 2 + .../en-US/Dashboard/Redash/requirements.md | 3 + .../Superset/fields/classificationName.md | 2 + .../Dashboard/Superset/fields/connection.md | 2 + .../Superset/fields/connectionArguments.md | 2 + .../Superset/fields/connectionOptions.md | 2 + .../Dashboard/Superset/fields/database.md | 2 + .../Dashboard/Superset/fields/databaseName.md | 2 + .../Superset/fields/databaseSchema.md | 2 + .../Dashboard/Superset/fields/hostPort.md | 2 + .../Superset/fields/ingestAllDatabases.md | 2 + .../Dashboard/Superset/fields/password.md | 2 + .../Dashboard/Superset/fields/provider.md | 2 + .../en-US/Dashboard/Superset/fields/scheme.md | 2 + .../en-US/Dashboard/Superset/fields/sslCA.md | 2 + .../Dashboard/Superset/fields/sslCert.md | 2 + .../en-US/Dashboard/Superset/fields/sslKey.md | 2 + .../Dashboard/Superset/fields/sslMode.md | 2 + .../Superset/fields/supportsDatabase.md | 2 + .../Dashboard/Superset/fields/username.md | 2 + .../en-US/Dashboard/Superset/requirements.md | 3 + .../Dashboard/Tableau/fields/apiVersion.md | 5 + .../Tableau/fields/certificatePath.md | 3 + .../en-US/Dashboard/Tableau/fields/env.md | 1 + .../Dashboard/Tableau/fields/hostPort.md | 3 + .../Dashboard/Tableau/fields/password.md | 1 + .../Tableau/fields/personalAccessTokenName.md | 3 + .../fields/personalAccessTokenSecret.md | 3 + .../Dashboard/Tableau/fields/siteName.md | 7 + .../en-US/Dashboard/Tableau/fields/siteUrl.md | 1 + .../Dashboard/Tableau/fields/sslConfig.md | 1 + .../Dashboard/Tableau/fields/username.md | 1 + .../Dashboard/Tableau/fields/verifySSL.md | 6 + .../en-US/Dashboard/Tableau/requirements.md | 7 + .../Database/Athena/fields/assumeRoleArn.md | 9 + .../Athena/fields/assumeRoleSessionName.md | 6 + .../Athena/fields/assumeRoleSourceIdentity.md | 4 + .../Database/Athena/fields/awsAccessKeyId.md | 11 + .../en-US/Database/Athena/fields/awsConfig.md | 2 + .../en-US/Database/Athena/fields/awsRegion.md | 7 + .../Athena/fields/awsSecretAccessKey.md | 11 + .../Database/Athena/fields/awsSessionToken.md | 4 + .../Athena/fields/connectionArguments.md | 2 + .../Athena/fields/connectionOptions.md | 2 + .../Database/Athena/fields/databaseName.md | 8 + .../Database/Athena/fields/endpointURL.md | 5 + .../Database/Athena/fields/profileName.md | 7 + .../Database/Athena/fields/s3StagingDir.md | 6 + .../en-US/Database/Athena/fields/scheme.md | 2 + .../en-US/Database/Athena/fields/workgroup.md | 5 + .../en-US/Database/Athena/requirements.md | 103 +++++ .../AzureSQL/fields/connectionArguments.md | 2 + .../AzureSQL/fields/connectionOptions.md | 2 + .../Database/AzureSQL/fields/database.md | 2 + .../en-US/Database/AzureSQL/fields/driver.md | 2 + .../Database/AzureSQL/fields/hostPort.md | 2 + .../Database/AzureSQL/fields/password.md | 2 + .../en-US/Database/AzureSQL/fields/scheme.md | 2 + .../AzureSQL/fields/supportsDatabase.md | 2 + .../Database/AzureSQL/fields/username.md | 2 + .../en-US/Database/AzureSQL/requirements.md | 3 + .../fields/authProviderX509CertUrl.md | 1 + .../en-US/Database/BigQuery/fields/authUri.md | 1 + .../Database/BigQuery/fields/clientEmail.md | 1 + .../Database/BigQuery/fields/clientId.md | 1 + .../BigQuery/fields/clientX509CertUrl.md | 1 + .../BigQuery/fields/connectionArguments.md | 2 + .../BigQuery/fields/connectionOptions.md | 2 + .../Database/BigQuery/fields/credentials.md | 2 + .../Database/BigQuery/fields/gcsConfig.md | 1 + .../Database/BigQuery/fields/hostPort.md | 1 + .../BigQuery/fields/partitionField.md | 2 + .../BigQuery/fields/partitionQuery.md | 2 + .../BigQuery/fields/partitionQueryDuration.md | 2 + .../Database/BigQuery/fields/privateKey.md | 1 + .../Database/BigQuery/fields/privateKeyId.md | 1 + .../Database/BigQuery/fields/projectId.md | 3 + .../en-US/Database/BigQuery/fields/scheme.md | 1 + .../BigQuery/fields/taxonomyLocation.md | 5 + .../BigQuery/fields/taxonomyProjectID.md | 5 + .../Database/BigQuery/fields/tokenUri.md | 3 + .../en-US/Database/BigQuery/fields/type.md | 1 + .../Database/BigQuery/fields/usageLocation.md | 1 + .../en-US/Database/BigQuery/requirements.md | 38 ++ .../Clickhouse/fields/connectionArguments.md | 2 + .../Clickhouse/fields/connectionOptions.md | 2 + .../Clickhouse/fields/databaseName.md | 2 + .../Clickhouse/fields/databaseSchema.md | 2 + .../Database/Clickhouse/fields/duration.md | 2 + .../Database/Clickhouse/fields/hostPort.md | 2 + .../Database/Clickhouse/fields/keyfile.md | 2 + .../Database/Clickhouse/fields/password.md | 2 + .../Database/Clickhouse/fields/scheme.md | 2 + .../Database/Clickhouse/fields/secure.md | 2 + .../Database/Clickhouse/fields/username.md | 2 + .../en-US/Database/Clickhouse/requirements.md | 3 + .../fields/connectionOptions.md | 2 + .../fields/sourcePythonClass.md | 2 + .../Database/CustomDatabase/requirements.md | 3 + .../Database/Databricks/fields/catalog.md | 2 + .../Databricks/fields/connectionArguments.md | 2 + .../Databricks/fields/connectionOptions.md | 2 + .../Databricks/fields/connectionTimeout.md | 2 + .../Databricks/fields/databaseSchema.md | 2 + .../Database/Databricks/fields/hostPort.md | 2 + .../Database/Databricks/fields/httpPath.md | 2 + .../Database/Databricks/fields/scheme.md | 2 + .../Databricks/fields/supportsDatabase.md | 2 + .../en-US/Database/Databricks/fields/token.md | 2 + .../en-US/Database/Databricks/requirements.md | 3 + .../Database/Datalake/fields/accountName.md | 1 + .../Database/Datalake/fields/assumeRoleArn.md | 9 + .../Datalake/fields/assumeRoleSessionName.md | 6 + .../fields/assumeRoleSourceIdentity.md | 4 + .../fields/authProviderX509CertUrl.md | 1 + .../en-US/Database/Datalake/fields/authUri.md | 1 + .../Datalake/fields/awsAccessKeyId.md | 11 + .../Database/Datalake/fields/awsRegion.md | 7 + .../Datalake/fields/awsSecretAccessKey.md | 11 + .../Datalake/fields/awsSessionToken.md | 4 + .../Database/Datalake/fields/bucketName.md | 1 + .../Database/Datalake/fields/clientEmail.md | 1 + .../Database/Datalake/fields/clientId.md | 1 + .../Database/Datalake/fields/clientSecret.md | 1 + .../Datalake/fields/clientX509CertUrl.md | 1 + .../Database/Datalake/fields/configSource.md | 2 + .../Datalake/fields/connectionArguments.md | 2 + .../Datalake/fields/connectionOptions.md | 2 + .../fields/databaseName.md | 0 .../Database/Datalake/fields/endPointURL.md | 5 + .../Database/Datalake/fields/gcsConfig.md | 1 + .../en-US/Database/Datalake/fields/prefix.md | 1 + .../Database/Datalake/fields/privateKey.md | 1 + .../Database/Datalake/fields/privateKeyId.md | 1 + .../Database/Datalake/fields/profileName.md | 7 + .../Database/Datalake/fields/projectId.md | 1 + .../Datalake/fields/securityConfig.md | 2 + .../Database/Datalake/fields/tenantId.md | 1 + .../Database/Datalake/fields/tokenUri.md | 1 + .../en-US/Database/Datalake/fields/type.md | 1 + .../en-US/Database/Datalake/requirements.md | 51 +++ .../Db2/fields/connectionArguments.md | 2 + .../Database/Db2/fields/connectionOptions.md | 2 + .../en-US/Database/Db2/fields/database.md | 2 + .../en-US/Database/Db2/fields/hostPort.md | 2 + .../en-US/Database/Db2/fields/password.md | 2 + .../en-US/Database/Db2/fields/scheme.md | 2 + .../Database/Db2/fields/supportsDatabase.md | 2 + .../en-US/Database/Db2/fields/username.md | 2 + .../en-US/Database/Db2/requirements.md | 3 + .../Database/DeltaLake/fields/appName.md | 2 + .../DeltaLake/fields/connectionArguments.md | 2 + .../Database/DeltaLake/fields/databaseName.md | 2 + .../DeltaLake/fields/metastoreConnection.md | 2 + .../en-US/Database/DeltaLake/requirements.md | 3 + .../DomoDatabase/fields/accessToken.md | 2 + .../Database/DomoDatabase/fields/apiHost.md | 2 + .../Database/DomoDatabase/fields/clientId.md | 2 + .../DomoDatabase/fields/databaseName.md | 2 + .../DomoDatabase/fields/sandboxDomain.md | 2 + .../DomoDatabase/fields/secretToken.md | 2 + .../Database/DomoDatabase/requirements.md | 3 + .../Druid/fields/connectionArguments.md | 2 + .../Druid/fields/connectionOptions.md | 2 + .../Database/Druid/fields/databaseName.md | 2 + .../en-US/Database/Druid/fields/hostPort.md | 2 + .../en-US/Database/Druid/fields/password.md | 2 + .../en-US/Database/Druid/fields/scheme.md | 2 + .../en-US/Database/Druid/fields/username.md | 2 + .../en-US/Database/Druid/requirements.md | 3 + .../Database/DynamoDB/fields/assumeRoleArn.md | 2 + .../DynamoDB/fields/assumeRoleSessionName.md | 2 + .../fields/assumeRoleSourceIdentity.md | 2 + .../DynamoDB/fields/awsAccessKeyId.md | 2 + .../Database/DynamoDB/fields/awsConfig.md | 2 + .../Database/DynamoDB/fields/awsRegion.md | 2 + .../DynamoDB/fields/awsSecretAccessKey.md | 2 + .../DynamoDB/fields/awsSessionToken.md | 2 + .../DynamoDB/fields/connectionArguments.md | 2 + .../DynamoDB/fields/connectionOptions.md | 2 + .../Database/DynamoDB/fields/databaseName.md | 2 + .../Database/DynamoDB/fields/endPointURL.md | 2 + .../Database/DynamoDB/fields/profileName.md | 2 + .../en-US/Database/DynamoDB/requirements.md | 3 + .../Database/Glue/fields/assumeRoleArn.md | 9 + .../Glue/fields/assumeRoleSessionName.md | 6 + .../Glue/fields/assumeRoleSourceIdentity.md | 4 + .../Database/Glue/fields/awsAccessKeyId.md | 11 + .../en-US/Database/Glue/fields/awsConfig.md | 2 + .../en-US/Database/Glue/fields/awsRegion.md | 7 + .../Glue/fields/awsSecretAccessKey.md | 11 + .../Database/Glue/fields/awsSessionToken.md | 4 + .../Glue/fields/connectionArguments.md | 2 + .../Database/Glue/fields/connectionOptions.md | 2 + .../en-US/Database/Glue/fields/endpointURL.md | 5 + .../en-US/Database/Glue/fields/profileName.md | 7 + .../Glue/fields/storageServiceName.md | 4 + .../en-US/Database/Glue/requirements.md | 7 + .../en-US/Database/Hive/fields/auth.md | 1 + .../en-US/Database/Hive/fields/authOptions.md | 1 + .../Hive/fields/connectionArguments.md | 2 + .../Database/Hive/fields/connectionOptions.md | 2 + .../Database/Hive/fields/databaseName.md | 1 + .../fields/databaseSchema.md | 0 .../en-US/Database/Hive/fields/hostPort.md | 1 + .../Hive/fields/kerberosServiceName.md | 1 + .../en-US/Database/Hive/fields/password.md | 1 + .../en-US/Database/Hive/fields/scheme.md | 1 + .../en-US/Database/Hive/fields/username.md | 1 + .../en-US/Database/Hive/requirements.md | 4 + .../MariaDB/fields/connectionArguments.md | 2 + .../MariaDB/fields/connectionOptions.md | 2 + .../Database/MariaDB/fields/databaseName.md | 2 + .../Database/MariaDB/fields/databaseSchema.md | 2 + .../en-US/Database/MariaDB/fields/hostPort.md | 2 + .../en-US/Database/MariaDB/fields/password.md | 2 + .../en-US/Database/MariaDB/fields/scheme.md | 2 + .../en-US/Database/MariaDB/fields/username.md | 2 + .../en-US/Database/MariaDB/requirements.md | 3 + .../Mssql/fields/connectionArguments.md | 2 + .../Mssql/fields/connectionOptions.md | 2 + .../en-US/Database/Mssql/fields/database.md | 1 + .../en-US/Database/Mssql/fields/hostPort.md | 2 + .../en-US/Database/Mssql/fields/password.md | 1 + .../en-US/Database/Mssql/fields/scheme.md | 1 + .../Database/Mssql/fields/supportsDatabase.md | 2 + .../en-US/Database/Mssql/fields/uriString.md | 1 + .../en-US/Database/Mssql/fields/username.md | 1 + .../en-US/Database/Mssql/requirements.md | 36 ++ .../Mysql/connections/fields/password.md | 2 - .../Mysql/fields/connectionArguments.md | 2 + .../Mysql/fields/connectionOptions.md | 2 + .../Database/Mysql/fields/databaseName.md | 8 + .../Database/Mysql/fields/databaseSchema.md | 7 + .../en-US/Database/Mysql/fields/hostPort.md | 3 + .../en-US/Database/Mysql/fields/password.md | 1 + .../Mysql/{connections => }/fields/scheme.md | 0 .../Mysql/{connections => }/fields/sslCA.md | 0 .../Mysql/{connections => }/fields/sslCert.md | 0 .../Mysql/{connections => }/fields/sslKey.md | 0 .../en-US/Database/Mysql/fields/username.md | 1 + .../en-US/Database/Mysql/requirements.md | 8 +- .../Oracle/fields/connectionArguments.md | 2 + .../Oracle/fields/connectionOptions.md | 2 + .../Database/Oracle/fields/databaseSchema.md | 1 + .../en-US/Database/Oracle/fields/hostPort.md | 1 + .../Oracle/fields/instantClientDirectory.md | 1 + .../Oracle/fields/oracleConnectionType.md | 2 + .../Oracle/fields/oracleServiceName.md | 1 + .../en-US/Database/Oracle/fields/password.md | 1 + .../en-US/Database/Oracle/fields/scheme.md | 1 + .../en-US/Database/Oracle/fields/username.md | 1 + .../en-US/Database/Oracle/requirements.md | 20 + .../PinotDB/fields/connectionArguments.md | 2 + .../PinotDB/fields/connectionOptions.md | 2 + .../en-US/Database/PinotDB/fields/database.md | 2 + .../en-US/Database/PinotDB/fields/hostPort.md | 2 + .../en-US/Database/PinotDB/fields/password.md | 2 + .../PinotDB/fields/pinotControllerHost.md | 2 + .../en-US/Database/PinotDB/fields/scheme.md | 2 + .../en-US/Database/PinotDB/fields/username.md | 2 + .../en-US/Database/PinotDB/requirements.md | 3 + .../Postgres/fields/classificationName.md | 1 + .../Postgres/fields/connectionArguments.md | 2 + .../Postgres/fields/connectionOptions.md | 2 + .../Database/Postgres/fields/database.md | 1 + .../fields/hostPort.md | 3 +- .../Postgres/fields/ingestAllDatabases.md | 1 + .../Database/Postgres/fields/password.md | 1 + .../en-US/Database/Postgres/fields/scheme.md | 1 + .../en-US/Database/Postgres/fields/sslMode.md | 1 + .../Postgres/fields/supportsDatabase.md | 2 + .../fields/username.md | 2 +- .../en-US/Database/Postgres/requirements.md | 31 ++ .../en-US/Database/Presto/fields/catalog.md | 2 + .../Presto/fields/connectionArguments.md | 2 + .../Presto/fields/connectionOptions.md | 2 + .../Database/Presto/fields/databaseSchema.md | 2 + .../en-US/Database/Presto/fields/hostPort.md | 2 + .../en-US/Database/Presto/fields/password.md | 2 + .../en-US/Database/Presto/fields/scheme.md | 2 + .../Presto/fields/supportsDatabase.md | 2 + .../en-US/Database/Presto/fields/username.md | 2 + .../en-US/Database/Presto/requirements.md | 3 + .../Redshift/fields/connectionArguments.md | 2 + .../Redshift/fields/connectionOptions.md | 2 + .../Database/Redshift/fields/database.md | 1 + .../Database/Redshift/fields/hostPort.md | 1 + .../Redshift/fields/ingestAllDatabases.md | 1 + .../Database/Redshift/fields/password.md | 1 + .../en-US/Database/Redshift/fields/scheme.md | 1 + .../en-US/Database/Redshift/fields/sslMode.md | 1 + .../Redshift/fields/supportsDatabase.md | 2 + .../Database/Redshift/fields/username.md | 1 + .../en-US/Database/Redshift/requirements.md | 11 + .../SQLite/fields/connectionArguments.md | 2 + .../SQLite/fields/connectionOptions.md | 2 + .../en-US/Database/SQLite/fields/database.md | 2 + .../Database/SQLite/fields/databaseMode.md | 2 + .../en-US/Database/SQLite/fields/hostPort.md | 2 + .../en-US/Database/SQLite/fields/password.md | 2 + .../en-US/Database/SQLite/fields/scheme.md | 2 + .../en-US/Database/SQLite/fields/username.md | 2 + .../en-US/Database/SQLite/requirements.md | 3 + .../Salesforce/fields/connectionArguments.md | 2 + .../Salesforce/fields/connectionOptions.md | 2 + .../Salesforce/fields/databaseName.md | 2 + .../Database/Salesforce/fields/hostPort.md | 2 + .../Database/Salesforce/fields/password.md | 2 + .../Database/Salesforce/fields/scheme.md | 2 + .../Salesforce/fields/securityToken.md | 2 + .../Database/Salesforce/fields/sobjectName.md | 2 + .../Database/Salesforce/fields/username.md | 2 + .../en-US/Database/Salesforce/requirements.md | 3 + .../SingleStore/fields/connectionArguments.md | 2 + .../SingleStore/fields/connectionOptions.md | 2 + .../SingleStore/fields/databaseName.md | 2 + .../SingleStore/fields/databaseSchema.md | 2 + .../Database/SingleStore/fields/hostPort.md | 2 + .../Database/SingleStore/fields/password.md | 2 + .../Database/SingleStore/fields/scheme.md | 2 + .../Database/SingleStore/fields/username.md | 2 + .../Database/SingleStore/requirements.md | 3 + .../Database/Snowflake/fields/account.md | 3 + .../Snowflake/fields/connectionArguments.md | 2 + .../Snowflake/fields/connectionOptions.md | 2 + .../Database/Snowflake/fields/database.md | 1 + .../Database/Snowflake/fields/password.md | 1 + .../Database/Snowflake/fields/privateKey.md | 22 + .../Database/Snowflake/fields/queryTag.md | 1 + .../en-US/Database/Snowflake/fields/role.md | 1 + .../en-US/Database/Snowflake/fields/scheme.md | 2 + .../en-US/Database/Snowflake/fields/schme.md | 1 + .../fields/snowflakePrivatekeyPassphrase.md | 1 + .../Snowflake/fields/supportsDatabase.md | 2 + .../Database/Snowflake/fields/username.md | 1 + .../Database/Snowflake/fields/warehouse.md | 1 + .../en-US/Database/Snowflake/requirements.md | 50 +++ .../en-US/Database/Trino/fields/catalog.md | 2 + .../Trino/fields/connectionArguments.md | 2 + .../Trino/fields/connectionOptions.md | 2 + .../Database/Trino/fields/databaseSchema.md | 2 + .../en-US/Database/Trino/fields/hostPort.md | 2 + .../en-US/Database/Trino/fields/params.md | 2 + .../en-US/Database/Trino/fields/password.md | 2 + .../en-US/Database/Trino/fields/proxies.md | 2 + .../en-US/Database/Trino/fields/scheme.md | 2 + .../Database/Trino/fields/supportsDatabase.md | 2 + .../en-US/Database/Trino/fields/username.md | 2 + .../en-US/Database/Trino/requirements.md | 3 + .../Vertica/fields/connectionArguments.md | 2 + .../Vertica/fields/connectionOptions.md | 2 + .../en-US/Database/Vertica/fields/database.md | 2 + .../en-US/Database/Vertica/fields/hostPort.md | 2 + .../en-US/Database/Vertica/fields/password.md | 2 + .../en-US/Database/Vertica/fields/scheme.md | 2 + .../Vertica/fields/supportsDatabase.md | 2 + .../en-US/Database/Vertica/fields/username.md | 2 + .../en-US/Database/Vertica/requirements.md | 3 + .../fields/connectionOptions.md | 2 + .../fields/sourcePythonClass.md | 2 + .../Messaging/CustomMessaging/requirements.md | 3 + .../Kafka/fields/basicAuthUserInfo.md | 3 + .../Kafka/fields/bootstrapServers.md | 3 + .../Messaging/Kafka/fields/consumerConfig.md | 1 + .../Messaging/Kafka/fields/saslMechanism.md | 5 + .../Messaging/Kafka/fields/saslPassword.md | 1 + .../Messaging/Kafka/fields/saslUsername.md | 1 + .../Kafka/fields/schemaRegistryConfig.md | 1 + .../Kafka/fields/schemaRegistryURL.md | 3 + .../en-US/Messaging/Kafka/requirements.md | 6 + .../Messaging/Kinesis/fields/assumeRoleArn.md | 2 + .../Kinesis/fields/assumeRoleSessionName.md | 2 + .../fields/assumeRoleSourceIdentity.md | 2 + .../Kinesis/fields/awsAccessKeyId.md | 2 + .../Messaging/Kinesis/fields/awsConfig.md | 2 + .../Messaging/Kinesis/fields/awsRegion.md | 2 + .../Kinesis/fields/awsSecretAccessKey.md | 2 + .../Kinesis/fields/awsSessionToken.md | 2 + .../Messaging/Kinesis/fields/endPointURL.md | 2 + .../Messaging/Kinesis/fields/profileName.md | 2 + .../en-US/Messaging/Kinesis/requirements.md | 3 + .../en-US/Messaging/Pulsar/requirements.md | 3 + .../Redpanda/fields/basicAuthUserInfo.md | 3 + .../Redpanda/fields/bootstrapServers.md | 3 + .../Redpanda/fields/consumerConfig.md | 1 + .../Redpanda/fields/saslMechanism.md | 5 + .../Messaging/Redpanda/fields/saslPassword.md | 1 + .../Messaging/Redpanda/fields/saslUsername.md | 1 + .../Redpanda/fields/schemaRegistryConfig.md | 1 + .../Redpanda/fields/schemaRegistryURL.md | 3 + .../en-US/Messaging/Redpanda/requirements.md | 6 + .../Metadata/Amundsen/fields/encrypted.md | 1 + .../Metadata/Amundsen/fields/hostPort.md | 1 + .../Amundsen/fields/maxConnectionLifeTime.md | 1 + .../Metadata/Amundsen/fields/password.md | 1 + .../Metadata/Amundsen/fields/username.md | 1 + .../Metadata/Amundsen/fields/validateSSL.md | 1 + .../en-US/Metadata/Amundsen/requirements.md | 8 + .../Atlas/fields/connectionArguments.md | 2 + .../Atlas/fields/connectionOptions.md | 2 + .../Atlas/fields/databaseServiceName.md | 2 + .../Metadata/Atlas/fields/entity_type.md | 2 + .../en-US/Metadata/Atlas/fields/hostPort.md | 2 + .../Atlas/fields/messagingServiceName.md | 2 + .../en-US/Metadata/Atlas/fields/password.md | 2 + .../en-US/Metadata/Atlas/fields/username.md | 2 + .../en-US/Metadata/Atlas/requirements.md | 3 + .../OpenMetadata/fields/apiVersion.md | 2 + .../OpenMetadata/fields/assumeRoleArn.md | 2 + .../fields/assumeRoleSessionName.md | 2 + .../fields/assumeRoleSourceIdentity.md | 2 + .../Metadata/OpenMetadata/fields/audience.md | 2 + .../OpenMetadata/fields/authProvider.md | 2 + .../Metadata/OpenMetadata/fields/authority.md | 2 + .../OpenMetadata/fields/awsAccessKeyId.md | 2 + .../Metadata/OpenMetadata/fields/awsRegion.md | 2 + .../OpenMetadata/fields/awsSecretAccessKey.md | 2 + .../OpenMetadata/fields/awsSessionToken.md | 2 + .../OpenMetadata/fields/certificatePath.md | 2 + .../Metadata/OpenMetadata/fields/clientId.md | 2 + .../OpenMetadata/fields/clientSecret.md | 2 + .../OpenMetadata/fields/clusterName.md | 2 + .../Metadata/OpenMetadata/fields/config.md | 2 + .../Metadata/OpenMetadata/fields/domain.md | 2 + .../OpenMetadata/fields/elasticsSearch.md | 2 + .../Metadata/OpenMetadata/fields/email.md | 2 + .../fields/enableVersionValidation.md | 2 + .../OpenMetadata/fields/endPointURL.md | 2 + .../OpenMetadata/fields/extraHeaders.md | 2 + .../fields/forceEntityOverwriting.md | 2 + .../Metadata/OpenMetadata/fields/hostPort.md | 2 + .../OpenMetadata/fields/includeDashboards.md | 2 + .../fields/includeDatabaseServices.md | 2 + .../fields/includeGlossaryTerms.md | 2 + .../fields/includeMessagingServices.md | 2 + .../OpenMetadata/fields/includeMlModels.md | 2 + .../fields/includePipelineServices.md | 2 + .../OpenMetadata/fields/includePipelines.md | 2 + .../OpenMetadata/fields/includePolicy.md | 2 + .../OpenMetadata/fields/includeTables.md | 2 + .../OpenMetadata/fields/includeTags.md | 2 + .../OpenMetadata/fields/includeTeams.md | 2 + .../OpenMetadata/fields/includeTopics.md | 2 + .../OpenMetadata/fields/includeUsers.md | 2 + .../Metadata/OpenMetadata/fields/jwtToken.md | 2 + .../OpenMetadata/fields/limitRecords.md | 2 + .../Metadata/OpenMetadata/fields/orgURL.md | 2 + .../OpenMetadata/fields/privateKey.md | 2 + .../OpenMetadata/fields/profileName.md | 2 + .../Metadata/OpenMetadata/fields/scopes.md | 2 + .../Metadata/OpenMetadata/fields/secretKey.md | 2 + .../fields/secretsManagerCredentials.md | 2 + .../fields/secretsManagerProvider.md | 2 + .../OpenMetadata/fields/securityConfig.md | 2 + .../Metadata/OpenMetadata/fields/sslConfig.md | 2 + .../OpenMetadata/fields/tokenEndpoint.md | 2 + .../Metadata/OpenMetadata/fields/verifySSL.md | 2 + .../Metadata/OpenMetadata/requirements.md | 3 + .../CustomMlModel/fields/connectionOptions.md | 2 + .../CustomMlModel/fields/sourcePythonClass.md | 2 + .../Mlmodel/CustomMlModel/requirements.md | 3 + .../Mlmodel/Mlflow/fields/registryUri.md | 2 + .../Mlmodel/Mlflow/fields/trackingUri.md | 2 + .../en-US/Mlmodel/Mlflow/requirements.md | 3 + .../Mlmodel/SageMaker/fields/assumeRoleArn.md | 2 + .../SageMaker/fields/assumeRoleSessionName.md | 2 + .../fields/assumeRoleSourceIdentity.md | 2 + .../SageMaker/fields/awsAccessKeyId.md | 2 + .../Mlmodel/SageMaker/fields/awsConfig.md | 2 + .../Mlmodel/SageMaker/fields/awsRegion.md | 2 + .../SageMaker/fields/awsSecretAccessKey.md | 2 + .../SageMaker/fields/awsSessionToken.md | 2 + .../Mlmodel/SageMaker/fields/endPointURL.md | 2 + .../Mlmodel/SageMaker/fields/profileName.md | 2 + .../en-US/Mlmodel/SageMaker/requirements.md | 3 + .../en-US/Mlmodel/Sklearn/requirements.md | 3 + .../Objectstore/Azure/fields/accountName.md | 2 + .../Objectstore/Azure/fields/clientId.md | 2 + .../Objectstore/Azure/fields/clientSecret.md | 2 + .../Azure/fields/connectionArguments.md | 2 + .../Azure/fields/connectionOptions.md | 2 + .../Objectstore/Azure/fields/credentials.md | 2 + .../Objectstore/Azure/fields/tenantId.md | 2 + .../en-US/Objectstore/Azure/requirements.md | 3 + .../Gcs/fields/authProviderX509CertUrl.md | 2 + .../en-US/Objectstore/Gcs/fields/authUri.md | 2 + .../Objectstore/Gcs/fields/clientEmail.md | 2 + .../en-US/Objectstore/Gcs/fields/clientId.md | 2 + .../Gcs/fields/clientX509CertUrl.md | 2 + .../Gcs/fields/connectionArguments.md | 2 + .../Gcs/fields/connectionOptions.md | 2 + .../Objectstore/Gcs/fields/credentials.md | 2 + .../en-US/Objectstore/Gcs/fields/gcsConfig.md | 2 + .../Objectstore/Gcs/fields/privateKey.md | 2 + .../Objectstore/Gcs/fields/privateKeyId.md | 2 + .../en-US/Objectstore/Gcs/fields/projectId.md | 2 + .../en-US/Objectstore/Gcs/fields/tokenUri.md | 2 + .../en-US/Objectstore/Gcs/requirements.md | 3 + .../Objectstore/S3/fields/assumeRoleArn.md | 2 + .../S3/fields/assumeRoleSessionName.md | 2 + .../S3/fields/assumeRoleSourceIdentity.md | 2 + .../Objectstore/S3/fields/awsAccessKeyId.md | 2 + .../en-US/Objectstore/S3/fields/awsConfig.md | 2 + .../en-US/Objectstore/S3/fields/awsRegion.md | 2 + .../S3/fields/awsSecretAccessKey.md | 2 + .../Objectstore/S3/fields/awsSessionToken.md | 2 + .../S3/fields/connectionArguments.md | 2 + .../S3/fields/connectionOptions.md | 2 + .../Objectstore/S3/fields/endPointURL.md | 2 + .../Objectstore/S3/fields/profileName.md | 2 + .../en-US/Objectstore/S3/requirements.md | 3 + .../en-US/Pipeline/Airbyte/fields/hostPort.md | 2 + .../en-US/Pipeline/Airbyte/fields/password.md | 2 + .../en-US/Pipeline/Airbyte/fields/username.md | 2 + .../en-US/Pipeline/Airbyte/requirements.md | 3 + .../Airflow/fields/classificationName.md | 2 + .../Pipeline/Airflow/fields/connection.md | 2 + .../Airflow/fields/connectionArguments.md | 2 + .../Airflow/fields/connectionOptions.md | 2 + .../en-US/Pipeline/Airflow/fields/database.md | 2 + .../Pipeline/Airflow/fields/databaseMode.md | 2 + .../Pipeline/Airflow/fields/databaseName.md | 2 + .../Pipeline/Airflow/fields/databaseSchema.md | 2 + .../en-US/Pipeline/Airflow/fields/hostPort.md | 2 + .../Airflow/fields/ingestAllDatabases.md | 2 + .../Pipeline/Airflow/fields/numberOfStatus.md | 2 + .../en-US/Pipeline/Airflow/fields/password.md | 2 + .../en-US/Pipeline/Airflow/fields/scheme.md | 2 + .../en-US/Pipeline/Airflow/fields/sslCA.md | 2 + .../en-US/Pipeline/Airflow/fields/sslCert.md | 2 + .../en-US/Pipeline/Airflow/fields/sslKey.md | 2 + .../en-US/Pipeline/Airflow/fields/sslMode.md | 2 + .../Airflow/fields/supportsDatabase.md | 2 + .../Pipeline/Airflow/fields/uriString.md | 2 + .../en-US/Pipeline/Airflow/fields/username.md | 2 + .../en-US/Pipeline/Airflow/requirements.md | 3 + .../fields/connectionOptions.md | 2 + .../fields/sourcePythonClass.md | 2 + .../Pipeline/CustomPipeline/requirements.md | 3 + .../en-US/Pipeline/Dagster/fields/host.md | 2 + .../en-US/Pipeline/Dagster/fields/token.md | 2 + .../en-US/Pipeline/Dagster/requirements.md | 3 + .../fields/connectionArguments.md | 2 + .../DatabricksPipeline/fields/hostPort.md | 2 + .../DatabricksPipeline/fields/httpPath.md | 2 + .../DatabricksPipeline/fields/token.md | 2 + .../DatabricksPipeline/requirements.md | 3 + .../DomoPipeline/fields/accessToken.md | 2 + .../Pipeline/DomoPipeline/fields/apiHost.md | 2 + .../Pipeline/DomoPipeline/fields/clientId.md | 2 + .../DomoPipeline/fields/sandboxDomain.md | 2 + .../DomoPipeline/fields/secretToken.md | 2 + .../Pipeline/DomoPipeline/requirements.md | 3 + .../en-US/Pipeline/Fivetran/fields/apiKey.md | 2 + .../Pipeline/Fivetran/fields/apiSecret.md | 2 + .../Pipeline/Fivetran/fields/hostPort.md | 2 + .../en-US/Pipeline/Fivetran/fields/limit.md | 2 + .../en-US/Pipeline/Fivetran/requirements.md | 3 + .../GluePipeline/fields/assumeRoleArn.md | 2 + .../fields/assumeRoleSessionName.md | 2 + .../fields/assumeRoleSourceIdentity.md | 2 + .../GluePipeline/fields/awsAccessKeyId.md | 2 + .../Pipeline/GluePipeline/fields/awsConfig.md | 2 + .../Pipeline/GluePipeline/fields/awsRegion.md | 2 + .../GluePipeline/fields/awsSecretAccessKey.md | 2 + .../GluePipeline/fields/awsSessionToken.md | 2 + .../GluePipeline/fields/endPointURL.md | 2 + .../GluePipeline/fields/profileName.md | 2 + .../Pipeline/GluePipeline/requirements.md | 3 + .../en-US/Pipeline/Nifi/fields/hostPort.md | 2 + .../en-US/Pipeline/Nifi/fields/nifiConfig.md | 2 + .../en-US/Pipeline/Nifi/requirements.md | 3 + .../OracleDatabaseSchema/databaseSchema.md | 1 + .../OracleServiceName/oracleServiceName.md | 1 + .../fr-FR/Database/Oracle/fields/hostPort.md | 1 + .../Oracle/fields/instantClientDirectory.md | 1 + .../fr-FR/Database/Oracle/fields/password.md | 1 + .../fr-FR/Database/Oracle/fields/scheme.md | 1 + .../fr-FR/Database/Oracle/fields/username.md | 1 + .../fr-FR/Database/Oracle/requirements.md | 20 + .../Database/Redshift/fields/database.md | 1 + .../Database/Redshift/fields/hostPort.md | 1 + .../Redshift/fields/ingestAllDatabases.md | 1 + .../Database/Redshift/fields/password.md | 1 + .../fr-FR/Database/Redshift/fields/scheme.md | 1 + .../fr-FR/Database/Redshift/fields/sslMode.md | 1 + .../Database/Redshift/fields/username.md | 1 + .../fr-FR/Database/Redshift/requirements.md | 11 + .../AddIngestion/AddIngestion.component.tsx | 2 +- .../AddService/AddService.component.tsx | 410 +++++++++--------- .../AddService/AddService.interface.ts | 1 - .../components/AddService/AddService.test.tsx | 11 +- .../AddService/Steps/ConfigureService.tsx | 17 +- .../AddService/Steps/SelectServiceType.tsx | 169 ++++---- .../Steps/ServiceRequirements.test.tsx | 84 ++++ .../AddService/Steps/ServiceRequirements.tsx | 109 +++++ .../ServiceConfig/ConnectionConfigForm.tsx | 9 +- .../ServiceConfig/ServiceConfig.tsx | 3 + .../Skeleton/Skeleton.interfaces.ts | 2 +- .../common/FormBuilder/FormBuilder.tsx | 44 +- .../ServiceRightPanel.interface.ts | 34 ++ .../ServiceRightPanel.test.tsx | 84 ++++ .../ServiceRightPanel/ServiceRightPanel.tsx | 194 +++++++++ .../common/TestConnection/TestConnection.tsx | 4 +- .../RichTextEditorPreviewer.less | 81 +++- .../components/containers/PageContainerV1.tsx | 3 +- .../components/containers/PageLayoutV1.tsx | 17 +- .../ui/src/constants/Ingestions.constant.ts | 22 - .../ui/src/constants/Services.constant.ts | 55 ++- .../ui/src/constants/regex.constants.ts | 2 + .../src/constants/service-guide.constant.ts | 7 +- .../AddServicePage.component.tsx | 3 - .../EditConnectionFormPage.component.tsx | 204 +++++---- .../resources/ui/src/pages/service/index.tsx | 4 +- .../src/main/resources/ui/src/setupTests.js | 1 + .../ui/src/styles/components/step.less | 5 + .../main/resources/ui/src/styles/spacing.less | 7 + .../resources/ui/src/utils/ServiceUtils.tsx | 2 +- 679 files changed, 3007 insertions(+), 544 deletions(-) create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/doc-images/Database/Mssql/remote-connection.png create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/doc-images/Database/Mysql/image-testing.png create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/CustomDashboard/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/CustomDashboard/fields/sourcePythonClass.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/CustomDashboard/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/accessToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/apiHost.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/clientId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/sandboxDomain.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/secretToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/fields/clientId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/fields/clientSecret.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/accessToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/accessTokenPassword.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/workspaceName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/authorityURI.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/clientId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/clientSecret.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/pagination_entity_per_page.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/scope.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/tenantId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/assumeRoleArn.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/assumeRoleSessionName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/assumeRoleSourceIdentity.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsAccessKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsAccountId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsRegion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsSecretAccessKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsSessionToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/endPointURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/identityType.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/namespace.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/profileName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/apiKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/redashVersion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/classificationName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/connection.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/database.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/databaseName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/databaseSchema.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/ingestAllDatabases.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/provider.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslCA.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslCert.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslMode.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/supportsDatabase.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/apiVersion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/certificatePath.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/env.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/personalAccessTokenName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/personalAccessTokenSecret.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/siteName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/siteUrl.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/sslConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/verifySSL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/assumeRoleArn.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/assumeRoleSessionName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/assumeRoleSourceIdentity.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsAccessKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsRegion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsSecretAccessKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsSessionToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/databaseName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/endpointURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/profileName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/s3StagingDir.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/workgroup.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/database.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/driver.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/supportsDatabase.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/authProviderX509CertUrl.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/authUri.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/clientEmail.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/clientId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/clientX509CertUrl.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/credentials.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/gcsConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/partitionField.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/partitionQuery.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/partitionQueryDuration.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/privateKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/privateKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/projectId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/taxonomyLocation.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/taxonomyProjectID.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/tokenUri.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/type.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/usageLocation.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/databaseName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/databaseSchema.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/duration.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/keyfile.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/secure.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/CustomDatabase/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/CustomDatabase/fields/sourcePythonClass.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/CustomDatabase/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/catalog.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/connectionTimeout.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/databaseSchema.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/httpPath.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/supportsDatabase.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/token.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/accountName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/assumeRoleArn.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/assumeRoleSessionName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/assumeRoleSourceIdentity.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/authProviderX509CertUrl.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/authUri.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsAccessKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsRegion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsSecretAccessKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsSessionToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/bucketName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientEmail.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientSecret.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientX509CertUrl.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/configSource.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/connectionOptions.md rename openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/{Mysql/connections => Datalake}/fields/databaseName.md (100%) create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/endPointURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/gcsConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/prefix.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/privateKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/privateKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/profileName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/projectId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/securityConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/tenantId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/tokenUri.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/type.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/database.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/supportsDatabase.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/appName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/databaseName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/metastoreConnection.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/accessToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/apiHost.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/clientId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/databaseName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/sandboxDomain.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/secretToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/databaseName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/assumeRoleArn.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/assumeRoleSessionName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/assumeRoleSourceIdentity.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsAccessKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsRegion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsSecretAccessKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsSessionToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/databaseName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/endPointURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/profileName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/assumeRoleArn.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/assumeRoleSessionName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/assumeRoleSourceIdentity.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsAccessKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsRegion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsSecretAccessKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsSessionToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/endpointURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/profileName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/storageServiceName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/auth.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/authOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/databaseName.md rename openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/{Mysql/connections => Hive}/fields/databaseSchema.md (100%) create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/kerberosServiceName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/databaseName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/databaseSchema.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/database.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/supportsDatabase.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/uriString.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/requirements.md delete mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/databaseName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/databaseSchema.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/password.md rename openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/{connections => }/fields/scheme.md (100%) rename openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/{connections => }/fields/sslCA.md (100%) rename openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/{connections => }/fields/sslCert.md (100%) rename openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/{connections => }/fields/sslKey.md (100%) create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/databaseSchema.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/instantClientDirectory.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/oracleConnectionType.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/oracleServiceName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/database.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/pinotControllerHost.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/classificationName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/database.md rename openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/{Mysql/connections => Postgres}/fields/hostPort.md (55%) create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/ingestAllDatabases.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/sslMode.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/supportsDatabase.md rename openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/{Mysql/connections => Postgres}/fields/username.md (61%) create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/catalog.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/databaseSchema.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/supportsDatabase.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/database.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/ingestAllDatabases.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/sslMode.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/supportsDatabase.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/database.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/databaseMode.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/databaseName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/securityToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/sobjectName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/databaseName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/databaseSchema.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/account.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/database.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/privateKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/queryTag.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/role.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/schme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/snowflakePrivatekeyPassphrase.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/supportsDatabase.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/warehouse.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/catalog.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/databaseSchema.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/params.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/proxies.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/supportsDatabase.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/database.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/supportsDatabase.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/CustomMessaging/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/CustomMessaging/fields/sourcePythonClass.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/CustomMessaging/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/basicAuthUserInfo.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/bootstrapServers.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/consumerConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/saslMechanism.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/saslPassword.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/saslUsername.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/schemaRegistryConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/schemaRegistryURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/assumeRoleArn.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/assumeRoleSessionName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/assumeRoleSourceIdentity.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsAccessKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsRegion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsSecretAccessKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsSessionToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/endPointURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/profileName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Pulsar/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/basicAuthUserInfo.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/bootstrapServers.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/consumerConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/saslMechanism.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/saslPassword.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/saslUsername.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/schemaRegistryConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/schemaRegistryURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/encrypted.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/maxConnectionLifeTime.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/validateSSL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/databaseServiceName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/entity_type.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/messagingServiceName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/apiVersion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/assumeRoleArn.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/assumeRoleSessionName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/assumeRoleSourceIdentity.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/audience.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/authProvider.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/authority.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsAccessKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsRegion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsSecretAccessKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsSessionToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/certificatePath.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/clientId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/clientSecret.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/clusterName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/config.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/domain.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/elasticsSearch.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/email.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/enableVersionValidation.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/endPointURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/extraHeaders.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/forceEntityOverwriting.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeDashboards.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeDatabaseServices.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeGlossaryTerms.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeMessagingServices.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeMlModels.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includePipelineServices.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includePipelines.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includePolicy.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTables.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTags.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTeams.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTopics.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeUsers.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/jwtToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/limitRecords.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/orgURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/privateKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/profileName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/scopes.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/secretKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/secretsManagerCredentials.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/secretsManagerProvider.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/securityConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/sslConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/tokenEndpoint.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/verifySSL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/CustomMlModel/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/CustomMlModel/fields/sourcePythonClass.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/CustomMlModel/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Mlflow/fields/registryUri.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Mlflow/fields/trackingUri.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Mlflow/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/assumeRoleArn.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/assumeRoleSessionName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/assumeRoleSourceIdentity.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsAccessKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsRegion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsSecretAccessKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsSessionToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/endPointURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/profileName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Sklearn/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/accountName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/clientId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/clientSecret.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/credentials.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/tenantId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/authProviderX509CertUrl.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/authUri.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/clientEmail.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/clientId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/clientX509CertUrl.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/credentials.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/gcsConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/privateKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/privateKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/projectId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/tokenUri.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/assumeRoleArn.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/assumeRoleSessionName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/assumeRoleSourceIdentity.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsAccessKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsRegion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsSecretAccessKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsSessionToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/endPointURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/profileName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/classificationName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/connection.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/database.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/databaseMode.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/databaseName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/databaseSchema.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/ingestAllDatabases.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/numberOfStatus.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslCA.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslCert.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslMode.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/supportsDatabase.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/uriString.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/CustomPipeline/fields/connectionOptions.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/CustomPipeline/fields/sourcePythonClass.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/CustomPipeline/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Dagster/fields/host.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Dagster/fields/token.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Dagster/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/connectionArguments.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/httpPath.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/token.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/accessToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/apiHost.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/clientId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/sandboxDomain.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/secretToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/apiKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/apiSecret.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/limit.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/assumeRoleArn.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/assumeRoleSessionName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/assumeRoleSourceIdentity.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsAccessKeyId.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsRegion.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsSecretAccessKey.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsSessionToken.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/endPointURL.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/profileName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Nifi/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Nifi/fields/nifiConfig.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Nifi/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/OracleDatabaseSchema/databaseSchema.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/OracleServiceName/oracleServiceName.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/instantClientDirectory.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/database.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/hostPort.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/ingestAllDatabases.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/password.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/scheme.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/sslMode.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/username.md create mode 100644 openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/requirements.md create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/ServiceRequirements.test.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/ServiceRequirements.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/common/ServiceRightPanel/ServiceRightPanel.interface.ts create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/common/ServiceRightPanel/ServiceRightPanel.test.tsx create mode 100644 openmetadata-ui/src/main/resources/ui/src/components/common/ServiceRightPanel/ServiceRightPanel.tsx diff --git a/openmetadata-docs/content/connectors/database/datalake/index.md b/openmetadata-docs/content/connectors/database/datalake/index.md index 891ae5d4136..cbfbc56c56c 100644 --- a/openmetadata-docs/content/connectors/database/datalake/index.md +++ b/openmetadata-docs/content/connectors/database/datalake/index.md @@ -59,7 +59,7 @@ custom Airflow plugins to handle the workflow deployment. -Datalake connector supports extracting metadata from file types `JSON`, `CSV`, `TSV` & `Parquet`. +Datalake connector supports extracting metadata from file types `JSON`, `CSV`, `TSV`, `Parquet` & `Avro`. diff --git a/openmetadata-spec/src/main/resources/json/schema/entity/services/connections/database/hiveConnection.json b/openmetadata-spec/src/main/resources/json/schema/entity/services/connections/database/hiveConnection.json index 56eb729ec9e..d1f470db465 100644 --- a/openmetadata-spec/src/main/resources/json/schema/entity/services/connections/database/hiveConnection.json +++ b/openmetadata-spec/src/main/resources/json/schema/entity/services/connections/database/hiveConnection.json @@ -95,4 +95,4 @@ }, "additionalProperties": false, "required": ["hostPort"] -} +} \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/cypress/common/common.js b/openmetadata-ui/src/main/resources/ui/cypress/common/common.js index 12534a41036..030d59470ea 100644 --- a/openmetadata-ui/src/main/resources/ui/cypress/common/common.js +++ b/openmetadata-ui/src/main/resources/ui/cypress/common/common.js @@ -151,7 +151,12 @@ export const testServiceCreationAndIngestion = ( cy.get(`[data-testid="${serviceType}"]`).should('exist').click(); cy.get('[data-testid="next-button"]').should('exist').click(); - // Enter service name in step 2 + // Should show requirements in step 2 + + cy.get('[data-testid="service-requirements"]').should('exist'); + cy.get('[data-testid="next-button"]').should('exist').click(); + + // Enter service name in step 3 cy.get('[data-testid="service-name"]').should('exist').type(serviceName); interceptURL( 'GET', @@ -160,7 +165,8 @@ export const testServiceCreationAndIngestion = ( ); cy.get('[data-testid="next-button"]').should('exist').click(); verifyResponseStatusCode('@getIngestionPipelineStatus', 200); - // Connection Details in step 3 + + // Connection Details in step 4 cy.get('[data-testid="add-new-service-container"]') .parent() .parent() @@ -212,6 +218,11 @@ export const testServiceCreationAndIngestion = ( '/api/v1/services/ingestionPipelines/status', 'getIngestionPipelineStatus' ); + interceptURL( + 'POST', + '/api/v1/services/ingestionPipelines/deploy/*', + 'deployPipeline' + ); cy.get('[data-testid="submit-btn"]').should('exist').click(); verifyResponseStatusCode('@getIngestionPipelineStatus', 200); // check success @@ -242,6 +253,8 @@ export const testServiceCreationAndIngestion = ( scheduleIngestion(); + verifyResponseStatusCode('@deployPipeline', 200); + cy.contains(`${serviceName}_metadata`).should('be.visible'); // On the Right panel cy.contains('Metadata Ingestion Added & Deployed Successfully').should( @@ -876,10 +889,10 @@ export const updateOwner = () => { }; export const mySqlConnectionInput = () => { - cy.get('#root_username').type(Cypress.env('mysqlUsername')); - cy.get('#root_password').type(Cypress.env('mysqlPassword')); - cy.get('#root_hostPort').type(Cypress.env('mysqlHostPort')); - cy.get('#root_databaseSchema').type(Cypress.env('mysqlDatabaseSchema')); + cy.get('#root\\/username').type(Cypress.env('mysqlUsername')); + cy.get('#root\\/password').type(Cypress.env('mysqlPassword')); + cy.get('#root\\/hostPort').type(Cypress.env('mysqlHostPort')); + cy.get('#root\\/databaseSchema').type(Cypress.env('mysqlDatabaseSchema')); }; export const login = (username, password) => { diff --git a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/bigquery.spec.js b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/bigquery.spec.js index a565e566b73..adac131073d 100644 --- a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/bigquery.spec.js +++ b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/bigquery.spec.js @@ -36,23 +36,23 @@ describe('BigQuery Ingestion', () => { goToAddNewServicePage(SERVICE_TYPE.Database); const connectionInput = () => { const clientEmail = Cypress.env('bigqueryClientEmail'); - cy.get('.form-group > #root_type') + cy.get('.form-group > #root\\/type') .scrollIntoView() .type('service_account'); - cy.get(':nth-child(3) > .form-group > #root_projectId') + cy.get(':nth-child(3) > .form-group > #root\\/projectId') .scrollIntoView() .type(Cypress.env('bigqueryProjectId')); - cy.get('#root_privateKeyId') + cy.get('#root\\/privateKeyId') .scrollIntoView() .type(Cypress.env('bigqueryPrivateKeyId')); - cy.get('#root_privateKey') + cy.get('#root\\/privateKey') .scrollIntoView() .type(Cypress.env('bigqueryPrivateKey')); - cy.get('#root_clientEmail').scrollIntoView().type(clientEmail); - cy.get('#root_clientId') + cy.get('#root\\/clientEmail').scrollIntoView().type(clientEmail); + cy.get('#root\\/clientId') .scrollIntoView() .type(Cypress.env('bigqueryClientId')); - cy.get('#root_clientX509CertUrl') + cy.get('#root\\/clientX509CertUrl') .scrollIntoView() .type( `https://www.googleapis.com/robot/v1/metadata/x509/${encodeURIComponent( diff --git a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/glue.spec.js b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/glue.spec.js index 87fadb98cfb..f7e3d41f3c9 100644 --- a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/glue.spec.js +++ b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/glue.spec.js @@ -35,19 +35,19 @@ describe('Glue Ingestion', () => { it('add and ingest data', () => { goToAddNewServicePage(SERVICE_TYPE.Database); const connectionInput = () => { - cy.get('#root_awsConfig_awsAccessKeyId') + cy.get('#root\\/awsConfig\\/awsAccessKeyId') .scrollIntoView() .type(Cypress.env('glueAwsAccessKeyId')); - cy.get('#root_awsConfig_awsSecretAccessKey') + cy.get('#root\\/awsConfig\\/awsSecretAccessKey') .scrollIntoView() .type(Cypress.env('glueAwsSecretAccessKey')); - cy.get('#root_awsConfig_awsRegion') + cy.get('#root\\/awsConfig\\/awsRegion') .scrollIntoView() .type(Cypress.env('glueAwsRegion')); - cy.get('#root_awsConfig_endPointURL') + cy.get('#root\\/awsConfig\\/endPointURL') .scrollIntoView() .type(Cypress.env('glueEndPointURL')); - cy.get('#root_storageServiceName') + cy.get('#root\\/storageServiceName') .scrollIntoView() .type(Cypress.env('glueStorageServiceName')); }; diff --git a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/kafka.spec.js b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/kafka.spec.js index 02a7ab85ddf..69ecaa083eb 100644 --- a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/kafka.spec.js +++ b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/kafka.spec.js @@ -41,10 +41,10 @@ describe('Kafka Ingestion', () => { .click(); const connectionInput = () => { - cy.get('#root_bootstrapServers').type( + cy.get('#root\\/bootstrapServers').type( Cypress.env('kafkaBootstrapServers') ); - cy.get('#root_schemaRegistryURL').type( + cy.get('#root\\/schemaRegistryURL').type( Cypress.env('kafkaSchemaRegistryUrl') ); }; diff --git a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/metabase.spec.js b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/metabase.spec.js index 6fba4dfcc53..78862e3ca7d 100644 --- a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/metabase.spec.js +++ b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/metabase.spec.js @@ -41,11 +41,11 @@ describe('Metabase Ingestion', () => { .click(); const connectionInput = () => { - cy.get('#root_username').type(Cypress.env('metabaseUsername')); - cy.get('#root_password') + cy.get('#root\\/username').type(Cypress.env('metabaseUsername')); + cy.get('#root\\/password') .scrollIntoView() .type(Cypress.env('metabasePassword')); - cy.get('#root_hostPort') + cy.get('#root\\/hostPort') .scrollIntoView() .type(Cypress.env('metabaseHostPort')); }; diff --git a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/postgres.spec.js b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/postgres.spec.js index e1d6ecf58ad..e703819eebf 100644 --- a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/postgres.spec.js +++ b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/postgres.spec.js @@ -48,16 +48,16 @@ describe('Postgres Ingestion', () => { it('add and ingest data', () => { goToAddNewServicePage(SERVICE_TYPE.Database); const connectionInput = () => { - cy.get('[id="root_username"]') + cy.get('#root\\/username') .scrollIntoView() .type(Cypress.env('postgresUsername')); - cy.get('[name="root_password"]') + cy.get('#root\\/password') .scrollIntoView() .type(Cypress.env('postgresPassword')); - cy.get('[id="root_hostPort"]') + cy.get('#root\\/hostPort') .scrollIntoView() .type(Cypress.env('postgresHostPort')); - cy.get('#root_database') + cy.get('#root\\/database') .scrollIntoView() .type(Cypress.env('postgresDatabase')); }; diff --git a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/redshiftWithDBT.spec.js b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/redshiftWithDBT.spec.js index a4c7fdd7a7e..54647328177 100644 --- a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/redshiftWithDBT.spec.js +++ b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/redshiftWithDBT.spec.js @@ -39,14 +39,14 @@ describe('RedShift Ingestion', () => { it('add and ingest data', () => { goToAddNewServicePage(SERVICE_TYPE.Database); const connectionInput = () => { - cy.get('#root_username').type(Cypress.env('redshiftUsername')); - cy.get('#root_password') + cy.get('#root\\/username').type(Cypress.env('redshiftUsername')); + cy.get('#root\\/password') .scrollIntoView() .type(Cypress.env('redshiftPassword')); - cy.get('#root_hostPort') + cy.get('#root\\/hostPort') .scrollIntoView() .type(Cypress.env('redshiftHost')); - cy.get('#root_database') + cy.get('#root\\/database') .scrollIntoView() .type(Cypress.env('redshiftDatabase')); }; diff --git a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/snowflake.spec.js b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/snowflake.spec.js index 4c737559219..48d8a22832f 100644 --- a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/snowflake.spec.js +++ b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/snowflake.spec.js @@ -35,11 +35,11 @@ describe('Snowflake Ingestion', () => { it('add and ingest data', { defaultCommandTimeout: 8000 }, () => { goToAddNewServicePage(SERVICE_TYPE.Database); const connectionInput = () => { - cy.get('#root_username').type(Cypress.env('snowflakeUsername')); - cy.get('#root_password').type(Cypress.env('snowflakePassword')); - cy.get('#root_account').type(Cypress.env('snowflakeAccount')); - cy.get('#root_database').type(Cypress.env('snowflakeDatabase')); - cy.get('#root_warehouse').type(Cypress.env('snowflakeWarehouse')); + cy.get('#root\\/username').type(Cypress.env('snowflakeUsername')); + cy.get('#root\\/password').type(Cypress.env('snowflakePassword')); + cy.get('#root\\/account').type(Cypress.env('snowflakeAccount')); + cy.get('#root\\/database').type(Cypress.env('snowflakeDatabase')); + cy.get('#root\\/warehouse').type(Cypress.env('snowflakeWarehouse')); }; const addIngestionInput = () => { diff --git a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/superset.spec.js b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/superset.spec.js index d5d7fd7864a..6be1eb414e9 100644 --- a/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/superset.spec.js +++ b/openmetadata-ui/src/main/resources/ui/cypress/e2e/AddNewService/superset.spec.js @@ -41,11 +41,11 @@ describe('Superset Ingestion', () => { .click(); const connectionInput = () => { - cy.get('#root_username').type(Cypress.env('supersetUsername')); - cy.get('#root_password') + cy.get('#root\\/username').type(Cypress.env('supersetUsername')); + cy.get('#root\\/password') .scrollIntoView() .type(Cypress.env('supersetPassword')); - cy.get('#root_hostPort') + cy.get('#root\\/hostPort') .scrollIntoView() .focus() .clear() diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/doc-images/Database/Mssql/remote-connection.png b/openmetadata-ui/src/main/resources/ui/public/locales/doc-images/Database/Mssql/remote-connection.png new file mode 100644 index 0000000000000000000000000000000000000000..35c27cabe615a9f9dca0c67f594852582d093b3a GIT binary patch literal 13620 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 literal 0 HcmV?d00001 diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/doc-images/Database/Mysql/image-testing.png b/openmetadata-ui/src/main/resources/ui/public/locales/doc-images/Database/Mysql/image-testing.png new file mode 100644 index 0000000000000000000000000000000000000000..39594ff4a0a1d6f111524d71c344c7011da505b1 GIT binary patch literal 518810 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�m03A20E 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%0AS=VeIU+l>N2##Y2Kt9js@0JTh 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�z|Ro@ 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�JX~nJTHMYg0mai%+pJ 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

To execute metadata extraction AWS account should have enough access to fetch required data. The Bucket Policy in AWS requires at least these permissions:

+ +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "s3:GetObject", + "s3:ListBucket" + ], + "Resource": [ + "arn:aws:s3:::", + "arn:aws:s3:::/*" + ] + } + ] +} +``` + + +**GCP Permissions / Roles** + + +

To execute metadata extraction GCP account should have enough access to fetch required data. The Bucket Policy requires at least these permissions:

+ +- **storage.buckets.get** +- **storage.buckets.list** +- **storage.objects.get** +- **storage.objects.list** + + +`storage.objects.list`: This permission is needed to list the objects in a bucket. + +`storage.objects.get`: This permission is needed to read the contents of an object in a bucket. + +`storage.buckets.get`: This permission is needed to get information about a bucket, such as its location and storage class. + +`storage.buckets.list`: This permission is needed to list the buckets in a project. diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/database.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/database.md new file mode 100644 index 00000000000..e3b72cc967c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/database.md @@ -0,0 +1,2 @@ +Database of the data source. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/hostPort.md new file mode 100644 index 00000000000..82285017fcf --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the DB2 service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/password.md new file mode 100644 index 00000000000..5dcb6d5d281 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to DB2. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/supportsDatabase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/supportsDatabase.md new file mode 100644 index 00000000000..ed4c5c40fa6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/supportsDatabase.md @@ -0,0 +1,2 @@ +The source service supports the database concept in its hierarchy + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/username.md new file mode 100644 index 00000000000..79a455e239a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to DB2. This user should have privileges to read all the metadata in DB2. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/requirements.md new file mode 100644 index 00000000000..66d613a6ba8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Db2/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/db2). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/appName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/appName.md new file mode 100644 index 00000000000..6f0f7302ea3 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/appName.md @@ -0,0 +1,2 @@ +pySpark App Name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/connectionArguments.md new file mode 100644 index 00000000000..d7aa2333897 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Key-Value pairs that will be used to add configs to the SparkSession. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/databaseName.md new file mode 100644 index 00000000000..0719890bb20 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/databaseName.md @@ -0,0 +1,2 @@ +Optional name to give to the database in OpenMetadata. If left blank, we will use default as the database name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/metastoreConnection.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/metastoreConnection.md new file mode 100644 index 00000000000..ae068dc7ad3 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/fields/metastoreConnection.md @@ -0,0 +1,2 @@ +Hive metastore service, local file path or metastore db. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/requirements.md new file mode 100644 index 00000000000..fab8010475e --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DeltaLake/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/deltalake). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/accessToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/accessToken.md new file mode 100644 index 00000000000..32832470d1c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/accessToken.md @@ -0,0 +1,2 @@ +Access token to connect to DOMO + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/apiHost.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/apiHost.md new file mode 100644 index 00000000000..0871df7f725 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/apiHost.md @@ -0,0 +1,2 @@ +API Host to connect to DOMO instance + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/clientId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/clientId.md new file mode 100644 index 00000000000..d19396d367c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/clientId.md @@ -0,0 +1,2 @@ +Client ID for DOMO + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/databaseName.md new file mode 100644 index 00000000000..0719890bb20 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/databaseName.md @@ -0,0 +1,2 @@ +Optional name to give to the database in OpenMetadata. If left blank, we will use default as the database name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/sandboxDomain.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/sandboxDomain.md new file mode 100644 index 00000000000..a11225d8f74 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/sandboxDomain.md @@ -0,0 +1,2 @@ +Connect to Sandbox Domain + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/secretToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/secretToken.md new file mode 100644 index 00000000000..9a4a5340024 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/fields/secretToken.md @@ -0,0 +1,2 @@ +Secret Token to connect DOMO + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/requirements.md new file mode 100644 index 00000000000..9f11f846b07 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DomoDatabase/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/domodatabase). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/databaseName.md new file mode 100644 index 00000000000..0719890bb20 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/databaseName.md @@ -0,0 +1,2 @@ +Optional name to give to the database in OpenMetadata. If left blank, we will use default as the database name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/hostPort.md new file mode 100644 index 00000000000..de56c299977 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the Druid service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/password.md new file mode 100644 index 00000000000..dc45af9629b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to Druid. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/username.md new file mode 100644 index 00000000000..ef5096af242 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to Druid. This user should have privileges to read all the metadata in Druid. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/requirements.md new file mode 100644 index 00000000000..d10c93c0d61 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Druid/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/druid). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/assumeRoleArn.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/assumeRoleArn.md new file mode 100644 index 00000000000..d0fe4aed2a9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/assumeRoleArn.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/assumeRoleSessionName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/assumeRoleSessionName.md new file mode 100644 index 00000000000..f0fd71c5548 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/assumeRoleSessionName.md @@ -0,0 +1,2 @@ +An identifier for the assumed role session. Use the role session name to uniquely identify a session when the same role is assumed by different principals or for different reasons. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/assumeRoleSourceIdentity.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/assumeRoleSourceIdentity.md new file mode 100644 index 00000000000..274b38a9a68 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/assumeRoleSourceIdentity.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Optional Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsAccessKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsAccessKeyId.md new file mode 100644 index 00000000000..e8bf7cae5ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsAccessKeyId.md @@ -0,0 +1,2 @@ +AWS Access key ID. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsConfig.md new file mode 100644 index 00000000000..64aaae003f0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsConfig.md @@ -0,0 +1,2 @@ +AWS credentials configs. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsRegion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsRegion.md new file mode 100644 index 00000000000..72061900168 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsRegion.md @@ -0,0 +1,2 @@ +AWS Region + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsSecretAccessKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsSecretAccessKey.md new file mode 100644 index 00000000000..586de7f82a1 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsSecretAccessKey.md @@ -0,0 +1,2 @@ +AWS Secret Access Key. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsSessionToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsSessionToken.md new file mode 100644 index 00000000000..52a9938da4a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/awsSessionToken.md @@ -0,0 +1,2 @@ +AWS Session Token. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/databaseName.md new file mode 100644 index 00000000000..0719890bb20 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/databaseName.md @@ -0,0 +1,2 @@ +Optional name to give to the database in OpenMetadata. If left blank, we will use default as the database name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/endPointURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/endPointURL.md new file mode 100644 index 00000000000..d992901b426 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/endPointURL.md @@ -0,0 +1,2 @@ +EndPoint URL for the AWS + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/profileName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/profileName.md new file mode 100644 index 00000000000..aa7f976a9dd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/fields/profileName.md @@ -0,0 +1,2 @@ +The name of a profile to use with the boto session. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/requirements.md new file mode 100644 index 00000000000..0c39a17cd3d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/DynamoDB/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/dynamodb). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/assumeRoleArn.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/assumeRoleArn.md new file mode 100644 index 00000000000..caa2cffafb2 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/assumeRoleArn.md @@ -0,0 +1,9 @@ +Typically, you use `AssumeRole` within your account or for cross-account access. In this field you'll set the +`ARN` (Amazon Resource Name) of the policy of the other account. + +A user who wants to access a role in a different account must also have permissions that are delegated from the account +administrator. The administrator must attach a policy that allows the user to call `AssumeRole` for the `ARN` of the role in the other account. + +This is a required field if you'd like to `AssumeRole`. + +Find more information on [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/assumeRoleSessionName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/assumeRoleSessionName.md new file mode 100644 index 00000000000..13cc6b1dc84 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/assumeRoleSessionName.md @@ -0,0 +1,6 @@ +An identifier for the assumed role session. Use the role session name to uniquely identify a session when the same role +is assumed by different principals or for different reasons. + +By default, we'll use the name `OpenMetadataSession`. + +Find more information about the [Role Session Name](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#:~:text=An%20identifier%20for%20the%20assumed%20role%20session.). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/assumeRoleSourceIdentity.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/assumeRoleSourceIdentity.md new file mode 100644 index 00000000000..36a4b75d716 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/assumeRoleSourceIdentity.md @@ -0,0 +1,4 @@ +The source identity specified by the principal that is calling the `AssumeRole` operation. You can use source identity +information in AWS CloudTrail logs to determine who took actions with a role. + +Find more information about [Source Identity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#:~:text=Required%3A%20No-,SourceIdentity,-The%20source%20identity). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsAccessKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsAccessKeyId.md new file mode 100644 index 00000000000..01434df88ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsAccessKeyId.md @@ -0,0 +1,11 @@ +When you interact with AWS, you specify your AWS security credentials to verify who you are and whether you have +permission to access the resources that you are requesting. AWS uses the security credentials to authenticate and +authorize your requests ([docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html)). + +Access keys consist of two parts: +1. An access key ID (for example, `AKIAIOSFODNN7EXAMPLE`), +2. And a secret access key (for example, `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`). + +You must use both the access key ID and secret access key together to authenticate your requests. + +You can find further information on how to manage your access keys [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsConfig.md new file mode 100644 index 00000000000..64aaae003f0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsConfig.md @@ -0,0 +1,2 @@ +AWS credentials configs. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsRegion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsRegion.md new file mode 100644 index 00000000000..da00669c4d6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsRegion.md @@ -0,0 +1,7 @@ +Each AWS Region is a separate geographic area in which AWS clusters data centers ([docs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html)). + +As AWS can have instances in multiple regions, we need to know the region the service you want reach belongs to. + +Note that the AWS Region is the only required parameter when configuring a connection. When connecting to the +services programmatically, there are different ways in which we can extract and use the rest of AWS configurations. +You can find further information about configuring your credentials [here](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#configuring-credentials). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsSecretAccessKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsSecretAccessKey.md new file mode 100644 index 00000000000..01434df88ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsSecretAccessKey.md @@ -0,0 +1,11 @@ +When you interact with AWS, you specify your AWS security credentials to verify who you are and whether you have +permission to access the resources that you are requesting. AWS uses the security credentials to authenticate and +authorize your requests ([docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html)). + +Access keys consist of two parts: +1. An access key ID (for example, `AKIAIOSFODNN7EXAMPLE`), +2. And a secret access key (for example, `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`). + +You must use both the access key ID and secret access key together to authenticate your requests. + +You can find further information on how to manage your access keys [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsSessionToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsSessionToken.md new file mode 100644 index 00000000000..c0fadf1812e --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/awsSessionToken.md @@ -0,0 +1,4 @@ +If you are using temporary credentials to access your services, you will need to inform the AWS Access Key ID +and AWS Secrets Access Key. Also, these will include an AWS Session Token. + +You can find more information on [Using temporary credentials with AWS resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/endpointURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/endpointURL.md new file mode 100644 index 00000000000..ba59c13dd49 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/endpointURL.md @@ -0,0 +1,5 @@ +To connect programmatically to an AWS service, you use an endpoint. An *endpoint* is the URL of the +entry point for an AWS web service. The AWS SDKs and the AWS Command Line Interface (AWS CLI) automatically use the +default endpoint for each service in an AWS Region. But you can specify an alternate endpoint for your API requests. + +Find more information on [AWS service endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/profileName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/profileName.md new file mode 100644 index 00000000000..7798549dfea --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/profileName.md @@ -0,0 +1,7 @@ +A named profile is a collection of settings and credentials that you can apply to a AWS CLI command. +When you specify a profile to run a command, the settings and credentials are used to run that command. +Multiple named profiles can be stored in the config and credentials files. + +You can inform this field if you'd like to use a profile other than `default`. + +Find here more information about [Named profiles for the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/storageServiceName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/storageServiceName.md new file mode 100644 index 00000000000..3de3b8b54b6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/fields/storageServiceName.md @@ -0,0 +1,4 @@ +Glue represents external tables living in a Storage Service in AWS. + +This parameter assigns a name to the Storage Service that will also be ingested in OpenMetadata when +extracting the tables' locations. diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/requirements.md new file mode 100644 index 00000000000..eb4b42ad2ba --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Glue/requirements.md @@ -0,0 +1,7 @@ +# Requirements + +The Glue connector ingests metadata through AWS [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html) Client. + +The user must have `glue:GetDatabases` and `glue:GetTables` permissions for the ingestion to run successfully. + +You can find further information on the Glue connector in the [docs](https://docs.open-metadata.org/connectors/database/glue). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/auth.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/auth.md new file mode 100644 index 00000000000..b952c9f7c0f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/auth.md @@ -0,0 +1 @@ + The auth parameter specifies the authentication method to use when connecting to the Hive server. Possible values are 'LDAP', 'NONE', 'CUSTOM', or 'KERBEROS'. If you are using Kerberos authentication, you should set auth to 'KERBEROS'. If you are using custom authentication, you should set auth to 'CUSTOM' and provide additional options in the authOptions parameter. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/authOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/authOptions.md new file mode 100644 index 00000000000..21fa2c60421 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/authOptions.md @@ -0,0 +1 @@ +Authentication options to pass to Hive connector. These options are based on SQLAlchemy. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/connectionOptions.md new file mode 100644 index 00000000000..414431c0eaa --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. The connectionOptions parameter is specific to the connection method being used. For example, if you are using SSL encryption, you might set the connectionOptions parameter to {'ssl': 'true', 'sslTrustStore': '/path/to/truststore'}. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/databaseName.md new file mode 100644 index 00000000000..9dedef0257c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/databaseName.md @@ -0,0 +1 @@ +Optional name to give to the database in OpenMetadata. If left blank, we will use default as the database name. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/databaseSchema.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/databaseSchema.md similarity index 100% rename from openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/databaseSchema.md rename to openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/databaseSchema.md diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/hostPort.md new file mode 100644 index 00000000000..45c73d5001d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/hostPort.md @@ -0,0 +1 @@ +The hostPort parameter specifies the host and port of the Hive server. This should be specified as a string in the format 'hostname:port'. For example, you might set the hostPort parameter to `myhivehost:10000`. diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/kerberosServiceName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/kerberosServiceName.md new file mode 100644 index 00000000000..abff9903b8d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/kerberosServiceName.md @@ -0,0 +1 @@ +The kerberosServiceName parameter specifies the Kerberos service name to use for authentication. This should only be specified if using Kerberos authentication. The default value is 'hive'. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/password.md new file mode 100644 index 00000000000..170512b3704 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/password.md @@ -0,0 +1 @@ +Password to connect to Hive. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/scheme.md new file mode 100644 index 00000000000..9d743326e41 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/scheme.md @@ -0,0 +1 @@ +SQLAlchemy driver scheme options. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/username.md new file mode 100644 index 00000000000..3f60b73ca89 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/fields/username.md @@ -0,0 +1 @@ +Username to connect to Hive. This user should have privileges to read all the metadata in Hive. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/requirements.md new file mode 100644 index 00000000000..8aae34baf3d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Hive/requirements.md @@ -0,0 +1,4 @@ +# Requirements + +To run the Ingestion via the UI you'll need to use the OpenMetadata Ingestion Container, which comes shipped with +custom Airflow plugins to handle the workflow deployment. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/databaseName.md new file mode 100644 index 00000000000..0719890bb20 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/databaseName.md @@ -0,0 +1,2 @@ +Optional name to give to the database in OpenMetadata. If left blank, we will use default as the database name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/databaseSchema.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/databaseSchema.md new file mode 100644 index 00000000000..6999243aac8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/databaseSchema.md @@ -0,0 +1,2 @@ +databaseSchema of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single databaseSchema. When left blank, OpenMetadata Ingestion attempts to scan all the databaseSchema. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/hostPort.md new file mode 100644 index 00000000000..ecdb7e5ac82 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the MariaDB service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/password.md new file mode 100644 index 00000000000..005be6dccd7 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to MariaDB. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/username.md new file mode 100644 index 00000000000..6eb2e773dcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to MariaDB. This user should have privileges to read all the metadata in MariaDB. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/requirements.md new file mode 100644 index 00000000000..fb20fac7f28 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/MariaDB/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/mariadb). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/database.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/database.md new file mode 100644 index 00000000000..e8121a500ec --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/database.md @@ -0,0 +1 @@ +Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank, OpenMetadata Ingestion attempts to scan all the databases. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/hostPort.md new file mode 100644 index 00000000000..577d8531155 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the MSSQL service. +Example: `localhost:1433` \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/password.md new file mode 100644 index 00000000000..a2b2cccf375 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/password.md @@ -0,0 +1 @@ +Password to connect to MSSQL. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/scheme.md new file mode 100644 index 00000000000..9d743326e41 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/scheme.md @@ -0,0 +1 @@ +SQLAlchemy driver scheme options. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/supportsDatabase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/supportsDatabase.md new file mode 100644 index 00000000000..ed4c5c40fa6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/supportsDatabase.md @@ -0,0 +1,2 @@ +The source service supports the database concept in its hierarchy + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/uriString.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/uriString.md new file mode 100644 index 00000000000..b6db810637a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/uriString.md @@ -0,0 +1 @@ +Connection URI In case of pyodbc \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/username.md new file mode 100644 index 00000000000..1fb99862b5f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/fields/username.md @@ -0,0 +1 @@ +Username to connect to MSSQL. This user should have privileges to read all the metadata in MsSQL. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/requirements.md new file mode 100644 index 00000000000..d7bf1d728a0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mssql/requirements.md @@ -0,0 +1,36 @@ +# Requirements + +To run the Ingestion via the UI you'll need to use the OpenMetadata Ingestion Container, which comes shipped with +custom Airflow plugins to handle the workflow deployment. + +### For Remote Connection + +#### 1. SQL Server running + +Make sure the SQL server that you are trying to connect is in running state. + +#### 2. Allow remote connection on MSSMS(Microsoft SQL Server Management Studio) + +This step allow the sql server to accept remote connection request. + +![remote-connection](/doc-images/Database/Mssql/remote-connection.png) + +#### 3. Configure Windows Firewall + +If you are using SQL server on windows, you must configure the firewall on the computer running SQL Server to allow access. + +- Step 1: On the Start menu, select Run, type WF.msc, and then select OK. + +Step 2: In the Windows Firewall with Advanced Security, in the left pane, right-click Inbound Rules, and then select New Rule in the action pane. + +Step 3: In the Rule Type dialog box, select Port, and then select Next. + +Step 4: In the Protocol and Ports dialog box, select TCP. Select Specific local ports, and then type the port number of the instance of the Database Engine, such as 1433 for the default instance. Select Next. + +Step 5: In the Action dialog box, select Allow the connection, and then select Next. + +Step 6: In the Profile dialog box, select any profiles that describe the computer connection environment when you want to connect to the Database Engine, and then select Next. + +Step 7: In the Name dialog box, type a name and description for this rule, and then select Finish. + +For details step please refer the this [link](https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/configure-a-windows-firewall-for-database-engine-access?view=sql-server-ver15). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/password.md deleted file mode 100644 index e05af716a82..00000000000 --- a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/password.md +++ /dev/null @@ -1,2 +0,0 @@ -Password to connect to Postgres. -Should be strong and contain `@$#[0-9][a-z][A-Z]` diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/databaseName.md new file mode 100644 index 00000000000..8f0d8c1ff96 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/databaseName.md @@ -0,0 +1,8 @@ +In OpenMetadata, the Database Service hierarchy works as follows: + +``` +Database Service > Database > Schema > Table +``` + +In the case of Mysql, we won't have a Database as such. If you'd like to see your data in a database +named something other than `default`, you can specify the name in this field. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/databaseSchema.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/databaseSchema.md new file mode 100644 index 00000000000..3209aa50b36 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/databaseSchema.md @@ -0,0 +1,7 @@ +In OpenMetadata, the Database Service hierarchy works as follows: + +``` +Database Service > Database > Schema > Table +``` + +In the case of MySQL, we won't have a DatabaseSchema as such. If you'd like to see your data in a databaseSchema named something other than `default`, you can specify the name in this field. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/hostPort.md new file mode 100644 index 00000000000..55d9467f974 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/hostPort.md @@ -0,0 +1,3 @@ +Host and port of the Mysql service. + +**Example**: `localhost:3306` or `host.docker.internal:3306` diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/password.md new file mode 100644 index 00000000000..90a9de56ee5 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/password.md @@ -0,0 +1 @@ +Password to connect to Mysql. diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/scheme.md similarity index 100% rename from openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/scheme.md rename to openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/scheme.md diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/sslCA.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/sslCA.md similarity index 100% rename from openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/sslCA.md rename to openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/sslCA.md diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/sslCert.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/sslCert.md similarity index 100% rename from openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/sslCert.md rename to openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/sslCert.md diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/sslKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/sslKey.md similarity index 100% rename from openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/sslKey.md rename to openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/sslKey.md diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/username.md new file mode 100644 index 00000000000..79ef44bb3a4 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/fields/username.md @@ -0,0 +1 @@ +Username to connect to Mysql. This user should have privileges to read all the metadata in Mysql. diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/requirements.md index 70d5ad44293..d2bf4a78df7 100644 --- a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/requirements.md +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/requirements.md @@ -1 +1,7 @@ - + +# Requirements +To run the Ingestion via the UI you'll need to use the OpenMetadata Ingestion Container, which comes shipped with custom Airflow plugins to handle the workflow deployment. + +Note that We support MySQL (version 8.0.0 or greater) and the user should have access to the `INFORMATION_SCHEMA` table. + +You can find further information on the Athena connector in the [docs](https://docs.open-metadata.org/connectors/database/mysql). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/databaseSchema.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/databaseSchema.md new file mode 100644 index 00000000000..f2bb0b50c1a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/databaseSchema.md @@ -0,0 +1 @@ +Database name of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank, OpenMetadata Ingestion attempts to scan all the database. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/hostPort.md new file mode 100644 index 00000000000..8e377cdf23d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/hostPort.md @@ -0,0 +1 @@ +Host and port of the Oracle service. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/instantClientDirectory.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/instantClientDirectory.md new file mode 100644 index 00000000000..2e09a8ecb36 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/instantClientDirectory.md @@ -0,0 +1 @@ +This directory will be used to set the `LD_LIBRARY_PATH` env variable. It is required if you need to enable thick connection mode. By default, we bring instant client 19 and point to `/instantclient`. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/oracleConnectionType.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/oracleConnectionType.md new file mode 100644 index 00000000000..939544873a8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/oracleConnectionType.md @@ -0,0 +1,2 @@ +Connect with oracle by either passing service name or database schema name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/oracleServiceName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/oracleServiceName.md new file mode 100644 index 00000000000..959a3cc9f16 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/oracleServiceName.md @@ -0,0 +1 @@ +The Oracle Service name is the TNS alias that you give your Oracle database when you remotely connect. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/password.md new file mode 100644 index 00000000000..fc5e77ecc6b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/password.md @@ -0,0 +1 @@ +Password to connect to Oracle. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/scheme.md new file mode 100644 index 00000000000..9d743326e41 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/scheme.md @@ -0,0 +1 @@ +SQLAlchemy driver scheme options. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/username.md new file mode 100644 index 00000000000..51ab7d7a69d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/fields/username.md @@ -0,0 +1 @@ +Username to connect to Oracle. This user should have privileges to read all the metadata in Oracle. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/requirements.md new file mode 100644 index 00000000000..bbb358a44aa --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Oracle/requirements.md @@ -0,0 +1,20 @@ +# Requirements +To ingest metadata from Oracle, a user must have `CREATE SESSION` privilege. + +```sql +-- CREATE USER +CREATE USER user_name IDENTIFIED BY admin_password; + +-- CREATE ROLE +CREATE ROLE new_role; + +-- GRANT ROLE TO USER +GRANT new_role TO user_name; + +-- GRANT CREATE SESSION PRIVILEGE TO USER +GRANT CREATE SESSION TO new_role; +``` + +**Important:** To fetch metadata from Oracle database we use `python-oracledb`. This library only supports Oracle 12c, 18c, 19c and 21c versions! + +You can find further information on the Oracle connector in the [docs](https://docs.open-metadata.org/connectors/database/oracle). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/database.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/database.md new file mode 100644 index 00000000000..9a60919c5c9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/database.md @@ -0,0 +1,2 @@ +Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank, OpenMetadata Ingestion attempts to scan all the databases. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/hostPort.md new file mode 100644 index 00000000000..6e0b28339b7 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the PinotDB service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/password.md new file mode 100644 index 00000000000..a60efb0335a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/password.md @@ -0,0 +1,2 @@ +password to connect to the PinotDB. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/pinotControllerHost.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/pinotControllerHost.md new file mode 100644 index 00000000000..fd703b4a546 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/pinotControllerHost.md @@ -0,0 +1,2 @@ +Pinot Broker Host and Port of the data source. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/username.md new file mode 100644 index 00000000000..3ef541de23b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/fields/username.md @@ -0,0 +1,2 @@ +username to connect to the PinotDB. This user should have privileges to read all the metadata in PinotDB. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/requirements.md new file mode 100644 index 00000000000..efd803b15dc --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/PinotDB/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/pinotdb). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/classificationName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/classificationName.md new file mode 100644 index 00000000000..19186573933 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/classificationName.md @@ -0,0 +1 @@ +By default, the Postgres policy tags in OpenMetadata are classified under the name "PostgresPolicyTags". However, you can create a custom classification name of your choice for these tags. Once you have ingested Postgres data, the custom classification name will be visible in the Classifications list on the Tags page. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/database.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/database.md new file mode 100644 index 00000000000..80b940f4b7d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/database.md @@ -0,0 +1 @@ +Initial Postgres database to connect to. If you want to ingest all databases, set `ingestAllDatabases` to true. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/hostPort.md similarity index 55% rename from openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/hostPort.md rename to openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/hostPort.md index 913a6fa8ead..ce318d2ee8b 100644 --- a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/hostPort.md +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/hostPort.md @@ -1,3 +1,2 @@ Host and port of the Postgres service. - -**Example**: `localhost:8000` +Example: `localhost:5432` \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/ingestAllDatabases.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/ingestAllDatabases.md new file mode 100644 index 00000000000..78a4f8926fc --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/ingestAllDatabases.md @@ -0,0 +1 @@ +If ticked, the workflow will be able to ingest all database in the cluster. If not ticked, the workflow will only ingest tables from the database set above. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/password.md new file mode 100644 index 00000000000..0237288548f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/password.md @@ -0,0 +1 @@ +Password to connect to Postgres. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/scheme.md new file mode 100644 index 00000000000..9d743326e41 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/scheme.md @@ -0,0 +1 @@ +SQLAlchemy driver scheme options. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/sslMode.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/sslMode.md new file mode 100644 index 00000000000..6cb2cb31546 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/sslMode.md @@ -0,0 +1 @@ +SSL Mode to connect to postgres database. E.g, prefer, verify-ca etc. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/supportsDatabase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/supportsDatabase.md new file mode 100644 index 00000000000..ed4c5c40fa6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/supportsDatabase.md @@ -0,0 +1,2 @@ +The source service supports the database concept in its hierarchy + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/username.md similarity index 61% rename from openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/username.md rename to openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/username.md index 8511b57f39f..d71e25be075 100644 --- a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/username.md +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/fields/username.md @@ -1 +1 @@ -Username to connect to Postgres. This user should have privileges to read all the metadata in Postgres. +Username to connect to Postgres. This user should have privileges to read all the metadata in Postgres. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/requirements.md new file mode 100644 index 00000000000..b599feb0d06 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Postgres/requirements.md @@ -0,0 +1,31 @@ +# Requirements +To run the Ingestion via the UI you'll need to use the OpenMetadata Ingestion Container, which comes shipped with +custom Airflow plugins to handle the workflow deployment. + + + +Note that we only support officially supported Postgres versions. You can check the version list [here](https://www.postgresql.org/support/versioning/). + + + +### Usage and Lineage considerations + +When extracting lineage and usage information from Postgres we base our finding on the `pg_stat_statements` table. +You can find more information about it on the official [docs](https://www.postgresql.org/docs/current/pgstatstatements.html#id-1.11.7.39.6). + +Another interesting consideration here is explained in the following SO [question](https://stackoverflow.com/questions/50803147/what-is-the-timeframe-for-pg-stat-statements). +As a summary: +- The `pg_stat_statements` has no time data embedded in it. +- It will show all queries from the last reset (one can call `pg_stat_statements_reset()`). + +Then, when extracting usage and lineage data, the query log duration will have no impact, only the query limit. + + + +- For usage and lineage grant your user `pg_read_all_stats` permission. + +```sql +GRANT pg_read_all_stats TO your_user; +``` + + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/catalog.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/catalog.md new file mode 100644 index 00000000000..e1e2a3aa41b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/catalog.md @@ -0,0 +1,2 @@ +Presto catalog + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/databaseSchema.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/databaseSchema.md new file mode 100644 index 00000000000..6999243aac8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/databaseSchema.md @@ -0,0 +1,2 @@ +databaseSchema of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single databaseSchema. When left blank, OpenMetadata Ingestion attempts to scan all the databaseSchema. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/hostPort.md new file mode 100644 index 00000000000..18ee7cdef5b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the Presto service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/password.md new file mode 100644 index 00000000000..c00cad1bd05 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to Presto. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/supportsDatabase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/supportsDatabase.md new file mode 100644 index 00000000000..ed4c5c40fa6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/supportsDatabase.md @@ -0,0 +1,2 @@ +The source service supports the database concept in its hierarchy + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/username.md new file mode 100644 index 00000000000..e3c2fee931d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to Presto. This user should have privileges to read all the metadata in Postgres. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/requirements.md new file mode 100644 index 00000000000..cd6a3a0cdd3 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Presto/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/presto). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/database.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/database.md new file mode 100644 index 00000000000..9aa44007d71 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/database.md @@ -0,0 +1 @@ +Initial Redshift database to connect to. If you want to ingest all databases, set `ingestAllDatabases` to true. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/hostPort.md new file mode 100644 index 00000000000..fccf9596877 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/hostPort.md @@ -0,0 +1 @@ +Host and port of the Redshift service. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/ingestAllDatabases.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/ingestAllDatabases.md new file mode 100644 index 00000000000..78a4f8926fc --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/ingestAllDatabases.md @@ -0,0 +1 @@ +If ticked, the workflow will be able to ingest all database in the cluster. If not ticked, the workflow will only ingest tables from the database set above. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/password.md new file mode 100644 index 00000000000..e972082275e --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/password.md @@ -0,0 +1 @@ +Password to connect to Redshift. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/scheme.md new file mode 100644 index 00000000000..f49e17a1043 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/scheme.md @@ -0,0 +1 @@ +SQLAlchemy driver scheme options \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/sslMode.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/sslMode.md new file mode 100644 index 00000000000..b25d12b70c0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/sslMode.md @@ -0,0 +1 @@ +SSL Mode to connect to redshift database. E.g, prefer, verify-ca etc. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/supportsDatabase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/supportsDatabase.md new file mode 100644 index 00000000000..ed4c5c40fa6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/supportsDatabase.md @@ -0,0 +1,2 @@ +The source service supports the database concept in its hierarchy + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/username.md new file mode 100644 index 00000000000..3c185f4c42a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/fields/username.md @@ -0,0 +1 @@ +Username to connect to Redshift. This user should have privileges to read all the metadata in Redshift. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/requirements.md new file mode 100644 index 00000000000..2ef7148a538 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Redshift/requirements.md @@ -0,0 +1,11 @@ +# Requirements +Redshift user must grant `SELECT` privilege on `SVV_TABLE_INFO` to fetch the metadata of tables and views. + +```sql +CREATE USER test_user with PASSWORD 'password'; +GRANT SELECT ON TABLE svv_table_info to test_user; +``` + +If you plan on running the profiler and quality tests you need to make sure your user has `SELECT` privilege on the tables you wish to run those workflows against. For more information visit [here](https://docs.aws.amazon.com/redshift/latest/dg/c_visibility-of-data.html). + +You can find further information on the Redshift connector in the [docs](https://docs.open-metadata.org/connectors/database/redshift). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/database.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/database.md new file mode 100644 index 00000000000..9a60919c5c9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/database.md @@ -0,0 +1,2 @@ +Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank, OpenMetadata Ingestion attempts to scan all the databases. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/databaseMode.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/databaseMode.md new file mode 100644 index 00000000000..e544d7bd67b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/databaseMode.md @@ -0,0 +1,2 @@ +How to run the SQLite database. :memory: by default. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/hostPort.md new file mode 100644 index 00000000000..e33af5104e6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the SQLite service. Blank for in-memory database. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/password.md new file mode 100644 index 00000000000..4899919b202 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to SQLite. Blank for in-memory database. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/username.md new file mode 100644 index 00000000000..4b178861df0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to SQLite. Blank for in-memory database. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/requirements.md new file mode 100644 index 00000000000..4893710c998 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SQLite/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/sqlite). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/databaseName.md new file mode 100644 index 00000000000..0719890bb20 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/databaseName.md @@ -0,0 +1,2 @@ +Optional name to give to the database in OpenMetadata. If left blank, we will use default as the database name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/hostPort.md new file mode 100644 index 00000000000..a2fe9c38e03 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the Salesforce service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/password.md new file mode 100644 index 00000000000..d138fb858ea --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to the Salesforce. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/securityToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/securityToken.md new file mode 100644 index 00000000000..e25509c7194 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/securityToken.md @@ -0,0 +1,2 @@ +Salesforce Security Token. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/sobjectName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/sobjectName.md new file mode 100644 index 00000000000..485d8b87863 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/sobjectName.md @@ -0,0 +1,2 @@ +Salesforce Object Name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/username.md new file mode 100644 index 00000000000..e7d341b9e5d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to the Salesforce. This user should have privileges to read all the metadata in Redshift. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/requirements.md new file mode 100644 index 00000000000..4ed9eecb182 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Salesforce/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/salesforce). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/databaseName.md new file mode 100644 index 00000000000..0719890bb20 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/databaseName.md @@ -0,0 +1,2 @@ +Optional name to give to the database in OpenMetadata. If left blank, we will use default as the database name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/databaseSchema.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/databaseSchema.md new file mode 100644 index 00000000000..6999243aac8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/databaseSchema.md @@ -0,0 +1,2 @@ +databaseSchema of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single databaseSchema. When left blank, OpenMetadata Ingestion attempts to scan all the databaseSchema. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/hostPort.md new file mode 100644 index 00000000000..be4e0d16287 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the SingleStore service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/password.md new file mode 100644 index 00000000000..9e62326543c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to SingleStore. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/username.md new file mode 100644 index 00000000000..066670aa845 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to SingleStore. This user should have privileges to read all the metadata in MySQL. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/requirements.md new file mode 100644 index 00000000000..6c97fe6c52f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/SingleStore/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/singlestore). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/account.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/account.md new file mode 100644 index 00000000000..ee2a2427c17 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/account.md @@ -0,0 +1,3 @@ +Snowflake account identifier uniquely identifies a Snowflake account within your organization, as well as throughout the global network of Snowflake-supported cloud platforms and cloud regions. + +If the Snowflake URL is https://xyz1234.us-east-1.gcp.snowflakecomputing.com, then the account is xyz1234.us-east-1.gcp \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/database.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/database.md new file mode 100644 index 00000000000..e8807a95b69 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/database.md @@ -0,0 +1 @@ +Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank, OpenMetadata Ingestion attempts to scan all the databases \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/password.md new file mode 100644 index 00000000000..0617f65719f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/password.md @@ -0,0 +1 @@ +Password to connect to Snowflake. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/privateKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/privateKey.md new file mode 100644 index 00000000000..0ccd4b1645a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/privateKey.md @@ -0,0 +1,22 @@ +If you have configured the key pair authentication for the given user you will have to pass the private key associated with the user in this field. You can checkout [this](https://docs.snowflake.com/en/user-guide/key-pair-auth) doc to get more details about key-pair authentication. + + +Also make sure you are passing the key in a correct format. If your private key looks like this.. + +``` +-----BEGIN ENCRYPTED PRIVATE KEY----- +MII.. +MBQ... +CgU.. +8Lt.. +... +h+4= +-----END ENCRYPTED PRIVATE KEY----- +``` + + +You will have to replace new lines with `\n` and the final private key that you need to pass should look like this.. + +``` +-----BEGIN ENCRYPTED PRIVATE KEY-----\nMII..\nMBQ...\nCgU..\n8Lt..\n...\nh+4=\n-----END ENCRYPTED PRIVATE KEY-----\n +``` \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/queryTag.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/queryTag.md new file mode 100644 index 00000000000..16ce7630534 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/queryTag.md @@ -0,0 +1 @@ +Session query tag used to monitor usage on snowflake. To use a query tag snowflake user should have enough privileges to alter the session \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/role.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/role.md new file mode 100644 index 00000000000..15416a6cd05 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/role.md @@ -0,0 +1 @@ +You can specify the role of user that you would like to ingest with, if no role is specified the default roles assigned to user will be selected. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/schme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/schme.md new file mode 100644 index 00000000000..9d743326e41 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/schme.md @@ -0,0 +1 @@ +SQLAlchemy driver scheme options. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/snowflakePrivatekeyPassphrase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/snowflakePrivatekeyPassphrase.md new file mode 100644 index 00000000000..5d71ed23947 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/snowflakePrivatekeyPassphrase.md @@ -0,0 +1 @@ +If you have configured the encrypted key pair authentication for the given user you will have to pass the paraphrase associated with the private key in this field. You can checkout [this](https://docs.snowflake.com/en/user-guide/key-pair-auth) doc to get more details about key-pair authentication. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/supportsDatabase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/supportsDatabase.md new file mode 100644 index 00000000000..ed4c5c40fa6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/supportsDatabase.md @@ -0,0 +1,2 @@ +The source service supports the database concept in its hierarchy + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/username.md new file mode 100644 index 00000000000..e78d0dd3a99 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/username.md @@ -0,0 +1 @@ +Username to connect to Snowflake. This user should have privileges to read all the metadata in Snowflake. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/warehouse.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/warehouse.md new file mode 100644 index 00000000000..b30f640c081 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/fields/warehouse.md @@ -0,0 +1 @@ +Snowflake warehouse is required for executing queries to fetch the metadata. Enter the name of warehouse against which you would like to execute these queries. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/requirements.md new file mode 100644 index 00000000000..3a24f856d94 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Snowflake/requirements.md @@ -0,0 +1,50 @@ +# Requirements + +To run the Ingestion via the UI you'll need to use the OpenMetadata Ingestion Container, which comes shipped with +custom Airflow plugins to handle the workflow deployment. + +To ingest basic metadata snowflake user must have the following priviledges: + - `USAGE` Privilege on Warehouse + - `USAGE` Privilege on Database + - `USAGE` Privilege on Schema + - `SELECT` Privilege on Tables +```sql +-- Create New Role +CREATE ROLE NEW_ROLE; + +-- Create New User +CREATE USER NEW_USER DEFAULT_ROLE=NEW_ROLE PASSWORD='PASSWORD'; + +-- Grant role to user +GRANT ROLE NEW_ROLE TO USER NEW_USER; + +-- Grant USAGE Privilege on Warehouse to New Role +GRANT USAGE ON WAREHOUSE WAREHOUSE_NAME TO ROLE NEW_ROLE; + +-- Grant USAGE Privilege on Database to New Role +GRANT USAGE ON DATABASE TEST_DB TO ROLE NEW_ROLE; + +-- Grant USAGE Privilege on required Schemas to New Role +GRANT USAGE ON SCHEMA TEST_SCHEMA TO ROLE NEW_ROLE; + +-- Grant SELECT Privilege on required tables & views to New Role +GRANT SELECT ON ALL TABLES IN SCHEMA TEST_SCHEMA TO ROLE NEW_ROLE; +GRANT SELECT ON ALL VIEWS IN SCHEMA TEST_SCHEMA TO ROLE NEW_ROLE; +``` + + +While running the usage workflow, Openmetadata fetches the query logs by querying `snowflake.account_usage.query_history` table. For this the snowflake user should be granted the `ACCOUNTADMIN` role or a role granted IMPORTED PRIVILEGES on the database `SNOWFLAKE`. + +```sql +-- Grant IMPORTED PRIVILEGES on all Schemas of SNOWFLAKE DB to New Role +GRANT IMPORTED PRIVILEGES ON ALL SCHEMAS IN DATABASE SNOWFLAKE TO ROLE NEW_ROLE; +``` + +If ingesting tags, the user should also have permissions to query `snowflake.account_usage.tag_references`.For this the snowflake user should be granted the `ACCOUNTADMIN` role or a role granted IMPORTED PRIVILEGES on the database + +```sql +-- Grant IMPORTED PRIVILEGES on all Schemas of SNOWFLAKE DB to New Role +GRANT IMPORTED PRIVILEGES ON ALL SCHEMAS IN DATABASE SNOWFLAKE TO ROLE NEW_ROLE; +``` + +You can find more information about the `account_usage` schema [here](https://docs.snowflake.com/en/sql-reference/account-usage.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/catalog.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/catalog.md new file mode 100644 index 00000000000..5ae1a139af9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/catalog.md @@ -0,0 +1,2 @@ +Catalog of the data source. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/databaseSchema.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/databaseSchema.md new file mode 100644 index 00000000000..6999243aac8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/databaseSchema.md @@ -0,0 +1,2 @@ +databaseSchema of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single databaseSchema. When left blank, OpenMetadata Ingestion attempts to scan all the databaseSchema. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/hostPort.md new file mode 100644 index 00000000000..cb6ff973d7b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the Trino service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/params.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/params.md new file mode 100644 index 00000000000..d01a8eb16aa --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/params.md @@ -0,0 +1,2 @@ +URL parameters for connection to the Trino data source + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/password.md new file mode 100644 index 00000000000..83a0ef6d2dd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to Trino. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/proxies.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/proxies.md new file mode 100644 index 00000000000..87e7d86f529 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/proxies.md @@ -0,0 +1,2 @@ +Proxies for the connection to Trino data source + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/supportsDatabase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/supportsDatabase.md new file mode 100644 index 00000000000..ed4c5c40fa6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/supportsDatabase.md @@ -0,0 +1,2 @@ +The source service supports the database concept in its hierarchy + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/username.md new file mode 100644 index 00000000000..d712942783c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to Trino. This user should have privileges to read all the metadata in Trino. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/requirements.md new file mode 100644 index 00000000000..9d3af112b6c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Trino/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/trino). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/database.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/database.md new file mode 100644 index 00000000000..9a60919c5c9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/database.md @@ -0,0 +1,2 @@ +Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank, OpenMetadata Ingestion attempts to scan all the databases. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/hostPort.md new file mode 100644 index 00000000000..d1176eefee4 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the Vertica service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/password.md new file mode 100644 index 00000000000..c55a0248dbc --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to Vertica. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/supportsDatabase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/supportsDatabase.md new file mode 100644 index 00000000000..ed4c5c40fa6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/supportsDatabase.md @@ -0,0 +1,2 @@ +The source service supports the database concept in its hierarchy + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/username.md new file mode 100644 index 00000000000..cba8506f03d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to Vertica. This user should have privileges to read all the metadata in Vertica. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/requirements.md new file mode 100644 index 00000000000..3cfc4ce8191 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Vertica/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/vertica). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/CustomMessaging/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/CustomMessaging/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/CustomMessaging/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/CustomMessaging/fields/sourcePythonClass.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/CustomMessaging/fields/sourcePythonClass.md new file mode 100644 index 00000000000..a3a5c81cdab --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/CustomMessaging/fields/sourcePythonClass.md @@ -0,0 +1,2 @@ +Source Python Class Name to instantiated by the ingestion workflow + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/CustomMessaging/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/CustomMessaging/requirements.md new file mode 100644 index 00000000000..b5376df4eb9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/CustomMessaging/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/messaging/custommessaging). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/basicAuthUserInfo.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/basicAuthUserInfo.md new file mode 100644 index 00000000000..922c1d79e47 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/basicAuthUserInfo.md @@ -0,0 +1,3 @@ +Schema Registry Client HTTP credentials in the form of `username:password`. + +By default userinfo is extracted from the URL if present. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/bootstrapServers.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/bootstrapServers.md new file mode 100644 index 00000000000..f911211a415 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/bootstrapServers.md @@ -0,0 +1,3 @@ +List of brokers as comma separated values of broker `host` or `host:port`. + +Example: `host1:9092,host2:9092` \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/consumerConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/consumerConfig.md new file mode 100644 index 00000000000..3a7a4e659e7 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/consumerConfig.md @@ -0,0 +1 @@ +The accepted additional values for the consumer configuration can be found in the following [link](https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/saslMechanism.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/saslMechanism.md new file mode 100644 index 00000000000..a9c15a2de48 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/saslMechanism.md @@ -0,0 +1,5 @@ +SASL mechanism to use for authentication. + +Supported: _GSSAPI, PLAIN, SCRAM-SHA-256, SCRAM-SHA-512, OAUTHBEARER_. + +**NOTE**: Despite the name only one mechanism must be configured. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/saslPassword.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/saslPassword.md new file mode 100644 index 00000000000..ff9ce444f54 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/saslPassword.md @@ -0,0 +1 @@ +SASL password for use with the PLAIN and SASL-SCRAM mechanisms. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/saslUsername.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/saslUsername.md new file mode 100644 index 00000000000..eba48839cec --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/saslUsername.md @@ -0,0 +1 @@ +SASL username for use with the PLAIN and SASL-SCRAM mechanisms. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/schemaRegistryConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/schemaRegistryConfig.md new file mode 100644 index 00000000000..ab7240826bd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/schemaRegistryConfig.md @@ -0,0 +1 @@ +The accepted additional values for the Schema Registry configuration can be found in the following [link](https://docs.confluent.io/5.5.1/clients/confluent-kafka-python/index.html#confluent_kafka.schema_registry.SchemaRegistryClient). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/schemaRegistryURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/schemaRegistryURL.md new file mode 100644 index 00000000000..10e7e39c58a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/fields/schemaRegistryURL.md @@ -0,0 +1,3 @@ +URL of the Schema Registry used to ingest the schemas of the topics. + +**NOTE**: For now, the schema will be the last version found for the schema name `{topic-name}-value`. An [issue](https://github.com/open-metadata/OpenMetadata/issues/10399) to improve how it currently works has been opened. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/requirements.md new file mode 100644 index 00000000000..c3b550d8819 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kafka/requirements.md @@ -0,0 +1,6 @@ +# Requirements +Connecting to Kafka does not require any previous configuration. + +Just to remind you, the ingestion of the Kafka topics schema is done separately by configuring the **Schema Registry URL**. However, only the **Bootstrap Servers** information is mandatory. + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/messaging/kafka). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/assumeRoleArn.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/assumeRoleArn.md new file mode 100644 index 00000000000..d0fe4aed2a9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/assumeRoleArn.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/assumeRoleSessionName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/assumeRoleSessionName.md new file mode 100644 index 00000000000..f0fd71c5548 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/assumeRoleSessionName.md @@ -0,0 +1,2 @@ +An identifier for the assumed role session. Use the role session name to uniquely identify a session when the same role is assumed by different principals or for different reasons. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/assumeRoleSourceIdentity.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/assumeRoleSourceIdentity.md new file mode 100644 index 00000000000..274b38a9a68 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/assumeRoleSourceIdentity.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Optional Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsAccessKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsAccessKeyId.md new file mode 100644 index 00000000000..e8bf7cae5ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsAccessKeyId.md @@ -0,0 +1,2 @@ +AWS Access key ID. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsConfig.md new file mode 100644 index 00000000000..64aaae003f0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsConfig.md @@ -0,0 +1,2 @@ +AWS credentials configs. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsRegion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsRegion.md new file mode 100644 index 00000000000..72061900168 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsRegion.md @@ -0,0 +1,2 @@ +AWS Region + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsSecretAccessKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsSecretAccessKey.md new file mode 100644 index 00000000000..586de7f82a1 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsSecretAccessKey.md @@ -0,0 +1,2 @@ +AWS Secret Access Key. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsSessionToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsSessionToken.md new file mode 100644 index 00000000000..52a9938da4a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/awsSessionToken.md @@ -0,0 +1,2 @@ +AWS Session Token. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/endPointURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/endPointURL.md new file mode 100644 index 00000000000..d992901b426 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/endPointURL.md @@ -0,0 +1,2 @@ +EndPoint URL for the AWS + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/profileName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/profileName.md new file mode 100644 index 00000000000..aa7f976a9dd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/fields/profileName.md @@ -0,0 +1,2 @@ +The name of a profile to use with the boto session. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/requirements.md new file mode 100644 index 00000000000..3282726674f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Kinesis/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/messaging/kinesis). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Pulsar/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Pulsar/requirements.md new file mode 100644 index 00000000000..1c5ca5e2059 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Pulsar/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/messaging/pulsar). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/basicAuthUserInfo.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/basicAuthUserInfo.md new file mode 100644 index 00000000000..922c1d79e47 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/basicAuthUserInfo.md @@ -0,0 +1,3 @@ +Schema Registry Client HTTP credentials in the form of `username:password`. + +By default userinfo is extracted from the URL if present. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/bootstrapServers.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/bootstrapServers.md new file mode 100644 index 00000000000..f911211a415 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/bootstrapServers.md @@ -0,0 +1,3 @@ +List of brokers as comma separated values of broker `host` or `host:port`. + +Example: `host1:9092,host2:9092` \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/consumerConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/consumerConfig.md new file mode 100644 index 00000000000..3a7a4e659e7 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/consumerConfig.md @@ -0,0 +1 @@ +The accepted additional values for the consumer configuration can be found in the following [link](https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/saslMechanism.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/saslMechanism.md new file mode 100644 index 00000000000..a9c15a2de48 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/saslMechanism.md @@ -0,0 +1,5 @@ +SASL mechanism to use for authentication. + +Supported: _GSSAPI, PLAIN, SCRAM-SHA-256, SCRAM-SHA-512, OAUTHBEARER_. + +**NOTE**: Despite the name only one mechanism must be configured. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/saslPassword.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/saslPassword.md new file mode 100644 index 00000000000..ff9ce444f54 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/saslPassword.md @@ -0,0 +1 @@ +SASL password for use with the PLAIN and SASL-SCRAM mechanisms. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/saslUsername.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/saslUsername.md new file mode 100644 index 00000000000..eba48839cec --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/saslUsername.md @@ -0,0 +1 @@ +SASL username for use with the PLAIN and SASL-SCRAM mechanisms. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/schemaRegistryConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/schemaRegistryConfig.md new file mode 100644 index 00000000000..ab7240826bd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/schemaRegistryConfig.md @@ -0,0 +1 @@ +The accepted additional values for the Schema Registry configuration can be found in the following [link](https://docs.confluent.io/5.5.1/clients/confluent-kafka-python/index.html#confluent_kafka.schema_registry.SchemaRegistryClient). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/schemaRegistryURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/schemaRegistryURL.md new file mode 100644 index 00000000000..10e7e39c58a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/fields/schemaRegistryURL.md @@ -0,0 +1,3 @@ +URL of the Schema Registry used to ingest the schemas of the topics. + +**NOTE**: For now, the schema will be the last version found for the schema name `{topic-name}-value`. An [issue](https://github.com/open-metadata/OpenMetadata/issues/10399) to improve how it currently works has been opened. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/requirements.md new file mode 100644 index 00000000000..82b2b62391f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Messaging/Redpanda/requirements.md @@ -0,0 +1,6 @@ +# Requirements +Connecting to Redpanda does not require any previous configuration. + +Just to remind you, the ingestion of the Redpanda topics schema is done separately by configuring the **Schema Registry URL**. However, only the **Bootstrap Servers** information is mandatory. + +You can find further information on the Redpanda connector in the [docs](https://docs.open-metadata.org/connectors/messaging/redpanda). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/encrypted.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/encrypted.md new file mode 100644 index 00000000000..f808331b298 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/encrypted.md @@ -0,0 +1 @@ +Enable encryption for the Amundsen Neo4j Connection. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/hostPort.md new file mode 100644 index 00000000000..ad8001280da --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/hostPort.md @@ -0,0 +1 @@ +Host and port of the Amundsen Neo4j Connection. This expect a URI format like: `bolt://localhost:7687`. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/maxConnectionLifeTime.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/maxConnectionLifeTime.md new file mode 100644 index 00000000000..013d5ec2fad --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/maxConnectionLifeTime.md @@ -0,0 +1 @@ +Maximum connection lifetime for the Amundsen Neo4j Connection. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/password.md new file mode 100644 index 00000000000..dc2a97463f9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/password.md @@ -0,0 +1 @@ +Password to connect to the Amundsen Neo4j Connection. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/username.md new file mode 100644 index 00000000000..f741f57bd32 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/username.md @@ -0,0 +1 @@ +Username to connect to the Amundsen Neo4j Connection. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/validateSSL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/validateSSL.md new file mode 100644 index 00000000000..068eb9f5acb --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/fields/validateSSL.md @@ -0,0 +1 @@ +Enable SSL validation for the Amundsen Neo4j Connection. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/requirements.md new file mode 100644 index 00000000000..651ebda8490 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Amundsen/requirements.md @@ -0,0 +1,8 @@ +# Requirements +For Connecting to Amundsen, need to make sure to pass `hostPort` with prefix such as: + 1. `bolt`(`Recommended`) + 2. `neo4j` + 3. `neo4j+ssc` + + +You can find further information on the Amundsen connector in the [docs](https://docs.open-metadata.org/connectors/metadata/amundsen). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/databaseServiceName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/databaseServiceName.md new file mode 100644 index 00000000000..039cf7c7c93 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/databaseServiceName.md @@ -0,0 +1,2 @@ +service type of the data source. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/entity_type.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/entity_type.md new file mode 100644 index 00000000000..1ed0461125b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/entity_type.md @@ -0,0 +1,2 @@ +Name of the Entity Type available in Atlas. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/hostPort.md new file mode 100644 index 00000000000..e17de3e742a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the Atlas service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/messagingServiceName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/messagingServiceName.md new file mode 100644 index 00000000000..5d80e4e2f3b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/messagingServiceName.md @@ -0,0 +1,2 @@ +service type of the messaging source + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/password.md new file mode 100644 index 00000000000..b7b2bc1c81a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/password.md @@ -0,0 +1,2 @@ +password to connect to the Atlas. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/username.md new file mode 100644 index 00000000000..37c9da20b0f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/fields/username.md @@ -0,0 +1,2 @@ +username to connect to the Atlas. This user should have privileges to read all the metadata in Atlas. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/requirements.md new file mode 100644 index 00000000000..fb9fd4a7d4b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/Atlas/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/metadata/atlas). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/apiVersion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/apiVersion.md new file mode 100644 index 00000000000..b3124978da5 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/apiVersion.md @@ -0,0 +1,2 @@ +OpenMetadata server API version to use. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/assumeRoleArn.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/assumeRoleArn.md new file mode 100644 index 00000000000..d0fe4aed2a9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/assumeRoleArn.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/assumeRoleSessionName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/assumeRoleSessionName.md new file mode 100644 index 00000000000..f0fd71c5548 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/assumeRoleSessionName.md @@ -0,0 +1,2 @@ +An identifier for the assumed role session. Use the role session name to uniquely identify a session when the same role is assumed by different principals or for different reasons. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/assumeRoleSourceIdentity.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/assumeRoleSourceIdentity.md new file mode 100644 index 00000000000..274b38a9a68 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/assumeRoleSourceIdentity.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Optional Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/audience.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/audience.md new file mode 100644 index 00000000000..718bd8da5a1 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/audience.md @@ -0,0 +1,2 @@ +Google SSO audience URL + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/authProvider.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/authProvider.md new file mode 100644 index 00000000000..31b15946b87 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/authProvider.md @@ -0,0 +1,2 @@ +OpenMetadata Server Authentication Provider. Make sure configure same auth providers as the one configured on OpenMetadata server. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/authority.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/authority.md new file mode 100644 index 00000000000..4327f01a23f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/authority.md @@ -0,0 +1,2 @@ +Azure SSO Authority + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsAccessKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsAccessKeyId.md new file mode 100644 index 00000000000..e8bf7cae5ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsAccessKeyId.md @@ -0,0 +1,2 @@ +AWS Access key ID. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsRegion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsRegion.md new file mode 100644 index 00000000000..72061900168 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsRegion.md @@ -0,0 +1,2 @@ +AWS Region + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsSecretAccessKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsSecretAccessKey.md new file mode 100644 index 00000000000..586de7f82a1 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsSecretAccessKey.md @@ -0,0 +1,2 @@ +AWS Secret Access Key. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsSessionToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsSessionToken.md new file mode 100644 index 00000000000..52a9938da4a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/awsSessionToken.md @@ -0,0 +1,2 @@ +AWS Session Token. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/certificatePath.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/certificatePath.md new file mode 100644 index 00000000000..77829f171ac --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/certificatePath.md @@ -0,0 +1,2 @@ +CA certificate path. E.g., /path/to/public.cert. Will be used if Verify SSL is set to `validate`. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/clientId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/clientId.md new file mode 100644 index 00000000000..bbc5364d507 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/clientId.md @@ -0,0 +1,2 @@ +Custom OIDC Client ID. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/clientSecret.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/clientSecret.md new file mode 100644 index 00000000000..cdcee5fb6ec --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/clientSecret.md @@ -0,0 +1,2 @@ +Azure SSO client secret key + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/clusterName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/clusterName.md new file mode 100644 index 00000000000..8c6907f71e0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/clusterName.md @@ -0,0 +1,2 @@ +Cluster name to differentiate OpenMetadata Server instance + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/config.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/config.md new file mode 100644 index 00000000000..f38db12c6e0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/config.md @@ -0,0 +1,2 @@ +key/value pairs to pass to workflow component. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/domain.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/domain.md new file mode 100644 index 00000000000..79807257a1c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/domain.md @@ -0,0 +1,2 @@ +Auth0 Domain. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/elasticsSearch.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/elasticsSearch.md new file mode 100644 index 00000000000..f648f6b69b2 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/elasticsSearch.md @@ -0,0 +1,2 @@ +Configuration for Sink Component in the OpenMetadata Ingestion Framework. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/email.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/email.md new file mode 100644 index 00000000000..3396cb28572 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/email.md @@ -0,0 +1,2 @@ +Okta Service account Email. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/enableVersionValidation.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/enableVersionValidation.md new file mode 100644 index 00000000000..fccd2ee8b99 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/enableVersionValidation.md @@ -0,0 +1,2 @@ +Validate Openmetadata Server & Client Version. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/endPointURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/endPointURL.md new file mode 100644 index 00000000000..d992901b426 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/endPointURL.md @@ -0,0 +1,2 @@ +EndPoint URL for the AWS + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/extraHeaders.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/extraHeaders.md new file mode 100644 index 00000000000..68871e67a83 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/extraHeaders.md @@ -0,0 +1,2 @@ +extraHeaders + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/forceEntityOverwriting.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/forceEntityOverwriting.md new file mode 100644 index 00000000000..b41c4dd927f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/forceEntityOverwriting.md @@ -0,0 +1,2 @@ +Force the overwriting of any entity during the ingestion. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/hostPort.md new file mode 100644 index 00000000000..e42e46980c0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/hostPort.md @@ -0,0 +1,2 @@ +OpenMetadata Server Config. Must include API end point ex: http://localhost:8585/api + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeDashboards.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeDashboards.md new file mode 100644 index 00000000000..9040f1eba83 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeDashboards.md @@ -0,0 +1,2 @@ +Include Dashboards for Indexing + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeDatabaseServices.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeDatabaseServices.md new file mode 100644 index 00000000000..9685c711a49 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeDatabaseServices.md @@ -0,0 +1,2 @@ +Include Database Services for Indexing + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeGlossaryTerms.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeGlossaryTerms.md new file mode 100644 index 00000000000..4e02f6c0131 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeGlossaryTerms.md @@ -0,0 +1,2 @@ +Include Glossary Terms for Indexing + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeMessagingServices.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeMessagingServices.md new file mode 100644 index 00000000000..af99aadb9a0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeMessagingServices.md @@ -0,0 +1,2 @@ +Include Messaging Services for Indexing + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeMlModels.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeMlModels.md new file mode 100644 index 00000000000..e7c1bf7c23a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeMlModels.md @@ -0,0 +1,2 @@ +Include MlModels for Indexing + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includePipelineServices.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includePipelineServices.md new file mode 100644 index 00000000000..62f5663708d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includePipelineServices.md @@ -0,0 +1,2 @@ +Include Pipeline Services for Indexing + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includePipelines.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includePipelines.md new file mode 100644 index 00000000000..675071200f0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includePipelines.md @@ -0,0 +1,2 @@ +Include Pipelines for Indexing + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includePolicy.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includePolicy.md new file mode 100644 index 00000000000..a7facf46224 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includePolicy.md @@ -0,0 +1,2 @@ +Include Tags for Policy + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTables.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTables.md new file mode 100644 index 00000000000..d9766ea663a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTables.md @@ -0,0 +1,2 @@ +Include Tables for Indexing + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTags.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTags.md new file mode 100644 index 00000000000..6ac47d2d4b4 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTags.md @@ -0,0 +1,2 @@ +Include Tags for Indexing + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTeams.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTeams.md new file mode 100644 index 00000000000..58ec2428ea8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTeams.md @@ -0,0 +1,2 @@ +Include Teams for Indexing + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTopics.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTopics.md new file mode 100644 index 00000000000..a696d899254 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeTopics.md @@ -0,0 +1,2 @@ +Include Topics for Indexing + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeUsers.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeUsers.md new file mode 100644 index 00000000000..003ccdf70bb --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/includeUsers.md @@ -0,0 +1,2 @@ +Include Users for Indexing + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/jwtToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/jwtToken.md new file mode 100644 index 00000000000..7e20a4191d4 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/jwtToken.md @@ -0,0 +1,2 @@ +OpenMetadata generated JWT token. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/limitRecords.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/limitRecords.md new file mode 100644 index 00000000000..3b257b04560 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/limitRecords.md @@ -0,0 +1,2 @@ +Limit the number of records for Indexing. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/orgURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/orgURL.md new file mode 100644 index 00000000000..4b35d831675 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/orgURL.md @@ -0,0 +1,2 @@ +Okta org url. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/privateKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/privateKey.md new file mode 100644 index 00000000000..52da76df66a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/privateKey.md @@ -0,0 +1,2 @@ +Okta Private Key. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/profileName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/profileName.md new file mode 100644 index 00000000000..aa7f976a9dd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/profileName.md @@ -0,0 +1,2 @@ +The name of a profile to use with the boto session. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/scopes.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/scopes.md new file mode 100644 index 00000000000..0ad55644b60 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/scopes.md @@ -0,0 +1,2 @@ +Azure Client ID. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/secretKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/secretKey.md new file mode 100644 index 00000000000..81123ba3802 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/secretKey.md @@ -0,0 +1,2 @@ +Custom OIDC Client Secret Key. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/secretsManagerCredentials.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/secretsManagerCredentials.md new file mode 100644 index 00000000000..1a21fc414ae --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/secretsManagerCredentials.md @@ -0,0 +1,2 @@ +OpenMetadata Secrets Manager Client credentials + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/secretsManagerProvider.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/secretsManagerProvider.md new file mode 100644 index 00000000000..8c2f64dc359 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/secretsManagerProvider.md @@ -0,0 +1,2 @@ +OpenMetadata Secrets Manager Provider. Make sure to configure the same secrets manager providers as the ones configured on the OpenMetadata server. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/securityConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/securityConfig.md new file mode 100644 index 00000000000..c2875627811 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/securityConfig.md @@ -0,0 +1,2 @@ +OpenMetadata Client security configuration. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/sslConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/sslConfig.md new file mode 100644 index 00000000000..7b97b78b287 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/sslConfig.md @@ -0,0 +1,2 @@ +Client SSL configuration + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/tokenEndpoint.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/tokenEndpoint.md new file mode 100644 index 00000000000..ec7b0525077 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/tokenEndpoint.md @@ -0,0 +1,2 @@ +Custom OIDC token endpoint. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/verifySSL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/verifySSL.md new file mode 100644 index 00000000000..ff27d2cba47 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/fields/verifySSL.md @@ -0,0 +1,2 @@ +Client SSL verification. Make sure to configure the SSLConfig if enabled. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/requirements.md new file mode 100644 index 00000000000..53800bc6c94 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Metadata/OpenMetadata/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/metadata/openmetadata). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/CustomMlModel/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/CustomMlModel/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/CustomMlModel/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/CustomMlModel/fields/sourcePythonClass.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/CustomMlModel/fields/sourcePythonClass.md new file mode 100644 index 00000000000..a3a5c81cdab --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/CustomMlModel/fields/sourcePythonClass.md @@ -0,0 +1,2 @@ +Source Python Class Name to instantiated by the ingestion workflow + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/CustomMlModel/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/CustomMlModel/requirements.md new file mode 100644 index 00000000000..d1eda40f417 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/CustomMlModel/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/mlmodel/custommlmodel). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Mlflow/fields/registryUri.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Mlflow/fields/registryUri.md new file mode 100644 index 00000000000..3f085dd184a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Mlflow/fields/registryUri.md @@ -0,0 +1,2 @@ +Mlflow Model registry backend. E.g., mysql+pymysql://mlflow:password@localhost:3307/experiments + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Mlflow/fields/trackingUri.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Mlflow/fields/trackingUri.md new file mode 100644 index 00000000000..a8c679e08ba --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Mlflow/fields/trackingUri.md @@ -0,0 +1,2 @@ +Mlflow Experiment tracking URI. E.g., http://localhost:5000 + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Mlflow/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Mlflow/requirements.md new file mode 100644 index 00000000000..7e752cd7028 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Mlflow/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/mlmodel/mlflow). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/assumeRoleArn.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/assumeRoleArn.md new file mode 100644 index 00000000000..d0fe4aed2a9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/assumeRoleArn.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/assumeRoleSessionName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/assumeRoleSessionName.md new file mode 100644 index 00000000000..f0fd71c5548 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/assumeRoleSessionName.md @@ -0,0 +1,2 @@ +An identifier for the assumed role session. Use the role session name to uniquely identify a session when the same role is assumed by different principals or for different reasons. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/assumeRoleSourceIdentity.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/assumeRoleSourceIdentity.md new file mode 100644 index 00000000000..274b38a9a68 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/assumeRoleSourceIdentity.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Optional Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsAccessKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsAccessKeyId.md new file mode 100644 index 00000000000..e8bf7cae5ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsAccessKeyId.md @@ -0,0 +1,2 @@ +AWS Access key ID. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsConfig.md new file mode 100644 index 00000000000..64aaae003f0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsConfig.md @@ -0,0 +1,2 @@ +AWS credentials configs. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsRegion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsRegion.md new file mode 100644 index 00000000000..72061900168 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsRegion.md @@ -0,0 +1,2 @@ +AWS Region + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsSecretAccessKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsSecretAccessKey.md new file mode 100644 index 00000000000..586de7f82a1 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsSecretAccessKey.md @@ -0,0 +1,2 @@ +AWS Secret Access Key. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsSessionToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsSessionToken.md new file mode 100644 index 00000000000..52a9938da4a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/awsSessionToken.md @@ -0,0 +1,2 @@ +AWS Session Token. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/endPointURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/endPointURL.md new file mode 100644 index 00000000000..d992901b426 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/endPointURL.md @@ -0,0 +1,2 @@ +EndPoint URL for the AWS + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/profileName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/profileName.md new file mode 100644 index 00000000000..aa7f976a9dd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/fields/profileName.md @@ -0,0 +1,2 @@ +The name of a profile to use with the boto session. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/requirements.md new file mode 100644 index 00000000000..85b98de3951 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/SageMaker/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/mlmodel/sagemaker). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Sklearn/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Sklearn/requirements.md new file mode 100644 index 00000000000..a1453217a21 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Mlmodel/Sklearn/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/mlmodel/sklearn). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/accountName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/accountName.md new file mode 100644 index 00000000000..3928b195743 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/accountName.md @@ -0,0 +1,2 @@ +Account Name of your storage account + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/clientId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/clientId.md new file mode 100644 index 00000000000..ecaac9d6d90 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/clientId.md @@ -0,0 +1,2 @@ +Your Service Principal App ID (Client ID) + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/clientSecret.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/clientSecret.md new file mode 100644 index 00000000000..31de67ac5e1 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/clientSecret.md @@ -0,0 +1,2 @@ +Your Service Principal Password (Client Secret) + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/credentials.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/credentials.md new file mode 100644 index 00000000000..b9b1654647c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/credentials.md @@ -0,0 +1,2 @@ +Azure Credentials + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/tenantId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/tenantId.md new file mode 100644 index 00000000000..c42afaf72fb --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/fields/tenantId.md @@ -0,0 +1,2 @@ +Tenant ID of your Azure Subscription + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/requirements.md new file mode 100644 index 00000000000..3cfe15b5d4b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Azure/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/objectstore/azure). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/authProviderX509CertUrl.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/authProviderX509CertUrl.md new file mode 100644 index 00000000000..18bdcbc174c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/authProviderX509CertUrl.md @@ -0,0 +1,2 @@ +Google Cloud auth provider certificate. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/authUri.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/authUri.md new file mode 100644 index 00000000000..de1a714712a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/authUri.md @@ -0,0 +1,2 @@ +Google Cloud auth uri. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/clientEmail.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/clientEmail.md new file mode 100644 index 00000000000..ec45cf45aa7 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/clientEmail.md @@ -0,0 +1,2 @@ +Google Cloud email. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/clientId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/clientId.md new file mode 100644 index 00000000000..5557b29361a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/clientId.md @@ -0,0 +1,2 @@ +Google Cloud Client ID. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/clientX509CertUrl.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/clientX509CertUrl.md new file mode 100644 index 00000000000..1d48d2eb8ef --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/clientX509CertUrl.md @@ -0,0 +1,2 @@ +Google Cloud client certificate uri. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/credentials.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/credentials.md new file mode 100644 index 00000000000..c723a1d820a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/credentials.md @@ -0,0 +1,2 @@ +GCS Credentials + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/gcsConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/gcsConfig.md new file mode 100644 index 00000000000..561a8daad0b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/gcsConfig.md @@ -0,0 +1,2 @@ +We support two ways of authenticating to GCS i.e via GCS Credentials Values or GCS Credentials Path + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/privateKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/privateKey.md new file mode 100644 index 00000000000..a05acc3e7a0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/privateKey.md @@ -0,0 +1,2 @@ +Google Cloud private key. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/privateKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/privateKeyId.md new file mode 100644 index 00000000000..62a7912fecc --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/privateKeyId.md @@ -0,0 +1,2 @@ +Google Cloud private key id. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/projectId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/projectId.md new file mode 100644 index 00000000000..10dcec81861 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/projectId.md @@ -0,0 +1,2 @@ +Project ID + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/tokenUri.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/tokenUri.md new file mode 100644 index 00000000000..d1019b60cd0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/fields/tokenUri.md @@ -0,0 +1,2 @@ +Google Cloud token uri. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/requirements.md new file mode 100644 index 00000000000..cf3dd765fff --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/Gcs/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/objectstore/gcs). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/assumeRoleArn.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/assumeRoleArn.md new file mode 100644 index 00000000000..d0fe4aed2a9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/assumeRoleArn.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/assumeRoleSessionName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/assumeRoleSessionName.md new file mode 100644 index 00000000000..f0fd71c5548 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/assumeRoleSessionName.md @@ -0,0 +1,2 @@ +An identifier for the assumed role session. Use the role session name to uniquely identify a session when the same role is assumed by different principals or for different reasons. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/assumeRoleSourceIdentity.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/assumeRoleSourceIdentity.md new file mode 100644 index 00000000000..274b38a9a68 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/assumeRoleSourceIdentity.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Optional Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsAccessKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsAccessKeyId.md new file mode 100644 index 00000000000..e8bf7cae5ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsAccessKeyId.md @@ -0,0 +1,2 @@ +AWS Access key ID. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsConfig.md new file mode 100644 index 00000000000..64aaae003f0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsConfig.md @@ -0,0 +1,2 @@ +AWS credentials configs. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsRegion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsRegion.md new file mode 100644 index 00000000000..72061900168 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsRegion.md @@ -0,0 +1,2 @@ +AWS Region + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsSecretAccessKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsSecretAccessKey.md new file mode 100644 index 00000000000..586de7f82a1 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsSecretAccessKey.md @@ -0,0 +1,2 @@ +AWS Secret Access Key. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsSessionToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsSessionToken.md new file mode 100644 index 00000000000..52a9938da4a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/awsSessionToken.md @@ -0,0 +1,2 @@ +AWS Session Token. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/endPointURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/endPointURL.md new file mode 100644 index 00000000000..d992901b426 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/endPointURL.md @@ -0,0 +1,2 @@ +EndPoint URL for the AWS + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/profileName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/profileName.md new file mode 100644 index 00000000000..aa7f976a9dd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/fields/profileName.md @@ -0,0 +1,2 @@ +The name of a profile to use with the boto session. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/requirements.md new file mode 100644 index 00000000000..323ab26b0b6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Objectstore/S3/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/objectstore/s3). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/fields/hostPort.md new file mode 100644 index 00000000000..07bcdb7c34c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/fields/hostPort.md @@ -0,0 +1,2 @@ +Pipeline Service Management/UI URL. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/fields/password.md new file mode 100644 index 00000000000..c24329dba43 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to Airbyte. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/fields/username.md new file mode 100644 index 00000000000..81d8c368f1a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to Airbyte. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/requirements.md new file mode 100644 index 00000000000..6c76627d397 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airbyte/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/pipeline/airbyte). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/classificationName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/classificationName.md new file mode 100644 index 00000000000..25f57205a2f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/classificationName.md @@ -0,0 +1,2 @@ +Custom OpenMetadata Classification name for Postgres policy tags. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/connection.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/connection.md new file mode 100644 index 00000000000..d9c45397b28 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/connection.md @@ -0,0 +1,2 @@ +Underlying database connection. See https://airflow.apache.org/docs/apache-airflow/stable/howto/set-up-database.html for supported backends. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/connectionArguments.md new file mode 100644 index 00000000000..c8d11b55955 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/connectionArguments.md @@ -0,0 +1,2 @@ +connectionArguments + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/connectionOptions.md new file mode 100644 index 00000000000..61ac7c7809c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/connectionOptions.md @@ -0,0 +1,2 @@ +connectionOptions + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/database.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/database.md new file mode 100644 index 00000000000..9a60919c5c9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/database.md @@ -0,0 +1,2 @@ +Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank, OpenMetadata Ingestion attempts to scan all the databases. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/databaseMode.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/databaseMode.md new file mode 100644 index 00000000000..e544d7bd67b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/databaseMode.md @@ -0,0 +1,2 @@ +How to run the SQLite database. :memory: by default. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/databaseName.md new file mode 100644 index 00000000000..0719890bb20 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/databaseName.md @@ -0,0 +1,2 @@ +Optional name to give to the database in OpenMetadata. If left blank, we will use default as the database name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/databaseSchema.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/databaseSchema.md new file mode 100644 index 00000000000..6999243aac8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/databaseSchema.md @@ -0,0 +1,2 @@ +databaseSchema of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single databaseSchema. When left blank, OpenMetadata Ingestion attempts to scan all the databaseSchema. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/hostPort.md new file mode 100644 index 00000000000..e33af5104e6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the SQLite service. Blank for in-memory database. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/ingestAllDatabases.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/ingestAllDatabases.md new file mode 100644 index 00000000000..9b21b25c781 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/ingestAllDatabases.md @@ -0,0 +1,2 @@ +Ingest data from all databases in Postgres. You can use databaseFilterPattern on top of this. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/numberOfStatus.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/numberOfStatus.md new file mode 100644 index 00000000000..330433bda64 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/numberOfStatus.md @@ -0,0 +1,2 @@ +Pipeline Service Number Of Status + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/password.md new file mode 100644 index 00000000000..4899919b202 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to SQLite. Blank for in-memory database. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslCA.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslCA.md new file mode 100644 index 00000000000..e248b1cd7a2 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslCA.md @@ -0,0 +1,2 @@ +Provide the path to ssl ca file + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslCert.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslCert.md new file mode 100644 index 00000000000..da03a17de3a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslCert.md @@ -0,0 +1,2 @@ +Provide the path to ssl client certificate file (ssl_cert) + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslKey.md new file mode 100644 index 00000000000..7c18d65f132 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslKey.md @@ -0,0 +1,2 @@ +Provide the path to ssl client certificate file (ssl_key) + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslMode.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslMode.md new file mode 100644 index 00000000000..40ee2e8ecc6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/sslMode.md @@ -0,0 +1,2 @@ +SSL Mode to connect to postgres database. E.g, prefer, verify-ca etc. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/supportsDatabase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/supportsDatabase.md new file mode 100644 index 00000000000..36f157eba45 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/supportsDatabase.md @@ -0,0 +1,2 @@ +supportsDatabase + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/uriString.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/uriString.md new file mode 100644 index 00000000000..7a43296c898 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/uriString.md @@ -0,0 +1,2 @@ +Connection URI In case of pyodbc + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/username.md new file mode 100644 index 00000000000..4b178861df0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to SQLite. Blank for in-memory database. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/requirements.md new file mode 100644 index 00000000000..d4ba23be69f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Airflow/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/pipeline/airflow). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/CustomPipeline/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/CustomPipeline/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/CustomPipeline/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/CustomPipeline/fields/sourcePythonClass.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/CustomPipeline/fields/sourcePythonClass.md new file mode 100644 index 00000000000..a3a5c81cdab --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/CustomPipeline/fields/sourcePythonClass.md @@ -0,0 +1,2 @@ +Source Python Class Name to instantiated by the ingestion workflow + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/CustomPipeline/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/CustomPipeline/requirements.md new file mode 100644 index 00000000000..4efaf19506b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/CustomPipeline/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/pipeline/custompipeline). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Dagster/fields/host.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Dagster/fields/host.md new file mode 100644 index 00000000000..b94d1e80430 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Dagster/fields/host.md @@ -0,0 +1,2 @@ +URL to the Dagster instance + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Dagster/fields/token.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Dagster/fields/token.md new file mode 100644 index 00000000000..9759212a856 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Dagster/fields/token.md @@ -0,0 +1,2 @@ +To Connect to Dagster Cloud + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Dagster/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Dagster/requirements.md new file mode 100644 index 00000000000..aa281baa2cf --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Dagster/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/pipeline/dagster). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/hostPort.md new file mode 100644 index 00000000000..9c339eeb640 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the Databricks service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/httpPath.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/httpPath.md new file mode 100644 index 00000000000..797a014cc65 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/httpPath.md @@ -0,0 +1,2 @@ +Databricks compute resources URL. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/token.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/token.md new file mode 100644 index 00000000000..4c5762d6404 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/fields/token.md @@ -0,0 +1,2 @@ +Generated Token to connect to Databricks. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/requirements.md new file mode 100644 index 00000000000..61b9ba74357 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DatabricksPipeline/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/pipeline/databrickspipeline). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/accessToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/accessToken.md new file mode 100644 index 00000000000..32832470d1c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/accessToken.md @@ -0,0 +1,2 @@ +Access token to connect to DOMO + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/apiHost.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/apiHost.md new file mode 100644 index 00000000000..0871df7f725 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/apiHost.md @@ -0,0 +1,2 @@ +API Host to connect to DOMO instance + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/clientId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/clientId.md new file mode 100644 index 00000000000..d19396d367c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/clientId.md @@ -0,0 +1,2 @@ +Client ID for DOMO + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/sandboxDomain.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/sandboxDomain.md new file mode 100644 index 00000000000..a11225d8f74 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/sandboxDomain.md @@ -0,0 +1,2 @@ +Connect to Sandbox Domain + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/secretToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/secretToken.md new file mode 100644 index 00000000000..c3c5635ddb7 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/fields/secretToken.md @@ -0,0 +1,2 @@ +Secret token to connect to DOMO + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/requirements.md new file mode 100644 index 00000000000..0529b91f1f8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/DomoPipeline/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/pipeline/domopipeline). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/apiKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/apiKey.md new file mode 100644 index 00000000000..21235cce51b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/apiKey.md @@ -0,0 +1,2 @@ +Fivetran API Secret. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/apiSecret.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/apiSecret.md new file mode 100644 index 00000000000..4c41d11c19b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/apiSecret.md @@ -0,0 +1,2 @@ +Fivetran API Secret. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/hostPort.md new file mode 100644 index 00000000000..f2a430da8bd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/hostPort.md @@ -0,0 +1,2 @@ +Pipeline Service Management/UI URI. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/limit.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/limit.md new file mode 100644 index 00000000000..d1b2da19d4d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/fields/limit.md @@ -0,0 +1,2 @@ +Fivetran API Limit For Pagination. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/requirements.md new file mode 100644 index 00000000000..6a9032e4cbb --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Fivetran/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/pipeline/fivetran). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/assumeRoleArn.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/assumeRoleArn.md new file mode 100644 index 00000000000..d0fe4aed2a9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/assumeRoleArn.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/assumeRoleSessionName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/assumeRoleSessionName.md new file mode 100644 index 00000000000..f0fd71c5548 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/assumeRoleSessionName.md @@ -0,0 +1,2 @@ +An identifier for the assumed role session. Use the role session name to uniquely identify a session when the same role is assumed by different principals or for different reasons. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/assumeRoleSourceIdentity.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/assumeRoleSourceIdentity.md new file mode 100644 index 00000000000..274b38a9a68 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/assumeRoleSourceIdentity.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Optional Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsAccessKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsAccessKeyId.md new file mode 100644 index 00000000000..e8bf7cae5ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsAccessKeyId.md @@ -0,0 +1,2 @@ +AWS Access key ID. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsConfig.md new file mode 100644 index 00000000000..64aaae003f0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsConfig.md @@ -0,0 +1,2 @@ +AWS credentials configs. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsRegion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsRegion.md new file mode 100644 index 00000000000..72061900168 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsRegion.md @@ -0,0 +1,2 @@ +AWS Region + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsSecretAccessKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsSecretAccessKey.md new file mode 100644 index 00000000000..586de7f82a1 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsSecretAccessKey.md @@ -0,0 +1,2 @@ +AWS Secret Access Key. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsSessionToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsSessionToken.md new file mode 100644 index 00000000000..52a9938da4a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/awsSessionToken.md @@ -0,0 +1,2 @@ +AWS Session Token. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/endPointURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/endPointURL.md new file mode 100644 index 00000000000..d992901b426 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/endPointURL.md @@ -0,0 +1,2 @@ +EndPoint URL for the AWS + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/profileName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/profileName.md new file mode 100644 index 00000000000..aa7f976a9dd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/fields/profileName.md @@ -0,0 +1,2 @@ +The name of a profile to use with the boto session. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/requirements.md new file mode 100644 index 00000000000..ab3497acc80 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/GluePipeline/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/pipeline/gluepipeline). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Nifi/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Nifi/fields/hostPort.md new file mode 100644 index 00000000000..f2a430da8bd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Nifi/fields/hostPort.md @@ -0,0 +1,2 @@ +Pipeline Service Management/UI URI. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Nifi/fields/nifiConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Nifi/fields/nifiConfig.md new file mode 100644 index 00000000000..775d2c9c55c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Nifi/fields/nifiConfig.md @@ -0,0 +1,2 @@ +We support username/password or client certificate authentication + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Nifi/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Nifi/requirements.md new file mode 100644 index 00000000000..4e38ec8678d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Pipeline/Nifi/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/pipeline/nifi). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/OracleDatabaseSchema/databaseSchema.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/OracleDatabaseSchema/databaseSchema.md new file mode 100644 index 00000000000..991f3f7de53 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/OracleDatabaseSchema/databaseSchema.md @@ -0,0 +1 @@ +Le nom de la base de données. Ce champs est optionel, si vous souhaitez restraindre l'ingestion des métadonnées a une base de données seulement. Si ce champs est omit, OpenMetadata réalisera l'ingestion des metadadonnées de toutes les base de données (en fonction des filtres configurer dans le flux de travail dans la section suivante). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/OracleServiceName/oracleServiceName.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/OracleServiceName/oracleServiceName.md new file mode 100644 index 00000000000..6c1f9ef2072 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/OracleServiceName/oracleServiceName.md @@ -0,0 +1 @@ +L'alias TNS donné à la base de données Oracle lors de la connection à distance. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/hostPort.md new file mode 100644 index 00000000000..bb722c8afde --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/hostPort.md @@ -0,0 +1 @@ +Hôte et port de la base de données Oracle. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/instantClientDirectory.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/instantClientDirectory.md new file mode 100644 index 00000000000..16ce104cfbd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/instantClientDirectory.md @@ -0,0 +1 @@ +Ce dossier sera utilisé pour créer la variable d'environement `LD_LIBRARY_PATH`. Ce champs est requit si vous souhaitez utiliser le mode "thick" de connection. Par default, OpenMetadat utilise "instant client 19" et utilise le dossier `/instantclient`. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/password.md new file mode 100644 index 00000000000..868afecc94a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/password.md @@ -0,0 +1 @@ +Le mot de passe pour se connecter à Oracle \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/scheme.md new file mode 100644 index 00000000000..bb3eaac90f0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/scheme.md @@ -0,0 +1 @@ +Option pour le pilote pour SQLAlchemy \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/username.md new file mode 100644 index 00000000000..6b2d13829b9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/fields/username.md @@ -0,0 +1 @@ +Nom d'utilisateur pour se connecter à Oracle. Cet utilisateur doit avoir la permission d'exécuter des requêtes `CREATE SESSION`. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/requirements.md new file mode 100644 index 00000000000..97aad8a80fd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Oracle/requirements.md @@ -0,0 +1,20 @@ +# Exigences +L'utilisateur doit avoir la permission d'exécuter des requêtes `CREATE SESSION` pour pouvoir aller chercher les métadonnées des tables et vues Oracle. + +```sql +-- CREATE USER +CREATE USER user_name IDENTIFIED BY admin_password; + +-- CREATE ROLE +CREATE ROLE new_role; + +-- GRANT ROLE TO USER +GRANT new_role TO user_name; + +-- GRANT CREATE SESSION PRIVILEGE TO USER +GRANT CREATE SESSION TO new_role; +``` + +**Important:** OpenMetadata utilise `python-oracledb` qui supoorte seulement les version 12c, 18c, 19c, et 21c d'Oracle. + +Vous pourrez également trouver plus de détails dans la [section Oracle](https://docs.open-metadata.org/connectors/database/oracle) de la documentation. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/database.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/database.md new file mode 100644 index 00000000000..dafd1136be4 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/database.md @@ -0,0 +1 @@ +La base de données Redshift à laquelle le service se connectera. Si vous souhaitez ingérer les métadonnées de plusieurs base de données, veuillez selectionner `ingestAllDatabases`. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/hostPort.md new file mode 100644 index 00000000000..1b1b5426b38 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/hostPort.md @@ -0,0 +1 @@ +Hôte et port du cluster Redshift \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/ingestAllDatabases.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/ingestAllDatabases.md new file mode 100644 index 00000000000..306b4263f14 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/ingestAllDatabases.md @@ -0,0 +1 @@ +Si selectionné, le flux de travail pourra ingérer les métadonnées de toutes les base de données dans votre cluster Redshift. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/password.md new file mode 100644 index 00000000000..8ae5adf4599 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/password.md @@ -0,0 +1 @@ +Mot de passe pour se connecter à Redshift. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/scheme.md new file mode 100644 index 00000000000..50169b8757a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/scheme.md @@ -0,0 +1 @@ +Option pour le pilote SQLAlchemy \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/sslMode.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/sslMode.md new file mode 100644 index 00000000000..c93a46f4c87 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/sslMode.md @@ -0,0 +1 @@ +Mode SSL pour se connecter a la base de données Redshift (e.g. `prefer`, `verify-ca`, etc.) \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/username.md new file mode 100644 index 00000000000..4b64a0cb89f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/fields/username.md @@ -0,0 +1 @@ +Le nom d'utilsateur pour se connecter à la base de données Redshift. Cet utilisateur doit pouvoir exécuter, à minima, des requêtes `SELECT` sur la table `SVV_TABLE_INFO`. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/requirements.md new file mode 100644 index 00000000000..432fb2c5c8c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/fr-FR/Database/Redshift/requirements.md @@ -0,0 +1,11 @@ +# Exigences +L'utilisateur Redshift doit avoir la permission d'exécuter les requêtes `SELECT` sur la table `SVV_TABLE_INFO` pour permettre a OpenMetadata d'obtenir les metadonnées des tables et des vues. + +```sql +CREATE USER test_user with PASSWORD 'password'; +GRANT SELECT ON TABLE svv_table_info to test_user; +``` + +Si vous voulez exécuter le profilage et les testes vous devez vous assurer que l'utilisateur utilisé pour le service petu exécuter des requêtes `SELECT` sur les tables et vues. Pour plus d'information vous pouvez visiter la documentation Redshift [ici](https://docs.aws.amazon.com/redshift/latest/dg/c_visibility-of-data.html). + +Vous pourrez également trouver plus de détails dans la [section Redshift](https://docs.open-metadata.org/connectors/database/redshift) de la documentation. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/src/components/AddIngestion/AddIngestion.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/AddIngestion/AddIngestion.component.tsx index 30cc7f11ba9..e83811bec23 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/AddIngestion/AddIngestion.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/AddIngestion/AddIngestion.component.tsx @@ -559,7 +559,7 @@ const AddIngestion = ({ }) .finally(() => { setTimeout(() => setSaveState(LOADING_STATE.INITIAL), 500); - setTimeout(() => setShowDeployModal(false), 500); + setShowDeployModal(false); }); } }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/AddService/AddService.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/AddService/AddService.component.tsx index 6c6b5f04bbe..6ef0bd90ab3 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/AddService/AddService.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/AddService/AddService.component.tsx @@ -11,17 +11,22 @@ * limitations under the License. */ +import { Card } from 'antd'; +import PageLayoutV1 from 'components/containers/PageLayoutV1'; +import { + SERVICE_DEFAULT_ERROR_MAP, + STEPS_FOR_ADD_SERVICE, +} from 'constants/Services.constant'; +import { useAirflowStatus } from 'hooks/useAirflowStatus'; import { t } from 'i18next'; -import { capitalize, isUndefined } from 'lodash'; +import { capitalize, cloneDeep, isUndefined } from 'lodash'; import { LoadingState } from 'Models'; -import React, { useState } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import { useHistory } from 'react-router-dom'; import { getServiceDetailsPath } from '../../constants/constants'; import { GlobalSettingsMenuCategory } from '../../constants/GlobalSettings.constants'; -import { STEPS_FOR_ADD_SERVICE } from '../../constants/Ingestions.constant'; import { delimiterRegex, nameWithSpace } from '../../constants/regex.constants'; import { FormSubmitType } from '../../enums/form.enum'; -import { PageLayoutType } from '../../enums/layout.enum'; import { ServiceCategory } from '../../enums/service.enum'; import { PipelineType } from '../../generated/entity/services/ingestionPipelines/ingestionPipeline'; import { ConfigData, DataObj } from '../../interface/service.interface'; @@ -29,18 +34,19 @@ import { getCurrentUserId, isUrlFriendlyName } from '../../utils/CommonUtils'; import { getAddServicePath, getSettingPath } from '../../utils/RouterUtils'; import { getServiceCreatedLabel, - getServiceIngestionStepGuide, getServiceRouteFromServiceType, + getServiceType, } from '../../utils/ServiceUtils'; import AddIngestion from '../AddIngestion/AddIngestion.component'; +import ServiceRightPanel from '../common/ServiceRightPanel/ServiceRightPanel'; import SuccessScreen from '../common/success-screen/SuccessScreen'; import TitleBreadcrumb from '../common/title-breadcrumb/title-breadcrumb.component'; -import PageLayout from '../containers/PageLayout'; import IngestionStepper from '../IngestionStepper/IngestionStepper.component'; import ConnectionConfigForm from '../ServiceConfig/ConnectionConfigForm'; import { AddServiceProps } from './AddService.interface'; import ConfigureService from './Steps/ConfigureService'; import SelectServiceType from './Steps/SelectServiceType'; +import ServiceRequirements from './Steps/ServiceRequirements'; const AddService = ({ serviceCategory, @@ -56,20 +62,13 @@ const AddService = ({ slashedBreadcrumb, addIngestion, handleAddIngestion, - onAirflowStatusCheck, }: AddServiceProps) => { const history = useHistory(); - const [showErrorMessage, setShowErrorMessage] = useState({ - serviceType: false, - name: false, - duplicateName: false, - nameWithSpace: false, - delimit: false, - specialChar: false, - nameLength: false, - allowChar: false, - isError: false, - }); + const { fetchAirflowStatus } = useAirflowStatus(); + + const [showErrorMessage, setShowErrorMessage] = useState( + SERVICE_DEFAULT_ERROR_MAP + ); const [activeServiceStep, setActiveServiceStep] = useState(1); const [activeIngestionStep, setActiveIngestionStep] = useState(1); const [selectServiceType, setSelectServiceType] = useState(''); @@ -77,25 +76,22 @@ const AddService = ({ const [description, setDescription] = useState(''); const [saveServiceState, setSaveServiceState] = useState('initial'); - const [isAirflowRunning, setIsAirflowRunning] = useState(true); - - const resetServiceData = () => { - setServiceName(''); - setDescription(''); - }; + const [activeField, setActiveField] = useState(''); const handleServiceTypeClick = (type: string) => { setShowErrorMessage({ ...showErrorMessage, serviceType: false }); - resetServiceData(); + setServiceName(''); + setDescription(''); setSelectServiceType(type); }; - const serviceCategoryHandler = (category: ServiceCategory) => { + const handleServiceCategoryChange = (category: ServiceCategory) => { setShowErrorMessage({ ...showErrorMessage, serviceType: false }); setSelectServiceType(''); history.push(getAddServicePath(category)); }; + // Select service const handleSelectServiceCancel = () => { history.push( getSettingPath( @@ -113,58 +109,41 @@ const AddService = ({ } }; - const handleConfigureServiceBackClick = () => { - setActiveServiceStep(1); - }; + // Service requirements + const handleServiceRequirementsBackClick = () => setActiveServiceStep(1); + const handleServiceRequirementsNextClick = () => setActiveServiceStep(3); + // Configure service name + const handleConfigureServiceBackClick = () => setActiveServiceStep(2); const handleConfigureServiceNextClick = (descriptionValue: string) => { - setDescription(descriptionValue); + setDescription(descriptionValue.trim()); - if (!serviceName.trim()) { - setShowErrorMessage({ ...showErrorMessage, name: true, isError: true }); - } else if (nameWithSpace.test(serviceName)) { - setShowErrorMessage({ - ...showErrorMessage, - nameWithSpace: true, - isError: true, - }); - } else if (delimiterRegex.test(serviceName)) { - setShowErrorMessage({ - ...showErrorMessage, - delimit: true, - isError: true, - }); - } else if (!isUrlFriendlyName(serviceName.trim())) { - setShowErrorMessage({ - ...showErrorMessage, - specialChar: true, - isError: true, - }); - } else if (serviceName.length < 1 || serviceName.length > 128) { - setShowErrorMessage({ - ...showErrorMessage, - nameLength: true, - isError: true, - }); - } else if (!showErrorMessage.isError) { - setActiveServiceStep(3); + const trimmedServiceName = serviceName.trim(); + + let errorObj = cloneDeep(showErrorMessage); + + if (!trimmedServiceName) { + errorObj = { ...errorObj, name: true }; + } else if (nameWithSpace.test(trimmedServiceName)) { + errorObj = { ...errorObj, nameWithSpace: true }; + } else if (delimiterRegex.test(trimmedServiceName)) { + errorObj = { ...errorObj, delimit: true }; + } else if (!isUrlFriendlyName(trimmedServiceName)) { + errorObj = { ...errorObj, specialChar: true }; + } else if ( + trimmedServiceName.length < 1 || + trimmedServiceName.length > 128 + ) { + errorObj = { ...errorObj, nameLength: true }; + } else { + setActiveServiceStep(4); } + setShowErrorMessage(errorObj); }; - const handleAirflowStatusCheck = () => { - return new Promise((resolve) => { - onAirflowStatusCheck() - .then(() => { - setIsAirflowRunning(true); - }) - .catch(() => { - setIsAirflowRunning(false); - }) - .finally(() => resolve()); - }); - }; - - const handleConfigUpdate = (oData: ConfigData) => { + // Service connection + const handleConnectionDetailsBackClick = () => setActiveServiceStep(3); + const handleConfigUpdate = async (newConfigData: ConfigData) => { const data = { name: serviceName, serviceType: selectServiceType, @@ -177,37 +156,32 @@ const AddService = ({ const configData = { ...data, connection: { - config: oData, + config: newConfigData, }, }; + setSaveServiceState('waiting'); + try { + await onAddServiceSave(configData); - return new Promise((resolve, reject) => { - setSaveServiceState('waiting'); - onAddServiceSave(configData) - .then(() => { - handleAirflowStatusCheck().finally(() => { - setActiveServiceStep(4); - resolve(); - }); - }) - .catch((err) => { - reject(err); - }) - .finally(() => setSaveServiceState('initial')); - }); - }; - - const handleConnectionDetailsBackClick = () => { - setActiveServiceStep(2); + setActiveServiceStep(5); + + await fetchAirflowStatus(); + } catch (error) { + return error; + } finally { + setSaveServiceState('initial'); + } }; + // View new service const handleViewServiceClick = () => { if (!isUndefined(newServiceData)) { history.push(getServiceDetailsPath(newServiceData.name, serviceCategory)); } }; - const handleValidation = ( + // Service name validation + const handleServiceNameValidation = ( event: React.ChangeEvent ) => { const value = event.target.value; @@ -216,7 +190,6 @@ const AddService = ({ setShowErrorMessage({ ...showErrorMessage, name: false, - isError: false, delimit: false, specialChar: false, nameLength: false, @@ -224,132 +197,145 @@ const AddService = ({ } }; - const addNewService = () => { - return ( -
-
- {t('label.add-new-entity', { entity: t('label.service') })} -
- -
- {activeServiceStep === 1 && ( - - )} + // Service focused field + const handleFieldFocus = (fieldName: string) => setActiveField(fieldName); - {activeServiceStep === 2 && ( - - )} + // Flag to check if pipeline is deployed or not + const isDeployed = useMemo( + () => activeIngestionStep >= 3 && !showDeployButton, + [activeIngestionStep, showDeployButton] + ); - {activeServiceStep === 3 && ( - { - handleConfigUpdate(e.formData); - }} - /> - )} + // rendering - {activeServiceStep > 3 && ( - handleAddIngestion(true)} - handleViewServiceClick={handleViewServiceClick} - name={serviceName} - state={FormSubmitType.ADD} - suffix={getServiceCreatedLabel(serviceCategory)} - /> - )} -
+ const addNewServiceElement = ( +
+
+ {t('label.add-new-entity', { entity: t('label.service') })} +
+ +
+ {activeServiceStep === 1 && ( + + )} + + {activeServiceStep === 2 && ( + + )} + + {activeServiceStep === 3 && ( + + )} + + {activeServiceStep === 4 && ( + { + handleConfigUpdate(e.formData); + }} + /> + )} + + {activeServiceStep > 4 && ( + handleAddIngestion(true)} + handleViewServiceClick={handleViewServiceClick} + name={serviceName} + state={FormSubmitType.ADD} + suffix={getServiceCreatedLabel(serviceCategory)} + /> + )}
- ); - }; +
+ ); - const isDeployed = () => { - return activeIngestionStep >= 3 && !showDeployButton; - }; - - const fetchRightPanel = () => { - const stepData = addIngestion ? activeIngestionStep : activeServiceStep; - - return getServiceIngestionStepGuide( - stepData, - addIngestion, - `${serviceName}_${PipelineType.Metadata}`, - serviceName, - PipelineType.Metadata, - isDeployed(), - false, - isAirflowRunning - ); - }; + useEffect(() => { + setActiveField(''); + }, [activeIngestionStep, activeServiceStep]); return ( -
- {' '} - } - layout={PageLayoutType['2ColRTL']} - pageTitle={t('label.add-entity', { entity: t('label.service') })} - rightPanel={fetchRightPanel()}> -
- {addIngestion ? ( - handleAddIngestion(false)} - handleViewServiceClick={handleViewServiceClick} - heading={`${t('label.add-workflow-ingestion', { - workflow: capitalize(PipelineType.Metadata), - })}`} - ingestionAction={ingestionAction} - ingestionProgress={ingestionProgress} - isIngestionCreated={isIngestionCreated} - isIngestionDeployed={isIngestionDeployed} - pipelineType={PipelineType.Metadata} - serviceCategory={serviceCategory} - serviceData={newServiceData as DataObj} - setActiveIngestionStep={(step) => setActiveIngestionStep(step)} - showDeployButton={showDeployButton} - status={FormSubmitType.ADD} - onAddIngestionSave={onAddIngestionSave} - onIngestionDeploy={onIngestionDeploy} - /> - ) : ( - addNewService() - )} -
-
-
+ } + pageTitle={t('label.add-entity', { entity: t('label.service') })} + rightPanel={ + + }> + + {addIngestion ? ( + handleAddIngestion(false)} + handleViewServiceClick={handleViewServiceClick} + heading={`${t('label.add-workflow-ingestion', { + workflow: capitalize(PipelineType.Metadata), + })}`} + ingestionAction={ingestionAction} + ingestionProgress={ingestionProgress} + isIngestionCreated={isIngestionCreated} + isIngestionDeployed={isIngestionDeployed} + pipelineType={PipelineType.Metadata} + serviceCategory={serviceCategory} + serviceData={newServiceData as DataObj} + setActiveIngestionStep={(step) => setActiveIngestionStep(step)} + showDeployButton={showDeployButton} + status={FormSubmitType.ADD} + onAddIngestionSave={onAddIngestionSave} + onIngestionDeploy={onIngestionDeploy} + /> + ) : ( + addNewServiceElement + )} + + ); }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/AddService/AddService.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/AddService/AddService.interface.ts index 23b1d59a448..b7a32835491 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/AddService/AddService.interface.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/AddService/AddService.interface.ts @@ -30,5 +30,4 @@ export interface AddServiceProps { showDeployButton?: boolean; slashedBreadcrumb: TitleBreadcrumbProps['titleLinks']; onIngestionDeploy?: () => Promise; - onAirflowStatusCheck: () => Promise; } diff --git a/openmetadata-ui/src/main/resources/ui/src/components/AddService/AddService.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/AddService/AddService.test.tsx index 66169ad69f9..889fa92fcf9 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/AddService/AddService.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/AddService/AddService.test.tsx @@ -17,7 +17,7 @@ import { ServiceCategory } from '../../enums/service.enum'; import AddService from './AddService.component'; jest.mock( - '../containers/PageLayout', + 'components/containers/PageLayoutV1', () => ({ children, @@ -54,6 +54,14 @@ jest.mock('../IngestionStepper/IngestionStepper.component', () => { return jest.fn().mockImplementation(() =>
IngestionStepper
); }); +jest.mock('./Steps/ServiceRequirements', () => { + return jest.fn().mockReturnValue(
Service Requirements
); +}); + +jest.mock('../common/ServiceRightPanel/ServiceRightPanel', () => { + return jest.fn().mockReturnValue(
Right Panel
); +}); + describe('Test AddService component', () => { it('AddService component should render', async () => { const { container } = render( @@ -74,7 +82,6 @@ describe('Test AddService component', () => { ]} onAddIngestionSave={jest.fn()} onAddServiceSave={jest.fn()} - onAirflowStatusCheck={jest.fn()} /> ); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/ConfigureService.tsx b/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/ConfigureService.tsx index c6680321ab5..7aece1b0b67 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/ConfigureService.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/ConfigureService.tsx @@ -11,10 +11,10 @@ * limitations under the License. */ +import { Button } from 'antd'; import { t } from 'i18next'; import React, { useRef } from 'react'; import { errorMsg, requiredField } from '../../../utils/CommonUtils'; -import { Button } from '../../buttons/Button/Button'; import RichTextEditor from '../../common/rich-text-editor/RichTextEditor'; import { EditorContentRef } from '../../common/rich-text-editor/RichTextEditor.interface'; import { Field } from '../../Field/Field'; @@ -85,22 +85,19 @@ const ConfigureService = ({
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/SelectServiceType.tsx b/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/SelectServiceType.tsx index 132e680d34c..683c554632e 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/SelectServiceType.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/SelectServiceType.tsx @@ -11,7 +11,7 @@ * limitations under the License. */ -import { Button, Col, Row, Select } from 'antd'; +import { Button, Col, Row, Select, Space } from 'antd'; import classNames from 'classnames'; import { startCase } from 'lodash'; import React, { useEffect, useMemo, useState } from 'react'; @@ -77,93 +77,94 @@ const SelectServiceType = ({ ); return ( -
- - - { + setConnectorSearchTerm(''); + serviceCategoryHandler(value as ServiceCategory); + }} + /> + + + + + + {filteredConnectors.map((type) => ( + handleServiceTypeClick(type)}> + +
+
+ {getServiceLogo(type || '', 'tw-h-9')} +
+
+ {type === selectServiceType && ( + + )}
-

- {type.includes('Custom') ? startCase(type) : type} -

- ))} -
- - {showError && - errorMsg( - t('message.field-text-is-required', { - fieldText: t('label.service'), - }) - )} - +

+ {type.includes('Custom') ? startCase(type) : type} +

+ + + ))} + - - + {showError && + errorMsg( + t('message.field-text-is-required', { + fieldText: t('label.service'), + }) + )} + - - - - + + + + + + ); }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/ServiceRequirements.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/ServiceRequirements.test.tsx new file mode 100644 index 00000000000..9297bf2b189 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/ServiceRequirements.test.tsx @@ -0,0 +1,84 @@ +/* + * Copyright 2023 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { act, fireEvent, render, screen } from '@testing-library/react'; +import React from 'react'; +import ServiceRequirements from './ServiceRequirements'; + +jest.mock('components/Loader/Loader', () => + jest.fn().mockReturnValue(
Loader
) +); + +jest.mock('components/common/rich-text-editor/RichTextEditorPreviewer', () => + jest + .fn() + .mockImplementation(({ markdown }) => ( +
{markdown}
+ )) +); + +jest.mock('rest/miscAPI', () => ({ + fetchMarkdownFile: jest + .fn() + .mockImplementation(() => Promise.resolve('markdown text')), +})); + +const mockOnBack = jest.fn(); +const mockOnNext = jest.fn(); + +const mockProps = { + serviceName: 'Test Service', + serviceType: 'Test Type', + onBack: mockOnBack, + onNext: mockOnNext, +}; + +describe('ServiceRequirements Component', () => { + it('Should render the requirements and action buttons', async () => { + await act(async () => { + render(); + }); + + expect(screen.getByTestId('service-requirements')).toBeInTheDocument(); + + const requirementTextElement = screen.getByTestId('requirement-text'); + + expect(requirementTextElement).toBeInTheDocument(); + + expect(requirementTextElement).toHaveTextContent('markdown text'); + + expect(screen.getByTestId('previous-button')).toBeInTheDocument(); + expect(screen.getByTestId('next-button')).toBeInTheDocument(); + }); + + it('Should call onCancel when previous button is clicked', async () => { + await act(async () => { + render(); + }); + + fireEvent.click(screen.getByTestId('previous-button')); + + expect(mockProps.onBack).toHaveBeenCalled(); + expect(mockProps.onNext).not.toHaveBeenCalled(); + }); + + it('Should call onNext when next button is clicked', async () => { + await act(async () => { + render(); + }); + + fireEvent.click(screen.getByTestId('next-button')); + + expect(mockProps.onBack).not.toHaveBeenCalled(); + expect(mockProps.onNext).toHaveBeenCalled(); + }); +}); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/ServiceRequirements.tsx b/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/ServiceRequirements.tsx new file mode 100644 index 00000000000..2411fea15ef --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/components/AddService/Steps/ServiceRequirements.tsx @@ -0,0 +1,109 @@ +/* + * Copyright 2023 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Button, Col, Row } from 'antd'; +import RichTextEditorPreviewer from 'components/common/rich-text-editor/RichTextEditorPreviewer'; +import Loader from 'components/Loader/Loader'; +import React, { FC, useEffect, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { fetchMarkdownFile } from 'rest/miscAPI'; +import { SupportedLocales } from 'utils/i18next/i18nextUtil'; + +interface ServiceRequirementsProp { + serviceName: string; + serviceType: string; + onBack: () => void; + onNext: () => void; +} + +const ServiceRequirements: FC = ({ + serviceType, + serviceName, + onBack, + onNext, +}) => { + const { t, i18n } = useTranslation(); + + const [isLoading, setIsLoading] = useState(false); + + const [markdownContent, setMarkdownContent] = useState(''); + + const fetchRequirement = async () => { + setIsLoading(true); + try { + let response = ''; + const isEnglishLanguage = i18n.language === SupportedLocales.English; + const filePath = `${i18n.language}/${serviceType}/${serviceName}/requirements.md`; + const fallbackFilePath = `${SupportedLocales.English}/${serviceType}/${serviceName}/requirements.md`; + + const [translation, fallbackTranslation] = await Promise.allSettled([ + fetchMarkdownFile(filePath), + isEnglishLanguage + ? Promise.reject('') + : fetchMarkdownFile(fallbackFilePath), + ]); + + if (translation.status === 'fulfilled') { + response = translation.value; + } + + if (isEnglishLanguage && fallbackTranslation.status === 'fulfilled') { + response = fallbackTranslation.value; + } + + setMarkdownContent(response); + } catch (error) { + setMarkdownContent(''); + } finally { + setIsLoading(false); + } + }; + + useEffect(() => { + fetchRequirement(); + }, [serviceName, serviceType]); + + if (isLoading) { + return ; + } + + return ( + + + + + + + + + + + ); +}; + +export default ServiceRequirements; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ServiceConfig/ConnectionConfigForm.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ServiceConfig/ConnectionConfigForm.tsx index ddb41b902b3..492ade3c2ef 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/ServiceConfig/ConnectionConfigForm.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/ServiceConfig/ConnectionConfigForm.tsx @@ -41,9 +41,10 @@ interface Props { serviceType: string; serviceCategory: ServiceCategory; status: LoadingState; - onCancel?: () => void; + onFocus: (fieldName: string) => void; onSave: (data: ISubmitEvent) => void; disableTestConnection?: boolean; + onCancel?: () => void; } const ConnectionConfigForm: FunctionComponent = ({ @@ -55,6 +56,7 @@ const ConnectionConfigForm: FunctionComponent = ({ status, onCancel, onSave, + onFocus, disableTestConnection = false, }: Props) => { const config = !isNil(data) @@ -66,7 +68,7 @@ const ConnectionConfigForm: FunctionComponent = ({ onSave({ ...data, formData: updatedFormData }); }; - const getDatabaseFields = () => { + const getConfigFields = () => { let connSch = { schema: {}, uiSchema: {}, @@ -131,12 +133,13 @@ const ConnectionConfigForm: FunctionComponent = ({ status={status} uiSchema={connSch.uiSchema} onCancel={onCancel} + onFocus={onFocus} onSubmit={handleSave} /> ); }; - return {getDatabaseFields()}; + return {getConfigFields()}; }; export default ConnectionConfigForm; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/ServiceConfig/ServiceConfig.tsx b/openmetadata-ui/src/main/resources/ui/src/components/ServiceConfig/ServiceConfig.tsx index 3fbf1100c03..fdab92a8465 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/ServiceConfig/ServiceConfig.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/ServiceConfig/ServiceConfig.tsx @@ -34,6 +34,7 @@ interface ServiceConfigProps { serviceCategory: ServiceCategory ) => Promise; disableTestConnection: boolean; + onFocus: (fieldName: string) => void; } export const Field = ({ children }: { children: React.ReactNode }) => { @@ -47,6 +48,7 @@ const ServiceConfig = ({ data, handleUpdate, disableTestConnection, + onFocus, }: ServiceConfigProps) => { const history = useHistory(); const [status, setStatus] = useState('initial'); @@ -87,6 +89,7 @@ const ServiceConfig = ({ serviceType={serviceType} status={status} onCancel={onCancel} + onFocus={onFocus} onSave={handleOnSaveClick} /> ); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Skeleton/Skeleton.interfaces.ts b/openmetadata-ui/src/main/resources/ui/src/components/Skeleton/Skeleton.interfaces.ts index 5499538fd53..ea0853b0a64 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Skeleton/Skeleton.interfaces.ts +++ b/openmetadata-ui/src/main/resources/ui/src/components/Skeleton/Skeleton.interfaces.ts @@ -33,7 +33,7 @@ export interface ButtonSkeletonProps extends SkeletonButtonProps, Partial {} -export interface LabelCountSkeletonProps extends SkeletonProps, Partial { +export interface LabelCountSkeletonProps extends SkeletonProps, Key { isSelect?: boolean; isLabel?: boolean; isCount?: boolean; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilder/FormBuilder.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilder/FormBuilder.tsx index ecb14f1f8d1..0c0a5ce3357 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilder/FormBuilder.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/FormBuilder/FormBuilder.tsx @@ -14,6 +14,7 @@ import { CheckOutlined } from '@ant-design/icons'; import Form from '@rjsf/antd'; import CoreForm, { AjvError, FormProps, IChangeEvent } from '@rjsf/core'; +import { Button as AntDButton } from 'antd'; import classNames from 'classnames'; import { ServiceCategory } from 'enums/service.enum'; import { useAirflowStatus } from 'hooks/useAirflowStatus'; @@ -24,7 +25,6 @@ import React, { FunctionComponent, useEffect, useRef, useState } from 'react'; import { getPipelineServiceHostIp } from 'rest/ingestionPipelineAPI'; import { ConfigData } from '../../../interface/service.interface'; import { formatFormDataForRender } from '../../../utils/JSONSchemaFormUtils'; -import { Button } from '../../buttons/Button/Button'; import { ArrayFieldTemplate } from '../../JSONSchemaTemplate/ArrayFieldTemplate'; import { ObjectFieldTemplate } from '../../JSONSchemaTemplate/ObjectFieldTemplate'; import Loader from '../../Loader/Loader'; @@ -40,6 +40,7 @@ interface Props extends FormProps { showFormHeader?: boolean; status?: LoadingState; onCancel?: () => void; + onFocus: (fieldName: string) => void; } const FormBuilder: FunctionComponent = ({ @@ -53,6 +54,7 @@ const FormBuilder: FunctionComponent = ({ onSubmit, uiSchema, disableTestConnection, + onFocus, serviceCategory, serviceType, serviceName, @@ -116,6 +118,7 @@ const FormBuilder: FunctionComponent = ({ 'no-header': !showFormHeader, })} formData={localFormData} + idSeparator="/" ref={formRef} schema={schema} showErrorList={false} @@ -125,6 +128,7 @@ const FormBuilder: FunctionComponent = ({ handleChange(e.formData); props.onChange && props.onChange(e); }} + onFocus={onFocus} onSubmit={onSubmit} {...props}> {isEmpty(schema) && ( @@ -153,41 +157,31 @@ const FormBuilder: FunctionComponent = ({
- + {status === 'waiting' ? ( - + ) : status === 'success' ? ( - + ) : ( - + )}
diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/ServiceRightPanel/ServiceRightPanel.interface.ts b/openmetadata-ui/src/main/resources/ui/src/components/common/ServiceRightPanel/ServiceRightPanel.interface.ts new file mode 100644 index 00000000000..0907103db1d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/ServiceRightPanel/ServiceRightPanel.interface.ts @@ -0,0 +1,34 @@ +/* + * Copyright 2023 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ServiceCategory } from 'enums/service.enum'; +import { PipelineType } from 'generated/api/services/ingestionPipelines/createIngestionPipeline'; + +export type ExcludedPipelineType = Exclude< + PipelineType, + | PipelineType.DataInsight + | PipelineType.ElasticSearchReindex + | PipelineType.TestSuite +>; + +export interface RightPanelProps { + activeStep: number; + isIngestion: boolean; + serviceName: string; + isUpdating: boolean; + selectedService: string; + selectedServiceCategory: ServiceCategory; + showDeployedTitle?: boolean; + pipelineType?: ExcludedPipelineType; + ingestionName?: string; + activeField?: string; +} diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/ServiceRightPanel/ServiceRightPanel.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/ServiceRightPanel/ServiceRightPanel.test.tsx new file mode 100644 index 00000000000..df19e76d070 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/ServiceRightPanel/ServiceRightPanel.test.tsx @@ -0,0 +1,84 @@ +/* + * Copyright 2023 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { act, render, screen } from '@testing-library/react'; +import { ServiceCategory } from 'enums/service.enum'; +import { PipelineType } from 'generated/api/services/ingestionPipelines/createIngestionPipeline'; +import React from 'react'; +import RightPanel from './ServiceRightPanel'; +import { ExcludedPipelineType } from './ServiceRightPanel.interface'; + +jest.mock('components/common/rich-text-editor/RichTextEditorPreviewer', () => + jest + .fn() + .mockImplementation(({ markdown }) => ( +
{markdown}
+ )) +); + +jest.mock('rest/miscAPI', () => ({ + fetchMarkdownFile: jest + .fn() + .mockImplementation(() => Promise.resolve('markdown text')), +})); + +const mockProps = { + isIngestion: false, + pipelineType: PipelineType.Metadata as ExcludedPipelineType, + activeStep: 1, + isAirflowRunning: true, + showDeployedTitle: true, + isUpdating: false, + ingestionName: 'service_ingestion', + serviceName: 'service', + activeField: 'root_username', + selectedServiceCategory: ServiceCategory.DATABASE_SERVICES, + selectedService: 'Mysql', +}; + +describe('Right Panel Component', () => { + it('Should render the active field doc', async () => { + await act(async () => { + render(); + }); + + const activeFieldName = screen.getByTestId('active-field-name'); + + expect(activeFieldName).toBeInTheDocument(); + + expect(activeFieldName).toHaveTextContent('Username'); + + const activeFieldDocumentElement = screen.getByTestId('requirement-text'); + + expect(activeFieldDocumentElement).toBeInTheDocument(); + + expect(activeFieldDocumentElement).toHaveTextContent('markdown text'); + }); + + it('Should render the current step guide if active field is empty', async () => { + await act(async () => { + render(); + }); + + expect(screen.queryByTestId('active-field-name')).not.toBeInTheDocument(); + + const activeFieldDocumentElement = screen.queryByTestId('requirement-text'); + + expect(activeFieldDocumentElement).not.toBeInTheDocument(); + + expect(screen.getByText('label.add-a-new-service')).toBeInTheDocument(); + + expect( + screen.getByText('message.add-new-service-description') + ).toBeInTheDocument(); + }); +}); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/ServiceRightPanel/ServiceRightPanel.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/ServiceRightPanel/ServiceRightPanel.tsx new file mode 100644 index 00000000000..42290faf958 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/ServiceRightPanel/ServiceRightPanel.tsx @@ -0,0 +1,194 @@ +/* + * Copyright 2023 Collate. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Affix, Card } from 'antd'; +import RichTextEditorPreviewer from 'components/common/rich-text-editor/RichTextEditorPreviewer'; +import Loader from 'components/Loader/Loader'; +import { oneofOrEndsWithNumberRegex } from 'constants/regex.constants'; +import { + addServiceGuide, + addServiceGuideWOAirflow, +} from 'constants/service-guide.constant'; +import { INGESTION_GUIDE_MAP } from 'constants/Services.constant'; +import { useAirflowStatus } from 'hooks/useAirflowStatus'; +import { first, last, startCase } from 'lodash'; +import React, { FC, useEffect, useMemo, useRef, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { fetchMarkdownFile } from 'rest/miscAPI'; +import { SupportedLocales } from 'utils/i18next/i18nextUtil'; +import { getFormattedGuideText, getServiceType } from 'utils/ServiceUtils'; +import { RightPanelProps } from './ServiceRightPanel.interface'; + +const RightPanel: FC = ({ + isIngestion, + pipelineType, + activeStep, + isUpdating, + ingestionName, + serviceName, + activeField, + selectedServiceCategory, + selectedService, + showDeployedTitle = false, +}) => { + const panelContainerRef = useRef(null); + + const { isAirflowAvailable } = useAirflowStatus(); + const { t, i18n } = useTranslation(); + + const [activeFieldDocument, setActiveFieldDocument] = useState(''); + const [isLoading, setIsLoading] = useState(false); + + const activeStepGuide = useMemo(() => { + let guideTemp; + + if (isIngestion && pipelineType) { + guideTemp = INGESTION_GUIDE_MAP[pipelineType]?.find( + (item) => item.step === activeStep + ); + } else { + guideTemp = + !isAirflowAvailable && activeStep === 4 + ? addServiceGuideWOAirflow + : addServiceGuide.find((item) => item.step === activeStep); + } + + return guideTemp; + }, [isIngestion, pipelineType, isAirflowAvailable, activeStep]); + + const activeFieldName = useMemo(() => { + /** + * active field is like root_fieldName + * so we need to split and get the fieldName + */ + const fieldNameArr = activeField?.split('/'); + + const fieldName = last(fieldNameArr); + + // check if activeField is select or list field + if (oneofOrEndsWithNumberRegex.test(fieldName ?? '')) { + return first(fieldName?.split('_')); + } else { + return fieldName; + } + }, [activeField]); + + const showActiveFieldElement = Boolean( + activeFieldName && activeFieldDocument + ); + + const shouldFetchFieldDoc = Boolean( + selectedService && selectedServiceCategory && activeFieldName + ); + + const getActiveStepTitle = (title: string) => { + const deployMessage = showDeployedTitle ? ` & ${t('label.deployed')}` : ''; + const updateTitle = title.replace( + t('label.added'), + `${t('label.updated')}${deployMessage}` + ); + const newTitle = showDeployedTitle + ? title.replace(t('label.added'), `${t('label.added')}${deployMessage}`) + : title; + + return isUpdating ? updateTitle : newTitle; + }; + + const getActiveStepDescription = (description: string) => { + const replaceText = isIngestion + ? `<${t('label.ingestion-pipeline-name')}>` + : `<${t('label.service-name')}>`; + + const replacement = isIngestion ? ingestionName || '' : serviceName; + + return getFormattedGuideText(description, replaceText, replacement); + }; + + const fetchFieldDocument = async () => { + const serviceType = getServiceType(selectedServiceCategory); + setIsLoading(true); + try { + let response = ''; + const isEnglishLanguage = i18n.language === SupportedLocales.English; + const filePath = `${i18n.language}/${serviceType}/${selectedService}/fields/${activeFieldName}.md`; + const fallbackFilePath = `${SupportedLocales.English}/${serviceType}/${selectedService}/fields/${activeFieldName}.md`; + + const [translation, fallbackTranslation] = await Promise.allSettled([ + fetchMarkdownFile(filePath), + isEnglishLanguage + ? Promise.reject('') + : fetchMarkdownFile(fallbackFilePath), + ]); + + if (translation.status === 'fulfilled') { + response = translation.value; + } + + if (isEnglishLanguage && fallbackTranslation.status === 'fulfilled') { + response = fallbackTranslation.value; + } + + setActiveFieldDocument(response); + } catch (error) { + setActiveFieldDocument(''); + } finally { + setIsLoading(false); + } + }; + + const handleAffixTarget = () => document.getElementById('page-container-v1'); + + useEffect(() => { + // only fetch file when required fields are present + if (shouldFetchFieldDoc) { + fetchFieldDocument(); + } + }, [shouldFetchFieldDoc]); + + const activeStepGuideElement = activeStepGuide ? ( + <> +
+ {getActiveStepTitle(activeStepGuide.title)} +
+
+ {getActiveStepDescription(activeStepGuide.description)} +
+ + ) : null; + + const activeFieldDocumentElement = activeFieldName ? ( + <> +
+ {startCase(activeFieldName)} +
+ + + ) : null; + + const renderElement = showActiveFieldElement + ? activeFieldDocumentElement + : activeStepGuideElement; + + return ( +
+ + {isLoading ? : renderElement} + +
+ ); +}; + +export default RightPanel; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/TestConnection/TestConnection.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/TestConnection/TestConnection.tsx index b19015bc34d..df5e6b0ac33 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/TestConnection/TestConnection.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/TestConnection/TestConnection.tsx @@ -34,8 +34,8 @@ import { } from 'rest/workflowAPI'; import { formatFormDataForSubmit } from 'utils/JSONSchemaFormUtils'; import { + getServiceType, getTestConnectionName, - getTestConnectionType, shouldTestConnection, } from 'utils/ServiceUtils'; @@ -105,7 +105,7 @@ const TestConnection: FC = ({ }, [formData]); const serviceType = useMemo(() => { - return getTestConnectionType(serviceCategory); + return getServiceType(serviceCategory); }, [serviceCategory]); const allowTestConn = useMemo(() => { diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/rich-text-editor/RichTextEditorPreviewer.less b/openmetadata-ui/src/main/resources/ui/src/components/common/rich-text-editor/RichTextEditorPreviewer.less index 8f5c7b6d518..38142d42b29 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/rich-text-editor/RichTextEditorPreviewer.less +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/rich-text-editor/RichTextEditorPreviewer.less @@ -13,50 +13,88 @@ @body-text-color: #37352f; @badge-color: #d5d8dc; -@while-color: #ffffff; +@white-color: #ffffff; @border-radius: 6px; @primary-color: #7147e8; +@grey-color: #6b7280; +@code-block: #ebeff4; +@table-bg: #fafafa; +@table-header-color: #5e5c58; +@table-border-color: #f0f0f0; .markdown-parser { .toastui-editor-contents { font-size: 14px; h1, - h2 { - border-bottom: 1px solid @badge-color; + h2, + h3, + h4, + h5, + h6 { + margin: 0px !important; + padding-top: 24px !important; + border: none; + padding: 0px; } blockquote { - padding: 0px 16px; + padding: 0px 8px; + border-left: 4px solid @grey-color; + border-radius: 2px; } code { color: @body-text-color; - background-color: @badge-color; + border: 1px solid @grey-color; + border-radius: 4px; + background-color: transparent; } pre { - background-color: @badge-color; + background-color: @code-block; border-radius: @border-radius; + padding: 16px; code { background-color: transparent; + font-size: 14px; + border: none; } } table { width: 100%; overflow: auto; - th { - background-color: @badge-color; - color: @body-text-color; - font-weight: bold; + text-align: left; + border-radius: 4px; + border-collapse: separate; + border-spacing: 0; + thead { + th { + background-color: @table-bg; + font-weight: 600; + color: @table-header-color; + border-right: 1px solid @table-border-color; + text-align: left; + } + } + + tr { + &:hover { + background-color: @table-bg; + } + td { + border-right: none; + border-bottom: 1px solid #f0f0f0; + } } } p { - margin-top: 0px; - margin-bottom: 10px; + margin-top: 10px; + margin-bottom: 0px; color: @body-text-color; word-break: break-word; + line-height: 20px; &:last-child { margin-bottom: 0px; } @@ -64,6 +102,21 @@ img { border-radius: @border-radius; + margin-top: 10px; + } + .task-list-item { + border-radius: 0.125rem; + border-width: 1px; + border-color: @body-text-color; + } + .task-list-item.checked { + background-size: 100% 100%; + background-position: center; + background-repeat: no-repeat; + &::before { + background-image: url('data:image/svg+xml,%3csvg viewBox=%270 0 16 16%27 fill=%27white%27 xmlns=%27http://www.w3.org/2000/svg%27%3e%3cpath d=%27M5.707 7.293a1 1 0 0 0-1.414 1.414l2 2a1 1 0 0 0 1.414 0l4-4a1 1 0 0 0-1.414-1.414L7 8.586 5.707 7.293z%27/%3e%3c/svg%3e'); + background-color: @primary-color; + } } } } @@ -71,10 +124,10 @@ .markdown-parser.white { .toastui-editor-contents { p { - color: @while-color; + color: @white-color; } ul li::before { - background-color: @while-color; + background-color: @white-color; } } } diff --git a/openmetadata-ui/src/main/resources/ui/src/components/containers/PageContainerV1.tsx b/openmetadata-ui/src/main/resources/ui/src/components/containers/PageContainerV1.tsx index 1738e6cf56b..75a61d867e7 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/containers/PageContainerV1.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/containers/PageContainerV1.tsx @@ -26,7 +26,8 @@ const PageContainerV1 = ({ return (
+ data-testid="container" + id="page-container-v1"> {children}
); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/containers/PageLayoutV1.tsx b/openmetadata-ui/src/main/resources/ui/src/components/containers/PageLayoutV1.tsx index c5e228f71bd..0b1fbaaae5f 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/containers/PageLayoutV1.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/containers/PageLayoutV1.tsx @@ -14,7 +14,13 @@ import { Col, Row } from 'antd'; import classNames from 'classnames'; import DocumentTitle from 'components/DocumentTitle/DocumentTitle'; -import React, { FC, Fragment, HTMLAttributes, ReactNode } from 'react'; +import React, { + CSSProperties, + FC, + Fragment, + HTMLAttributes, + ReactNode, +} from 'react'; import './../../styles/layout/page-layout.less'; interface PageLayoutProp extends HTMLAttributes { @@ -25,10 +31,13 @@ interface PageLayoutProp extends HTMLAttributes { pageTitle: string; } -export const pageContainerStyles = { +export const pageContainerStyles: CSSProperties = { height: '100%', padding: '1rem 0.5rem', - margin: 0, + marginTop: 0, + marginBottom: 0, + marginLeft: 0, + marginRight: 0, overflow: 'hidden', }; @@ -38,11 +47,13 @@ const PageLayoutV1: FC = ({ rightPanel, className, pageTitle, + header, center = false, }: PageLayoutProp) => { return ( + {header &&
{header}
} = [ - { - name: i18next.t('label.select-field', { - field: i18next.t('label.service-type'), - }), - step: 1, - }, - { - name: i18next.t('label.configure-entity', { - entity: i18next.t('label.service'), - }), - step: 2, - }, - { - name: i18next.t('label.connection-entity', { - entity: i18next.t('label.detail-plural'), - }), - step: 3, - }, -]; - export const INGESTION_ACTION_TYPE = { ADD: 'add', EDIT: 'edit', diff --git a/openmetadata-ui/src/main/resources/ui/src/constants/Services.constant.ts b/openmetadata-ui/src/main/resources/ui/src/constants/Services.constant.ts index db28f74b50d..5ea7219c6f8 100644 --- a/openmetadata-ui/src/main/resources/ui/src/constants/Services.constant.ts +++ b/openmetadata-ui/src/main/resources/ui/src/constants/Services.constant.ts @@ -14,11 +14,12 @@ import amazonS3 from 'assets/img/service-icon-amazon-s3.svg'; import gcs from 'assets/img/service-icon-gcs.png'; import msAzure from 'assets/img/service-icon-ms-azure.png'; +import { PipelineType } from 'generated/api/services/ingestionPipelines/createIngestionPipeline'; import { WorkflowStatus } from 'generated/entity/automations/workflow'; import { ObjectStoreServiceType } from 'generated/entity/data/container'; import { ServiceType } from 'generated/entity/services/serviceType'; import { map, startCase } from 'lodash'; -import { ServiceTypes } from 'Models'; +import { ServiceTypes, StepperStepType } from 'Models'; import i18n from 'utils/i18next/LocalUtil'; import addPlaceHolder from '../assets/img/add-placeholder.svg'; import airbyte from '../assets/img/Airbyte.png'; @@ -88,6 +89,13 @@ import { MetadataServiceType } from '../generated/entity/services/metadataServic import { MlModelServiceType } from '../generated/entity/services/mlmodelService'; import { PipelineServiceType } from '../generated/entity/services/pipelineService'; import { customServiceComparator } from '../utils/StringsUtils'; +import { + addDBTIngestionGuide, + addLineageIngestionGuide, + addMetadataIngestionGuide, + addProfilerIngestionGuide, + addUsageIngestionGuide, +} from './service-guide.constant'; export const NoDataFoundPlaceHolder = noDataFound; export const AddPlaceHolder = addPlaceHolder; @@ -257,7 +265,7 @@ export const COMMON_UI_SCHEMA = { }, }; -export const OPENMETADATA = 'OpenMetadata'; +export const OPEN_METADATA = 'OpenMetadata'; export const JWT_CONFIG = 'openMetadataJWTClientConfig'; export const SERVICE_CATEGORY_OPTIONS = map(ServiceCategory, (value) => ({ @@ -265,6 +273,41 @@ export const SERVICE_CATEGORY_OPTIONS = map(ServiceCategory, (value) => ({ value, })); +export const STEPS_FOR_ADD_SERVICE: Array = [ + { + name: i18n.t('label.select-field', { + field: i18n.t('label.service-type'), + }), + step: 1, + }, + { + name: i18n.t('label.requirement-plural'), + step: 2, + }, + { + name: i18n.t('label.configure-entity', { + entity: i18n.t('label.service'), + }), + step: 3, + }, + { + name: i18n.t('label.connection-entity', { + entity: i18n.t('label.detail-plural'), + }), + step: 4, + }, +]; + +export const SERVICE_DEFAULT_ERROR_MAP = { + serviceType: false, + name: false, + duplicateName: false, + nameWithSpace: false, + delimit: false, + specialChar: false, + nameLength: false, + allowChar: false, +}; // 2 minutes export const FETCHING_EXPIRY_TIME = 2 * 60 * 1000; export const FETCH_INTERVAL = 2000; @@ -273,6 +316,14 @@ export const WORKFLOW_COMPLETE_STATUS = [ WorkflowStatus.Successful, ]; +export const INGESTION_GUIDE_MAP = { + [PipelineType.Usage]: addUsageIngestionGuide, + [PipelineType.Lineage]: addLineageIngestionGuide, + [PipelineType.Profiler]: addProfilerIngestionGuide, + [PipelineType.Dbt]: addDBTIngestionGuide, + [PipelineType.Metadata]: addMetadataIngestionGuide, +}; + export const SERVICE_TYPE_MAP = { [ServiceCategory.DASHBOARD_SERVICES]: ServiceType.Dashboard, [ServiceCategory.DATABASE_SERVICES]: ServiceType.Database, diff --git a/openmetadata-ui/src/main/resources/ui/src/constants/regex.constants.ts b/openmetadata-ui/src/main/resources/ui/src/constants/regex.constants.ts index 725e1650157..adc6ab04035 100644 --- a/openmetadata-ui/src/main/resources/ui/src/constants/regex.constants.ts +++ b/openmetadata-ui/src/main/resources/ui/src/constants/regex.constants.ts @@ -27,3 +27,5 @@ export const passwordRegex = /^(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[^\w\d\s:])([^\s]){8,16}$/g; export const allowedNameRegEx = /[`!@#$%^&*()+=[\]{};:"\\|,.<>/?~]/; + +export const oneofOrEndsWithNumberRegex = /(oneof|anyof|allof|\d{1,2}$)/; diff --git a/openmetadata-ui/src/main/resources/ui/src/constants/service-guide.constant.ts b/openmetadata-ui/src/main/resources/ui/src/constants/service-guide.constant.ts index e50bcc91aef..4f61116beb0 100644 --- a/openmetadata-ui/src/main/resources/ui/src/constants/service-guide.constant.ts +++ b/openmetadata-ui/src/main/resources/ui/src/constants/service-guide.constant.ts @@ -21,11 +21,16 @@ export const addServiceGuide = [ }, { step: 2, + title: i18n.t('label.requirement-plural'), + description: i18n.t('message.service-requirements-description'), + }, + { + step: 3, title: i18n.t('label.configure-a-service'), description: i18n.t('message.configure-a-service-description'), }, { - step: 3, + step: 4, title: i18n.t('label.connection-details'), description: i18n.t('message.connection-details-description'), }, diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/AddServicePage/AddServicePage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/AddServicePage/AddServicePage.component.tsx index b58e526b82a..14973c41c1b 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/AddServicePage/AddServicePage.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/AddServicePage/AddServicePage.component.tsx @@ -35,7 +35,6 @@ import { GlobalSettingsMenuCategory } from '../../constants/GlobalSettings.const import { IngestionActionMessage } from '../../enums/ingestion.enum'; import { ServiceCategory } from '../../enums/service.enum'; import { CreateIngestionPipeline } from '../../generated/api/services/ingestionPipelines/createIngestionPipeline'; -import { useAirflowStatus } from '../../hooks/useAirflowStatus'; import { DataObj } from '../../interface/service.interface'; import { getSettingPath } from '../../utils/RouterUtils'; import { getServiceRouteFromServiceType } from '../../utils/ServiceUtils'; @@ -43,7 +42,6 @@ import { showErrorToast } from '../../utils/ToastUtils'; const AddServicePage = () => { const { t } = useTranslation(); - const { fetchAirflowStatus } = useAirflowStatus(); const { serviceCategory } = useParams<{ [key: string]: string }>(); const [newServiceData, setNewServiceData] = useState(); const [ingestionProgress, setIngestionProgress] = useState(0); @@ -195,7 +193,6 @@ const AddServicePage = () => { slashedBreadcrumb={slashedBreadcrumb} onAddIngestionSave={onAddIngestionSave} onAddServiceSave={onAddServiceSave} - onAirflowStatusCheck={fetchAirflowStatus} onIngestionDeploy={onIngestionDeploy} />
diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/EditConnectionFormPage/EditConnectionFormPage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/EditConnectionFormPage/EditConnectionFormPage.component.tsx index b53f6b6ad18..069841c442f 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/EditConnectionFormPage/EditConnectionFormPage.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/EditConnectionFormPage/EditConnectionFormPage.component.tsx @@ -11,9 +11,10 @@ * limitations under the License. */ -import { Space, Typography } from 'antd'; +import { Card, Typography } from 'antd'; import { AxiosError } from 'axios'; import ErrorPlaceHolder from 'components/common/error-with-placeholder/ErrorPlaceHolder'; +import ServiceRightPanel from 'components/common/ServiceRightPanel/ServiceRightPanel'; import TitleBreadcrumb from 'components/common/title-breadcrumb/title-breadcrumb.component'; import { TitleBreadcrumbProps } from 'components/common/title-breadcrumb/title-breadcrumb.interface'; import PageContainerV1 from 'components/containers/PageContainerV1'; @@ -28,11 +29,9 @@ import { useParams } from 'react-router-dom'; import { getServiceByFQN, updateService } from 'rest/serviceAPI'; import { getEntityName } from 'utils/EntityUtils'; import { GlobalSettingsMenuCategory } from '../../constants/GlobalSettings.constants'; -import { addServiceGuide } from '../../constants/service-guide.constant'; -import { OPENMETADATA } from '../../constants/Services.constant'; +import { OPEN_METADATA } from '../../constants/Services.constant'; import { ServiceCategory } from '../../enums/service.enum'; import { ConfigData, ServicesType } from '../../interface/service.interface'; -import jsonData from '../../jsons/en'; import { getEntityMissingError } from '../../utils/CommonUtils'; import { getPathByServiceFQN, getSettingPath } from '../../utils/RouterUtils'; import { @@ -43,28 +42,19 @@ import { showErrorToast } from '../../utils/ToastUtils'; function EditConnectionFormPage() { const { t } = useTranslation(); - const { serviceFQN, serviceCategory } = useParams() as Record; - const [isLoading, setIsloading] = useState(true); + const { serviceFQN, serviceCategory } = useParams<{ + serviceFQN: string; + serviceCategory: ServiceCategory; + }>(); + const [isLoading, setIsLoading] = useState(true); const [isError, setIsError] = useState(false); const [serviceDetails, setServiceDetails] = useState(); const [slashedBreadcrumb, setSlashedBreadcrumb] = useState< TitleBreadcrumbProps['titleLinks'] >([]); + const [activeField, setActiveField] = useState(''); - const fetchRightPanel = () => { - const guide = addServiceGuide.find((sGuide) => sGuide.step === 3); - - return ( - guide && ( - <> - {guide.title} -
{guide.description}
- - ) - ); - }; - - const handleConfigUpdate = (updatedData: ConfigData) => { + const handleConfigUpdate = async (updatedData: ConfigData) => { const configData = { name: serviceDetails?.name, serviceType: serviceDetails?.serviceType, @@ -75,88 +65,96 @@ function EditConnectionFormPage() { }, } as ServicesUpdateRequest; - return new Promise((resolve, reject) => { - updateService(serviceCategory, serviceDetails?.id ?? '', configData) - .then((res) => { - if (res) { - setServiceDetails({ - ...res, - owner: res?.owner ?? serviceDetails?.owner, - }); - } else { - showErrorToast( - `${jsonData['api-error-messages']['update-service-config-error']}` - ); - } - - resolve(); - }) - .catch((error: AxiosError) => { - reject(); - showErrorToast( - error, - `${jsonData['api-error-messages']['update-service-config-error']}` - ); - }); - }); + try { + const response = await updateService( + serviceCategory, + serviceDetails?.id ?? '', + configData + ); + setServiceDetails({ + ...response, + owner: response?.owner ?? serviceDetails?.owner, + }); + } catch (error) { + showErrorToast(error as AxiosError); + } }; + const fetchServiceDetail = async () => { + setIsLoading(true); + try { + const response = await getServiceByFQN(serviceCategory, serviceFQN, [ + 'owner', + ]); + setServiceDetails(response); + setSlashedBreadcrumb([ + { + name: startCase(serviceCategory), + url: getSettingPath( + GlobalSettingsMenuCategory.SERVICES, + getServiceRouteFromServiceType(serviceCategory as ServiceTypes) + ), + }, + { + name: getEntityName(response), + imgSrc: serviceTypeLogo(response.serviceType), + url: getPathByServiceFQN(serviceCategory, serviceFQN), + }, + { + name: t('label.edit-entity', { entity: t('label.connection') }), + url: '', + activeTitle: true, + }, + ]); + } catch (err) { + const error = err as AxiosError; + if (error.response?.status === 404) { + setIsError(true); + } else { + showErrorToast(error); + } + } finally { + setIsLoading(false); + } + }; + + const handleFieldFocus = (fieldName: string) => setActiveField(fieldName); + useEffect(() => { - setIsloading(true); - getServiceByFQN(serviceCategory, serviceFQN, ['owner']) - .then((resService) => { - if (resService) { - setServiceDetails(resService); - setSlashedBreadcrumb([ - { - name: startCase(serviceCategory), - url: getSettingPath( - GlobalSettingsMenuCategory.SERVICES, - getServiceRouteFromServiceType(serviceCategory as ServiceTypes) - ), - }, - { - name: getEntityName(resService), - imgSrc: serviceTypeLogo(resService.serviceType), - url: getPathByServiceFQN(serviceCategory, serviceFQN), - }, - { - name: t('label.edit-entity', { entity: t('label.connection') }), - url: '', - activeTitle: true, - }, - ]); - } else { - showErrorToast(jsonData['api-error-messages']['fetch-service-error']); - } - }) - .catch((error: AxiosError) => { - if (error.response?.status === 404) { - setIsError(true); - } else { - showErrorToast( - error, - jsonData['api-error-messages']['fetch-service-error'] - ); - } - }) - .finally(() => { - setIsloading(false); - }); + fetchServiceDetail(); }, [serviceFQN, serviceCategory]); - const renderPage = () => { - return isError ? ( + if (isLoading) { + return ; + } + + if (isError && !isLoading) { + return ( {getEntityMissingError(serviceCategory, serviceFQN)} - ) : ( - - - -
+ ); + } + + return ( + +
+ } + pageTitle={t('label.edit-entity', { entity: t('label.connection') })} + rightPanel={ + + }> + {t('message.edit-service-entity-connection', { entity: serviceFQN, @@ -166,24 +164,16 @@ function EditConnectionFormPage() { data={serviceDetails as ServicesData} disableTestConnection={ ServiceCategory.METADATA_SERVICES === serviceCategory && - OPENMETADATA === serviceFQN + OPEN_METADATA === serviceFQN } handleUpdate={handleConfigUpdate} - serviceCategory={serviceCategory as ServiceCategory} + serviceCategory={serviceCategory} serviceFQN={serviceFQN} serviceType={serviceDetails?.serviceType || ''} + onFocus={handleFieldFocus} /> -
- -
{fetchRightPanel()}
- - ); - }; - - return ( - -
- <>{isLoading ? : renderPage()} + +
); diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/service/index.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/service/index.tsx index dc49eecad4c..725984acc44 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/service/index.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/service/index.tsx @@ -75,7 +75,7 @@ import { import { CONNECTORS_DOCS } from '../../constants/docs.constants'; import { GlobalSettingsMenuCategory } from '../../constants/GlobalSettings.constants'; import { - OPENMETADATA, + OPEN_METADATA, servicesDisplayName, SERVICE_CATEGORY_TYPE, } from '../../constants/Services.constant'; @@ -976,7 +976,7 @@ const ServicePage: FunctionComponent = () => { const isTestingDisabled = !servicePermission.EditAll || (serviceCategory === ServiceCategory.METADATA_SERVICES && - serviceFQN === OPENMETADATA) || + serviceFQN === OPEN_METADATA) || isUndefined(connectionDetails); return ( diff --git a/openmetadata-ui/src/main/resources/ui/src/setupTests.js b/openmetadata-ui/src/main/resources/ui/src/setupTests.js index 6a00a516bab..ba7a054b1af 100644 --- a/openmetadata-ui/src/main/resources/ui/src/setupTests.js +++ b/openmetadata-ui/src/main/resources/ui/src/setupTests.js @@ -97,5 +97,6 @@ jest.mock('react-i18next', () => ({ ...jest.requireActual('react-i18next'), useTranslation: jest.fn().mockReturnValue({ t: (key) => key, + i18n: { language: 'en-US' }, }), })); diff --git a/openmetadata-ui/src/main/resources/ui/src/styles/components/step.less b/openmetadata-ui/src/main/resources/ui/src/styles/components/step.less index d6b42fb28c9..cca82229e39 100644 --- a/openmetadata-ui/src/main/resources/ui/src/styles/components/step.less +++ b/openmetadata-ui/src/main/resources/ui/src/styles/components/step.less @@ -82,6 +82,11 @@ height: 2px; } +.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-tail::after { + background-color: @background; + height: 2px; +} + .ant-steps-small .ant-steps-item-title { font-size: 12px; color: @border; diff --git a/openmetadata-ui/src/main/resources/ui/src/styles/spacing.less b/openmetadata-ui/src/main/resources/ui/src/styles/spacing.less index ee7de823a1d..03eeca82190 100644 --- a/openmetadata-ui/src/main/resources/ui/src/styles/spacing.less +++ b/openmetadata-ui/src/main/resources/ui/src/styles/spacing.less @@ -111,6 +111,9 @@ .m-l-0 { margin-left: 0 !important; } +.m-l-2 { + margin-left: 2px; +} .m-l-xs { margin-left: @margin-xs; } @@ -517,3 +520,7 @@ .m--ml-0\.5 { margin-left: -0.125rem /* -2px */; } + +.col-gap-md { + column-gap: 1rem; +} diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtils.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtils.tsx index 57203ae9bd5..133de267ad1 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtils.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/utils/ServiceUtils.tsx @@ -604,7 +604,7 @@ export const shouldTestConnection = (serviceType: string) => { ); }; -export const getTestConnectionType = (serviceCat: ServiceCategory) => +export const getServiceType = (serviceCat: ServiceCategory) => SERVICE_TYPE_MAP[serviceCat]; export const getServiceCreatedLabel = (serviceCategory: ServiceCategory) => {

-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 Fe*gv~m+k-n literal 0 HcmV?d00001 diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/CustomDashboard/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/CustomDashboard/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/CustomDashboard/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/CustomDashboard/fields/sourcePythonClass.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/CustomDashboard/fields/sourcePythonClass.md new file mode 100644 index 00000000000..a3a5c81cdab --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/CustomDashboard/fields/sourcePythonClass.md @@ -0,0 +1,2 @@ +Source Python Class Name to instantiated by the ingestion workflow + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/CustomDashboard/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/CustomDashboard/requirements.md new file mode 100644 index 00000000000..df5e5bea354 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/CustomDashboard/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/dashboard/customdashboard). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/accessToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/accessToken.md new file mode 100644 index 00000000000..827e3291d87 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/accessToken.md @@ -0,0 +1,2 @@ +Access token to connect to to DOMO + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/apiHost.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/apiHost.md new file mode 100644 index 00000000000..0871df7f725 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/apiHost.md @@ -0,0 +1,2 @@ +API Host to connect to DOMO instance + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/clientId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/clientId.md new file mode 100644 index 00000000000..d19396d367c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/clientId.md @@ -0,0 +1,2 @@ +Client ID for DOMO + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/sandboxDomain.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/sandboxDomain.md new file mode 100644 index 00000000000..a11225d8f74 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/sandboxDomain.md @@ -0,0 +1,2 @@ +Connect to Sandbox Domain + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/secretToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/secretToken.md new file mode 100644 index 00000000000..9a4a5340024 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/fields/secretToken.md @@ -0,0 +1,2 @@ +Secret Token to connect DOMO + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/requirements.md new file mode 100644 index 00000000000..3170f9ae2dc --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/DomoDashboard/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/dashboard/domodashboard). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/fields/clientId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/fields/clientId.md new file mode 100644 index 00000000000..bc7f219cb1c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/fields/clientId.md @@ -0,0 +1,2 @@ +User's Client ID. This user should have privileges to read all the metadata in Looker. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/fields/clientSecret.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/fields/clientSecret.md new file mode 100644 index 00000000000..d3197e31260 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/fields/clientSecret.md @@ -0,0 +1,2 @@ +User's Client Secret. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/fields/hostPort.md new file mode 100644 index 00000000000..4ef70881142 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/fields/hostPort.md @@ -0,0 +1,2 @@ +URL to the Looker instance. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/requirements.md new file mode 100644 index 00000000000..e1bb2e70911 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Looker/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/dashboard/looker). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/fields/hostPort.md new file mode 100644 index 00000000000..b4abff3c464 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and Port of the Metabase instance. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/fields/password.md new file mode 100644 index 00000000000..6ec7a3dfb12 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to Metabase. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/fields/username.md new file mode 100644 index 00000000000..ac98d2b2853 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to Metabase. This user should have privileges to read all the metadata in Metabase. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/requirements.md new file mode 100644 index 00000000000..be343ad0b2b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Metabase/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/dashboard/metabase). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/accessToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/accessToken.md new file mode 100644 index 00000000000..3250b5a3f32 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/accessToken.md @@ -0,0 +1,2 @@ +Access Token for Mode Dashboard + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/accessTokenPassword.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/accessTokenPassword.md new file mode 100644 index 00000000000..7c129159f05 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/accessTokenPassword.md @@ -0,0 +1,2 @@ +Access Token Password for Mode Dashboard + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/hostPort.md new file mode 100644 index 00000000000..728e856a49f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/hostPort.md @@ -0,0 +1,2 @@ +URL for the mode instance. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/workspaceName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/workspaceName.md new file mode 100644 index 00000000000..3357635be25 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/fields/workspaceName.md @@ -0,0 +1,2 @@ +Mode Workspace Name + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/requirements.md new file mode 100644 index 00000000000..c4c12d1d950 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Mode/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/dashboard/mode). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/authorityURI.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/authorityURI.md new file mode 100644 index 00000000000..26d23237763 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/authorityURI.md @@ -0,0 +1,3 @@ +To identify a token authority, you can provide a URL that points to the authority in question. + +If you don't specify a URL for the token authority, we'll use the default value of https://login.microsoftonline.com/. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/clientId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/clientId.md new file mode 100644 index 00000000000..6e266822600 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/clientId.md @@ -0,0 +1,9 @@ +To get the client ID (also know as application ID), follow these steps: + +1. Log into [Microsoft Azure](https://ms.portal.azure.com/#allservices). + +2. Search for App registrations and select the App registrations link. + +3. Select the Azure AD app you're using for embedding your Power BI content. + +4. From the Overview section, copy the Application (client) ID. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/clientSecret.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/clientSecret.md new file mode 100644 index 00000000000..4566a2a97a2 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/clientSecret.md @@ -0,0 +1,15 @@ +To get the client secret, follow these steps: + +1. Log into [Microsoft Azure](https://ms.portal.azure.com/#allservices). + +2. Search for App registrations and select the App registrations link. + +3. Select the Azure AD app you're using for embedding your Power BI content. + +4. Under Manage, select Certificates & secrets. + +5. Under Client secrets, select New client secret. + +6. In the Add a client secret pop-up window, provide a description for your application secret, select when the application secret expires, and select Add. + +7. From the Client secrets section, copy the string in the Value column of the newly created application secret. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/hostPort.md new file mode 100644 index 00000000000..83c1b5d6464 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/hostPort.md @@ -0,0 +1,3 @@ +To connect with your Power BI instance, you'll need to provide the host URL. If you're using an on-premise installation of Power BI, this will be the domain name associated with your instance. + +If you don't specify a host URL, we'll use the default value of https://app.powerbi.com to connect with your Power BI instance. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/pagination_entity_per_page.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/pagination_entity_per_page.md new file mode 100644 index 00000000000..120aa6ac573 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/pagination_entity_per_page.md @@ -0,0 +1,3 @@ +The pagination limit for Power BI APIs can be set using this parameter. The limit determines the number of records to be displayed per page. + +By default, the pagination limit is set to 100 records, which is also the maximum value allowed. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/scope.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/scope.md new file mode 100644 index 00000000000..6c3ba0a4436 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/scope.md @@ -0,0 +1,4 @@ +To let OM use the Power BI APIs using your Azure AD app, you'll need to add the following scopes: +- https://analysis.windows.net/powerbi/api/.default + +Instructions for adding these scopes to your app can be found by following this link: https://analysis.windows.net/powerbi/api/.default. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/tenantId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/tenantId.md new file mode 100644 index 00000000000..b5faa8e246f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/fields/tenantId.md @@ -0,0 +1,9 @@ +To get the tenant ID, follow these steps: + +1. Log into [Microsoft Azure](https://ms.portal.azure.com/#allservices). + +2. Search for App registrations and select the App registrations link. + +3. Select the Azure AD app you're using for Power BI. + +4. From the Overview section, copy the Directory (tenant) ID. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/requirements.md new file mode 100644 index 00000000000..9ead429d99c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/PowerBI/requirements.md @@ -0,0 +1,28 @@ +# Requirements +PowerBi Pro license is required to access the APIs + +## PowerBI Account Setup and Permissions + +### Step 1: Create an Azure AD app and configure the PowerBI Admin consle + +Please follow the steps mentioned [here](https://docs.microsoft.com/en-us/power-bi/developer/embedded/embed-service-principal) for setting up the Azure AD application service principle and configure PowerBI admin settings + +Login to Power BI as Admin and from `Tenant` settings allow below permissions. +- Allow service principles to use Power BI APIs +- Allow service principals to use read-only Power BI admin APIs +- Enhance admin APIs responses with detailed metadata + +### Step 2: Provide necessary API permissions to the app +Go to the `Azure Ad app registrations` page, select your app and add the dashboard permissions to the app for PowerBI service and grant admin consent for the same: +- Dashboard.Read.All +- Dashboard.ReadWrite.All + +**Note**: +Make sure that in the API permissions section **Tenant** related permissions are not being given to the app +Please refer [here](https://stackoverflow.com/questions/71001110/power-bi-rest-api-requests-not-authorizing-as-expected) for detailed explanation + +### Step 3: Create New PowerBI workspace +The service principal only works with [new workspaces](https://docs.microsoft.com/en-us/power-bi/collaborate-share/service-create-the-new-workspaces). +[For reference](https://community.powerbi.com/t5/Service/Error-while-executing-Get-dataset-call-quot-API-is-not/m-p/912360#M85711) + +You can find further information on the PowerBi connector in the [docs](https://docs.open-metadata.org/connectors/dashboard/powerbi). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/assumeRoleArn.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/assumeRoleArn.md new file mode 100644 index 00000000000..d0fe4aed2a9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/assumeRoleArn.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/assumeRoleSessionName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/assumeRoleSessionName.md new file mode 100644 index 00000000000..f0fd71c5548 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/assumeRoleSessionName.md @@ -0,0 +1,2 @@ +An identifier for the assumed role session. Use the role session name to uniquely identify a session when the same role is assumed by different principals or for different reasons. Required Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/assumeRoleSourceIdentity.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/assumeRoleSourceIdentity.md new file mode 100644 index 00000000000..274b38a9a68 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/assumeRoleSourceIdentity.md @@ -0,0 +1,2 @@ +The Amazon Resource Name (ARN) of the role to assume. Optional Field in case of Assume Role + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsAccessKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsAccessKeyId.md new file mode 100644 index 00000000000..e8bf7cae5ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsAccessKeyId.md @@ -0,0 +1,2 @@ +AWS Access key ID. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsAccountId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsAccountId.md new file mode 100644 index 00000000000..7a7be996472 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsAccountId.md @@ -0,0 +1,2 @@ +AWS Account ID + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsConfig.md new file mode 100644 index 00000000000..64aaae003f0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsConfig.md @@ -0,0 +1,2 @@ +AWS credentials configs. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsRegion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsRegion.md new file mode 100644 index 00000000000..72061900168 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsRegion.md @@ -0,0 +1,2 @@ +AWS Region + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsSecretAccessKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsSecretAccessKey.md new file mode 100644 index 00000000000..586de7f82a1 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsSecretAccessKey.md @@ -0,0 +1,2 @@ +AWS Secret Access Key. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsSessionToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsSessionToken.md new file mode 100644 index 00000000000..52a9938da4a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/awsSessionToken.md @@ -0,0 +1,2 @@ +AWS Session Token. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/endPointURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/endPointURL.md new file mode 100644 index 00000000000..d992901b426 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/endPointURL.md @@ -0,0 +1,2 @@ +EndPoint URL for the AWS + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/identityType.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/identityType.md new file mode 100644 index 00000000000..9a731723809 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/identityType.md @@ -0,0 +1,2 @@ +The authentication method that the user uses to sign in. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/namespace.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/namespace.md new file mode 100644 index 00000000000..3ec0f9eb3f2 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/namespace.md @@ -0,0 +1,2 @@ +The Amazon QuickSight namespace that contains the dashboard IDs in this request ( To be provided when identityType is `ANONYMOUS` ) + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/profileName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/profileName.md new file mode 100644 index 00000000000..aa7f976a9dd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/fields/profileName.md @@ -0,0 +1,2 @@ +The name of a profile to use with the boto session. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/requirements.md new file mode 100644 index 00000000000..ef55d9c595c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/QuickSight/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/dashboard/quicksight). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/apiKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/apiKey.md new file mode 100644 index 00000000000..a9024e45a7b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/apiKey.md @@ -0,0 +1,2 @@ +API key of the redash instance to access. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/hostPort.md new file mode 100644 index 00000000000..deb62fce675 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/hostPort.md @@ -0,0 +1,2 @@ +URL for the Redash instance + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/redashVersion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/redashVersion.md new file mode 100644 index 00000000000..1820a33c884 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/redashVersion.md @@ -0,0 +1,2 @@ +Version of the Redash instance + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/username.md new file mode 100644 index 00000000000..49021acb968 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/fields/username.md @@ -0,0 +1,2 @@ +Username for Redash + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/requirements.md new file mode 100644 index 00000000000..deee829e4ad --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Redash/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/dashboard/redash). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/classificationName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/classificationName.md new file mode 100644 index 00000000000..25f57205a2f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/classificationName.md @@ -0,0 +1,2 @@ +Custom OpenMetadata Classification name for Postgres policy tags. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/connection.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/connection.md new file mode 100644 index 00000000000..830ad472180 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/connection.md @@ -0,0 +1,2 @@ +Choose between API or database connection fetch metadata from superset. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/connectionArguments.md new file mode 100644 index 00000000000..c8d11b55955 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/connectionArguments.md @@ -0,0 +1,2 @@ +connectionArguments + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/connectionOptions.md new file mode 100644 index 00000000000..a3f8fe89864 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/database.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/database.md new file mode 100644 index 00000000000..9a60919c5c9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/database.md @@ -0,0 +1,2 @@ +Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank, OpenMetadata Ingestion attempts to scan all the databases. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/databaseName.md new file mode 100644 index 00000000000..0719890bb20 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/databaseName.md @@ -0,0 +1,2 @@ +Optional name to give to the database in OpenMetadata. If left blank, we will use default as the database name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/databaseSchema.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/databaseSchema.md new file mode 100644 index 00000000000..6999243aac8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/databaseSchema.md @@ -0,0 +1,2 @@ +databaseSchema of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single databaseSchema. When left blank, OpenMetadata Ingestion attempts to scan all the databaseSchema. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/hostPort.md new file mode 100644 index 00000000000..e3b8f424595 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the MySQL service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/ingestAllDatabases.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/ingestAllDatabases.md new file mode 100644 index 00000000000..9b21b25c781 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/ingestAllDatabases.md @@ -0,0 +1,2 @@ +Ingest data from all databases in Postgres. You can use databaseFilterPattern on top of this. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/password.md new file mode 100644 index 00000000000..64f037f8d8e --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to MySQL. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/provider.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/provider.md new file mode 100644 index 00000000000..caca146759d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/provider.md @@ -0,0 +1,2 @@ +Authentication provider for the Superset service. For basic user/password authentication, the default value `db` can be used. This parameter is used internally to connect to Superset's REST API. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslCA.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslCA.md new file mode 100644 index 00000000000..e248b1cd7a2 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslCA.md @@ -0,0 +1,2 @@ +Provide the path to ssl ca file + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslCert.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslCert.md new file mode 100644 index 00000000000..da03a17de3a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslCert.md @@ -0,0 +1,2 @@ +Provide the path to ssl client certificate file (ssl_cert) + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslKey.md new file mode 100644 index 00000000000..7c18d65f132 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslKey.md @@ -0,0 +1,2 @@ +Provide the path to ssl client certificate file (ssl_key) + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslMode.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslMode.md new file mode 100644 index 00000000000..40ee2e8ecc6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/sslMode.md @@ -0,0 +1,2 @@ +SSL Mode to connect to postgres database. E.g, prefer, verify-ca etc. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/supportsDatabase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/supportsDatabase.md new file mode 100644 index 00000000000..ed4c5c40fa6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/supportsDatabase.md @@ -0,0 +1,2 @@ +The source service supports the database concept in its hierarchy + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/username.md new file mode 100644 index 00000000000..a6efc0cb21d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to MySQL. This user should have privileges to read all the metadata in Mysql. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/requirements.md new file mode 100644 index 00000000000..e5c8f068d8a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Superset/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/dashboard/superset). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/apiVersion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/apiVersion.md new file mode 100644 index 00000000000..28a00f4340c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/apiVersion.md @@ -0,0 +1,5 @@ +When we make a request, we include the API version number as part of the request, as in the following example: + +`https://{hostPort}/api/{api_version}/auth/signin` + +A lists versions of Tableau Server and of the corresponding REST API and REST API schema versions can be found [here](https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_concepts_versions.htm). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/certificatePath.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/certificatePath.md new file mode 100644 index 00000000000..fd15be4da07 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/certificatePath.md @@ -0,0 +1,3 @@ +CA certificate path in the instance where the ingestion run. E.g., `/path/to/public.cert`. + +Will be used if Verify SSL is set to `validate`. diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/env.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/env.md new file mode 100644 index 00000000000..15e0a1bb222 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/env.md @@ -0,0 +1 @@ +The config object can have multiple environments. The default environment is defined as `tableau_prod`, and you can change this if needed by specifying an `env` parameter. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/hostPort.md new file mode 100644 index 00000000000..0ba382644ed --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/hostPort.md @@ -0,0 +1,3 @@ +Name or IP address of your installation of Tableau Server. + +For example: `https://my-prod-env.online.tableau.com/`. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/password.md new file mode 100644 index 00000000000..455d986428e --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/password.md @@ -0,0 +1 @@ +The password of the user. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/personalAccessTokenName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/personalAccessTokenName.md new file mode 100644 index 00000000000..782c902a8d7 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/personalAccessTokenName.md @@ -0,0 +1,3 @@ +The personal access token name. + +For more information to get a Personal Access Token please visit this [link](https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/personalAccessTokenSecret.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/personalAccessTokenSecret.md new file mode 100644 index 00000000000..970b6d0dfbc --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/personalAccessTokenSecret.md @@ -0,0 +1,3 @@ +The personal access token value. + +For more information to get a Personal Access Token please visit this [link](https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/siteName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/siteName.md new file mode 100644 index 00000000000..54b8fe5c683 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/siteName.md @@ -0,0 +1,7 @@ +This corresponds to the `contentUrl` attribute in the Tableau REST API. + +The `site_name` is the portion of the URL that follows the `/site/` in the URL. + +For example, _MarketingTeam_ is the `site_name` in the following URL `MyServer/#/site/MarketingTeam/projects`. + +If it is empty, the default Tableau site will be used. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/siteUrl.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/siteUrl.md new file mode 100644 index 00000000000..7a4df198192 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/siteUrl.md @@ -0,0 +1 @@ +If it is empty, the default Tableau site will be used. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/sslConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/sslConfig.md new file mode 100644 index 00000000000..cc06652cd56 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/sslConfig.md @@ -0,0 +1 @@ +Client SSL configuration in case we are connection to a host with SSL enabled. diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/username.md new file mode 100644 index 00000000000..2375a15c8ca --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/username.md @@ -0,0 +1 @@ +The name of the user whose credentials will be used to sign in. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/verifySSL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/verifySSL.md new file mode 100644 index 00000000000..c11b3796805 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/fields/verifySSL.md @@ -0,0 +1,6 @@ +Client SSL verification. Make sure to configure the SSLConfig if enabled. + +Possible values: +- `validate`: Validate the certificate using the public certificate (recommended). +- `ignore`: Ignore the certification validation (not recommended for production). +- `no-ssl`: SSL validation is not needed. diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/requirements.md new file mode 100644 index 00000000000..6ae323ac389 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Dashboard/Tableau/requirements.md @@ -0,0 +1,7 @@ +# Requirements + +To ingest Tableau metadata, the username used in the configuration **must** have at least the following role: `Site Role: Viewer`. + +To create lineage between Tableau dashboards and any database service via the queries provided from Tableau Metadata API, please enable the Tableau Metadata API for your tableau server. For more information on enabling the Tableau Metadata APIs follow the link [here](https://help.tableau.com/current/api/metadata_api/en-us/docs/meta_api_start.html). + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/dashboard/tableau). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/assumeRoleArn.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/assumeRoleArn.md new file mode 100644 index 00000000000..caa2cffafb2 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/assumeRoleArn.md @@ -0,0 +1,9 @@ +Typically, you use `AssumeRole` within your account or for cross-account access. In this field you'll set the +`ARN` (Amazon Resource Name) of the policy of the other account. + +A user who wants to access a role in a different account must also have permissions that are delegated from the account +administrator. The administrator must attach a policy that allows the user to call `AssumeRole` for the `ARN` of the role in the other account. + +This is a required field if you'd like to `AssumeRole`. + +Find more information on [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/assumeRoleSessionName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/assumeRoleSessionName.md new file mode 100644 index 00000000000..13cc6b1dc84 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/assumeRoleSessionName.md @@ -0,0 +1,6 @@ +An identifier for the assumed role session. Use the role session name to uniquely identify a session when the same role +is assumed by different principals or for different reasons. + +By default, we'll use the name `OpenMetadataSession`. + +Find more information about the [Role Session Name](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#:~:text=An%20identifier%20for%20the%20assumed%20role%20session.). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/assumeRoleSourceIdentity.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/assumeRoleSourceIdentity.md new file mode 100644 index 00000000000..36a4b75d716 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/assumeRoleSourceIdentity.md @@ -0,0 +1,4 @@ +The source identity specified by the principal that is calling the `AssumeRole` operation. You can use source identity +information in AWS CloudTrail logs to determine who took actions with a role. + +Find more information about [Source Identity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#:~:text=Required%3A%20No-,SourceIdentity,-The%20source%20identity). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsAccessKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsAccessKeyId.md new file mode 100644 index 00000000000..01434df88ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsAccessKeyId.md @@ -0,0 +1,11 @@ +When you interact with AWS, you specify your AWS security credentials to verify who you are and whether you have +permission to access the resources that you are requesting. AWS uses the security credentials to authenticate and +authorize your requests ([docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html)). + +Access keys consist of two parts: +1. An access key ID (for example, `AKIAIOSFODNN7EXAMPLE`), +2. And a secret access key (for example, `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`). + +You must use both the access key ID and secret access key together to authenticate your requests. + +You can find further information on how to manage your access keys [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsConfig.md new file mode 100644 index 00000000000..64aaae003f0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsConfig.md @@ -0,0 +1,2 @@ +AWS credentials configs. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsRegion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsRegion.md new file mode 100644 index 00000000000..da00669c4d6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsRegion.md @@ -0,0 +1,7 @@ +Each AWS Region is a separate geographic area in which AWS clusters data centers ([docs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html)). + +As AWS can have instances in multiple regions, we need to know the region the service you want reach belongs to. + +Note that the AWS Region is the only required parameter when configuring a connection. When connecting to the +services programmatically, there are different ways in which we can extract and use the rest of AWS configurations. +You can find further information about configuring your credentials [here](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#configuring-credentials). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsSecretAccessKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsSecretAccessKey.md new file mode 100644 index 00000000000..01434df88ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsSecretAccessKey.md @@ -0,0 +1,11 @@ +When you interact with AWS, you specify your AWS security credentials to verify who you are and whether you have +permission to access the resources that you are requesting. AWS uses the security credentials to authenticate and +authorize your requests ([docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html)). + +Access keys consist of two parts: +1. An access key ID (for example, `AKIAIOSFODNN7EXAMPLE`), +2. And a secret access key (for example, `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`). + +You must use both the access key ID and secret access key together to authenticate your requests. + +You can find further information on how to manage your access keys [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsSessionToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsSessionToken.md new file mode 100644 index 00000000000..c0fadf1812e --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/awsSessionToken.md @@ -0,0 +1,4 @@ +If you are using temporary credentials to access your services, you will need to inform the AWS Access Key ID +and AWS Secrets Access Key. Also, these will include an AWS Session Token. + +You can find more information on [Using temporary credentials with AWS resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/databaseName.md new file mode 100644 index 00000000000..d9391a5356a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/databaseName.md @@ -0,0 +1,8 @@ +In OpenMetadata, the Database Service hierarchy works as follows: + +``` +Database Service > Database > Schema > Table +``` + +In the case of Athena, we won't have a Database as such. If you'd like to see your data in a database +named something other than `default`, you can specify the name in this field. diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/endpointURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/endpointURL.md new file mode 100644 index 00000000000..ba59c13dd49 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/endpointURL.md @@ -0,0 +1,5 @@ +To connect programmatically to an AWS service, you use an endpoint. An *endpoint* is the URL of the +entry point for an AWS web service. The AWS SDKs and the AWS Command Line Interface (AWS CLI) automatically use the +default endpoint for each service in an AWS Region. But you can specify an alternate endpoint for your API requests. + +Find more information on [AWS service endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/profileName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/profileName.md new file mode 100644 index 00000000000..7798549dfea --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/profileName.md @@ -0,0 +1,7 @@ +A named profile is a collection of settings and credentials that you can apply to a AWS CLI command. +When you specify a profile to run a command, the settings and credentials are used to run that command. +Multiple named profiles can be stored in the config and credentials files. + +You can inform this field if you'd like to use a profile other than `default`. + +Find here more information about [Named profiles for the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/s3StagingDir.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/s3StagingDir.md new file mode 100644 index 00000000000..2c9a8218f5d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/s3StagingDir.md @@ -0,0 +1,6 @@ +Amazon Athena automatically stores query results and metadata information for each query that runs in a query result +location that you can specify in Amazon S3. + +To set up an Amazon S3 query result location for the first time, see [Specifying a query result location using the Athena console](https://docs.aws.amazon.com/athena/latest/ug/querying.html#query-results-specify-location-console). + +Find more information about [Working with query results, recent queries, and output files](https://docs.aws.amazon.com/athena/latest/ug/querying.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/workgroup.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/workgroup.md new file mode 100644 index 00000000000..ec5bec49b9b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/fields/workgroup.md @@ -0,0 +1,5 @@ +Workgroups are used to separate users, teams, applications or workloads. + +Select here the workgroup that the ingestion workflow should use. + +You can find more information about [How workgroups work](https://docs.aws.amazon.com/athena/latest/ug/user-created-workgroups.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/requirements.md new file mode 100644 index 00000000000..6e679ef1744 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Athena/requirements.md @@ -0,0 +1,103 @@ +# Requirements + +The Athena connector ingests metadata through JDBC connections. + +According to AWS's official [documentation](https://docs.aws.amazon.com/athena/latest/ug/policy-actions.html): +*If you are using the JDBC or ODBC driver, ensure that the IAM +permissions policy includes all of the actions listed in [AWS managed policy: AWSQuicksightAthenaAccess](https://docs.aws.amazon.com/athena/latest/ug/managed-policies.html#awsquicksightathenaaccess-managed-policy).* + +This policy groups the following permissions: + +- `athena` – Allows the principal to run queries on Athena resources. +- `glue` – Allows principals access to AWS Glue databases, tables, and partitions. This is required so that the principal can use the AWS Glue Data Catalog with Athena. +- `s3` – Allows the principal to write and read query results from Amazon S3. +- `lakeformation` – Allows principals to request temporary credentials to access data in a data lake location that is registered with Lake Formation. + +And is defined as: + +```json +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "athena:BatchGetQueryExecution", + "athena:GetQueryExecution", + "athena:GetQueryResults", + "athena:GetQueryResultsStream", + "athena:ListQueryExecutions", + "athena:StartQueryExecution", + "athena:StopQueryExecution", + "athena:ListWorkGroups", + "athena:ListEngineVersions", + "athena:GetWorkGroup", + "athena:GetDataCatalog", + "athena:GetDatabase", + "athena:GetTableMetadata", + "athena:ListDataCatalogs", + "athena:ListDatabases", + "athena:ListTableMetadata" + ], + "Resource": [ + "*" + ] + }, + { + "Effect": "Allow", + "Action": [ + "glue:CreateDatabase", + "glue:DeleteDatabase", + "glue:GetDatabase", + "glue:GetDatabases", + "glue:UpdateDatabase", + "glue:CreateTable", + "glue:DeleteTable", + "glue:BatchDeleteTable", + "glue:UpdateTable", + "glue:GetTable", + "glue:GetTables", + "glue:BatchCreatePartition", + "glue:CreatePartition", + "glue:DeletePartition", + "glue:BatchDeletePartition", + "glue:UpdatePartition", + "glue:GetPartition", + "glue:GetPartitions", + "glue:BatchGetPartition" + ], + "Resource": [ + "*" + ] + }, + { + "Effect": "Allow", + "Action": [ + "s3:GetBucketLocation", + "s3:GetObject", + "s3:ListBucket", + "s3:ListBucketMultipartUploads", + "s3:ListMultipartUploadParts", + "s3:AbortMultipartUpload", + "s3:CreateBucket", + "s3:PutObject", + "s3:PutBucketPublicAccessBlock" + ], + "Resource": [ + "arn:aws:s3:::aws-athena-query-results-*" + ] + }, + { + "Effect": "Allow", + "Action": [ + "lakeformation:GetDataAccess" + ], + "Resource": [ + "*" + ] + } + ] +} +``` + +You can find further information on the Athena connector in the [docs](https://docs.open-metadata.org/connectors/database/athena). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/database.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/database.md new file mode 100644 index 00000000000..9a60919c5c9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/database.md @@ -0,0 +1,2 @@ +Database of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single database. When left blank, OpenMetadata Ingestion attempts to scan all the databases. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/driver.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/driver.md new file mode 100644 index 00000000000..6ca14e41d22 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/driver.md @@ -0,0 +1,2 @@ +SQLAlchemy driver for AzureSQL. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/hostPort.md new file mode 100644 index 00000000000..f7ccda79311 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the AzureSQL service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/password.md new file mode 100644 index 00000000000..25a8fed0bba --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to AzureSQL. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/supportsDatabase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/supportsDatabase.md new file mode 100644 index 00000000000..ed4c5c40fa6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/supportsDatabase.md @@ -0,0 +1,2 @@ +The source service supports the database concept in its hierarchy + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/username.md new file mode 100644 index 00000000000..b906c8bbe0a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to AzureSQL. This user should have privileges to read the metadata. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/requirements.md new file mode 100644 index 00000000000..ab8a6acad3b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/AzureSQL/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/azuresql). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/authProviderX509CertUrl.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/authProviderX509CertUrl.md new file mode 100644 index 00000000000..7bee776600e --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/authProviderX509CertUrl.md @@ -0,0 +1 @@ +This is the URL of the certificate that verifies the authenticity of the authorization server. To fetch this key, look for the value associated with the "auth_provider_x509_cert_url" key in the service account key file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/authUri.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/authUri.md new file mode 100644 index 00000000000..6db141bc2d7 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/authUri.md @@ -0,0 +1 @@ +This is the URI for the authorization server. To fetch this key, look for the value associated with the "auth_uri" key in the service account key file. diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/clientEmail.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/clientEmail.md new file mode 100644 index 00000000000..072cca4bfcf --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/clientEmail.md @@ -0,0 +1 @@ +This is the email address associated with the service account. To fetch this key, look for the value associated with the "client_email" key in the service account key file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/clientId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/clientId.md new file mode 100644 index 00000000000..a6723883a5a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/clientId.md @@ -0,0 +1 @@ +This is a unique identifier for the service account. To fetch this key, look for the value associated with the "client_id" key in the service account key file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/clientX509CertUrl.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/clientX509CertUrl.md new file mode 100644 index 00000000000..fccbd2f57ba --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/clientX509CertUrl.md @@ -0,0 +1 @@ +This is the URL of the certificate that verifies the authenticity of the service account. To fetch this key, look for the value associated with the "client_x509_cert_url" key in the service account key file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/credentials.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/credentials.md new file mode 100644 index 00000000000..c723a1d820a --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/credentials.md @@ -0,0 +1,2 @@ +GCS Credentials + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/gcsConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/gcsConfig.md new file mode 100644 index 00000000000..7d87a96222d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/gcsConfig.md @@ -0,0 +1 @@ +Pass the path of file containing the GCP service account keys. You can checkout [this](https://cloud.google.com/iam/docs/keys-create-delete#iam-service-account-keys-create-console) documentation on how to create the service account keys and download it. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/hostPort.md new file mode 100644 index 00000000000..421ef2dc983 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/hostPort.md @@ -0,0 +1 @@ +BigQuery APIs URL. By default the API URL is `bigquery.googleapis.com` you can modify this if you have custom implementation of \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/partitionField.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/partitionField.md new file mode 100644 index 00000000000..3f590dd9a13 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/partitionField.md @@ -0,0 +1,2 @@ +Column name on which the BigQuery table will be partitioned. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/partitionQuery.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/partitionQuery.md new file mode 100644 index 00000000000..c9ccfdbe39e --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/partitionQuery.md @@ -0,0 +1,2 @@ +Partitioning query for BigQuery tables. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/partitionQueryDuration.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/partitionQueryDuration.md new file mode 100644 index 00000000000..6d884dfa9a6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/partitionQueryDuration.md @@ -0,0 +1,2 @@ +Duration for partitioning BigQuery tables. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/privateKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/privateKey.md new file mode 100644 index 00000000000..0d78ca8c664 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/privateKey.md @@ -0,0 +1 @@ +This is the private key associated with the service account that is used to authenticate and authorize access to BigQuery. To fetch this key, look for the value associated with the "private_key" key in the service account file. diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/privateKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/privateKeyId.md new file mode 100644 index 00000000000..e2f057175ae --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/privateKeyId.md @@ -0,0 +1 @@ +This is a unique identifier for the private key associated with the service account. To fetch this key, look for the value associated with the "private_key_id" key in the service account file. diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/projectId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/projectId.md new file mode 100644 index 00000000000..4f20c2354a6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/projectId.md @@ -0,0 +1,3 @@ +A project ID is a unique string used to differentiate your project from all others in Google Cloud. To fetch this key, look for the value associated with the "project_id" key in the service account key file. + + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/scheme.md new file mode 100644 index 00000000000..9d743326e41 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/scheme.md @@ -0,0 +1 @@ +SQLAlchemy driver scheme options. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/taxonomyLocation.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/taxonomyLocation.md new file mode 100644 index 00000000000..f3ae0c894b3 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/taxonomyLocation.md @@ -0,0 +1,5 @@ +Bigquery uses taxonomies to create hierarchical groups of policy tags. To apply access controls to BigQuery columns, tag the columns with policy tags. Learn more about how yo can create policy tags and set up column-level access control [here](https://cloud.google.com/bigquery/docs/column-level-security) + +If you have attached policy tags to the columns of table available in Bigquery, then OpenMetadata will fetch those tags and attach it to the respective columns. + +In this field you need to specify the location/region in which the taxonomy was created. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/taxonomyProjectID.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/taxonomyProjectID.md new file mode 100644 index 00000000000..e550404f225 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/taxonomyProjectID.md @@ -0,0 +1,5 @@ +Bigquery uses taxonomies to create hierarchical groups of policy tags. To apply access controls to BigQuery columns, tag the columns with policy tags. Learn more about how yo can create policy tags and set up column-level access control [here](https://cloud.google.com/bigquery/docs/column-level-security) + +If you have attached policy tags to the columns of table available in Bigquery, then OpenMetadata will fetch those tags and attach it to the respective columns. + +In this field you need to specify the id of project in which the taxonomy was created. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/tokenUri.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/tokenUri.md new file mode 100644 index 00000000000..c51ed292cf9 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/tokenUri.md @@ -0,0 +1,3 @@ +The Google Cloud Token URI is a specific endpoint used to obtain an OAuth 2.0 access token from the Google Cloud IAM service. This token allows you to authenticate and access various Google Cloud resources and APIs that require authorization. + +To fetch this key, look for the value associated with the "token_uri" key in the service account credentials file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/type.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/type.md new file mode 100644 index 00000000000..276abcfd17e --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/type.md @@ -0,0 +1 @@ +This is the type of the account, for a service account the value of this field is `service_account`. To fetch this key, look for the value associated with the "type" key in the service account key file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/usageLocation.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/usageLocation.md new file mode 100644 index 00000000000..014218af91f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/fields/usageLocation.md @@ -0,0 +1 @@ +Location used to query INFORMATION_SCHEMA.JOBS_BY_PROJECT to fetch usage data. You can pass multi-regions, such as `us` or `eu`, or you specific region. Australia and Asia multi-regions are not yet in GA. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/requirements.md new file mode 100644 index 00000000000..43bcba0743e --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/BigQuery/requirements.md @@ -0,0 +1,38 @@ +# Requirements + + +To deploy OpenMetadata, check the Deployment guides. + + +To run the Ingestion via the UI you'll need to use the OpenMetadata Ingestion Container, which comes shipped with +custom Airflow plugins to handle the workflow deployment. + +### Data Catalog API Permissions + +- Go to https://console.cloud.google.com/apis/library/datacatalog.googleapis.com +- Select the `GCP Project ID` that you want to enable the `Data Catalog API` on. +- Click on `Enable API` which will enable the data catalog api on the respective project. + + +### GCP Permissions + + +To execute metadata extraction and usage workflow successfully the user or the service account should have enough access to fetch required data. Following table describes the minimum required permissions + + +| # | GCP Permission | Required For | +| :--- | :---------------------------- | :---------------------- | +| 1 | bigquery.datasets.get | Metadata Ingestion | +| 2 | bigquery.tables.get | Metadata Ingestion | +| 3 | bigquery.tables.getData | Metadata Ingestion | +| 4 | bigquery.tables.list | Metadata Ingestion | +| 5 | resourcemanager.projects.get | Metadata Ingestion | +| 6 | bigquery.jobs.create | Metadata Ingestion | +| 7 | bigquery.jobs.listAll | Metadata Ingestion | +| 8 | datacatalog.taxonomies.get | Fetch Policy Tags | +| 9 | datacatalog.taxonomies.list | Fetch Policy Tags | +| 10 | bigquery.readsessions.create | Bigquery Usage & Lineage Workflow | +| 11 | bigquery.readsessions.getData | Bigquery Usage & Lineage Workflow | + + +You can checkout [this](https://docs.open-metadata.org/connectors/database/bigquery/roles) documentation on how you can create a custom role in GCP and assign the above permissions to the role & service account! \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/databaseName.md new file mode 100644 index 00000000000..0719890bb20 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/databaseName.md @@ -0,0 +1,2 @@ +Optional name to give to the database in OpenMetadata. If left blank, we will use default as the database name. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/databaseSchema.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/databaseSchema.md new file mode 100644 index 00000000000..6999243aac8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/databaseSchema.md @@ -0,0 +1,2 @@ +databaseSchema of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single databaseSchema. When left blank, OpenMetadata Ingestion attempts to scan all the databaseSchema. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/duration.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/duration.md new file mode 100644 index 00000000000..3c48f62e107 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/duration.md @@ -0,0 +1,2 @@ +Clickhouse SQL connection duration. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/hostPort.md new file mode 100644 index 00000000000..41b5896bba7 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the Clickhouse service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/keyfile.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/keyfile.md new file mode 100644 index 00000000000..db8cd2d64eb --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/keyfile.md @@ -0,0 +1,2 @@ +Path to key file for establishing secure connection + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/password.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/password.md new file mode 100644 index 00000000000..ce4e6c74bc0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/password.md @@ -0,0 +1,2 @@ +Password to connect to Clickhouse. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/secure.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/secure.md new file mode 100644 index 00000000000..d74e14cc269 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/secure.md @@ -0,0 +1,2 @@ +Establish secure connection with clickhouse + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/username.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/username.md new file mode 100644 index 00000000000..3ddae0beff7 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/fields/username.md @@ -0,0 +1,2 @@ +Username to connect to Clickhouse. This user should have privileges to read all the metadata in Clickhouse. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/requirements.md new file mode 100644 index 00000000000..124ce5069cc --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Clickhouse/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/clickhouse). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/CustomDatabase/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/CustomDatabase/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/CustomDatabase/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/CustomDatabase/fields/sourcePythonClass.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/CustomDatabase/fields/sourcePythonClass.md new file mode 100644 index 00000000000..a3a5c81cdab --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/CustomDatabase/fields/sourcePythonClass.md @@ -0,0 +1,2 @@ +Source Python Class Name to instantiated by the ingestion workflow + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/CustomDatabase/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/CustomDatabase/requirements.md new file mode 100644 index 00000000000..613578e9c7f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/CustomDatabase/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/customdatabase). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/catalog.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/catalog.md new file mode 100644 index 00000000000..5238cb84618 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/catalog.md @@ -0,0 +1,2 @@ +Catalog of the data source(Example: hive_metastore). This is optional parameter, if you would like to restrict the metadata reading to a single catalog. When left blank, OpenMetadata Ingestion attempts to scan all the catalog. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/connectionTimeout.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/connectionTimeout.md new file mode 100644 index 00000000000..8c547e2f000 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/connectionTimeout.md @@ -0,0 +1,2 @@ +The maximum amount of time (in seconds) to wait for a successful connection to the data source. If the connection attempt takes longer than this timeout period, an error will be returned. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/databaseSchema.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/databaseSchema.md new file mode 100644 index 00000000000..6999243aac8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/databaseSchema.md @@ -0,0 +1,2 @@ +databaseSchema of the data source. This is optional parameter, if you would like to restrict the metadata reading to a single databaseSchema. When left blank, OpenMetadata Ingestion attempts to scan all the databaseSchema. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/hostPort.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/hostPort.md new file mode 100644 index 00000000000..9c339eeb640 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/hostPort.md @@ -0,0 +1,2 @@ +Host and port of the Databricks service. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/httpPath.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/httpPath.md new file mode 100644 index 00000000000..797a014cc65 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/httpPath.md @@ -0,0 +1,2 @@ +Databricks compute resources URL. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/scheme.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/scheme.md new file mode 100644 index 00000000000..2356c9c560f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/scheme.md @@ -0,0 +1,2 @@ +SQLAlchemy driver scheme options. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/supportsDatabase.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/supportsDatabase.md new file mode 100644 index 00000000000..ed4c5c40fa6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/supportsDatabase.md @@ -0,0 +1,2 @@ +The source service supports the database concept in its hierarchy + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/token.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/token.md new file mode 100644 index 00000000000..4c5762d6404 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/fields/token.md @@ -0,0 +1,2 @@ +Generated Token to connect to Databricks. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/requirements.md new file mode 100644 index 00000000000..7a8a40f1475 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Databricks/requirements.md @@ -0,0 +1,3 @@ +# Requirements + +You can find further information on the Kafka connector in the [docs](https://docs.open-metadata.org/connectors/database/databricks). \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/accountName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/accountName.md new file mode 100644 index 00000000000..b06cdfa602b --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/accountName.md @@ -0,0 +1 @@ +Account Name of your storage account \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/assumeRoleArn.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/assumeRoleArn.md new file mode 100644 index 00000000000..caa2cffafb2 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/assumeRoleArn.md @@ -0,0 +1,9 @@ +Typically, you use `AssumeRole` within your account or for cross-account access. In this field you'll set the +`ARN` (Amazon Resource Name) of the policy of the other account. + +A user who wants to access a role in a different account must also have permissions that are delegated from the account +administrator. The administrator must attach a policy that allows the user to call `AssumeRole` for the `ARN` of the role in the other account. + +This is a required field if you'd like to `AssumeRole`. + +Find more information on [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/assumeRoleSessionName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/assumeRoleSessionName.md new file mode 100644 index 00000000000..13cc6b1dc84 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/assumeRoleSessionName.md @@ -0,0 +1,6 @@ +An identifier for the assumed role session. Use the role session name to uniquely identify a session when the same role +is assumed by different principals or for different reasons. + +By default, we'll use the name `OpenMetadataSession`. + +Find more information about the [Role Session Name](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#:~:text=An%20identifier%20for%20the%20assumed%20role%20session.). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/assumeRoleSourceIdentity.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/assumeRoleSourceIdentity.md new file mode 100644 index 00000000000..36a4b75d716 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/assumeRoleSourceIdentity.md @@ -0,0 +1,4 @@ +The source identity specified by the principal that is calling the `AssumeRole` operation. You can use source identity +information in AWS CloudTrail logs to determine who took actions with a role. + +Find more information about [Source Identity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html#:~:text=Required%3A%20No-,SourceIdentity,-The%20source%20identity). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/authProviderX509CertUrl.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/authProviderX509CertUrl.md new file mode 100644 index 00000000000..a834138c251 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/authProviderX509CertUrl.md @@ -0,0 +1 @@ +This is the URL of the certificate that verifies the authenticity of the authorization server. To fetch this key, look for the value associated with the "auth_provider_x509_cert_url" key in the service account file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/authUri.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/authUri.md new file mode 100644 index 00000000000..2a80e6f5904 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/authUri.md @@ -0,0 +1 @@ +This is the URI for the authorization server. To fetch this key, look for the value associated with the "auth_uri" key in the service account file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsAccessKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsAccessKeyId.md new file mode 100644 index 00000000000..01434df88ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsAccessKeyId.md @@ -0,0 +1,11 @@ +When you interact with AWS, you specify your AWS security credentials to verify who you are and whether you have +permission to access the resources that you are requesting. AWS uses the security credentials to authenticate and +authorize your requests ([docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html)). + +Access keys consist of two parts: +1. An access key ID (for example, `AKIAIOSFODNN7EXAMPLE`), +2. And a secret access key (for example, `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`). + +You must use both the access key ID and secret access key together to authenticate your requests. + +You can find further information on how to manage your access keys [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsRegion.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsRegion.md new file mode 100644 index 00000000000..da00669c4d6 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsRegion.md @@ -0,0 +1,7 @@ +Each AWS Region is a separate geographic area in which AWS clusters data centers ([docs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html)). + +As AWS can have instances in multiple regions, we need to know the region the service you want reach belongs to. + +Note that the AWS Region is the only required parameter when configuring a connection. When connecting to the +services programmatically, there are different ways in which we can extract and use the rest of AWS configurations. +You can find further information about configuring your credentials [here](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#configuring-credentials). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsSecretAccessKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsSecretAccessKey.md new file mode 100644 index 00000000000..01434df88ce --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsSecretAccessKey.md @@ -0,0 +1,11 @@ +When you interact with AWS, you specify your AWS security credentials to verify who you are and whether you have +permission to access the resources that you are requesting. AWS uses the security credentials to authenticate and +authorize your requests ([docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html)). + +Access keys consist of two parts: +1. An access key ID (for example, `AKIAIOSFODNN7EXAMPLE`), +2. And a secret access key (for example, `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`). + +You must use both the access key ID and secret access key together to authenticate your requests. + +You can find further information on how to manage your access keys [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsSessionToken.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsSessionToken.md new file mode 100644 index 00000000000..c0fadf1812e --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/awsSessionToken.md @@ -0,0 +1,4 @@ +If you are using temporary credentials to access your services, you will need to inform the AWS Access Key ID +and AWS Secrets Access Key. Also, these will include an AWS Session Token. + +You can find more information on [Using temporary credentials with AWS resources](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/bucketName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/bucketName.md new file mode 100644 index 00000000000..4d81957415d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/bucketName.md @@ -0,0 +1 @@ +Bucket Name of the data source. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientEmail.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientEmail.md new file mode 100644 index 00000000000..c616e5327e7 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientEmail.md @@ -0,0 +1 @@ +This is the email address associated with the service account. To fetch this key, look for the value associated with the "client_email" key in the service account file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientId.md new file mode 100644 index 00000000000..b9dc33e2e1c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientId.md @@ -0,0 +1 @@ +This is a unique identifier for the service account. To fetch this key, look for the value associated with the "client_id" key in the service account file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientSecret.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientSecret.md new file mode 100644 index 00000000000..ff17fca37eb --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientSecret.md @@ -0,0 +1 @@ +Your Service Principal Password (Client Secret) \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientX509CertUrl.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientX509CertUrl.md new file mode 100644 index 00000000000..12e364a453c --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/clientX509CertUrl.md @@ -0,0 +1 @@ +This is the URL of the certificate that verifies the authenticity of the service account. To fetch this key, look for the value associated with the "client_x509_cert_url" key in the service account file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/configSource.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/configSource.md new file mode 100644 index 00000000000..839dcbfde3f --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/configSource.md @@ -0,0 +1,2 @@ +Available sources to fetch files. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/connectionArguments.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/connectionArguments.md new file mode 100644 index 00000000000..7b1e17d6ac0 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/connectionArguments.md @@ -0,0 +1,2 @@ +Additional connection arguments such as security or protocol configs that can be sent to service during connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/connectionOptions.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/connectionOptions.md new file mode 100644 index 00000000000..bdc43337fcd --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/connectionOptions.md @@ -0,0 +1,2 @@ +Additional connection options to build the URL that can be sent to service during the connection. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/databaseName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/databaseName.md similarity index 100% rename from openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Mysql/connections/fields/databaseName.md rename to openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/databaseName.md diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/endPointURL.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/endPointURL.md new file mode 100644 index 00000000000..ba59c13dd49 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/endPointURL.md @@ -0,0 +1,5 @@ +To connect programmatically to an AWS service, you use an endpoint. An *endpoint* is the URL of the +entry point for an AWS web service. The AWS SDKs and the AWS Command Line Interface (AWS CLI) automatically use the +default endpoint for each service in an AWS Region. But you can specify an alternate endpoint for your API requests. + +Find more information on [AWS service endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/gcsConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/gcsConfig.md new file mode 100644 index 00000000000..048f9d82bdb --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/gcsConfig.md @@ -0,0 +1 @@ +Pass the path of file containing the GCS credentials info diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/prefix.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/prefix.md new file mode 100644 index 00000000000..230f06f951e --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/prefix.md @@ -0,0 +1 @@ +Prefix of the data source. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/privateKey.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/privateKey.md new file mode 100644 index 00000000000..d2e3cb6baa8 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/privateKey.md @@ -0,0 +1 @@ +This is the private key associated with the service account that is used to authenticate and authorize access to BigQuery. To fetch this key, look for the value associated with the "private_key" key in the service account file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/privateKeyId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/privateKeyId.md new file mode 100644 index 00000000000..5d7dd7ef8cf --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/privateKeyId.md @@ -0,0 +1 @@ +This is a unique identifier for the private key associated with the service account. To fetch this key, look for the value associated with the "private_key_id" key in the service account file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/profileName.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/profileName.md new file mode 100644 index 00000000000..7798549dfea --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/profileName.md @@ -0,0 +1,7 @@ +A named profile is a collection of settings and credentials that you can apply to a AWS CLI command. +When you specify a profile to run a command, the settings and credentials are used to run that command. +Multiple named profiles can be stored in the config and credentials files. + +You can inform this field if you'd like to use a profile other than `default`. + +Find here more information about [Named profiles for the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html). diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/projectId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/projectId.md new file mode 100644 index 00000000000..08925be5df4 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/projectId.md @@ -0,0 +1 @@ + This is the ID of the project associated with the service account. To fetch this key, look for the value associated with the "project_id" key in the service account file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/securityConfig.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/securityConfig.md new file mode 100644 index 00000000000..3e8772662f4 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/securityConfig.md @@ -0,0 +1,2 @@ +AWS credentials configs. + diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/tenantId.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/tenantId.md new file mode 100644 index 00000000000..30b6abc9719 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/tenantId.md @@ -0,0 +1 @@ +Tenant ID of your Azure App Subscription \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/tokenUri.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/tokenUri.md new file mode 100644 index 00000000000..22f83674f3d --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/tokenUri.md @@ -0,0 +1 @@ +This is the URI for the token server. To fetch this key, look for the value associated with the "token_uri" key in the service account file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/type.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/type.md new file mode 100644 index 00000000000..5a6a51414f2 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/fields/type.md @@ -0,0 +1 @@ +This indicates the type of service account. For BigQuery, it should be set to "service_account". To fetch this key, simply look for the value associated with the "type" key in the service account file. \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/requirements.md b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/requirements.md new file mode 100644 index 00000000000..f819e486838 --- /dev/null +++ b/openmetadata-ui/src/main/resources/ui/public/locales/en-US/Database/Datalake/requirements.md @@ -0,0 +1,51 @@ +# Requirements + +To run the Ingestion via the UI you'll need to use the OpenMetadata Ingestion Container, which comes shipped with +custom Airflow plugins to handle the workflow deployment. + + +Datalake connector supports extracting metadata from file types `JSON`, `CSV`, `TSV`, `Parquet` & `Avro`. + + +**S3 Permissions** + +