apache-airflow-providers-dpone
The formal Apache Airflow provider facade for dpone self-service DAGs.
Install
Use a supported Airflow matrix cell. This example uses Python 3.12, Airflow 3.2.0, and the CNCF Kubernetes provider 10.14.0. Use Apache Airflow's official constraints for the Airflow install only, then pin Airflow again while adding this provider:
AIRFLOW_VERSION=3.2.0
PYTHON_VERSION=3.12
DPONE_VERSION=X.Y.Z
AIRFLOW_CONSTRAINTS_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
python3 -m pip install \
"apache-airflow[cncf.kubernetes]==${AIRFLOW_VERSION}" \
--constraint "${AIRFLOW_CONSTRAINTS_URL}"
python3 -m pip install \
"apache-airflow==${AIRFLOW_VERSION}" \
"apache-airflow-providers-cncf-kubernetes==10.14.0" \
"apache-airflow-providers-dpone==${DPONE_VERSION}"
python3 -m pip check
python3 -c "from airflow.providers.dpone import load_dpone_dags; print(load_dpone_dags.__module__)"
The provider installs the same-version dpone-airflow-pack; it does not require the
full dpone runtime or connector drivers in the scheduler image.
Use only a version already published on PyPI. For a release candidate, install the exact provider and pack wheels built from the same reviewed commit instead of using a not-yet-existing tag or floating branch.
Load DAGs
from airflow.providers.dpone import load_and_acknowledge_dpone_dags
index_path = "/opt/airflow/.dpone-cache/current/airflow-index.json"
loaded = load_and_acknowledge_dpone_dags(
globals(),
index_path=index_path,
ack_path="/opt/airflow/.dpone-ack/loader-ack.json",
ack_root="/opt/airflow/.dpone-ack",
)
if loaded.report.fatal:
error_code = (
loaded.report.errors[0].get("code", "DPONE_AIRFLOW_INDEX_INVALID")
if loaded.report.errors
else "DPONE_AIRFLOW_INDEX_INVALID"
)
raise RuntimeError(
f"{error_code}: dpone Airflow deployment index could not be loaded"
)
load_and_acknowledge_dpone_dags(...) holds one shared cache lease across the
parse and acknowledgement. It performs bounded local filesystem I/O only and
atomically binds the completed report to the exact deployment and index digest.
Mount /opt/airflow/.dpone-cache read-only in the parser container and provide
the separate /opt/airflow/.dpone-ack volume as its only writable evidence
channel. The older cache-local status/ destination remains supported when
ack_root is omitted, but it requires a writable cache mount and is not the
recommended Kubernetes layout.
The distribution owns Airflow provider discovery and the typed canonical
namespace. The dependency-light dpone-airflow-pack package owns static pack
reading and DAG construction. Importing the provider performs no remote cache,
Airflow metadata, Connection, Variable, Vault, Kubernetes, or database I/O.
The deployment index read is bounded to 8 MiB and each listed artifact to
64 MiB by default. An index-level error returns fatal=True; do not represent
that as a successful empty parse. After a trusted index is loaded, DAG spec and
workload-pack size/SHA-256 failures are isolated to the affected DAG under the
default skip_and_report policy. Recover by rematerializing the immutable
release/deployment from trusted storage, never by editing cache artifacts in
place.
DponeDag.from_spec(...) and DponeTaskGroup.from_pack(...) are typed escape
hatches for hybrid DAGs. The recommended production path is
load_and_acknowledge_dpone_dags(...); load_dpone_dags(...) remains the
parse-only lower-level API.
Operations
Strict runtime tasks set get_logs=true and
on_finish_action=delete_succeeded_pod so Airflow streams base container
stdout after pod start. Structured XCom/runtime evidence remains the task
outcome authority; a cluster log collector is still required for post-delete
forensics. The full dpone distribution ships the runtime Pod
retention control; the parse-safe provider facade does not execute it during DAG
import. Before production, deploy and certify its label-scoped
plan/apply CronJob through the
runtime pod retention runbook,
and deploy the exact cache through the
Kubernetes cache runbook.
The stock JSONL publisher reports process_ordered, not crash durability;
production apply requires a certified publisher/sink that reports
durable_acknowledged and retains the operation, intent, outcome and completion
chain.
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 apache_airflow_providers_dpone-0.74.23.tar.gz.
File metadata
- Download URL: apache_airflow_providers_dpone-0.74.23.tar.gz
- Upload date:
- Size: 4.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b3ac5ceb0e3d1578cab96251b3759c6d21834ab58574d0a38a1c6b67d4a480f
|
|
| MD5 |
2bdbf6b3b92d2e7c10f16c112cba30d4
|
|
| BLAKE2b-256 |
7ebd8805af880e72f5d0926ea2869ee598e235fbdfe5cb0c8153bc7eff8e413d
|
File details
Details for the file apache_airflow_providers_dpone-0.74.23-py3-none-any.whl.
File metadata
- Download URL: apache_airflow_providers_dpone-0.74.23-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
330f1a8b73655797abefe0d1984c83c44799e0b41efd445c717c8bf8703b8fb1
|
|
| MD5 |
bdd37ad21d6b278e3c97fc10c7ea821a
|
|
| BLAKE2b-256 |
c7a287e0af9ddae5a507597b13bfdb54272fee982e713e8525bb7f401178a283
|