コード例 #1
0
ファイル: test_job.py プロジェクト: helloworld/dagster
def test_construct_dagster_k8s_job_with_user_defined_env():
    @graph
    def user_defined_k8s_env_tags_graph():
        pass

    user_defined_k8s_config = get_user_defined_k8s_config(
        user_defined_k8s_env_tags_graph.to_job(
            tags={
                USER_DEFINED_K8S_CONFIG_KEY: {
                    "container_config": {
                        "env": [
                            {
                                "name": "ENV_VAR_1",
                                "value": "one"
                            },
                            {
                                "name": "ENV_VAR_2",
                                "value": "two"
                            },
                            {
                                "name": "DD_AGENT_HOST",
                                "valueFrom": {
                                    "fieldRef": {
                                        "fieldPath": "status.hostIP"
                                    }
                                },
                            },
                        ]
                    }
                }
            }).tags)

    cfg = DagsterK8sJobConfig(
        job_image="test/foo:latest",
        dagster_home="/opt/dagster/dagster_home",
        instance_config_map="some-instance-configmap",
    )

    job = construct_dagster_k8s_job(
        cfg, ["foo", "bar"],
        "job",
        user_defined_k8s_config=user_defined_k8s_config).to_dict()

    env = job["spec"]["template"]["spec"]["containers"][0]["env"]
    env_mapping = remove_none_recursively(
        {env_var["name"]: env_var
         for env_var in env})

    # Has DAGSTER_HOME and three additional env vars
    assert len(env_mapping) == 4
    assert env_mapping["ENV_VAR_1"]["value"] == "one"
    assert env_mapping["ENV_VAR_2"]["value"] == "two"
    assert env_mapping["DD_AGENT_HOST"]["value_from"] == {
        "field_ref": {
            "field_path": "status.hostIP"
        }
    }
コード例 #2
0
def test_celery_queue_volumes(deployment_template: HelmTemplate):
    volume_mounts = [
        {
            "name": "test-volume",
            "mountPath":
            "/opt/dagster/test_mount_path/volume_mounted_file.yaml",
            "subPath": "volume_mounted_file.yaml",
        },
    ]

    volumes = [
        {
            "name": "test-volume",
            "configMap": {
                "name": "test-volume-configmap"
            }
        },
        {
            "name": "test-pvc",
            "persistentVolumeClaim": {
                "claimName": "my_claim",
                "readOnly": False
            }
        },
    ]

    repository = "repository"
    tag = "tag"

    helm_values = DagsterHelmValues.construct(runLauncher=RunLauncher(
        type=RunLauncherType.CELERY,
        config=RunLauncherConfig(
            celeryK8sRunLauncher=CeleryK8sRunLauncherConfig.construct(
                image=kubernetes.Image.construct(repository=repository,
                                                 tag=tag),
                volumeMounts=volume_mounts,
                volumes=volumes,
            )),
    ))

    celery_queue_deployments = deployment_template.render(helm_values)

    assert len(celery_queue_deployments) == 1

    mounts = celery_queue_deployments[0].spec.template.spec.containers[
        0].volume_mounts

    assert [remove_none_recursively(mount.to_dict()) for mount in mounts] == [
        {
            "mount_path": "/opt/dagster/dagster_home/dagster.yaml",
            "name": "dagster-instance",
            "sub_path": "dagster.yaml",
        },
        {
            "mount_path": "/opt/dagster/dagster_home/celery-config.yaml",
            "name": "dagster-celery",
            "sub_path": "celery.yaml",
        },
        {
            "mount_path":
            "/opt/dagster/test_mount_path/volume_mounted_file.yaml",
            "name": "test-volume",
            "sub_path": "volume_mounted_file.yaml",
        },
    ]

    rendered_volumes = celery_queue_deployments[0].spec.template.spec.volumes

    assert [
        remove_none_recursively(volume.to_dict())
        for volume in rendered_volumes
    ] == [
        {
            "config_map": {
                "name": "release-name-dagster-instance"
            },
            "name": "dagster-instance"
        },
        {
            "config_map": {
                "name": "release-name-dagster-celery-dagster"
            },
            "name": "dagster-celery"
        },
        {
            "name": "test-volume",
            "config_map": {
                "name": "test-volume-configmap"
            }
        },
        {
            "name": "test-pvc",
            "persistent_volume_claim": {
                "claim_name": "my_claim",
                "read_only": False
            },
        },
    ]