diff --git a/ingestion/src/metadata/utils/dbt_config.py b/ingestion/src/metadata/utils/dbt_config.py index 682337bad6a..4e1234289d6 100644 --- a/ingestion/src/metadata/utils/dbt_config.py +++ b/ingestion/src/metadata/utils/dbt_config.py @@ -157,7 +157,7 @@ def _(config: DbtCloudConfig): # pylint: disable=too-many-locals expiry = 0 auth_token = config.dbtCloudAuthToken.get_secret_value(), expiry client_config = ClientConfig( - base_url="https://cloud.getdbt.com", + base_url=config.dbtCloudUrl, api_version="api/v2", auth_token=lambda: auth_token, auth_header="Authorization", diff --git a/openmetadata-spec/src/main/resources/json/schema/metadataIngestion/dbtconfig/dbtCloudConfig.json b/openmetadata-spec/src/main/resources/json/schema/metadataIngestion/dbtconfig/dbtCloudConfig.json index 97d9a3b615f..e4fdf3ffe7f 100644 --- a/openmetadata-spec/src/main/resources/json/schema/metadataIngestion/dbtconfig/dbtCloudConfig.json +++ b/openmetadata-spec/src/main/resources/json/schema/metadataIngestion/dbtconfig/dbtCloudConfig.json @@ -2,27 +2,34 @@ "$id": "https://open-metadata.org/schema/metadataIngestion/dbtconfig/dbtCloudConfig.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "DBT Cloud Config", - "description": "DBT Cloud configuration.", + "description": "dbt Cloud configuration.", "javaType": "org.openmetadata.schema.metadataIngestion.dbtconfig.DbtCloudConfig", "type": "object", "properties": { "dbtCloudAuthToken": { - "title": "DBT Cloud Authentication Token", - "description": "DBT cloud account authentication token", + "title": "dbt Cloud Authentication Token", + "description": "dbt cloud account authentication token", "type": "string", "format": "password" }, "dbtCloudAccountId": { - "title": "DBT Cloud Account Id", - "description": "DBT cloud account Id", + "title": "dbt Cloud Account Id", + "description": "dbt cloud account Id", "type": "string" }, "dbtCloudProjectId": { - "title": "DBT Cloud Project Id", - "description": "In case of multiple projects in a DBT cloud account, specify the project's id from which you want to extract the DBT run artifacts", + "title": "dbt Cloud Project Id", + "description": "In case of multiple projects in a dbt cloud account, specify the project's id from which you want to extract the dbt run artifacts", "type": "string" + }, + "dbtCloudUrl": { + "title": "dbt Cloud URL", + "description": "URL to connect to your dbt cloud instance. E.g., https://cloud.getdbt.com or https://emea.dbt.com/", + "type": "string", + "format": "uri", + "default": "https://cloud.getdbt.com" } }, "additionalProperties": false, - "required": ["dbtCloudAuthToken", "dbtCloudAccountId"] + "required": ["dbtCloudAuthToken", "dbtCloudAccountId", "dbtCloudUrl"] } \ No newline at end of file diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/DBTConfigFormBuilder/DBTCloudConfig.test.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/DBTConfigFormBuilder/DBTCloudConfig.test.tsx index 78b6a4d65b1..99b6e5603d6 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/DBTConfigFormBuilder/DBTCloudConfig.test.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/DBTConfigFormBuilder/DBTCloudConfig.test.tsx @@ -22,11 +22,13 @@ const mockAuthTokenChange = jest.fn(); const mockUpdateDescriptions = jest.fn(); const mockDbtCloudProjectId = jest.fn(); const mockUpdateDBTClassification = jest.fn(); +const mockUpdateDBTCloudUrl = jest.fn(); const mockProps = { dbtCloudAccountId: '', dbtCloudAuthToken: '', dbtUpdateDescriptions: false, + dbtCloudUrl: 'https://cloud.getdbt.com/', okText: 'Next', cancelText: 'Back', onCancel: mockCancel, @@ -35,6 +37,7 @@ const mockProps = { handleCloudAuthTokenChange: mockAuthTokenChange, handleUpdateDescriptions: mockUpdateDescriptions, handleDbtCloudProjectId: mockDbtCloudProjectId, + handleDbtCloudUrl: mockUpdateDBTCloudUrl, handleUpdateDBTClassification: mockUpdateDBTClassification, }; diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/DBTConfigFormBuilder/DBTCloudConfig.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/DBTConfigFormBuilder/DBTCloudConfig.tsx index ddb8e8ace9a..5d361783ae6 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/DBTConfigFormBuilder/DBTCloudConfig.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/DBTConfigFormBuilder/DBTCloudConfig.tsx @@ -34,6 +34,7 @@ interface Props extends DBTFormCommonProps, DbtConfigCloud { handleUpdateDescriptions: (value: boolean) => void; handleDbtCloudProjectId: (value: string) => void; handleUpdateDBTClassification: (value: string) => void; + handleDbtCloudUrl: (value: string) => void; } export const DBTCloudConfig: FunctionComponent = ({ @@ -41,6 +42,7 @@ export const DBTCloudConfig: FunctionComponent = ({ dbtCloudAuthToken = '', dbtCloudProjectId, dbtUpdateDescriptions = false, + dbtCloudUrl = 'https://cloud.getdbt.com/', okText, cancelText, onCancel, @@ -50,6 +52,7 @@ export const DBTCloudConfig: FunctionComponent = ({ handleUpdateDescriptions, handleDbtCloudProjectId, dbtClassificationName, + handleDbtCloudUrl, handleUpdateDBTClassification, }: Props) => { const [errors, setErrors] = useState(); @@ -68,6 +71,7 @@ export const DBTCloudConfig: FunctionComponent = ({ dbtUpdateDescriptions, dbtCloudProjectId, dbtClassificationName, + dbtCloudUrl, }; if (validate(submitData)) { onSubmit(submitData); @@ -136,6 +140,25 @@ export const DBTCloudConfig: FunctionComponent = ({ onChange={(e) => handleDbtCloudProjectId(e.target.value)} /> + + + +

