From 5fc9edea5f4962cb56b6889b96439302b06bf295 Mon Sep 17 00:00:00 2001 From: Justin Bandoro Date: Wed, 15 Nov 2023 15:55:41 -0800 Subject: [PATCH 01/11] fix: test_load_via_dbt_ls_with_invalid_dbt_path if user has system dbt (cherry picked from commit 7ec7410fbed7fff9ebd0f77873f77eb8c8fb1773) --- cosmos/config.py | 4 +++- tests/dbt/test_graph.py | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cosmos/config.py b/cosmos/config.py index 57d5200b15..f9d47f5e2e 100644 --- a/cosmos/config.py +++ b/cosmos/config.py @@ -258,7 +258,7 @@ class ExecutionConfig: execution_mode: ExecutionMode = ExecutionMode.LOCAL test_indirect_selection: TestIndirectSelection = TestIndirectSelection.EAGER - dbt_executable_path: str | Path = get_system_dbt() + dbt_executable_path: str | Path | None = None dbt_project_path: InitVar[str | Path | None] = None @@ -266,3 +266,5 @@ class ExecutionConfig: def __post_init__(self, dbt_project_path: str | Path | None) -> None: self.project_path = Path(dbt_project_path) if dbt_project_path else None + if not self.dbt_executable_path: + self.dbt_executable_path = get_system_dbt() diff --git a/tests/dbt/test_graph.py b/tests/dbt/test_graph.py index 607e56641e..0ad7424c84 100644 --- a/tests/dbt/test_graph.py +++ b/tests/dbt/test_graph.py @@ -343,7 +343,8 @@ def test_load_via_dbt_ls_without_profile(mock_validate_dbt_command): assert err_info.value.args[0] == expected -def test_load_via_dbt_ls_with_invalid_dbt_path(): +@patch("cosmos.dbt.executable.shutil.which", return_value=None) +def test_load_via_dbt_ls_with_invalid_dbt_path(mock_which): project_config = ProjectConfig(dbt_project_path=DBT_PROJECTS_ROOT_DIR / DBT_PROJECT_NAME) execution_config = ExecutionConfig(dbt_project_path=DBT_PROJECTS_ROOT_DIR / DBT_PROJECT_NAME) render_config = RenderConfig( From 552b8c7f039aaabd676b6aad05fef19cc7855f48 Mon Sep 17 00:00:00 2001 From: Justin Bandoro Date: Wed, 15 Nov 2023 16:03:54 -0800 Subject: [PATCH 02/11] change to default factory (cherry picked from commit 709ba446b10266759a85551f8e056e7d9f50d589) --- cosmos/config.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cosmos/config.py b/cosmos/config.py index f9d47f5e2e..a33e968304 100644 --- a/cosmos/config.py +++ b/cosmos/config.py @@ -258,7 +258,7 @@ class ExecutionConfig: execution_mode: ExecutionMode = ExecutionMode.LOCAL test_indirect_selection: TestIndirectSelection = TestIndirectSelection.EAGER - dbt_executable_path: str | Path | None = None + dbt_executable_path: str | Path = field(default_factory=get_system_dbt) dbt_project_path: InitVar[str | Path | None] = None @@ -266,5 +266,3 @@ class ExecutionConfig: def __post_init__(self, dbt_project_path: str | Path | None) -> None: self.project_path = Path(dbt_project_path) if dbt_project_path else None - if not self.dbt_executable_path: - self.dbt_executable_path = get_system_dbt() From f229a8a61d840d21e16662151c7ff8c64a114d38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Quang=20B=C3=ACnh?= Date: Fri, 17 Nov 2023 07:08:27 +0700 Subject: [PATCH 03/11] Fix running models that use alias while supporting dbt versions (#662) Current version, cosmos will got bug `Not found node` because it run with alias selection as: `--models customers_abc_v1 ` and `--models customers_abc_v2` . I propose to parsing node selection in `unique_id` instead of using `alias` . So node selection should be: `unique_id.split('.', 2)[2]` , reference to [function](https://github.com/dbt-labs/dbt-core/blob/main/core/dbt/contracts/graph/node_args.py#L26) and [resource-details document](https://docs.getdbt.com/reference/artifacts/manifest-json#resource-details). In addition, with this change help cosmos also support versioned models on dbt-core `>=1.5.0` instead `>=1.6.0` as current version. Cosmos will support dynamic aliases and versioned models Closes: #636 (cherry picked from commit e23a445b30ca391842dae870260cc7ce799d4d5c) --- cosmos/airflow/graph.py | 12 +- cosmos/dbt/graph.py | 29 +++-- dev/dags/dbt/model_version/models/schema.yml | 4 + tests/airflow/test_graph.py | 119 ++++++++++++------- tests/dbt/test_graph.py | 17 ++- tests/dbt/test_selector.py | 15 +-- tests/test_converter.py | 3 +- 7 files changed, 124 insertions(+), 75 deletions(-) diff --git a/cosmos/airflow/graph.py b/cosmos/airflow/graph.py index 3a140a2357..af854d4f50 100644 --- a/cosmos/airflow/graph.py +++ b/cosmos/airflow/graph.py @@ -83,11 +83,11 @@ def create_test_task_metadata( task_args["indirect_selection"] = test_indirect_selection.value if node is not None: if node.resource_type == DbtResourceType.MODEL: - task_args["models"] = node.name + task_args["models"] = node.resource_name elif node.resource_type == DbtResourceType.SOURCE: - task_args["select"] = f"source:{node.unique_id[len('source.'):]}" + task_args["select"] = f"source:{node.resource_name}" else: # tested with node.resource_type == DbtResourceType.SEED or DbtResourceType.SNAPSHOT - task_args["select"] = node.name + task_args["select"] = node.resource_name return TaskMetadata( id=test_task_name, operator_class=calculate_operator_class( @@ -108,8 +108,8 @@ def create_task_metadata( :param execution_mode: Where Cosmos should run each dbt task (e.g. ExecutionMode.LOCAL, ExecutionMode.KUBERNETES). Default is ExecutionMode.LOCAL. :param args: Arguments to be used to instantiate an Airflow Task - :param use_name_as_task_id_prefix: If resource_type is DbtResourceType.MODEL, it determines whether - using name as task id prefix or not. If it is True task_id = _run, else task_id=run. + :param use_task_group: It determines whether to use the name as a prefix for the task id or not. + If it is False, then use the name as a prefix for the task id, otherwise do not. :returns: The metadata necessary to instantiate the source dbt node as an Airflow task. """ dbt_resource_to_class = { @@ -118,7 +118,7 @@ def create_task_metadata( DbtResourceType.SEED: "DbtSeed", DbtResourceType.TEST: "DbtTest", } - args = {**args, **{"models": node.name}} + args = {**args, **{"models": node.resource_name}} if DbtResourceType(node.resource_type) in DEFAULT_DBT_RESOURCES and node.resource_type in dbt_resource_to_class: if node.resource_type == DbtResourceType.MODEL: diff --git a/cosmos/dbt/graph.py b/cosmos/dbt/graph.py index 242bca6f96..40154308b8 100644 --- a/cosmos/dbt/graph.py +++ b/cosmos/dbt/graph.py @@ -42,7 +42,6 @@ class DbtNode: Metadata related to a dbt node (e.g. model, seed, snapshot). """ - name: str unique_id: str resource_type: DbtResourceType depends_on: list[str] @@ -51,6 +50,23 @@ class DbtNode: config: dict[str, Any] = field(default_factory=lambda: {}) has_test: bool = False + @property + def resource_name(self) -> str: + """ + Use this property to retrieve the resource name for command generation, for instance: ["dbt", "run", "--models", f"{resource_name}"]. + The unique_id format is defined as [..](https://docs.getdbt.com/reference/artifacts/manifest-json#resource-details). + For a special case like a versioned model, the unique_id follows this pattern: [model...](https://github.com/dbt-labs/dbt-core/blob/main/core/dbt/contracts/graph/node_args.py#L26C3-L31) + """ + return self.unique_id.split(".", 2)[2] + + @property + def name(self) -> str: + """ + Use this property as the task name or task group name. + Replace period (.) with underscore (_) due to versioned models. + """ + return self.resource_name.replace(".", "_") + def run_command(command: list[str], tmp_dir: Path, env_vars: dict[str, str]) -> str: """Run a command in a subprocess, returning the stdout.""" @@ -89,7 +105,6 @@ def parse_dbt_ls_output(project_path: Path, ls_stdout: str) -> dict[str, DbtNode logger.debug("Skipped dbt ls line: %s", line) else: node = DbtNode( - name=node_dict.get("alias", node_dict["name"]), unique_id=node_dict["unique_id"], resource_type=DbtResourceType(node_dict["resource_type"]), depends_on=node_dict.get("depends_on", {}).get("nodes", []), @@ -195,9 +210,6 @@ def load_via_dbt_ls(self) -> None: This is the most accurate way of loading `dbt` projects and filtering them out, since it uses the `dbt` command line for both parsing and filtering the nodes. - Noted that if dbt project contains versioned models, need to use dbt>=1.6.0 instead. Because, as dbt<1.6.0, - dbt cli doesn't support select a specific versioned models as stg_customers_v1, customers_v1, ... - Updates in-place: * self.nodes * self.filtered_nodes @@ -291,8 +303,7 @@ def load_via_custom_parser(self) -> None: for model_name, model in models: config = {item.split(":")[0]: item.split(":")[-1] for item in model.config.config_selectors} node = DbtNode( - name=model_name, - unique_id=model_name, + unique_id=f"{model.type.value}.{self.project.project_name}.{model_name}", resource_type=DbtResourceType(model.type.value), depends_on=list(model.config.upstream_models), file_path=Path( @@ -325,9 +336,6 @@ def load_from_dbt_manifest(self) -> None: However, since the Manifest does not represent filters, it relies on the Custom Cosmos implementation to filter out the nodes relevant to the user (based on self.exclude and self.select). - Noted that if dbt project contains versioned models, need to use dbt>=1.6.0 instead. Because, as dbt<1.6.0, - dbt cli doesn't support select a specific versioned models as stg_customers_v1, customers_v1, ... - Updates in-place: * self.nodes * self.filtered_nodes @@ -347,7 +355,6 @@ def load_from_dbt_manifest(self) -> None: resources = {**manifest.get("nodes", {}), **manifest.get("sources", {}), **manifest.get("exposures", {})} for unique_id, node_dict in resources.items(): node = DbtNode( - name=node_dict.get("alias", node_dict["name"]), unique_id=unique_id, resource_type=DbtResourceType(node_dict["resource_type"]), depends_on=node_dict.get("depends_on", {}).get("nodes", []), diff --git a/dev/dags/dbt/model_version/models/schema.yml b/dev/dags/dbt/model_version/models/schema.yml index 40a5a4055b..66f1ccedd7 100644 --- a/dev/dags/dbt/model_version/models/schema.yml +++ b/dev/dags/dbt/model_version/models/schema.yml @@ -37,7 +37,11 @@ models: - include: all exclude: - full_name + config: + alias: '{{ "customers_" ~ var("division", "USA") ~ "_v1" }}' - v: 2 + config: + alias: '{{ "customers_" ~ var("division", "USA") ~ "_v2" }}' - name: orders description: This table has basic information about orders, as well as some derived facts based on payments diff --git a/tests/airflow/test_graph.py b/tests/airflow/test_graph.py index 6bc244b6b6..35e313fca1 100644 --- a/tests/airflow/test_graph.py +++ b/tests/airflow/test_graph.py @@ -17,43 +17,57 @@ generate_task_or_group, ) from cosmos.config import ProfileConfig -from cosmos.constants import DbtResourceType, ExecutionMode, TestBehavior, TestIndirectSelection +from cosmos.constants import ( + DbtResourceType, + ExecutionMode, + TestBehavior, + TestIndirectSelection, +) from cosmos.dbt.graph import DbtNode from cosmos.profiles import PostgresUserPasswordProfileMapping SAMPLE_PROJ_PATH = Path("/home/user/path/dbt-proj/") parent_seed = DbtNode( - name="seed_parent", - unique_id="seed_parent", + unique_id=f"{DbtResourceType.SEED.value}.{SAMPLE_PROJ_PATH.stem}.seed_parent", resource_type=DbtResourceType.SEED, depends_on=[], file_path="", ) parent_node = DbtNode( - name="parent", - unique_id="parent", + unique_id=f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.parent", resource_type=DbtResourceType.MODEL, - depends_on=["seed_parent"], + depends_on=[parent_seed.unique_id], file_path=SAMPLE_PROJ_PATH / "gen2/models/parent.sql", tags=["has_child"], config={"materialized": "view"}, has_test=True, ) test_parent_node = DbtNode( - name="test_parent", unique_id="test_parent", resource_type=DbtResourceType.TEST, depends_on=["parent"], file_path="" + unique_id=f"{DbtResourceType.TEST.value}.{SAMPLE_PROJ_PATH.stem}.test_parent", + resource_type=DbtResourceType.TEST, + depends_on=[parent_node.unique_id], + file_path="", ) child_node = DbtNode( - name="child", - unique_id="child", + unique_id=f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.child", resource_type=DbtResourceType.MODEL, - depends_on=["parent"], + depends_on=[parent_node.unique_id], file_path=SAMPLE_PROJ_PATH / "gen3/models/child.sql", tags=["nightly"], config={"materialized": "table"}, ) -sample_nodes_list = [parent_seed, parent_node, test_parent_node, child_node] +child2_node = DbtNode( + unique_id=f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.child2.v2", + resource_type=DbtResourceType.MODEL, + depends_on=[parent_node.unique_id], + file_path=SAMPLE_PROJ_PATH / "gen3/models/child2_v2.sql", + tags=["nightly"], + config={"materialized": "table"}, +) + +sample_nodes_list = [parent_seed, parent_node, test_parent_node, child_node, child2_node] sample_nodes = {node.unique_id: node for node in sample_nodes_list} @@ -91,6 +105,7 @@ def test_build_airflow_graph_with_after_each(): "parent.run", "parent.test", "child_run", + "child2_v2_run", ] assert topological_sort == expected_sort @@ -100,15 +115,16 @@ def test_build_airflow_graph_with_after_each(): assert task_groups["parent"].upstream_task_ids == {"seed_parent_seed"} assert list(task_groups["parent"].children.keys()) == ["parent.run", "parent.test"] - assert len(dag.leaves) == 1 + assert len(dag.leaves) == 2 assert dag.leaves[0].task_id == "child_run" + assert dag.leaves[1].task_id == "child2_v2_run" @pytest.mark.parametrize( "node_type,task_suffix", [(DbtResourceType.MODEL, "run"), (DbtResourceType.SEED, "seed"), (DbtResourceType.SNAPSHOT, "snapshot")], ) -def test_create_task_group_for_after_each_supported_nodes(node_type, task_suffix): +def test_create_task_group_for_after_each_supported_nodes(node_type: DbtResourceType, task_suffix): """ dbt test runs tests defined on models, sources, snapshots, and seeds. It expects that you have already created those resources through the appropriate commands. @@ -116,8 +132,7 @@ def test_create_task_group_for_after_each_supported_nodes(node_type, task_suffix """ with DAG("test-task-group-after-each", start_date=datetime(2022, 1, 1)) as dag: node = DbtNode( - name="dbt_node", - unique_id="dbt_node", + unique_id=f"{node_type.value}.{SAMPLE_PROJ_PATH.stem}.dbt_node", resource_type=node_type, file_path=SAMPLE_PROJ_PATH / "gen2/models/parent.sql", tags=["has_child"], @@ -178,7 +193,7 @@ def test_build_airflow_graph_with_after_all(): dbt_project_name="astro_shop", ) topological_sort = [task.task_id for task in dag.topological_sort()] - expected_sort = ["seed_parent_seed", "parent_run", "child_run", "astro_shop_test"] + expected_sort = ["seed_parent_seed", "parent_run", "child_run", "child2_v2_run", "astro_shop_test"] assert topological_sort == expected_sort task_groups = dag.task_group_dict @@ -195,8 +210,7 @@ def test_calculate_operator_class(): def test_calculate_leaves(): grandparent_node = DbtNode( - name="grandparent", - unique_id="grandparent", + unique_id=f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.grandparent", resource_type=DbtResourceType.MODEL, depends_on=[], file_path="", @@ -204,28 +218,25 @@ def test_calculate_leaves(): config={}, ) parent1_node = DbtNode( - name="parent1", - unique_id="parent1", + unique_id=f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.parent1", resource_type=DbtResourceType.MODEL, - depends_on=["grandparent"], + depends_on=[grandparent_node.unique_id], file_path="", tags=[], config={}, ) parent2_node = DbtNode( - name="parent2", - unique_id="parent2", + unique_id=f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.parent2", resource_type=DbtResourceType.MODEL, - depends_on=["grandparent"], + depends_on=[parent1_node.unique_id], file_path="", tags=[], config={}, ) child_node = DbtNode( - name="child", - unique_id="child", + unique_id=f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.child", resource_type=DbtResourceType.MODEL, - depends_on=["parent1", "parent2"], + depends_on=[parent1_node.unique_id, parent2_node.unique_id], file_path="", tags=[], config={}, @@ -235,14 +246,13 @@ def test_calculate_leaves(): nodes = {node.unique_id: node for node in nodes_list} leaves = calculate_leaves(nodes.keys(), nodes) - assert leaves == ["child"] + assert leaves == [f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.child"] @patch("cosmos.airflow.graph.logger.propagate", True) def test_create_task_metadata_unsupported(caplog): child_node = DbtNode( - name="unsupported", - unique_id="unsupported", + unique_id=f"unsupported.{SAMPLE_PROJ_PATH.stem}.unsupported", resource_type="unsupported", depends_on=[], file_path="", @@ -252,7 +262,7 @@ def test_create_task_metadata_unsupported(caplog): response = create_task_metadata(child_node, execution_mode="", args={}) assert response is None expected_msg = ( - "Unavailable conversion function for (node ). " + "Unavailable conversion function for (node ). " "Define a converter function using render_config.node_converters." ) assert caplog.messages[0] == expected_msg @@ -260,8 +270,7 @@ def test_create_task_metadata_unsupported(caplog): def test_create_task_metadata_model(caplog): child_node = DbtNode( - name="my_model", - unique_id="my_folder.my_model", + unique_id=f"{DbtResourceType.MODEL.value}.my_folder.my_model", resource_type=DbtResourceType.MODEL, depends_on=[], file_path="", @@ -274,10 +283,24 @@ def test_create_task_metadata_model(caplog): assert metadata.arguments == {"models": "my_model"} +def test_create_task_metadata_model_with_versions(caplog): + child_node = DbtNode( + unique_id=f"{DbtResourceType.MODEL.value}.my_folder.my_model.v1", + resource_type=DbtResourceType.MODEL, + depends_on=[], + file_path="", + tags=[], + config={}, + ) + metadata = create_task_metadata(child_node, execution_mode=ExecutionMode.LOCAL, args={}) + assert metadata.id == "my_model_v1_run" + assert metadata.operator_class == "cosmos.operators.local.DbtRunLocalOperator" + assert metadata.arguments == {"models": "my_model.v1"} + + def test_create_task_metadata_model_use_task_group(caplog): child_node = DbtNode( - name="my_model", - unique_id="my_folder.my_model", + unique_id=f"{DbtResourceType.MODEL.value}.my_folder.my_model", resource_type=DbtResourceType.MODEL, depends_on=[], file_path=Path(""), @@ -291,8 +314,7 @@ def test_create_task_metadata_model_use_task_group(caplog): @pytest.mark.parametrize("use_task_group", (None, True, False)) def test_create_task_metadata_seed(caplog, use_task_group): sample_node = DbtNode( - name="my_seed", - unique_id="my_folder.my_seed", + unique_id=f"{DbtResourceType.SEED.value}.my_folder.my_seed", resource_type=DbtResourceType.SEED, depends_on=[], file_path="", @@ -320,8 +342,7 @@ def test_create_task_metadata_seed(caplog, use_task_group): def test_create_task_metadata_snapshot(caplog): sample_node = DbtNode( - name="my_snapshot", - unique_id="my_folder.my_snapshot", + unique_id=f"{DbtResourceType.SNAPSHOT.value}.my_folder.my_snapshot", resource_type=DbtResourceType.SNAPSHOT, depends_on=[], file_path="", @@ -337,22 +358,33 @@ def test_create_task_metadata_snapshot(caplog): @pytest.mark.parametrize( "node_type,node_unique_id,test_indirect_selection,additional_arguments", [ - (DbtResourceType.MODEL, "node_name", TestIndirectSelection.EAGER, {"models": "node_name"}), + ( + DbtResourceType.MODEL, + f"{DbtResourceType.MODEL.value}.my_folder.node_name", + TestIndirectSelection.EAGER, + {"models": "node_name"}, + ), + ( + DbtResourceType.MODEL, + f"{DbtResourceType.MODEL.value}.my_folder.node_name.v1", + TestIndirectSelection.EAGER, + {"models": "node_name.v1"}, + ), ( DbtResourceType.SEED, - "node_name", + f"{DbtResourceType.SEED.value}.my_folder.node_name", TestIndirectSelection.CAUTIOUS, {"select": "node_name", "indirect_selection": "cautious"}, ), ( DbtResourceType.SOURCE, - "source.node_name", + f"{DbtResourceType.SOURCE.value}.my_folder.node_name", TestIndirectSelection.BUILDABLE, {"select": "source:node_name", "indirect_selection": "buildable"}, ), ( DbtResourceType.SNAPSHOT, - "node_name", + f"{DbtResourceType.SNAPSHOT.value}.my_folder.node_name", TestIndirectSelection.EMPTY, {"select": "node_name", "indirect_selection": "empty"}, ), @@ -360,7 +392,6 @@ def test_create_task_metadata_snapshot(caplog): ) def test_create_test_task_metadata(node_type, node_unique_id, test_indirect_selection, additional_arguments): sample_node = DbtNode( - name="node_name", unique_id=node_unique_id, resource_type=node_type, depends_on=[], diff --git a/tests/dbt/test_graph.py b/tests/dbt/test_graph.py index 0ad7424c84..3e32182596 100644 --- a/tests/dbt/test_graph.py +++ b/tests/dbt/test_graph.py @@ -12,8 +12,8 @@ DbtGraph, DbtNode, LoadMode, - run_command, parse_dbt_ls_output, + run_command, ) from cosmos.profiles import PostgresUserPasswordProfileMapping @@ -42,6 +42,20 @@ def tmp_dbt_project_dir(): shutil.rmtree(tmp_dir, ignore_errors=True) # delete directory +@pytest.mark.parametrize( + "unique_id,expected_name, expected_select", + [ + ("model.my_project.customers", "customers", "customers"), + ("model.my_project.customers.v1", "customers_v1", "customers.v1"), + ("model.my_project.orders.v2", "orders_v2", "orders.v2"), + ], +) +def test_dbt_node_name_and_select(unique_id, expected_name, expected_select): + node = DbtNode(unique_id=unique_id, resource_type=DbtResourceType.MODEL, depends_on=[], file_path="") + assert node.name == expected_name + assert node.resource_name == expected_select + + @pytest.mark.parametrize( "project_name,manifest_filepath,model_filepath", [(DBT_PROJECT_NAME, SAMPLE_MANIFEST, "customers.sql"), ("jaffle_shop_python", SAMPLE_MANIFEST_PY, "customers.py")], @@ -692,7 +706,6 @@ def test_parse_dbt_ls_output(): expected_nodes = { "fake-unique-id": DbtNode( - name="fake-name", unique_id="fake-unique-id", resource_type=DbtResourceType.MODEL, file_path=Path("fake-project/fake-file-path.sql"), diff --git a/tests/dbt/test_selector.py b/tests/dbt/test_selector.py index 9f6071a20b..f7ece63910 100644 --- a/tests/dbt/test_selector.py +++ b/tests/dbt/test_selector.py @@ -39,8 +39,7 @@ def test_is_empty_config(selector_config, paths, tags, config, other, expected): grandparent_node = DbtNode( - name="grandparent", - unique_id="grandparent", + unique_id=f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.grandparent", resource_type=DbtResourceType.MODEL, depends_on=[], file_path=SAMPLE_PROJ_PATH / "gen1/models/grandparent.sql", @@ -48,8 +47,7 @@ def test_is_empty_config(selector_config, paths, tags, config, other, expected): config={"materialized": "view", "tags": ["has_child"]}, ) parent_node = DbtNode( - name="parent", - unique_id="parent", + unique_id=f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.parent", resource_type=DbtResourceType.MODEL, depends_on=["grandparent"], file_path=SAMPLE_PROJ_PATH / "gen2/models/parent.sql", @@ -57,8 +55,7 @@ def test_is_empty_config(selector_config, paths, tags, config, other, expected): config={"materialized": "view", "tags": ["has_child", "is_child"]}, ) child_node = DbtNode( - name="child", - unique_id="child", + unique_id=f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.child", resource_type=DbtResourceType.MODEL, depends_on=["parent"], file_path=SAMPLE_PROJ_PATH / "gen3/models/child.sql", @@ -67,8 +64,7 @@ def test_is_empty_config(selector_config, paths, tags, config, other, expected): ) grandchild_1_test_node = DbtNode( - name="grandchild_1", - unique_id="grandchild_1", + unique_id=f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.grandchild_1", resource_type=DbtResourceType.MODEL, depends_on=["parent"], file_path=SAMPLE_PROJ_PATH / "gen3/models/grandchild_1.sql", @@ -77,8 +73,7 @@ def test_is_empty_config(selector_config, paths, tags, config, other, expected): ) grandchild_2_test_node = DbtNode( - name="grandchild_2", - unique_id="grandchild_2", + unique_id=f"{DbtResourceType.MODEL.value}.{SAMPLE_PROJ_PATH.stem}.grandchild_2", resource_type=DbtResourceType.MODEL, depends_on=["parent"], file_path=SAMPLE_PROJ_PATH / "gen3/models/grandchild_2.sql", diff --git a/tests/test_converter.py b/tests/test_converter.py index 4210b24d64..8b51010618 100644 --- a/tests/test_converter.py +++ b/tests/test_converter.py @@ -31,8 +31,7 @@ def test_validate_arguments_tags(argument_key): parent_seed = DbtNode( - name="seed_parent", - unique_id="seed_parent", + unique_id=f"{DbtResourceType.SEED}.{SAMPLE_DBT_PROJECT.stem}.seed_parent", resource_type=DbtResourceType.SEED, depends_on=[], file_path="", From 21e5cac923a2befe16cc02f0e40d7660fc8e76e5 Mon Sep 17 00:00:00 2001 From: MrBones757 Date: Sat, 18 Nov 2023 16:04:26 +0800 Subject: [PATCH 04/11] Make `profiles_yml_path` optional for `ExecutionMode.DOCKER` and `KUBERNETES` (#681) This PR moves validation of the `profiles_yml_path` to later in the dag generation process such that additional context can be gathered from `ExecutionConfig` to avoid failing unnecessarily when the file does not exist. Closes: #680 Closes: #656 (cherry picked from commit d28d3df7eacac74d0fbb016be70434bcc30c51be) --- cosmos/config.py | 18 ++++++++++++------ cosmos/converter.py | 28 ++++++++++++++++++++-------- tests/test_config.py | 31 ++++++++++++++++++++++++------- tests/test_converter.py | 22 ++++++++++++++++++++-- 4 files changed, 76 insertions(+), 23 deletions(-) diff --git a/cosmos/config.py b/cosmos/config.py index a33e968304..5c64193c18 100644 --- a/cosmos/config.py +++ b/cosmos/config.py @@ -41,8 +41,8 @@ class RenderConfig: :param exclude: A list of dbt exclude arguments (e.g. 'tag:nightly') :param dbt_deps: Configure to run dbt deps when using dbt ls for dag parsing :param node_converters: a dictionary mapping a ``DbtResourceType`` into a callable. Users can control how to render dbt nodes in Airflow. Only supported when using ``load_method=LoadMode.DBT_MANIFEST`` or ``LoadMode.DBT_LS``. - :param dbt_executable_path: The path to the dbt executable for dag generation. Defaults to dbt if available on the path. Mutually Exclusive with ProjectConfig.dbt_project_path - :param dbt_project_path Configures the DBT project location accessible on the airflow controller for DAG rendering - Required when using ``load_method=LoadMode.DBT_LS`` or ``load_method=LoadMode.CUSTOM`` + :param dbt_executable_path: The path to the dbt executable for dag generation. Defaults to dbt if available on the path. + :param dbt_project_path Configures the DBT project location accessible on the airflow controller for DAG rendering. Mutually Exclusive with ProjectConfig.dbt_project_path. Required when using ``load_method=LoadMode.DBT_LS`` or ``load_method=LoadMode.CUSTOM``. """ emit_datasets: bool = True @@ -195,15 +195,21 @@ class ProfileConfig: profile_mapping: BaseProfileMapping | None = None def __post_init__(self) -> None: - "Validates that we have enough information to render a profile." - # if using a user-supplied profiles.yml, validate that it exists - if self.profiles_yml_filepath and not Path(self.profiles_yml_filepath).exists(): - raise CosmosValueError(f"The file {self.profiles_yml_filepath} does not exist.") + self.validate_profile() def validate_profile(self) -> None: "Validates that we have enough information to render a profile." if not self.profiles_yml_filepath and not self.profile_mapping: raise CosmosValueError("Either profiles_yml_filepath or profile_mapping must be set to render a profile") + if self.profiles_yml_filepath and self.profile_mapping: + raise CosmosValueError( + "Both profiles_yml_filepath and profile_mapping are defined and are mutually exclusive. Ensure only one of these is defined." + ) + + def validate_profiles_yml(self) -> None: + "Validates a user-supplied profiles.yml is present" + if self.profiles_yml_filepath and not Path(self.profiles_yml_filepath).exists(): + raise CosmosValueError(f"The file {self.profiles_yml_filepath} does not exist.") @contextlib.contextmanager def ensure_profile( diff --git a/cosmos/converter.py b/cosmos/converter.py index 559b7ea69b..2142cc6e42 100644 --- a/cosmos/converter.py +++ b/cosmos/converter.py @@ -11,6 +11,7 @@ from airflow.utils.task_group import TaskGroup from cosmos.airflow.graph import build_airflow_graph +from cosmos.constants import ExecutionMode from cosmos.dbt.graph import DbtGraph from cosmos.dbt.selector import retrieve_by_label from cosmos.config import ProjectConfig, ExecutionConfig, RenderConfig, ProfileConfig @@ -49,7 +50,11 @@ def airflow_kwargs(**kwargs: dict[str, Any]) -> dict[str, Any]: def validate_arguments( - select: list[str], exclude: list[str], profile_args: dict[str, Any], task_args: dict[str, Any] + select: list[str], + exclude: list[str], + profile_config: ProfileConfig, + task_args: dict[str, Any], + execution_mode: ExecutionMode, ) -> None: """ Validate that mutually exclusive selectors filters have not been given. @@ -57,8 +62,9 @@ def validate_arguments( :param select: A list of dbt select arguments (e.g. 'config.materialized:incremental') :param exclude: A list of dbt exclude arguments (e.g. 'tag:nightly') - :param profile_args: Arguments to pass to the dbt profile + :param profile_config: ProfileConfig Object :param task_args: Arguments to be used to instantiate an Airflow Task + :param execution_mode: the current execution mode """ for field in ("tags", "paths"): select_items = retrieve_by_label(select, field) @@ -69,8 +75,12 @@ def validate_arguments( # if task_args has a schema, add it to the profile args and add a deprecated warning if "schema" in task_args: - profile_args["schema"] = task_args["schema"] logger.warning("Specifying a schema in the `task_args` is deprecated. Please use the `profile_args` instead.") + if profile_config.profile_mapping: + profile_config.profile_mapping.profile_args["schema"] = task_args["schema"] + + if execution_mode in [ExecutionMode.LOCAL, ExecutionMode.VIRTUALENV]: + profile_config.validate_profiles_yml() class DbtToAirflowConverter: @@ -139,10 +149,6 @@ def __init__( "RenderConfig.dbt_project_path is required for rendering an airflow DAG from a DBT Graph if no manifest is provided." ) - profile_args = {} - if profile_config.profile_mapping: - profile_args = profile_config.profile_mapping.profile_args - if not operator_args: operator_args = {} @@ -174,7 +180,13 @@ def __init__( if execution_config.dbt_executable_path: task_args["dbt_executable_path"] = execution_config.dbt_executable_path - validate_arguments(render_config.select, render_config.exclude, profile_args, task_args) + validate_arguments( + render_config.select, + render_config.exclude, + profile_config, + task_args, + execution_mode=execution_config.execution_mode, + ) build_airflow_graph( nodes=dbt_graph.filtered_nodes, diff --git a/tests/test_config.py b/tests/test_config.py index cc0711043c..578a68f760 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1,5 +1,6 @@ from pathlib import Path from unittest.mock import patch +from cosmos.profiles.postgres.user_pass import PostgresUserPasswordProfileMapping import pytest @@ -8,6 +9,7 @@ DBT_PROJECTS_ROOT_DIR = Path(__file__).parent / "sample/" +SAMPLE_PROFILE_YML = Path(__file__).parent / "sample/profiles.yml" PIPELINE_FOLDER = "jaffle_shop" @@ -111,17 +113,32 @@ def test_project_name(): assert dbt_project.project_name == "sample" -def test_profile_config_post_init(): +def test_profile_config_validate_none(): with pytest.raises(CosmosValueError) as err_info: - ProfileConfig(profiles_yml_filepath="/tmp/some-profile", profile_name="test", target_name="test") - assert err_info.value.args[0] == "The file /tmp/some-profile does not exist." + ProfileConfig(profile_name="test", target_name="test") + assert err_info.value.args[0] == "Either profiles_yml_filepath or profile_mapping must be set to render a profile" -def test_profile_config_validate(): +def test_profile_config_validate_both(): with pytest.raises(CosmosValueError) as err_info: - profile_config = ProfileConfig(profile_name="test", target_name="test") - assert profile_config.validate_profile() is None - assert err_info.value.args[0] == "Either profiles_yml_filepath or profile_mapping must be set to render a profile" + ProfileConfig( + profile_name="test", + target_name="test", + profiles_yml_filepath=SAMPLE_PROFILE_YML, + profile_mapping=PostgresUserPasswordProfileMapping(conn_id="test", profile_args={}), + ) + assert ( + err_info.value.args[0] + == "Both profiles_yml_filepath and profile_mapping are defined and are mutually exclusive. Ensure only one of these is defined." + ) + + +def test_profile_config_validate_profiles_yml(): + profile_config = ProfileConfig(profile_name="test", target_name="test", profiles_yml_filepath="/tmp/no-exists") + with pytest.raises(CosmosValueError) as err_info: + profile_config.validate_profiles_yml() + + assert err_info.value.args[0] == "The file /tmp/no-exists does not exist." @patch("cosmos.config.shutil.which", return_value=None) diff --git a/tests/test_converter.py b/tests/test_converter.py index 8b51010618..3bb5af163e 100644 --- a/tests/test_converter.py +++ b/tests/test_converter.py @@ -1,6 +1,7 @@ from datetime import datetime from pathlib import Path from unittest.mock import patch +from cosmos.profiles.postgres import PostgresUserPasswordProfileMapping import pytest from airflow.models import DAG @@ -22,14 +23,31 @@ def test_validate_arguments_tags(argument_key): selector_name = argument_key[:-1] select = [f"{selector_name}:a,{selector_name}:b"] exclude = [f"{selector_name}:b,{selector_name}:c"] - profile_args = {} + profile_config = ProfileConfig( + profile_name="test", + target_name="test", + profile_mapping=PostgresUserPasswordProfileMapping(conn_id="test", profile_args={}), + ) task_args = {} with pytest.raises(CosmosValueError) as err: - validate_arguments(select, exclude, profile_args, task_args) + validate_arguments(select, exclude, profile_config, task_args, execution_mode=ExecutionMode.LOCAL) expected = f"Can't specify the same {selector_name} in `select` and `exclude`: {{'b'}}" assert err.value.args[0] == expected +def test_validate_arguments_schema_in_task_args(): + profile_config = ProfileConfig( + profile_name="test", + target_name="test", + profile_mapping=PostgresUserPasswordProfileMapping(conn_id="test", profile_args={}), + ) + task_args = {"schema": "abcd"} + validate_arguments( + select=[], exclude=[], profile_config=profile_config, task_args=task_args, execution_mode=ExecutionMode.LOCAL + ) + assert profile_config.profile_mapping.profile_args["schema"] == "abcd" + + parent_seed = DbtNode( unique_id=f"{DbtResourceType.SEED}.{SAMPLE_DBT_PROJECT.stem}.seed_parent", resource_type=DbtResourceType.SEED, From d0ebdf341165c74087069e7a21bbec019e90cf8e Mon Sep 17 00:00:00 2001 From: David Spulak Date: Wed, 22 Nov 2023 03:31:27 +0100 Subject: [PATCH 05/11] Add support for Kubernetes `on_warning_callback` (#673) To make `on_warning_callback` work with pod operators, we need to read the logs of the dbt test runs. This is done by ensuring the pod is kept alive, and `on_success_callback` the log is read and analysed for warnings. Afterwards, the pod is cleaned up based on the original settings from the user. If `on_warning_callback` is not set, everything stays the way it always was. This feature only work with `apache-airflow-providers-cncf-kubernetes >= 7.4.0`. (cherry picked from commit 0b538a582ff65e73ded712f2b996704071e25689) --- cosmos/operators/kubernetes.py | 100 +++++++++++++++++++++++- tests/operators/test_kubernetes.py | 119 ++++++++++++++++++++++++++++- 2 files changed, 214 insertions(+), 5 deletions(-) diff --git a/cosmos/operators/kubernetes.py b/cosmos/operators/kubernetes.py index 996bbc9dda..af0988a6ac 100644 --- a/cosmos/operators/kubernetes.py +++ b/cosmos/operators/kubernetes.py @@ -4,12 +4,17 @@ from typing import Any, Callable, Sequence import yaml -from airflow.utils.context import Context +from airflow.utils.context import Context, context_merge from cosmos.log import get_logger from cosmos.config import ProfileConfig from cosmos.operators.base import DbtBaseOperator +from airflow.models import TaskInstance +from cosmos.dbt.parser.output import extract_log_issues + +DBT_NO_TESTS_MSG = "Nothing to do" +DBT_WARN_MSG = "WARN" logger = get_logger(__name__) @@ -19,6 +24,7 @@ convert_env_vars, ) from airflow.providers.cncf.kubernetes.operators.pod import KubernetesPodOperator + from airflow.providers.cncf.kubernetes.utils.pod_manager import OnFinishAction except ImportError: try: # apache-airflow-providers-cncf-kubernetes < 7.4.0 @@ -158,10 +164,96 @@ class DbtTestKubernetesOperator(DbtKubernetesBaseOperator): ui_color = "#8194E0" def __init__(self, on_warning_callback: Callable[..., Any] | None = None, **kwargs: Any) -> None: - super().__init__(**kwargs) + if not on_warning_callback: + super().__init__(**kwargs) + else: + self.on_warning_callback = on_warning_callback + self.is_delete_operator_pod_original = kwargs.get("is_delete_operator_pod", None) + if self.is_delete_operator_pod_original is not None: + self.on_finish_action_original = ( + OnFinishAction.DELETE_POD if self.is_delete_operator_pod_original else OnFinishAction.KEEP_POD + ) + else: + self.on_finish_action_original = OnFinishAction(kwargs.get("on_finish_action", "delete_pod")) + self.is_delete_operator_pod_original = self.on_finish_action_original == OnFinishAction.DELETE_POD + # In order to read the pod logs, we need to keep the pod around. + # Depending on the on_finish_action & is_delete_operator_pod settings, + # we will clean up the pod later in the _handle_warnings method, which + # is called in on_success_callback. + kwargs["is_delete_operator_pod"] = False + kwargs["on_finish_action"] = OnFinishAction.KEEP_POD + + # Add an additional callback to both success and failure callbacks. + # In case of success, check for a warning in the logs and clean up the pod. + self.on_success_callback = kwargs.get("on_success_callback", None) or [] + if isinstance(self.on_success_callback, list): + self.on_success_callback += [self._handle_warnings] + else: + self.on_success_callback = [self.on_success_callback, self._handle_warnings] + kwargs["on_success_callback"] = self.on_success_callback + # In case of failure, clean up the pod. + self.on_failure_callback = kwargs.get("on_failure_callback", None) or [] + if isinstance(self.on_failure_callback, list): + self.on_failure_callback += [self._cleanup_pod] + else: + self.on_failure_callback = [self.on_failure_callback, self._cleanup_pod] + kwargs["on_failure_callback"] = self.on_failure_callback + + super().__init__(**kwargs) + self.base_cmd = ["test"] - # as of now, on_warning_callback in kubernetes executor does nothing - self.on_warning_callback = on_warning_callback + + def _handle_warnings(self, context: Context) -> None: + """ + Handles warnings by extracting log issues, creating additional context, and calling the + on_warning_callback with the updated context. + + :param context: The original airflow context in which the build and run command was executed. + """ + if not ( + isinstance(context["task_instance"], TaskInstance) + and isinstance(context["task_instance"].task, DbtTestKubernetesOperator) + ): + return + task = context["task_instance"].task + logs = [ + log.decode("utf-8") for log in task.pod_manager.read_pod_logs(task.pod, "base") if log.decode("utf-8") != "" + ] + + should_trigger_callback = all( + [ + logs, + self.on_warning_callback, + DBT_NO_TESTS_MSG not in logs[-1], + DBT_WARN_MSG in logs[-1], + ] + ) + + if should_trigger_callback: + warnings = int(logs[-1].split(f"{DBT_WARN_MSG}=")[1].split()[0]) + if warnings > 0: + test_names, test_results = extract_log_issues(logs) + context_merge(context, test_names=test_names, test_results=test_results) + self.on_warning_callback(context) + + self._cleanup_pod(context) + + def _cleanup_pod(self, context: Context) -> None: + """ + Handles the cleaning up of the pod after success or failure, if + there is a on_warning_callback function defined. + + :param context: The original airflow context in which the build and run command was executed. + """ + if not ( + isinstance(context["task_instance"], TaskInstance) + and isinstance(context["task_instance"].task, DbtTestKubernetesOperator) + ): + return + task = context["task_instance"].task + if task.pod: + task.on_finish_action = self.on_finish_action_original + task.cleanup(pod=task.pod, remote_pod=task.remote_pod) class DbtRunOperationKubernetesOperator(DbtKubernetesBaseOperator): diff --git a/tests/operators/test_kubernetes.py b/tests/operators/test_kubernetes.py index 7ef606cfe4..585b1ab322 100644 --- a/tests/operators/test_kubernetes.py +++ b/tests/operators/test_kubernetes.py @@ -1,7 +1,7 @@ from pathlib import Path from unittest.mock import MagicMock, patch -from airflow.utils.context import Context +import pytest from pendulum import datetime from cosmos.operators.kubernetes import ( @@ -12,6 +12,16 @@ DbtTestKubernetesOperator, ) +from airflow.utils.context import Context, context_merge +from airflow.models import TaskInstance + +try: + from airflow.providers.cncf.kubernetes.utils.pod_manager import OnFinishAction + + module_available = True +except ImportError: + module_available = False + def test_dbt_kubernetes_operator_add_global_flags() -> None: dbt_kube_operator = DbtKubernetesBaseOperator( @@ -103,6 +113,113 @@ def test_dbt_kubernetes_build_command(): ] +@pytest.mark.parametrize( + "additional_kwargs,expected_results", + [ + ({"on_success_callback": None, "is_delete_operator_pod": True}, (1, 1, True, "delete_pod")), + ( + {"on_success_callback": (lambda **kwargs: None), "is_delete_operator_pod": False}, + (2, 1, False, "keep_pod"), + ), + ( + {"on_success_callback": [(lambda **kwargs: None), (lambda **kwargs: None)], "is_delete_operator_pod": None}, + (3, 1, True, "delete_pod"), + ), + ( + {"on_failure_callback": None, "is_delete_operator_pod": True, "on_finish_action": "keep_pod"}, + (1, 1, True, "delete_pod"), + ), + ( + { + "on_failure_callback": (lambda **kwargs: None), + "is_delete_operator_pod": None, + "on_finish_action": "delete_pod", + }, + (1, 2, True, "delete_pod"), + ), + ( + { + "on_failure_callback": [(lambda **kwargs: None), (lambda **kwargs: None)], + "is_delete_operator_pod": None, + "on_finish_action": "delete_succeeded_pod", + }, + (1, 3, False, "delete_succeeded_pod"), + ), + ({"is_delete_operator_pod": None, "on_finish_action": "keep_pod"}, (1, 1, False, "keep_pod")), + ({}, (1, 1, True, "delete_pod")), + ], +) +@pytest.mark.skipif( + not module_available, reason="Kubernetes module `airflow.providers.cncf.kubernetes.utils.pod_manager` not available" +) +def test_dbt_test_kubernetes_operator_constructor(additional_kwargs, expected_results): + test_operator = DbtTestKubernetesOperator( + on_warning_callback=(lambda **kwargs: None), **additional_kwargs, **base_kwargs + ) + + print(additional_kwargs, test_operator.__dict__) + + assert isinstance(test_operator.on_success_callback, list) + assert isinstance(test_operator.on_failure_callback, list) + assert test_operator._handle_warnings in test_operator.on_success_callback + assert test_operator._cleanup_pod in test_operator.on_failure_callback + assert len(test_operator.on_success_callback) == expected_results[0] + assert len(test_operator.on_failure_callback) == expected_results[1] + assert test_operator.is_delete_operator_pod_original == expected_results[2] + assert test_operator.on_finish_action_original == OnFinishAction(expected_results[3]) + + +class FakePodManager: + def read_pod_logs(self, pod, container): + assert pod == "pod" + assert container == "base" + log_string = """ +19:48:25 Concurrency: 4 threads (target='target') +19:48:25 +19:48:25 1 of 2 START test dbt_utils_accepted_range_table_col__12__0 ................... [RUN] +19:48:25 2 of 2 START test unique_table__uuid .......................................... [RUN] +19:48:27 1 of 2 WARN 252 dbt_utils_accepted_range_table_col__12__0 ..................... [WARN 117 in 1.83s] +19:48:27 2 of 2 PASS unique_table__uuid ................................................ [PASS in 1.85s] +19:48:27 +19:48:27 Finished running 2 tests, 1 hook in 0 hours 0 minutes and 12.86 seconds (12.86s). +19:48:27 +19:48:27 Completed with 1 warning: +19:48:27 +19:48:27 Warning in test dbt_utils_accepted_range_table_col__12__0 (models/ads/ads.yaml) +19:48:27 Got 252 results, configured to warn if >0 +19:48:27 +19:48:27 compiled Code at target/compiled/model/models/table/table.yaml/dbt_utils_accepted_range_table_col__12__0.sql +19:48:27 +19:48:27 Done. PASS=1 WARN=1 ERROR=0 SKIP=0 TOTAL=2 +""" + return (log.encode("utf-8") for log in log_string.split("\n")) + + +@pytest.mark.skipif( + not module_available, reason="Kubernetes module `airflow.providers.cncf.kubernetes.utils.pod_manager` not available" +) +def test_dbt_test_kubernetes_operator_handle_warnings_and_cleanup_pod(): + def on_warning_callback(context: Context): + assert context["test_names"] == ["dbt_utils_accepted_range_table_col__12__0"] + assert context["test_results"] == ["Got 252 results, configured to warn if >0"] + + def cleanup(pod: str, remote_pod: str): + assert pod == remote_pod + + test_operator = DbtTestKubernetesOperator( + is_delete_operator_pod=True, on_warning_callback=on_warning_callback, **base_kwargs + ) + task_instance = TaskInstance(test_operator) + task_instance.task.pod_manager = FakePodManager() + task_instance.task.pod = task_instance.task.remote_pod = "pod" + task_instance.task.cleanup = cleanup + + context = Context() + context_merge(context, task_instance=task_instance) + + test_operator._handle_warnings(context) + + @patch("airflow.providers.cncf.kubernetes.operators.pod.KubernetesPodOperator.hook") def test_created_pod(test_hook): test_hook.is_in_cluster = False From 9370d1f43d423d45d6ef429ab2b7757eb2d49dc6 Mon Sep 17 00:00:00 2001 From: adammarples Date: Wed, 22 Nov 2023 10:17:12 +0000 Subject: [PATCH 06/11] Return code or error ignores WarnErrorOptions (#692) Ignore `WarnErrorOptions` string in stdout from dbt-core, do not treat it as a failure Closes: #642 (cherry picked from commit a52d1b77f5a70a5c96e58a3dbedd6af52714599e) --- cosmos/dbt/graph.py | 2 +- tests/dbt/test_graph.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cosmos/dbt/graph.py b/cosmos/dbt/graph.py index 40154308b8..556ebe09ad 100644 --- a/cosmos/dbt/graph.py +++ b/cosmos/dbt/graph.py @@ -88,7 +88,7 @@ def run_command(command: list[str], tmp_dir: Path, env_vars: dict[str, str]) -> "Unable to run dbt ls command due to missing dbt_packages. Set RenderConfig.dbt_deps=True." ) - if returncode or "Error" in stdout: + if returncode or "Error" in stdout.replace("WarnErrorOptions", ""): details = stderr or stdout raise CosmosLoadDbtException(f"Unable to run {command} due to the error:\n{details}") diff --git a/tests/dbt/test_graph.py b/tests/dbt/test_graph.py index 3e32182596..224aff56e1 100644 --- a/tests/dbt/test_graph.py +++ b/tests/dbt/test_graph.py @@ -679,6 +679,7 @@ def test_load_dbt_ls_and_manifest_with_model_version(load_method): "stdout,returncode", [ ("all good", None), + ("WarnErrorOptions", None), pytest.param("fail", 599, marks=pytest.mark.xfail(raises=CosmosLoadDbtException)), pytest.param("Error", None, marks=pytest.mark.xfail(raises=CosmosLoadDbtException)), ], From 5a61cb2774bad03c61c29b50b3aa9722de1601ff Mon Sep 17 00:00:00 2001 From: Ian Moritz Date: Wed, 22 Nov 2023 05:37:10 -0500 Subject: [PATCH 07/11] Highlight DAG examples in README (#695) After speaking with customers, it looks like it would be more clear to flag our examples in the dev folder in the README. Co-authored-by: Julian LaNeve (cherry picked from commit 24aa38e528e299ef51ca6baf32f5a6185887d432) --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index e4f69af639..4ac14bbbbf 100644 --- a/README.rst +++ b/README.rst @@ -31,7 +31,7 @@ Run your dbt Core projects as `Apache Airflow `_ DA Quickstart __________ -Check out the Quickstart guide on our `docs `_. +Check out the Quickstart guide on our `docs `_. See more examples at `/dev/dags `_. Example Usage From 171ba33fa55e17b0d80a3697cd45d833005df4d7 Mon Sep 17 00:00:00 2001 From: Tatiana Al-Chueyr Date: Thu, 23 Nov 2023 13:51:00 +0000 Subject: [PATCH 08/11] Fix example DAG in the README and docs/index (#705) The example DAG we had declared in our README and index page was incompatible with the latest versions of Cosmos. An Astronomer customer reported this, and we didn't realise it because those code excerpts were not executed. This PR changes the references to an example DAG run as part of our integration tests. As a follow-up, we should try to avoid this redundancy between `README.rst` and `index.rst` - which I logged as follow up ticket in #704. (cherry picked from commit 2617449bbde6c3f4f099737e704fb623938883d3) --- README.rst | 45 ++++++----------------------- docs/_static/jaffle_shop_dag.png | Bin 0 -> 270381 bytes docs/index.rst | 48 +++++++------------------------ docs/requirements.txt | 1 + pyproject.toml | 4 ++- 5 files changed, 23 insertions(+), 75 deletions(-) create mode 100644 docs/_static/jaffle_shop_dag.png diff --git a/README.rst b/README.rst index 4ac14bbbbf..041c23f3fa 100644 --- a/README.rst +++ b/README.rst @@ -31,57 +31,29 @@ Run your dbt Core projects as `Apache Airflow `_ DA Quickstart __________ -Check out the Quickstart guide on our `docs `_. See more examples at `/dev/dags `_. +Check out the Quickstart guide on our `docs `_. See more examples at `/dev/dags `_ and at the `cosmos-demo repo `_. Example Usage ___________________ -You can render an Airflow Task Group using the ``DbtTaskGroup`` class. Here's an example with the `jaffle_shop project `_: +You can render a Cosmos Airflow DAG using the ``DbtDag`` class. Here's an example with the `jaffle_shop project `_: +.. + This renders on Github but not Sphinx: -.. code-block:: python +https://github.com/astronomer/astronomer-cosmos/blob/24aa38e528e299ef51ca6baf32f5a6185887d432/dev/dags/basic_cosmos_dag.py#L1-L42 - from pendulum import datetime +This will generate an Airflow DAG that looks like this: - from airflow import DAG - from airflow.operators.empty import EmptyOperator - from cosmos import DbtTaskGroup, ProfileConfig, ProjectConfig - from cosmos.profiles import PostgresUserPasswordProfileMapping +.. figure:: /docs/_static/jaffle_shop_dag.png - profile_config = ProfileConfig( - profile_name="default", - target_name="dev", - profile_mapping=PostgresUserPasswordProfileMapping( - conn_id="airflow_db", - profile_args={"schema": "public"}, - ), - ) - - with DAG( - dag_id="extract_dag", - start_date=datetime(2022, 11, 27), - schedule_interval="@daily", - ): - e1 = EmptyOperator(task_id="pre_dbt") - - dbt_tg = DbtTaskGroup( - project_config=ProjectConfig("jaffle_shop"), - profile_config=profile_config, - ) - - e2 = EmptyOperator(task_id="post_dbt") - - e1 >> dbt_tg >> e2 - -This will generate an Airflow Task Group that looks like this: - -.. figure:: /docs/_static/jaffle_shop_task_group.png Community _________ - Join us on the Airflow `Slack `_ at #airflow-dbt + Changelog _________ @@ -89,6 +61,7 @@ We follow `Semantic Versioning `_ for releases. Check `CHANGELOG.rst `_ for the latest changes. + Contributing Guide __________________ diff --git a/docs/_static/jaffle_shop_dag.png b/docs/_static/jaffle_shop_dag.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8cdf5cb0e88d78495961fb98b0128203306387 GIT binary patch literal 270381 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
)mYav~KD(W)X?wm-xbe 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 literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst index 3c61b645dc..cef9d87db6 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -40,53 +40,25 @@ Run your dbt Core projects as `Apache Airflow `_ DA Example Usage ___________________ -You can render an Airflow Task Group using the ``DbtTaskGroup`` class. Here's an example with the jaffle_shop project: +You can render a Cosmos Airflow DAG using the ``DbtDag`` class. Here's an example with the `jaffle_shop project `_: -.. code-block:: python +.. + The following renders in Sphinx but not Github: - from pendulum import datetime +.. literalinclude:: ./dev/dags/basic_cosmos_dag.py + :language: python + :start-after: [START local_example] + :end-before: [END local_example] - from airflow import DAG - from airflow.operators.empty import EmptyOperator - from cosmos import DbtTaskGroup +This will generate an Airflow DAG that looks like this: - profile_config = ProfileConfig( - profile_name="default", - target_name="dev", - profile_mapping=PostgresUserPasswordProfileMapping( - conn_id="airflow_db", - profile_args={"schema": "public"}, - ), - ) - - with DAG( - dag_id="extract_dag", - start_date=datetime(2022, 11, 27), - schedule_interval="@daily", - ): - e1 = EmptyOperator(task_id="pre_dbt") - - dbt_tg = DbtTaskGroup( - project_config=ProjectConfig("jaffle_shop"), - profile_config=profile_config, - default_args={"retries": 2}, - ) - - e2 = EmptyOperator(task_id="post_dbt") - - e1 >> dbt_tg >> e2 - - -This will generate an Airflow Task Group that looks like this: - -.. image:: https://raw.githubusercontent.com/astronomer/astronomer-cosmos/main/docs/_static/jaffle_shop_task_group.png - +.. figure:: /docs/_static/jaffle_shop_dag.png Getting Started _______________ -To get started now, check out the `Getting Started Guide `_. +Check out the Quickstart guide on our `docs `_. See more examples at `/dev/dags `_ and at the `cosmos-demo repo `_. Changelog diff --git a/docs/requirements.txt b/docs/requirements.txt index 6ead434854..420d62a599 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -4,4 +4,5 @@ pydata-sphinx-theme sphinx-autobuild sphinx-autoapi apache-airflow +apache-airflow-providers-cncf-kubernetes>=5.1.1 openlineage-airflow diff --git a/pyproject.toml b/pyproject.toml index 97c2ec66cf..c1afb09d4a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -92,7 +92,8 @@ docs =[ "sphinx", "pydata-sphinx-theme", "sphinx-autobuild", - "sphinx-autoapi" + "sphinx-autoapi", + "apache-airflow-providers-cncf-kubernetes>=5.1.1" ] tests = [ "packaging", @@ -219,6 +220,7 @@ dependencies = [ "sphinx-autobuild", "sphinx-autoapi", "openlineage-airflow", + "apache-airflow-providers-cncf-kubernetes>=5.1.1" ] [tool.hatch.envs.docs.scripts] From 4923cc89a833e5ba6089c293a7c6ec74bbb14755 Mon Sep 17 00:00:00 2001 From: Tatiana Al-Chueyr Date: Thu, 23 Nov 2023 13:56:05 +0000 Subject: [PATCH 09/11] Fix docs index image (#706) Fix broken docs sample DAG image, due to different syntax to render images between Github and Sphinx. (cherry picked from commit bc8a309d6c74a72be03c9770aedf1aaa1f863926) --- docs/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.rst b/docs/index.rst index cef9d87db6..f5cd3673d8 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -53,7 +53,7 @@ You can render a Cosmos Airflow DAG using the ``DbtDag`` class. Here's an exampl This will generate an Airflow DAG that looks like this: -.. figure:: /docs/_static/jaffle_shop_dag.png +.. image:: https://raw.githubusercontent.com/astronomer/astronomer-cosmos/main/docs/_static/jaffle_shop_dag.png Getting Started _______________ From 69abcf2a4eb920ec512bf495d0bb3513a1996f2f Mon Sep 17 00:00:00 2001 From: Justin Bandoro <79104794+jbandoro@users.noreply.github.com> Date: Thu, 23 Nov 2023 06:07:34 -0800 Subject: [PATCH 10/11] Prevent overriding dbt profile fields with profile args of "type" or "method" (#702) The issue is described in #696 which was discovered when a user was creating a ProfileConfig with `GoogleCloudServiceAccountDictProfileMapping(profile_args={"method": "service-account"})` which was overriding the dbt profile method: https://github.com/astronomer/astronomer-cosmos/blob/24aa38e528e299ef51ca6baf32f5a6185887d432/cosmos/profiles/bigquery/service_account_keyfile_dict.py#L21 when the profile args are mapped to the created profile below: https://github.com/astronomer/astronomer-cosmos/blob/24aa38e528e299ef51ca6baf32f5a6185887d432/cosmos/profiles/bigquery/service_account_keyfile_dict.py#L42-L52 This is not an issue with the profile mapping example above and could happen with any profile mapping by changing the "type" from `dbt_profile_type` or "method" (if used) from `dbt_profile_method` in the class. The fix in this PR is to not allow args with "type" or "method" that are different from the class variables in `profile_args`. I think this is better than logging a warning because if either of those fields are different the dbt run with the created profile will fail anyways. This also allows backwards compatibility in the case users have these already set in their profile args and it matches the class variables. Closes #696 (cherry picked from commit 8f7a04b75fac734a8fc8138aba71a43585cfa5c5) --- cosmos/profiles/base.py | 31 +++++++++++++++++++++++++---- tests/profiles/test_base_profile.py | 31 +++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 tests/profiles/test_base_profile.py diff --git a/cosmos/profiles/base.py b/cosmos/profiles/base.py index 36f2ccbc54..b1cebb38bd 100644 --- a/cosmos/profiles/base.py +++ b/cosmos/profiles/base.py @@ -18,6 +18,9 @@ if TYPE_CHECKING: from airflow.models import Connection +DBT_PROFILE_TYPE_FIELD = "type" +DBT_PROFILE_METHOD_FIELD = "method" + logger = get_logger(__name__) @@ -41,6 +44,26 @@ class BaseProfileMapping(ABC): def __init__(self, conn_id: str, profile_args: dict[str, Any] | None = None): self.conn_id = conn_id self.profile_args = profile_args or {} + self._validate_profile_args() + + def _validate_profile_args(self) -> None: + """ + Check if profile_args contains keys that should not be overridden from the + class variables when creating the profile. + """ + for profile_field in [DBT_PROFILE_TYPE_FIELD, DBT_PROFILE_METHOD_FIELD]: + if profile_field in self.profile_args and self.profile_args.get(profile_field) != getattr( + self, f"dbt_profile_{profile_field}" + ): + raise CosmosValueError( + "`profile_args` for {0} has {1}='{2}' that will override the dbt profile required value of '{3}'. " + "To fix this, remove {1} from `profile_args`.".format( + self.__class__.__name__, + profile_field, + self.profile_args.get(profile_field), + getattr(self, f"dbt_profile_{profile_field}"), + ) + ) @property def conn(self) -> Connection: @@ -100,11 +123,11 @@ def mock_profile(self) -> dict[str, Any]: where live connection values don't matter. """ mock_profile = { - "type": self.dbt_profile_type, + DBT_PROFILE_TYPE_FIELD: self.dbt_profile_type, } if self.dbt_profile_method: - mock_profile["method"] = self.dbt_profile_method + mock_profile[DBT_PROFILE_METHOD_FIELD] = self.dbt_profile_method for field in self.required_fields: # if someone has passed in a value for this field, use it @@ -199,11 +222,11 @@ def get_dbt_value(self, name: str) -> Any: def mapped_params(self) -> dict[str, Any]: "Turns the self.airflow_param_mapping into a dictionary of dbt fields and their values." mapped_params = { - "type": self.dbt_profile_type, + DBT_PROFILE_TYPE_FIELD: self.dbt_profile_type, } if self.dbt_profile_method: - mapped_params["method"] = self.dbt_profile_method + mapped_params[DBT_PROFILE_METHOD_FIELD] = self.dbt_profile_method for dbt_field in self.airflow_param_mapping: mapped_params[dbt_field] = self.get_dbt_value(dbt_field) diff --git a/tests/profiles/test_base_profile.py b/tests/profiles/test_base_profile.py new file mode 100644 index 0000000000..1b1ba3e8ad --- /dev/null +++ b/tests/profiles/test_base_profile.py @@ -0,0 +1,31 @@ +import pytest +from cosmos.profiles.base import BaseProfileMapping +from cosmos.exceptions import CosmosValueError + + +class TestProfileMapping(BaseProfileMapping): + dbt_profile_method: str = "fake-method" + dbt_profile_type: str = "fake-type" + + def profile(self): + raise NotImplementedError + + +@pytest.mark.parametrize("profile_arg", ["type", "method"]) +def test_validate_profile_args(profile_arg: str): + """ + An error should be raised if the profile_args contains a key that should not be overridden from the class variables. + """ + profile_args = {profile_arg: "fake-value"} + dbt_profile_value = getattr(TestProfileMapping, f"dbt_profile_{profile_arg}") + + expected_cosmos_error = ( + f"`profile_args` for TestProfileMapping has {profile_arg}='fake-value' that will override the dbt profile required value of " + f"'{dbt_profile_value}'. To fix this, remove {profile_arg} from `profile_args`." + ) + + with pytest.raises(CosmosValueError, match=expected_cosmos_error): + TestProfileMapping( + conn_id="fake_conn_id", + profile_args=profile_args, + ) From 2878d6accc2a725502158247dbd1af7ac37b4449 Mon Sep 17 00:00:00 2001 From: Tatiana Al-Chueyr Date: Thu, 23 Nov 2023 14:27:57 +0000 Subject: [PATCH 11/11] Release 1.2.5 Bug fixes * Fix running models that use alias while supporting dbt versions by @binhnq94 in #662 * Make profiles_yml_path optional for ExecutionMode.DOCKER and KUBERNETES by @MrBones757 in #681 * Prevent overriding dbt profile fields with profile args of type or method by @jbandoro in #702 * Fix LoadMode.DBT_LS fail when dbt outputs WarnErrorOptions by @adammarples in #692 * Add support for env vars in RenderConfig for dbt ls parsing by @jbandoro in #690 * Add support for Kubernetes on_warning_callback by @david-mag in #673 * Fix ExecutionConfig.dbt_executable_path to use ``default_factory`` by @jbandoro in #678 Others * Docs fix: example DAG in the README and docs/index by @tatiana in #705 * Docs improvement: highlight DAG examples in README by @iancmoritz and @jlaneve in #695 --- CHANGELOG.rst | 23 ++++++++++++++++++++--- cosmos/__init__.py | 2 +- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 9877d18632..08f805912e 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,7 +1,24 @@ Changelog - ========= +1.2.5 (2023-11-23) +------------------ + +Bug fixes + +* Fix running models that use alias while supporting dbt versions by @binhnq94 in #662 +* Make ``profiles_yml_path`` optional for ``ExecutionMode.DOCKER`` and ``KUBERNETES`` by @MrBones757 in #681 +* Prevent overriding dbt profile fields with profile args of "type" or "method" by @jbandoro in #702 +* Fix ``LoadMode.DBT_LS`` fail when dbt outputs ``WarnErrorOptions`` by @adammarples in #692 +* Add support for env vars in ``RenderConfig`` for dbt ls parsing by @jbandoro in #690 +* Add support for Kubernetes ``on_warning_callback`` by @david-mag in #673 +* Fix ExecutionConfig.dbt_executable_path to use ``default_factory`` by @jbandoro in #678 + +Others + +* Docs fix: example DAG in the README and docs/index by @tatiana in #705 +* Docs improvement: highlight DAG examples in README by @iancmoritz and @jlaneve in #695 + 1.2.4 (2023-11-14) ------------------ @@ -14,8 +31,8 @@ Bug fixes Others -* Docs fix: add execution config to MWAA code example by @ugmuka in #674 - +* Docs: add execution config to MWAA code example by @ugmuka in #674 +* Docs: highlight DAG examples in docs by @iancmoritz and @jlaneve in #695 1.2.3 (2023-11-09) ------------------ diff --git a/cosmos/__init__.py b/cosmos/__init__.py index ec8ba5c14f..c7aec6bee2 100644 --- a/cosmos/__init__.py +++ b/cosmos/__init__.py @@ -5,7 +5,7 @@ Contains dags, task groups, and operators. """ -__version__ = "1.2.4" +__version__ = "1.2.5" from cosmos.airflow.dag import DbtDag from cosmos.airflow.task_group import DbtTaskGroup