Apache Airflow provider for FileMaker Cloud
Project description
FileMaker Cloud Provider for Apache Airflow
This is a custom provider package for Apache Airflow that enables integration with FileMaker Cloud's OData API.
Features
- FileMakerHook: Handles authentication with FileMaker Cloud through AWS Cognito and provides methods to interact with the OData API.
- FileMakerQueryOperator: Executes OData queries against FileMaker Cloud.
- FileMakerExtractOperator: Extracts data from FileMaker Cloud and saves it in various formats.
- FileMakerSchemaOperator: Retrieves and parses the FileMaker Cloud OData metadata schema.
- FileMakerDataSensor: Sensor that monitors FileMaker tables for specific conditions.
- FileMakerChangeSensor: Sensor that detects changes in FileMaker tables since a timestamp.
- FileMakerCustomSensor: Customizable sensor that allows for complex monitoring logic.
Installation
Installation from PyPI (Recommended)
pip install arktci-airflow-provider-filemaker
Manual Installation
-
Copy the
providers/filemakerdirectory to your Airflow project'sprovidersdirectory. -
Install the required dependencies:
pip install -r requirements.txt -
Install the package:
pip install -e . -
Create a FileMaker connection in Airflow:
- Connection ID:
filemaker_default(or any ID you prefer) - Connection Type:
filemaker - Host: Your FileMaker Cloud host (e.g.,
my-fmcloud.filemaker-cloud.com) - Schema: Your FileMaker database name
- Login: Your FileMaker Cloud username (Claris ID)
- Password: Your FileMaker Cloud password
- Extra: JSON containing Cognito details (if not using auto-discovery):
{ "user_pool_id": "your-cognito-user-pool-id", "client_id": "your-cognito-client-id", "region": "your-aws-region" }
- Connection ID:
Development
Setting Up Development Environment
-
Clone the repository:
git clone https://github.com/yourusername/airflow-provider-filemaker.git cd airflow-provider-filemaker
-
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows, use: venv\Scripts\activate
-
Run the development setup script:
./setup_dev_env.sh
This script will:
- Install all dependencies from
requirements.txtandrequirements-dev.txt - Install the package in development mode
- Set up pre-commit hooks
- Verify the installation
- Install all dependencies from
Running Tests
# Run all tests
pytest
# Run specific tests
pytest test_filemaker.py
# Run tests with coverage
pytest --cov=filemaker tests/
Building the Package
python -m build
This will create both source distribution (.tar.gz) and wheel (.whl) files in the dist/ directory.
Usage
Basic Query Example
from airflow import DAG
from airflow.utils.dates import days_ago
from airflow.providers.filemaker.operators.filemaker import FileMakerQueryOperator
dag = DAG(
'filemaker_query_example',
start_date=days_ago(1),
schedule_interval=None
)
query_task = FileMakerQueryOperator(
task_id='query_filemaker',
filemaker_conn_id='filemaker_default',
endpoint='MyTableName',
dag=dag
)
Data Extraction Example
from airflow import DAG
from airflow.utils.dates import days_ago
from airflow.providers.filemaker.operators.filemaker import FileMakerExtractOperator
dag = DAG(
'filemaker_extract_example',
start_date=days_ago(1),
schedule_interval=None
)
extract_task = FileMakerExtractOperator(
task_id='extract_filemaker_data',
filemaker_conn_id='filemaker_default',
endpoint='MyTableName',
output_path='/tmp/extracted_data.json',
format='json',
dag=dag
)
Schema Retrieval Example
from airflow import DAG
from airflow.utils.dates import days_ago
from airflow.providers.filemaker.operators.filemaker import FileMakerSchemaOperator
dag = DAG(
'filemaker_schema_example',
start_date=days_ago(1),
schedule_interval=None
)
schema_task = FileMakerSchemaOperator(
task_id='get_filemaker_schema',
filemaker_conn_id='filemaker_default',
output_path='/tmp/filemaker_schema.json',
dag=dag
)
Data Sensor Example
from airflow import DAG
from airflow.utils.dates import days_ago
from airflow.providers.filemaker.sensors.filemaker import FileMakerDataSensor
dag = DAG(
'filemaker_sensor_example',
start_date=days_ago(1),
schedule_interval=None
)
sensor_task = FileMakerDataSensor(
task_id='wait_for_filemaker_data',
filemaker_conn_id='filemaker_default',
table='MyTableName',
condition="CreatedDate gt 2023-01-01T00:00:00Z",
expected_count=5,
comparison_operator='>',
mode='poke',
poke_interval=300, # 5 minutes
dag=dag
)
Authentication
The FileMaker provider supports multiple authentication methods for FileMaker Cloud:
- Auto-discovery: If no Cognito details are provided, the provider will attempt to discover them from the Claris endpoint.
- Explicit configuration: You can provide
user_pool_id,client_id, andregionin the connection extras. - Fallback methods: The provider includes multiple authentication methods and will try different approaches if the primary method fails.
OData Support
The provider supports FileMaker Cloud's OData v4 API, including:
- Basic CRUD operations
- Query filtering with
$filter - Sorting with
$orderby - Pagination with
$topand$skip - Selecting specific fields with
$select - Expanding relationships with
$expand - Count operations with
$count
Troubleshooting
- Authentication Issues: Ensure your credentials are correct and that you have the correct permissions in FileMaker Cloud.
- Connection Errors: Check your network connectivity and that the FileMaker Cloud host is accessible.
- API Errors: Check the Airflow logs for detailed error messages from the FileMaker Cloud API.
- Import Errors: Make sure the provider package is correctly installed and discoverable by Airflow.
License
This provider is licensed under the same license as Apache Airflow.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arktci_airflow_provider_filemaker-1.1.0.tar.gz.
File metadata
- Download URL: arktci_airflow_provider_filemaker-1.1.0.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a389dc117acf9d8ba6c6dd3f8622fc0ac0bfae60af854555abecb80e19f4b40c
|
|
| MD5 |
d519c8737eaf952983fd2f3726112534
|
|
| BLAKE2b-256 |
29ce3f1d4c35e9dc80fe162798b154d279ca8006d5daa5af56c33676b3b9d7b2
|
File details
Details for the file arktci_airflow_provider_filemaker-1.1.0-py2.py3-none-any.whl.
File metadata
- Download URL: arktci_airflow_provider_filemaker-1.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 18.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cce0e7c4e56328c91aeea3e20a04ca8b861e06f04293792b2b0f7862a302e230
|
|
| MD5 |
2e90ee07e918fccf5879730645b75545
|
|
| BLAKE2b-256 |
207e8a023ae2a3ab52bca07eeb0a7477429ab7965246bd75e2f0710c0985d3c0
|