+ URL to connect to your dbt cloud instance. E.g., + https://cloud.getdbt.com or https://emea.dbt.com/ +

+ handleDbtCloudUrl(e.target.value)} + /> +
{getSeparator('')} ; export type DbtConfigLocal = Pick< diff --git a/openmetadata-ui/src/main/resources/ui/src/components/common/DBTConfigFormBuilder/DBTConfigFormBuilder.tsx b/openmetadata-ui/src/main/resources/ui/src/components/common/DBTConfigFormBuilder/DBTConfigFormBuilder.tsx index 86aaf375d27..b3de2c10816 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/common/DBTConfigFormBuilder/DBTConfigFormBuilder.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/common/DBTConfigFormBuilder/DBTConfigFormBuilder.tsx @@ -89,6 +89,7 @@ const DBTConfigFormBuilder: FunctionComponent = ({ dbtCloudAccountId={dbtConfig?.dbtCloudAccountId} dbtCloudAuthToken={dbtConfig?.dbtCloudAuthToken} dbtCloudProjectId={dbtConfig?.dbtCloudProjectId} + dbtCloudUrl={dbtConfig.dbtCloudUrl} dbtUpdateDescriptions={dbtConfig?.dbtUpdateDescriptions} handleCloudAccountIdChange={(val) => { updateDbtConfig('dbtCloudAccountId', val); @@ -99,6 +100,7 @@ const DBTConfigFormBuilder: FunctionComponent = ({ handleDbtCloudProjectId={(val) => { updateDbtConfig('dbtCloudProjectId', val); }} + handleDbtCloudUrl={(val) => updateDbtConfig('dbtCloudUrl', val)} handleUpdateDBTClassification={(val) => { updateDbtConfig('dbtClassificationName', val); }}