Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Import SECRET_ENV_PREFIX from dbt-common #10019

Merged
merged 4 commits into from
Apr 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changes/unreleased/Under the Hood-20240423-143055.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
kind: Under the Hood
body: Use the SECRET_ENV_PREFIX from dbt_common instead of duplicating it in dbt-core
time: 2024-04-23T14:30:55.739378-05:00
custom:
Author: emmyoop
Issue: "10018"
2 changes: 1 addition & 1 deletion core/dbt/artifacts/schemas/run/v5/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from datetime import datetime


from dbt.constants import SECRET_ENV_PREFIX
from dbt_common.constants import SECRET_ENV_PREFIX
from dbt.artifacts.resources import CompiledResource
from dbt.artifacts.schemas.base import (
BaseArtifactMetadata,
Expand Down
3 changes: 2 additions & 1 deletion core/dbt/config/renderer.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@

from dbt.clients.jinja import get_rendered
from dbt_common.clients.jinja import catch_jinja
from dbt.constants import SECRET_ENV_PREFIX, DEPENDENCIES_FILE_NAME, SECRET_PLACEHOLDER
from dbt_common.constants import SECRET_ENV_PREFIX
from dbt.constants import DEPENDENCIES_FILE_NAME, SECRET_PLACEHOLDER
from dbt.context.target import TargetContext
from dbt.context.secret import SecretContext
from dbt.context.base import BaseContext
Expand Down
2 changes: 0 additions & 2 deletions core/dbt/constants.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
# TODO: remove SECRET_ENV_PREFIX and import from dbt_common
SECRET_ENV_PREFIX = "DBT_ENV_SECRET_"
DEFAULT_ENV_PLACEHOLDER = "DBT_DEFAULT_PLACEHOLDER"

SECRET_PLACEHOLDER = "$$$DBT_SECRET_START$$${}$$$DBT_SECRET_END$$$"
Expand Down
3 changes: 2 additions & 1 deletion core/dbt/context/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
from dbt import utils
from dbt.clients.jinja import get_rendered
from dbt.clients.yaml_helper import yaml, safe_load, SafeLoader, Loader, Dumper # noqa: F401
from dbt.constants import SECRET_ENV_PREFIX, DEFAULT_ENV_PLACEHOLDER, SECRET_PLACEHOLDER
from dbt_common.constants import SECRET_ENV_PREFIX
from dbt.constants import DEFAULT_ENV_PLACEHOLDER, SECRET_PLACEHOLDER
from dbt.contracts.graph.nodes import Resource
from dbt.exceptions import (
SecretEnvVarLocationError,
Expand Down
3 changes: 2 additions & 1 deletion core/dbt/context/configured.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

from dbt_common.context import get_invocation_context

from dbt.constants import SECRET_ENV_PREFIX, DEFAULT_ENV_PLACEHOLDER
from dbt_common.constants import SECRET_ENV_PREFIX
from dbt.constants import DEFAULT_ENV_PLACEHOLDER
from dbt.adapters.contracts.connection import AdapterRequiredConfig
from dbt.node_types import NodeType
from dbt.utils import MultiDict
Expand Down
3 changes: 2 additions & 1 deletion core/dbt/context/providers.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@
from dbt.adapters.factory import get_adapter, get_adapter_package_names, get_adapter_type_names
from dbt.clients.jinja import get_rendered, MacroGenerator, MacroStack, UnitTestMacroGenerator
from dbt.config import RuntimeConfig, Project
from dbt.constants import SECRET_ENV_PREFIX, DEFAULT_ENV_PLACEHOLDER
from dbt_common.constants import SECRET_ENV_PREFIX
from dbt.constants import DEFAULT_ENV_PLACEHOLDER
from dbt.context.base import contextmember, contextproperty, Var
from dbt.context.configured import FQNLookup
from dbt.context.context_config import ContextConfig
Expand Down
3 changes: 2 additions & 1 deletion core/dbt/context/secret.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@

from .base import BaseContext, contextmember

from dbt.constants import SECRET_ENV_PREFIX, DEFAULT_ENV_PLACEHOLDER, SECRET_PLACEHOLDER
from dbt_common.constants import SECRET_ENV_PREFIX
from dbt.constants import DEFAULT_ENV_PLACEHOLDER, SECRET_PLACEHOLDER
from dbt.exceptions import EnvVarMissingError


Expand Down
2 changes: 1 addition & 1 deletion core/dbt/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

from dbt_common.dataclass_schema import ValidationError

from dbt.constants import SECRET_ENV_PREFIX
from dbt_common.constants import SECRET_ENV_PREFIX


if TYPE_CHECKING:
Expand Down
2 changes: 1 addition & 1 deletion core/dbt/parser/manifest.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@
MANIFEST_FILE_NAME,
PARTIAL_PARSE_FILE_NAME,
SEMANTIC_MANIFEST_FILE_NAME,
SECRET_ENV_PREFIX,
)
from dbt_common.constants import SECRET_ENV_PREFIX
from dbt_common.helper_types import PathSet
from dbt_common.events.functions import fire_event, get_invocation_id, warn_or_error
from dbt_common.events.types import (
Expand Down
7 changes: 4 additions & 3 deletions tests/functional/context_methods/test_env_vars.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import pytest
import os

from dbt.constants import SECRET_ENV_PREFIX, DEFAULT_ENV_PLACEHOLDER
from dbt_common.constants import SECRET_ENV_PREFIX
from dbt.constants import DEFAULT_ENV_PLACEHOLDER
from dbt.tests.util import run_dbt, get_manifest, run_dbt_and_capture


Expand Down Expand Up @@ -55,13 +56,13 @@ def setup(self):
os.environ["DBT_TEST_ENV_VAR"] = "1"
os.environ["DBT_TEST_USER"] = "root"
os.environ["DBT_TEST_PASS"] = "password"
os.environ[SECRET_ENV_PREFIX + "SECRET"] = "secret_variable"
os.environ[SECRET_ENV_PREFIX + "_SECRET"] = "secret_variable"
os.environ["DBT_TEST_NOT_SECRET"] = "regular_variable"
os.environ["DBT_TEST_IGNORE_DEFAULT"] = "ignored_default"
yield
del os.environ["DBT_TEST_ENV_VAR"]
del os.environ["DBT_TEST_USER"]
del os.environ[SECRET_ENV_PREFIX + "SECRET"]
del os.environ[SECRET_ENV_PREFIX + "_SECRET"]
del os.environ["DBT_TEST_NOT_SECRET"]
del os.environ["DBT_TEST_IGNORE_DEFAULT"]

Expand Down
20 changes: 10 additions & 10 deletions tests/functional/context_methods/test_secret_env_vars.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import pytest
import os

from dbt.constants import SECRET_ENV_PREFIX
from dbt_common.constants import SECRET_ENV_PREFIX
from dbt.exceptions import ParsingError, DbtInternalError
from tests.functional.context_methods.first_dependency import FirstDependencyProject
from dbt.tests.util import run_dbt, run_dbt_and_capture, read_file
Expand Down Expand Up @@ -73,15 +73,15 @@ def test_disallow_secret(self, project):
class TestAllowSecretProfilePackage(FirstDependencyProject):
@pytest.fixture(scope="class", autouse=True)
def setup(self):
os.environ[SECRET_ENV_PREFIX + "USER"] = "root"
os.environ[SECRET_ENV_PREFIX + "PASS"] = "password"
os.environ[SECRET_ENV_PREFIX + "PACKAGE"] = "first_dependency"
os.environ[SECRET_ENV_PREFIX + "GIT_TOKEN"] = "abc123"
os.environ[SECRET_ENV_PREFIX + "_USER"] = "root"
os.environ[SECRET_ENV_PREFIX + "_PASS"] = "password"
os.environ[SECRET_ENV_PREFIX + "_PACKAGE"] = "first_dependency"
os.environ[SECRET_ENV_PREFIX + "_GIT_TOKEN"] = "abc123"
yield
del os.environ[SECRET_ENV_PREFIX + "USER"]
del os.environ[SECRET_ENV_PREFIX + "PASS"]
del os.environ[SECRET_ENV_PREFIX + "PACKAGE"]
del os.environ[SECRET_ENV_PREFIX + "GIT_TOKEN"]
del os.environ[SECRET_ENV_PREFIX + "_USER"]
del os.environ[SECRET_ENV_PREFIX + "_PASS"]
del os.environ[SECRET_ENV_PREFIX + "_PACKAGE"]
del os.environ[SECRET_ENV_PREFIX + "_GIT_TOKEN"]

@pytest.fixture(scope="class")
def models(self):
Expand Down Expand Up @@ -137,7 +137,7 @@ def test_allow_secrets(self, project, first_dependency):
class TestCloneFailSecretScrubbed:
@pytest.fixture(scope="class", autouse=True)
def setup(self):
os.environ[SECRET_ENV_PREFIX + "GIT_TOKEN"] = "abc123"
os.environ[SECRET_ENV_PREFIX + "_GIT_TOKEN"] = "abc123"

@pytest.fixture(scope="class")
def models(self):
Expand Down
8 changes: 4 additions & 4 deletions tests/functional/partial_parsing/test_pp_vars.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from pathlib import Path

import pytest
from dbt.constants import SECRET_ENV_PREFIX
from dbt_common.constants import SECRET_ENV_PREFIX
from dbt.exceptions import ParsingError
from dbt.adapters.exceptions import FailedToConnectError
from dbt.tests.util import get_manifest, run_dbt, run_dbt_and_capture, write_file
Expand Down Expand Up @@ -366,7 +366,7 @@ def dbt_profile_target(self):

# user is secret and password is not. postgres on macos doesn't care if the password
# changes so we have to change the user. related: https://github.com/dbt-labs/dbt-core/pull/4250
os.environ[SECRET_ENV_PREFIX + "USER"] = "root"
os.environ[SECRET_ENV_PREFIX + "_USER"] = "root"
os.environ["ENV_VAR_PASS"] = "password"
return {
"type": "postgres",
Expand All @@ -381,15 +381,15 @@ def dbt_profile_target(self):
def test_profile_secret_env_vars(self, project):

# Initial run
os.environ[SECRET_ENV_PREFIX + "USER"] = "root"
os.environ[SECRET_ENV_PREFIX + "_USER"] = "root"
os.environ["ENV_VAR_PASS"] = "password"

results = run_dbt(["run"])
manifest = get_manifest(project.project_root)
env_vars_checksum = manifest.state_check.profile_env_vars_hash.checksum

# Change a secret var, it shouldn't register because we shouldn't save secrets.
os.environ[SECRET_ENV_PREFIX + "USER"] = "fake_user"
os.environ[SECRET_ENV_PREFIX + "_USER"] = "fake_user"
# we just want to see if the manifest has included
# the secret in the hash of environment variables.
(results, log_output) = run_dbt_and_capture(["run"], expect_pass=True)
Expand Down