import sys import os from airflow import DAG from airflow.operators.python import PythonOperator from airflow.utils.dates import days_ago from datetime import datetime, timedelta import logging # Importing custom modules sys.path.append('/opt/airflow/python/connectors/devo') sys.path.append('/opt/airflow/python/mrds_common') sys.path.append('/opt/airflow/src/airflow/dags/ods/rqsd') sys.path.append('/opt/airflow/python/connectors/devo') # Import the main function from your script from devo_connector import main as devo_main ### DEVO CONNECTOR WITH STATIC workflow (task 3) # Default DAG arguments default_args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': days_ago(1), 'email_on_failure': False, 'email_on_retry': False, 'retries': 3, 'retry_delay': timedelta(minutes=5), } with DAG( dag_id='devo_connector_test', default_args=default_args, description='Run devo RQSD data ingestion workflow', schedule_interval=None, # we can set later #start_date=datetime(2025, 10, 7), catchup=False, tags=['Devo', 'RQSD', 'Connector'], ) as dag: def run_devo_connector_rqsd(**context): try: # Pick env from ENV variables env = os.getenv("MRDS_ENV") username = os.getenv("MRDS_LOADER_DB_USER") password = os.getenv("MRDS_LOADER_DB_PASS") tnsalias = os.getenv("MRDS_LOADER_DB_TNS") if not all([username, password, tnsalias]): raise ValueError( "Missing one or more required environment variables: " "MRDS_LOADER_DB_USER, MRDS_LOADER_DB_PASS, MRDS_LOADER_DB_TNS" ) logging.info( f"Starting Casper RQSD workflow from Airflow DAG for env '{env}'" ) workflow_context = {"run_id": 34, "a_workflow_history_key": 6} flow_config_path = "/opt/airflow/src/airflow/dags/ods/rqsd/rqsd_process/config/yaml/flow_config_rqsd_observations.yaml" env_config_path = "/opt/airflow/python/connectors/devo/config/env_config_rqsd.yaml" #env = "tst" # flow_config_rqsd_observations.yaml logging.info("Starting Devo RQSD workflow from Airflow DAG") devo_main(workflow_context, flow_config_path, env_config_path, env) logging.info("Devo RQSD workflow completed successfully") except Exception as e: logging.error(f"Error running Devo RQSD workflow: {e}", exc_info=True) raise run_devo = PythonOperator( task_id='run_devo_connector_rqsd', python_callable=run_devo_connector_rqsd, )