def test_no_errors(repo, tag, full): test_dag = DAG( "test-dag", default_args={}, description="testing", start_date=datetime(2020, 1, 1), schedule_interval=None, ) k = basic_kubernetes_pod_operator( task_id="task1", dag=test_dag, role="a_role", repo_name=repo, release=tag, full_image_name=full, ) assert isinstance(k, KubernetesPodOperator) assert k.task_id == "task1" assert k.name == "task1" assert k.image == f"{ecr_base_path}my-repo:v0.0.0" assert k.namespace == "airflow" assert k.annotations == {"iam.amazonaws.com/role": "a_role"} expected_env = { "AWS_METADATA_SERVICE_TIMEOUT": "60", "AWS_METADATA_SERVICE_NUM_ATTEMPTS": "5", "AWS_DEFAULT_REGION": "eu-west-1", } assert k.env_vars == expected_env
def test_no_errors(repo, tag, full): test_dag = DAG( "test-dag", default_args={}, description="testing", start_date=datetime(2020, 1, 1), schedule_interval=None, ) k = basic_kubernetes_pod_operator( task_id="task1", dag=test_dag, role="a_role", repo_name=repo, release=tag, full_image_name=full, ) assert isinstance(k, KubernetesPodOperator) assert k.task_id == "task1" assert k.name == "task1" assert k.image == f"{ecr_base_path}my-repo:v0.0.0" assert k.namespace == "airflow" assert k.annotations == {"iam.amazonaws.com/role": "a_role"} assert k.is_delete_operator_pod is True assert k.cluster_context == "aws" assert k.config_file == "/usr/local/airflow/dags/.kube/config" assert k.in_cluster is False assert k.get_logs is True assert k.security_context == { "allowPrivilegeEscalation": False, "runAsNonRoot": True, "privileged": False, } expected_env = [ V1EnvVar( name="AWS_METADATA_SERVICE_TIMEOUT", value="60", value_from=None, ), V1EnvVar( name="AWS_METADATA_SERVICE_NUM_ATTEMPTS", value="5", value_from=None, ), V1EnvVar( name="AWS_DEFAULT_REGION", value="eu-west-1", value_from=None, ), ] assert k.env_vars == expected_env
def test_error(): test_dag = DAG( "test-dag", default_args={}, description="testing", start_date=datetime(2020, 1, 1), schedule_interval=None, ) with pytest.raises(ValueError): basic_kubernetes_pod_operator( task_id="task1", dag=test_dag, role="a_role", repo_name=None, release=None, full_image_name=None, ) with pytest.raises(ValueError): basic_kubernetes_pod_operator( task_id="task1", dag=test_dag, role="a_role", repo_name="something", release="something", full_image_name="something", ) with pytest.raises(ValueError): basic_kubernetes_pod_operator( task_id="invalid_underscore", dag=test_dag, role="a_role", repo_name="something", release="something", ) with pytest.raises(ValueError): basic_kubernetes_pod_operator( task_id="invalid_underscore", dag=test_dag, role="a_role", repo_name="something", release="something", )
def test_kwargs(): test_dag = DAG( "test-dag", default_args={}, description="testing", start_date=datetime(2020, 1, 1), schedule_interval=None, ) k = basic_kubernetes_pod_operator( task_id="task1", dag=test_dag, role="a_test", repo_name="my_repo", release="v0.0.0", service_account_name="test_service_account", ) assert k.service_account_name == "test_service_account"
def test_env_vars(): test_dag = DAG( "test-dag", default_args={}, description="testing", start_date=datetime(2020, 1, 1), schedule_interval=None, ) k = basic_kubernetes_pod_operator( task_id="task1", dag=test_dag, role="a_role", repo_name="my_repo", release="v0.0.0", env_vars={ "AWS_DEFAULT_REGION": "us-east-1", "EXTRA": "test" }, ) expected_env = [ V1EnvVar( name="AWS_DEFAULT_REGION", value="us-east-1", value_from=None, ), V1EnvVar( name="EXTRA", value="test", value_from=None, ), V1EnvVar( name="AWS_METADATA_SERVICE_TIMEOUT", value="60", value_from=None, ), V1EnvVar( name="AWS_METADATA_SERVICE_NUM_ATTEMPTS", value="5", value_from=None, ), ] assert k.env_vars == expected_env
def test_sandboxed(): test_dag = DAG( "test-dag", default_args={}, description="testing", start_date=datetime(2020, 1, 1), schedule_interval=None, ) k = basic_kubernetes_pod_operator( task_id="task1", dag=test_dag, role="alpha_user_test", repo_name="my_repo", release="v0.0.0", sandboxed=True, ) assert k.image == f"{ecr_base_path}my-repo:v0.0.0" assert k.annotations == {"iam.amazonaws.com/role": "alpha_user_test"} assert k.namespace == "user-test"
def test_sandboxed(): test_dag = DAG( "test-dag", default_args={}, description="testing", start_date=datetime(2020, 1, 1), schedule_interval=None, ) k = basic_kubernetes_pod_operator( task_id="task1", dag=test_dag, role="alpha_user_test", repo_name="my_repo", release="v0.0.0", sandboxed=True, ) assert k.image == f"{ecr_base_path}my-repo:v0.0.0" assert k.annotations == {} assert k.namespace == "user-test" assert k.is_delete_operator_pod is False assert k.cluster_context is None assert k.config_file is None assert k.in_cluster is True