├── .coveragerc ├── .gitignore ├── README.md ├── docs ├── event_plugins.md ├── kafka_consumer.md ├── kafka_email.md └── kafka_producer.md ├── examples ├── README.md └── kafka_event_plugin.py ├── images ├── EventStatusEmailExample.png ├── ExampleDagFailed.png ├── ExampleDagSuccess.png ├── KafkaConsumerFailed.png ├── KafkaConsumerReschedule.png ├── KafkaConsumerRunning.png ├── KafkaConsumerRunningMarkSuccess.png └── KafkaConsumerSuccess.png ├── plugins ├── __init__.py └── event_plugins │ ├── __init__.py │ ├── base │ ├── __init__.py │ ├── base_connector.py │ ├── base_consumer_plugin.py │ ├── base_email_plugin.py │ └── base_handler.py │ ├── common │ ├── __init__.py │ ├── config.py │ ├── jinja.py │ ├── schedule │ │ ├── __init__.py │ │ ├── time_utils.py │ │ └── timeout.py │ ├── status.py │ ├── storage │ │ ├── __init__.py │ │ ├── db.py │ │ ├── default.cfg │ │ └── event_message.py │ └── success │ │ ├── __init__.py │ │ └── success_mixin.py │ ├── factory.py │ ├── kafka │ ├── __init__.py │ ├── consume │ │ ├── __init__.py │ │ ├── topic │ │ │ ├── __init__.py │ │ │ ├── basic.py │ │ │ ├── etl_finish.py │ │ │ └── job_finish.py │ │ └── utils.py │ ├── kafka_connector.py │ ├── kafka_consumer_plugin.py │ ├── kafka_email_plugin.py │ ├── kafka_handler.py │ ├── kafka_producer_plugin.py │ └── produce │ │ ├── __init__.py │ │ ├── factory.py │ │ ├── topic │ │ ├── __init__.py │ │ ├── base.py │ │ ├── hive_sink_finish.py │ │ └── job_finish.py │ │ └── utils.py │ └── plugins.py ├── run_test.sh └── test_plugins ├── test_data └── test_event_plugins.cfg └── test_event_plugins ├── __init__.py ├── test_base ├── __init__.py ├── mocks_base_consumer_plugin.py └── test_base_consumer_plugin.py ├── test_common ├── test_event_message.py └── test_timeout.py └── test_kafka ├── test_kafka_consumer_plugin.py └── test_kafka_producer_plugin.py /.coveragerc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/.coveragerc -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/README.md -------------------------------------------------------------------------------- /docs/event_plugins.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/docs/event_plugins.md -------------------------------------------------------------------------------- /docs/kafka_consumer.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/docs/kafka_consumer.md -------------------------------------------------------------------------------- /docs/kafka_email.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/docs/kafka_email.md -------------------------------------------------------------------------------- /docs/kafka_producer.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/docs/kafka_producer.md -------------------------------------------------------------------------------- /examples/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/examples/README.md -------------------------------------------------------------------------------- /examples/kafka_event_plugin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/examples/kafka_event_plugin.py -------------------------------------------------------------------------------- /images/EventStatusEmailExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/images/EventStatusEmailExample.png -------------------------------------------------------------------------------- /images/ExampleDagFailed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/images/ExampleDagFailed.png -------------------------------------------------------------------------------- /images/ExampleDagSuccess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/images/ExampleDagSuccess.png -------------------------------------------------------------------------------- /images/KafkaConsumerFailed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/images/KafkaConsumerFailed.png -------------------------------------------------------------------------------- /images/KafkaConsumerReschedule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/images/KafkaConsumerReschedule.png -------------------------------------------------------------------------------- /images/KafkaConsumerRunning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/images/KafkaConsumerRunning.png -------------------------------------------------------------------------------- /images/KafkaConsumerRunningMarkSuccess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/images/KafkaConsumerRunningMarkSuccess.png -------------------------------------------------------------------------------- /images/KafkaConsumerSuccess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/images/KafkaConsumerSuccess.png -------------------------------------------------------------------------------- /plugins/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugins/event_plugins/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugins/event_plugins/base/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugins/event_plugins/base/base_connector.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/base/base_connector.py -------------------------------------------------------------------------------- /plugins/event_plugins/base/base_consumer_plugin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/base/base_consumer_plugin.py -------------------------------------------------------------------------------- /plugins/event_plugins/base/base_email_plugin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/base/base_email_plugin.py -------------------------------------------------------------------------------- /plugins/event_plugins/base/base_handler.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/base/base_handler.py -------------------------------------------------------------------------------- /plugins/event_plugins/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugins/event_plugins/common/config.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/common/config.py -------------------------------------------------------------------------------- /plugins/event_plugins/common/jinja.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/common/jinja.py -------------------------------------------------------------------------------- /plugins/event_plugins/common/schedule/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugins/event_plugins/common/schedule/time_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/common/schedule/time_utils.py -------------------------------------------------------------------------------- /plugins/event_plugins/common/schedule/timeout.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/common/schedule/timeout.py -------------------------------------------------------------------------------- /plugins/event_plugins/common/status.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/common/status.py -------------------------------------------------------------------------------- /plugins/event_plugins/common/storage/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugins/event_plugins/common/storage/db.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/common/storage/db.py -------------------------------------------------------------------------------- /plugins/event_plugins/common/storage/default.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/common/storage/default.cfg -------------------------------------------------------------------------------- /plugins/event_plugins/common/storage/event_message.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/common/storage/event_message.py -------------------------------------------------------------------------------- /plugins/event_plugins/common/success/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugins/event_plugins/common/success/success_mixin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/common/success/success_mixin.py -------------------------------------------------------------------------------- /plugins/event_plugins/factory.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/factory.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/consume/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/consume/topic/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/consume/topic/__init__.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/consume/topic/basic.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/consume/topic/basic.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/consume/topic/etl_finish.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/consume/topic/etl_finish.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/consume/topic/job_finish.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/consume/topic/job_finish.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/consume/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/consume/utils.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/kafka_connector.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/kafka_connector.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/kafka_consumer_plugin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/kafka_consumer_plugin.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/kafka_email_plugin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/kafka_email_plugin.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/kafka_handler.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/kafka_handler.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/kafka_producer_plugin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/kafka_producer_plugin.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/produce/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/produce/factory.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/produce/factory.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/produce/topic/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/produce/topic/base.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/produce/topic/base.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/produce/topic/hive_sink_finish.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/produce/topic/hive_sink_finish.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/produce/topic/job_finish.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/produce/topic/job_finish.py -------------------------------------------------------------------------------- /plugins/event_plugins/kafka/produce/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/kafka/produce/utils.py -------------------------------------------------------------------------------- /plugins/event_plugins/plugins.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/plugins/event_plugins/plugins.py -------------------------------------------------------------------------------- /run_test.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/run_test.sh -------------------------------------------------------------------------------- /test_plugins/test_data/test_event_plugins.cfg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/test_plugins/test_data/test_event_plugins.cfg -------------------------------------------------------------------------------- /test_plugins/test_event_plugins/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_plugins/test_event_plugins/test_base/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_plugins/test_event_plugins/test_base/mocks_base_consumer_plugin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/test_plugins/test_event_plugins/test_base/mocks_base_consumer_plugin.py -------------------------------------------------------------------------------- /test_plugins/test_event_plugins/test_base/test_base_consumer_plugin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/test_plugins/test_event_plugins/test_base/test_base_consumer_plugin.py -------------------------------------------------------------------------------- /test_plugins/test_event_plugins/test_common/test_event_message.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/test_plugins/test_event_plugins/test_common/test_event_message.py -------------------------------------------------------------------------------- /test_plugins/test_event_plugins/test_common/test_timeout.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/test_plugins/test_event_plugins/test_common/test_timeout.py -------------------------------------------------------------------------------- /test_plugins/test_event_plugins/test_kafka/test_kafka_consumer_plugin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/test_plugins/test_event_plugins/test_kafka/test_kafka_consumer_plugin.py -------------------------------------------------------------------------------- /test_plugins/test_event_plugins/test_kafka/test_kafka_producer_plugin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shlin168/airflow-event-plugins/HEAD/test_plugins/test_event_plugins/test_kafka/test_kafka_producer_plugin.py --------------------------------------------------------------------------------