apache-airflow-providers-edge3 1.5.0__tar.gz → 2.0.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/.pre-commit-config.yaml +2 -2
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/PKG-INFO +13 -13
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/README.rst +8 -8
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/architecture.rst +2 -2
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/changelog.rst +61 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/deployment.rst +2 -2
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/index.rst +9 -9
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/ui_plugin.rst +3 -3
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/provider.yaml +3 -1
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/pyproject.toml +5 -5
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/__init__.py +3 -3
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/api_client.py +23 -26
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/worker.py +9 -28
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/example_dags/integration_test.py +1 -1
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/example_dags/win_test.py +32 -22
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/executors/edge_executor.py +7 -63
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/models/edge_worker.py +7 -3
- apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/edge_executor_plugin.py +118 -0
- apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/dist/main.umd.cjs +14 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/common.ts +6 -1
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/ensureQueryData.ts +6 -1
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/prefetch.ts +6 -1
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/queries.ts +6 -2
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/suspense.ts +6 -1
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/schemas.gen.ts +5 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/services.gen.ts +18 -3
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/types.gen.ts +24 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/package.json +17 -15
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/pnpm-lock.yaml +1194 -1244
- apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/SearchBar.tsx +103 -0
- apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/InputGroup.tsx +57 -0
- apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/Content.tsx +37 -0
- apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/Item.tsx +34 -0
- apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/Root.tsx +24 -0
- apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/Trigger.tsx +54 -0
- apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/ValueText.tsx +51 -0
- apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/components/ui/Select/index.ts +34 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/index.ts +3 -0
- apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/constants.ts +43 -0
- apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx +224 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/version_compat.py +0 -2
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/auth.py +11 -35
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/datamodels.py +3 -2
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/health.py +1 -1
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/jobs.py +10 -11
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/logs.py +5 -8
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/ui.py +14 -3
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/worker.py +19 -12
- {apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/openapi → apache_airflow_providers_edge3-2.0.0rc1/src/airflow/providers/edge3/worker_api}/v2-edge-generated.yaml +59 -5
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_worker.py +22 -46
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/executors/test_edge_executor.py +3 -175
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/plugins/test_edge_executor_plugin.py +5 -43
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_jobs.py +2 -1
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_worker.py +49 -1
- apache_airflow_providers_edge3-2.0.0rc1/www-hash.txt +1 -0
- apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/openapi/__init__.py +0 -19
- apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/openapi/edge_worker_api_v1.yaml +0 -808
- apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/plugins/edge_executor_plugin.py +0 -297
- apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/plugins/www/dist/main.umd.cjs +0 -14
- apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx +0 -135
- apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/worker_api/routes/_v2_compat.py +0 -136
- apache_airflow_providers_edge3-1.5.0/src/airflow/providers/edge3/worker_api/routes/_v2_routes.py +0 -237
- apache_airflow_providers_edge3-1.5.0/www-hash.txt +0 -1
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/LICENSE +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/NOTICE +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/cli-ref.rst +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/commits.rst +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/conf.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/configurations-ref.rst +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/edge_executor.rst +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/img/distributed_architecture.svg +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/img/edge_package.svg +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/img/worker_hosts.png +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/install_on_windows.rst +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/security.rst +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/why_edge.rst +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/dataclasses.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/edge_command.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/cli/signalling.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/example_dags/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/example_dags/win_notepad.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/executors/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/get_provider_info.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/models/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/models/edge_job.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/models/edge_logs.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/templates/edge_worker_hosts.html +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/templates/edge_worker_jobs.html +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/.gitignore +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/.prettierignore +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/.prettierrc +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/README.md +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/dist/main.d.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/eslint.config.js +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/index.html +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/index.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/queries/infiniteQueries.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/ApiError.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/ApiRequestOptions.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/ApiResult.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/CancelablePromise.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/OpenAPI.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/core/request.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/openapi-gen/requests/index.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/AddQueueButton.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ErrorAlert.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/MaintenanceEditCommentButton.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/MaintenanceEnterButton.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/MaintenanceExitButton.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/RemoveQueueButton.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/StateBadge.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/StateIcon.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerDeleteButton.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerOperations.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerShutdownButton.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerStateBadge.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/WorkerStateIcon.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/Alert.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/CloseButton.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/ScrollToAnchor.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/components/ui/createToaster.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/context/colorMode/ColorModeProvider.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/context/colorMode/index.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/context/colorMode/useColorMode.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/dev.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/layouts/EdgeLayout.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/layouts/NavTabs.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/main.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/res/README.md +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/res/cloud-computer-dark.svg +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/res/cloud-computer.svg +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/theme.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/utils/config.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/utils/index.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/utils/useContainerWidth.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/src/vite-env.d.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/testsSetup.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/tsconfig.app.json +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/tsconfig.json +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/tsconfig.lib.json +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/tsconfig.node.json +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/plugins/www/vite.config.ts +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/app.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/datamodels_ui.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/src/airflow/providers/edge3/worker_api/routes/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/conftest.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_api_client.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_dataclasses.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_edge_command.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/cli/test_signalling.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/executors/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/models/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/plugins/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/__init__.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_health.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_logs.py +0 -0
- {apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/tests/unit/edge3/worker_api/routes/test_ui.py +0 -0
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
# under the License.
|
|
17
17
|
---
|
|
18
18
|
default_stages: [pre-commit, pre-push]
|
|
19
|
-
minimum_prek_version: '0.0
|
|
19
|
+
minimum_prek_version: '0.2.0'
|
|
20
20
|
default_language_version:
|
|
21
21
|
python: python3
|
|
22
22
|
node: 22.19.0
|
|
@@ -37,7 +37,7 @@ repos:
|
|
|
37
37
|
files: |
|
|
38
38
|
(?x)
|
|
39
39
|
^src/airflow/providers/edge3/plugins/www/.*\.(js|ts|tsx|yaml|css|json)$|
|
|
40
|
-
^src/airflow/providers/edge3/
|
|
40
|
+
^src/airflow/providers/edge3/worker_api/v2-edge-generated.yaml$
|
|
41
41
|
exclude: |
|
|
42
42
|
(?x)
|
|
43
43
|
^src/airflow/providers/edge3/plugins/www/node-modules/.*|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-edge3
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.0rc1
|
|
4
4
|
Summary: Provider package apache-airflow-providers-edge3 for Apache Airflow
|
|
5
5
|
Keywords: airflow-provider,edge3,airflow,integration
|
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
|
@@ -22,13 +22,13 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
22
22
|
Classifier: Topic :: System :: Monitoring
|
|
23
23
|
License-File: LICENSE
|
|
24
24
|
License-File: NOTICE
|
|
25
|
-
Requires-Dist: apache-airflow>=
|
|
26
|
-
Requires-Dist: apache-airflow-providers-common-compat>=1.
|
|
25
|
+
Requires-Dist: apache-airflow>=3.0.0,!=3.1.0
|
|
26
|
+
Requires-Dist: apache-airflow-providers-common-compat>=1.10.1rc1
|
|
27
27
|
Requires-Dist: pydantic>=2.11.0
|
|
28
28
|
Requires-Dist: retryhttp>=1.2.0,!=1.3.0
|
|
29
29
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
30
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-edge3/
|
|
31
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-edge3/
|
|
30
|
+
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-edge3/2.0.0/changelog.html
|
|
31
|
+
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-edge3/2.0.0
|
|
32
32
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
33
33
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
34
34
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
@@ -59,7 +59,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
|
59
59
|
|
|
60
60
|
Package ``apache-airflow-providers-edge3``
|
|
61
61
|
|
|
62
|
-
Release: ``
|
|
62
|
+
Release: ``2.0.0``
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
Handle edge workers on remote sites via HTTP(s) connection and orchestrates work over distributed sites.
|
|
@@ -84,7 +84,7 @@ This is a provider package for ``edge3`` provider. All classes for this provider
|
|
|
84
84
|
are in ``airflow.providers.edge3`` python package.
|
|
85
85
|
|
|
86
86
|
You can find package information and changelog for the provider
|
|
87
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-edge3/
|
|
87
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-edge3/2.0.0/>`_.
|
|
88
88
|
|
|
89
89
|
Installation
|
|
90
90
|
------------
|
|
@@ -98,14 +98,14 @@ The package supports the following python versions: 3.10,3.11,3.12,3.13
|
|
|
98
98
|
Requirements
|
|
99
99
|
------------
|
|
100
100
|
|
|
101
|
-
==========================================
|
|
101
|
+
========================================== ===================
|
|
102
102
|
PIP package Version required
|
|
103
|
-
==========================================
|
|
104
|
-
``apache-airflow`` ``>=
|
|
105
|
-
``apache-airflow-providers-common-compat`` ``>=1.
|
|
103
|
+
========================================== ===================
|
|
104
|
+
``apache-airflow`` ``>=3.0.0,!=3.1.0``
|
|
105
|
+
``apache-airflow-providers-common-compat`` ``>=1.10.1``
|
|
106
106
|
``pydantic`` ``>=2.11.0``
|
|
107
107
|
``retryhttp`` ``>=1.2.0,!=1.3.0``
|
|
108
|
-
==========================================
|
|
108
|
+
========================================== ===================
|
|
109
109
|
|
|
110
110
|
Cross provider package dependencies
|
|
111
111
|
-----------------------------------
|
|
@@ -127,5 +127,5 @@ Dependent package
|
|
|
127
127
|
================================================================================================================== =================
|
|
128
128
|
|
|
129
129
|
The changelog for the provider package can be found in the
|
|
130
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-edge3/
|
|
130
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-edge3/2.0.0/changelog.html>`_.
|
|
131
131
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
Package ``apache-airflow-providers-edge3``
|
|
25
25
|
|
|
26
|
-
Release: ``
|
|
26
|
+
Release: ``2.0.0``
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
Handle edge workers on remote sites via HTTP(s) connection and orchestrates work over distributed sites.
|
|
@@ -48,7 +48,7 @@ This is a provider package for ``edge3`` provider. All classes for this provider
|
|
|
48
48
|
are in ``airflow.providers.edge3`` python package.
|
|
49
49
|
|
|
50
50
|
You can find package information and changelog for the provider
|
|
51
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-edge3/
|
|
51
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-edge3/2.0.0/>`_.
|
|
52
52
|
|
|
53
53
|
Installation
|
|
54
54
|
------------
|
|
@@ -62,14 +62,14 @@ The package supports the following python versions: 3.10,3.11,3.12,3.13
|
|
|
62
62
|
Requirements
|
|
63
63
|
------------
|
|
64
64
|
|
|
65
|
-
==========================================
|
|
65
|
+
========================================== ===================
|
|
66
66
|
PIP package Version required
|
|
67
|
-
==========================================
|
|
68
|
-
``apache-airflow`` ``>=
|
|
69
|
-
``apache-airflow-providers-common-compat`` ``>=1.
|
|
67
|
+
========================================== ===================
|
|
68
|
+
``apache-airflow`` ``>=3.0.0,!=3.1.0``
|
|
69
|
+
``apache-airflow-providers-common-compat`` ``>=1.10.1``
|
|
70
70
|
``pydantic`` ``>=2.11.0``
|
|
71
71
|
``retryhttp`` ``>=1.2.0,!=1.3.0``
|
|
72
|
-
==========================================
|
|
72
|
+
========================================== ===================
|
|
73
73
|
|
|
74
74
|
Cross provider package dependencies
|
|
75
75
|
-----------------------------------
|
|
@@ -91,4 +91,4 @@ Dependent package
|
|
|
91
91
|
================================================================================================================== =================
|
|
92
92
|
|
|
93
93
|
The changelog for the provider package can be found in the
|
|
94
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-edge3/
|
|
94
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-edge3/2.0.0/changelog.html>`_.
|
|
@@ -63,7 +63,7 @@ deployed outside of the central Airflow cluster is connected via HTTP(s) to the
|
|
|
63
63
|
* **Workers** (Central) - Execute the assigned tasks - most standard setup has local or centralized workers, e.g. via Celery
|
|
64
64
|
* **Edge Workers** - Special workers which pull tasks via HTTP(s) as provided as feature via this provider package
|
|
65
65
|
* **Scheduler** - Responsible for adding the necessary tasks to the queue. The EdgeExecutor is running as a module inside the scheduler.
|
|
66
|
-
* **API server**
|
|
66
|
+
* **API server** - HTTP REST API Server provides access to Dag/task status information. The required end-points are
|
|
67
67
|
provided by the Edge provider plugin. The Edge Worker uses this API to pull tasks and send back the results.
|
|
68
68
|
* **Database** - Contains information about the status of tasks, Dags, Variables, connections, etc.
|
|
69
69
|
|
|
@@ -77,7 +77,7 @@ In detail the parts of the Edge provider are deployed as follows:
|
|
|
77
77
|
need to set the ``executor`` configuration option in the ``airflow.cfg`` file to
|
|
78
78
|
``airflow.providers.edge3.executors.EdgeExecutor``. For more details see :doc:`edge_executor`. Note that also
|
|
79
79
|
multiple executors can be used in parallel together with the EdgeExecutor.
|
|
80
|
-
* **API server**
|
|
80
|
+
* **API server** - The API server is providing REST endpoints to the web UI as well
|
|
81
81
|
as serves static files. The Edge provider adds a plugin that provides additional REST API for the Edge Worker
|
|
82
82
|
as well as UI elements to manage workers (not available in Airflow 3.0).
|
|
83
83
|
The API server is responsible for handling requests from the Edge Worker and sending back the results. To
|
{apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/changelog.rst
RENAMED
|
@@ -27,6 +27,67 @@
|
|
|
27
27
|
Changelog
|
|
28
28
|
---------
|
|
29
29
|
|
|
30
|
+
2.0.0
|
|
31
|
+
.....
|
|
32
|
+
|
|
33
|
+
.. warning::
|
|
34
|
+
This release of the Edge3 provider drops support for Airflow versions below 3.0.0.
|
|
35
|
+
|
|
36
|
+
The support for Airflow 2.10-2.11 was experimental and GA for the provider is only for Airflow 3.0+.
|
|
37
|
+
Productive operation was not intended in Airflow 2.x, therefore the support for Airflow 2.x is now dropped
|
|
38
|
+
earlier than the usual release support policy would indicate.
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
Breaking Changes
|
|
42
|
+
~~~~~~~~~~~~~~~~
|
|
43
|
+
|
|
44
|
+
* ``Drop Airflow 2 Support in Edge Provider (#59143)``
|
|
45
|
+
|
|
46
|
+
Misc
|
|
47
|
+
~~~~
|
|
48
|
+
|
|
49
|
+
* ``Add backcompat for exceptions in providers (#58727)``
|
|
50
|
+
* ``Move the traces and metrics code under a common observability package (#56187)``
|
|
51
|
+
* ``Bump minimum prek version to 0.2.0 (#58952)``
|
|
52
|
+
|
|
53
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
54
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
55
|
+
|
|
56
|
+
1.6.0
|
|
57
|
+
.....
|
|
58
|
+
|
|
59
|
+
.. note::
|
|
60
|
+
This release of provider is only available for Airflow 2.11+ as explained in the
|
|
61
|
+
Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>_.
|
|
62
|
+
|
|
63
|
+
Features
|
|
64
|
+
~~~~~~~~
|
|
65
|
+
|
|
66
|
+
* ``Send executor integration info in workload (#57800)``
|
|
67
|
+
* ``Prevent duplicate edge workers unless existing worker is offline or unkown (#58586)``
|
|
68
|
+
* ``Add multi-select state filter to worker page (#58505)``
|
|
69
|
+
* ``Add queue name filtering to Edge Worker tab (#58416)``
|
|
70
|
+
* ``Add search functionality to Edge Worker tab (#58331)``
|
|
71
|
+
|
|
72
|
+
Bug Fixes
|
|
73
|
+
~~~~~~~~~
|
|
74
|
+
|
|
75
|
+
* ``Use 'before_sleep_log' in retries of Edge Worker (#58480)``
|
|
76
|
+
|
|
77
|
+
Misc
|
|
78
|
+
~~~~
|
|
79
|
+
|
|
80
|
+
* ``Bump the edge-ui-package-updates group across 1 directory with 8 updates (#58780)``
|
|
81
|
+
* ``Move out some exceptions to TaskSDK (#54505)``
|
|
82
|
+
* ``Bump minimum Airflow version in providers to Airflow 2.11.0 (#58612)``
|
|
83
|
+
* ``Upgrade Edge TS dependencies (#58413)``
|
|
84
|
+
* ``Fix lower bound dependency to common-compat provider (#58833)``
|
|
85
|
+
|
|
86
|
+
.. Below changes are excluded from the changelog. Move them to
|
|
87
|
+
appropriate section above if needed. Do not delete the lines(!):
|
|
88
|
+
* ``Remove SDK reference for NOTSET in Airflow Core (#58258)``
|
|
89
|
+
* ``Prepare release for 2025-11-27 wave of providers (#58697)``
|
|
90
|
+
|
|
30
91
|
1.5.0
|
|
31
92
|
.....
|
|
32
93
|
|
{apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/deployment.rst
RENAMED
|
@@ -113,7 +113,7 @@ process as and wait until all running tasks are completed. Also in a console you
|
|
|
113
113
|
If you want to monitor the remote activity and worker, use the UI plugin which
|
|
114
114
|
is included in the provider package and install it on the api-server / webserver and use the
|
|
115
115
|
"Admin" - "Edge Worker Hosts" and "Edge Worker Jobs" pages.
|
|
116
|
-
(Note: The plugin is not available on Airflow 3.0 UI, it is only in
|
|
116
|
+
(Note: The plugin is not available on Airflow 3.0 UI, it is only in 3.1++)
|
|
117
117
|
|
|
118
118
|
If you want to check status of the worker via CLI you can use the command
|
|
119
119
|
|
|
@@ -150,7 +150,7 @@ Worker status can be checked via the web UI in the "Admin" - "Edge Worker" page.
|
|
|
150
150
|
|
|
151
151
|
.. note::
|
|
152
152
|
|
|
153
|
-
Airflow 3.0 does not support UI plugins. The UI plugin is only available in Airflow
|
|
153
|
+
Airflow 3.0 does not support UI plugins. The UI plugin is only available in Airflow 3.1 and newer.
|
|
154
154
|
Alternatively you can use the CLI commands as described in :ref:`deployment:maintenance-mgmt-cli`.
|
|
155
155
|
|
|
156
156
|
|
{apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/index.rst
RENAMED
|
@@ -90,7 +90,7 @@ Additional REST API endpoints are provided to distribute tasks and manage the ed
|
|
|
90
90
|
are provided by the API server.
|
|
91
91
|
|
|
92
92
|
|
|
93
|
-
Release:
|
|
93
|
+
Release: 2.0.0
|
|
94
94
|
|
|
95
95
|
Provider package
|
|
96
96
|
----------------
|
|
@@ -108,16 +108,16 @@ For the minimum Airflow version supported, see ``Requirements`` below.
|
|
|
108
108
|
Requirements
|
|
109
109
|
------------
|
|
110
110
|
|
|
111
|
-
The minimum Apache Airflow version supported by this provider distribution is ``
|
|
111
|
+
The minimum Apache Airflow version supported by this provider distribution is ``3.0.0``.
|
|
112
112
|
|
|
113
|
-
==========================================
|
|
113
|
+
========================================== ===================
|
|
114
114
|
PIP package Version required
|
|
115
|
-
==========================================
|
|
116
|
-
``apache-airflow`` ``>=
|
|
117
|
-
``apache-airflow-providers-common-compat`` ``>=1.
|
|
115
|
+
========================================== ===================
|
|
116
|
+
``apache-airflow`` ``>=3.0.0,!=3.1.0``
|
|
117
|
+
``apache-airflow-providers-common-compat`` ``>=1.10.1``
|
|
118
118
|
``pydantic`` ``>=2.11.0``
|
|
119
119
|
``retryhttp`` ``>=1.2.0,!=1.3.0``
|
|
120
|
-
==========================================
|
|
120
|
+
========================================== ===================
|
|
121
121
|
|
|
122
122
|
Cross provider package dependencies
|
|
123
123
|
-----------------------------------
|
|
@@ -144,5 +144,5 @@ Downloading official packages
|
|
|
144
144
|
You can download officially released packages and verify their checksums and signatures from the
|
|
145
145
|
`Official Apache Download site <https://downloads.apache.org/airflow/providers/>`_
|
|
146
146
|
|
|
147
|
-
* `The apache-airflow-providers-edge3
|
|
148
|
-
* `The apache-airflow-providers-edge3
|
|
147
|
+
* `The apache-airflow-providers-edge3 2.0.0 sdist package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-2.0.0.tar.gz>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-2.0.0.tar.gz.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-2.0.0.tar.gz.sha512>`__)
|
|
148
|
+
* `The apache-airflow-providers-edge3 2.0.0 wheel package <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-2.0.0-py3-none-any.whl>`_ (`asc <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-2.0.0-py3-none-any.whl.asc>`__, `sha512 <https://downloads.apache.org/airflow/providers/apache_airflow_providers_edge3-2.0.0-py3-none-any.whl.sha512>`__)
|
{apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/docs/ui_plugin.rst
RENAMED
|
@@ -22,7 +22,7 @@ The Edge provider uses a Plugin to
|
|
|
22
22
|
|
|
23
23
|
- Extend the REST API endpoints for connecting workers to the Airflow cluster
|
|
24
24
|
- Provide a web UI for managing the workers and monitoring their status and tasks
|
|
25
|
-
(Note: Airflow 3.0 does not have support for UI plugins. The UI plugin is only available in Airflow
|
|
25
|
+
(Note: Airflow 3.0 does not have support for UI plugins. The UI plugin is only available in Airflow 3.1 and newer.)
|
|
26
26
|
|
|
27
27
|
REST API endpoints
|
|
28
28
|
------------------
|
|
@@ -35,14 +35,14 @@ The Edge provider adds the following REST API endpoints to the Airflow API:
|
|
|
35
35
|
- ``/edge_worker/v1/health``: Check that the API endpoint is deployed and active
|
|
36
36
|
|
|
37
37
|
To see full documentation of the API endpoints open the Airflow web UI and navigate to
|
|
38
|
-
the sub-path ``/edge_worker/docs
|
|
38
|
+
the sub-path ``/edge_worker/docs``.
|
|
39
39
|
|
|
40
40
|
Web UI Plugin
|
|
41
41
|
-------------
|
|
42
42
|
|
|
43
43
|
.. note::
|
|
44
44
|
|
|
45
|
-
Airflow 3.0 does not support UI plugins. The UI plugin is only available in Airflow
|
|
45
|
+
Airflow 3.0 does not support UI plugins. The UI plugin is only available in Airflow 3.1 and newer.
|
|
46
46
|
Alternatively you can use the CLI commands as described in :ref:`deployment:maintenance-mgmt-cli`.
|
|
47
47
|
|
|
48
48
|
The Edge provider adds a web UI plugin to the Airflow web UI. The plugin is
|
{apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/provider.yaml
RENAMED
|
@@ -33,13 +33,15 @@ description: |
|
|
|
33
33
|
are provided by the API server.
|
|
34
34
|
|
|
35
35
|
state: ready
|
|
36
|
-
source-date-epoch:
|
|
36
|
+
source-date-epoch: 1765299029
|
|
37
37
|
|
|
38
38
|
# Note that those versions are maintained by release manager - do not update them manually
|
|
39
39
|
# with the exception of case where other provider in sources has >= new provider version.
|
|
40
40
|
# In such case adding >= NEW_VERSION and bumping to NEW_VERSION in a provider have
|
|
41
41
|
# to be done in the same PR
|
|
42
42
|
versions:
|
|
43
|
+
- 2.0.0
|
|
44
|
+
- 1.6.0
|
|
43
45
|
- 1.5.0
|
|
44
46
|
- 1.4.1
|
|
45
47
|
- 1.4.0
|
{apache_airflow_providers_edge3-1.5.0 → apache_airflow_providers_edge3-2.0.0rc1}/pyproject.toml
RENAMED
|
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
|
|
|
25
25
|
|
|
26
26
|
[project]
|
|
27
27
|
name = "apache-airflow-providers-edge3"
|
|
28
|
-
version = "
|
|
28
|
+
version = "2.0.0rc1"
|
|
29
29
|
description = "Provider package apache-airflow-providers-edge3 for Apache Airflow"
|
|
30
30
|
readme = "README.rst"
|
|
31
31
|
license = "Apache-2.0"
|
|
@@ -58,8 +58,8 @@ requires-python = ">=3.10"
|
|
|
58
58
|
# Make sure to run ``prek update-providers-dependencies --all-files``
|
|
59
59
|
# After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
|
|
60
60
|
dependencies = [
|
|
61
|
-
"apache-airflow>=
|
|
62
|
-
"apache-airflow-providers-common-compat>=1.
|
|
61
|
+
"apache-airflow>=3.0.0,!=3.1.0",
|
|
62
|
+
"apache-airflow-providers-common-compat>=1.10.1rc1",
|
|
63
63
|
"pydantic>=2.11.0",
|
|
64
64
|
"retryhttp>=1.2.0,!=1.3.0",
|
|
65
65
|
]
|
|
@@ -99,8 +99,8 @@ apache-airflow-providers-common-sql = {workspace = true}
|
|
|
99
99
|
apache-airflow-providers-standard = {workspace = true}
|
|
100
100
|
|
|
101
101
|
[project.urls]
|
|
102
|
-
"Documentation" = "https://airflow.apache.org/docs/apache-airflow-providers-edge3/
|
|
103
|
-
"Changelog" = "https://airflow.apache.org/docs/apache-airflow-providers-edge3/
|
|
102
|
+
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-edge3/2.0.0"
|
|
103
|
+
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-edge3/2.0.0/changelog.html"
|
|
104
104
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
|
105
105
|
"Source Code" = "https://github.com/apache/airflow"
|
|
106
106
|
"Slack Chat" = "https://s.apache.org/airflow-slack"
|
|
@@ -29,11 +29,11 @@ from airflow import __version__ as airflow_version
|
|
|
29
29
|
|
|
30
30
|
__all__ = ["__version__"]
|
|
31
31
|
|
|
32
|
-
__version__ = "
|
|
32
|
+
__version__ = "2.0.0"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
|
-
"
|
|
35
|
+
"3.0.0"
|
|
36
36
|
):
|
|
37
37
|
raise RuntimeError(
|
|
38
|
-
f"The package `apache-airflow-providers-edge3:{__version__}` needs Apache Airflow
|
|
38
|
+
f"The package `apache-airflow-providers-edge3:{__version__}` needs Apache Airflow 3.0.0+"
|
|
39
39
|
)
|
|
@@ -20,6 +20,7 @@ import json
|
|
|
20
20
|
import logging
|
|
21
21
|
import os
|
|
22
22
|
from datetime import datetime
|
|
23
|
+
from functools import cache
|
|
23
24
|
from http import HTTPStatus
|
|
24
25
|
from pathlib import Path
|
|
25
26
|
from typing import TYPE_CHECKING, Any
|
|
@@ -27,11 +28,14 @@ from urllib.parse import quote, urljoin
|
|
|
27
28
|
|
|
28
29
|
import requests
|
|
29
30
|
from retryhttp import retry, wait_retry_after
|
|
30
|
-
from tenacity import
|
|
31
|
+
from tenacity import before_sleep_log, wait_random_exponential
|
|
31
32
|
|
|
33
|
+
from airflow.api_fastapi.auth.tokens import JWTGenerator
|
|
32
34
|
from airflow.configuration import conf
|
|
33
|
-
from airflow.providers.edge3.models.edge_worker import
|
|
34
|
-
|
|
35
|
+
from airflow.providers.edge3.models.edge_worker import (
|
|
36
|
+
EdgeWorkerDuplicateException,
|
|
37
|
+
EdgeWorkerVersionException,
|
|
38
|
+
)
|
|
35
39
|
from airflow.providers.edge3.worker_api.datamodels import (
|
|
36
40
|
EdgeJobFetched,
|
|
37
41
|
PushLogsBody,
|
|
@@ -71,6 +75,15 @@ API_RETRY_WAIT_MAX = float(
|
|
|
71
75
|
_default_wait = wait_random_exponential(min=API_RETRY_WAIT_MIN, max=API_RETRY_WAIT_MAX)
|
|
72
76
|
|
|
73
77
|
|
|
78
|
+
@cache
|
|
79
|
+
def jwt_generator() -> JWTGenerator:
|
|
80
|
+
return JWTGenerator(
|
|
81
|
+
secret_key=conf.get("api_auth", "jwt_secret"),
|
|
82
|
+
valid_for=conf.getint("api_auth", "jwt_leeway", fallback=30),
|
|
83
|
+
audience="api",
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
|
|
74
87
|
@retry(
|
|
75
88
|
reraise=True,
|
|
76
89
|
max_attempt_number=API_RETRIES,
|
|
@@ -78,31 +91,10 @@ _default_wait = wait_random_exponential(min=API_RETRY_WAIT_MIN, max=API_RETRY_WA
|
|
|
78
91
|
wait_network_errors=_default_wait,
|
|
79
92
|
wait_timeouts=_default_wait,
|
|
80
93
|
wait_rate_limited=wait_retry_after(fallback=_default_wait), # No infinite timeout on HTTP 429
|
|
81
|
-
before_sleep=
|
|
94
|
+
before_sleep=before_sleep_log(logger, logging.WARNING),
|
|
82
95
|
)
|
|
83
96
|
def _make_generic_request(method: str, rest_path: str, data: str | None = None) -> Any:
|
|
84
|
-
|
|
85
|
-
from functools import cache
|
|
86
|
-
|
|
87
|
-
from airflow.api_fastapi.auth.tokens import JWTGenerator
|
|
88
|
-
|
|
89
|
-
@cache
|
|
90
|
-
def jwt_generator() -> JWTGenerator:
|
|
91
|
-
return JWTGenerator(
|
|
92
|
-
secret_key=conf.get("api_auth", "jwt_secret"),
|
|
93
|
-
valid_for=conf.getint("api_auth", "jwt_leeway", fallback=30),
|
|
94
|
-
audience="api",
|
|
95
|
-
)
|
|
96
|
-
|
|
97
|
-
generator = jwt_generator()
|
|
98
|
-
authorization = generator.generate({"method": rest_path})
|
|
99
|
-
else:
|
|
100
|
-
# Airflow 2.10 compatibility
|
|
101
|
-
from airflow.providers.edge3.worker_api.auth import jwt_signer
|
|
102
|
-
|
|
103
|
-
signer = jwt_signer()
|
|
104
|
-
authorization = signer.generate_signed_token({"method": rest_path})
|
|
105
|
-
|
|
97
|
+
authorization = jwt_generator().generate({"method": rest_path})
|
|
106
98
|
api_url = conf.get("edge", "api_url")
|
|
107
99
|
headers = {
|
|
108
100
|
"Content-Type": "application/json",
|
|
@@ -132,6 +124,11 @@ def worker_register(
|
|
|
132
124
|
except requests.HTTPError as e:
|
|
133
125
|
if e.response.status_code == 400:
|
|
134
126
|
raise EdgeWorkerVersionException(str(e))
|
|
127
|
+
if e.response.status_code == 409:
|
|
128
|
+
raise EdgeWorkerDuplicateException(
|
|
129
|
+
f"A worker with the name '{hostname}' is already active. "
|
|
130
|
+
"Please ensure worker names are unique, or stop the existing worker before starting a new one."
|
|
131
|
+
)
|
|
135
132
|
raise e
|
|
136
133
|
return WorkerRegistrationReturn(**result)
|
|
137
134
|
|
|
@@ -25,7 +25,6 @@ from functools import cache
|
|
|
25
25
|
from http import HTTPStatus
|
|
26
26
|
from multiprocessing import Process
|
|
27
27
|
from pathlib import Path
|
|
28
|
-
from subprocess import Popen
|
|
29
28
|
from time import sleep
|
|
30
29
|
from typing import TYPE_CHECKING
|
|
31
30
|
|
|
@@ -39,7 +38,6 @@ from airflow.providers.edge3 import __version__ as edge_provider_version
|
|
|
39
38
|
from airflow.providers.edge3.cli.api_client import (
|
|
40
39
|
jobs_fetch,
|
|
41
40
|
jobs_set_state,
|
|
42
|
-
logs_logfile_path,
|
|
43
41
|
logs_push,
|
|
44
42
|
worker_register,
|
|
45
43
|
worker_set_state,
|
|
@@ -51,8 +49,11 @@ from airflow.providers.edge3.cli.signalling import (
|
|
|
51
49
|
status_file_path,
|
|
52
50
|
write_pid_to_pidfile,
|
|
53
51
|
)
|
|
54
|
-
from airflow.providers.edge3.models.edge_worker import
|
|
55
|
-
|
|
52
|
+
from airflow.providers.edge3.models.edge_worker import (
|
|
53
|
+
EdgeWorkerDuplicateException,
|
|
54
|
+
EdgeWorkerState,
|
|
55
|
+
EdgeWorkerVersionException,
|
|
56
|
+
)
|
|
56
57
|
from airflow.utils.net import getfqdn
|
|
57
58
|
from airflow.utils.state import TaskInstanceState
|
|
58
59
|
|
|
@@ -214,7 +215,7 @@ class EdgeWorker:
|
|
|
214
215
|
return 1
|
|
215
216
|
|
|
216
217
|
@staticmethod
|
|
217
|
-
def
|
|
218
|
+
def _launch_job(edge_job: EdgeJobFetched):
|
|
218
219
|
if TYPE_CHECKING:
|
|
219
220
|
from airflow.executors.workloads import ExecuteTask
|
|
220
221
|
|
|
@@ -228,29 +229,6 @@ class EdgeWorker:
|
|
|
228
229
|
if TYPE_CHECKING:
|
|
229
230
|
assert workload.log_path # We need to assume this is defined in here
|
|
230
231
|
logfile = Path(base_log_folder, workload.log_path)
|
|
231
|
-
return process, logfile
|
|
232
|
-
|
|
233
|
-
@staticmethod
|
|
234
|
-
def _launch_job_af2_10(edge_job: EdgeJobFetched) -> tuple[Popen, Path]:
|
|
235
|
-
"""Compatibility for Airflow 2.10 Launch."""
|
|
236
|
-
env = os.environ.copy()
|
|
237
|
-
env["AIRFLOW__CORE__DATABASE_ACCESS_ISOLATION"] = "True"
|
|
238
|
-
env["AIRFLOW__CORE__INTERNAL_API_URL"] = conf.get("edge", "api_url")
|
|
239
|
-
env["_AIRFLOW__SKIP_DATABASE_EXECUTOR_COMPATIBILITY_CHECK"] = "1"
|
|
240
|
-
command: list[str] = edge_job.command # type: ignore[assignment]
|
|
241
|
-
process = Popen(command, close_fds=True, env=env, start_new_session=True)
|
|
242
|
-
logfile = logs_logfile_path(edge_job.key)
|
|
243
|
-
return process, logfile
|
|
244
|
-
|
|
245
|
-
@staticmethod
|
|
246
|
-
def _launch_job(edge_job: EdgeJobFetched):
|
|
247
|
-
"""Get the received job executed."""
|
|
248
|
-
process: Popen | Process
|
|
249
|
-
if AIRFLOW_V_3_0_PLUS:
|
|
250
|
-
process, logfile = EdgeWorker._launch_job_af3(edge_job)
|
|
251
|
-
else:
|
|
252
|
-
# Airflow 2.10
|
|
253
|
-
process, logfile = EdgeWorker._launch_job_af2_10(edge_job)
|
|
254
232
|
EdgeWorker.jobs.append(Job(edge_job, process, logfile, 0))
|
|
255
233
|
|
|
256
234
|
def start(self):
|
|
@@ -262,6 +240,9 @@ class EdgeWorker:
|
|
|
262
240
|
except EdgeWorkerVersionException as e:
|
|
263
241
|
logger.info("Version mismatch of Edge worker and Core. Shutting down worker.")
|
|
264
242
|
raise SystemExit(str(e))
|
|
243
|
+
except EdgeWorkerDuplicateException as e:
|
|
244
|
+
logger.error(str(e))
|
|
245
|
+
raise SystemExit(str(e))
|
|
265
246
|
except HTTPError as e:
|
|
266
247
|
if e.response.status_code == HTTPStatus.NOT_FOUND:
|
|
267
248
|
raise SystemExit("Error: API endpoint is not ready, please set [edge] api_enabled=True.")
|
|
@@ -26,7 +26,7 @@ from __future__ import annotations
|
|
|
26
26
|
from datetime import datetime
|
|
27
27
|
from time import sleep
|
|
28
28
|
|
|
29
|
-
from airflow.
|
|
29
|
+
from airflow.providers.common.compat.sdk import AirflowNotFoundException
|
|
30
30
|
|
|
31
31
|
try:
|
|
32
32
|
from airflow.sdk import BaseHook
|
|
@@ -32,42 +32,52 @@ from subprocess import STDOUT, Popen
|
|
|
32
32
|
from time import sleep
|
|
33
33
|
from typing import TYPE_CHECKING, Any
|
|
34
34
|
|
|
35
|
-
try:
|
|
36
|
-
from airflow.sdk import task, task_group
|
|
37
|
-
except ImportError:
|
|
38
|
-
# Airflow 2 path
|
|
39
|
-
from airflow.decorators import task, task_group # type: ignore[attr-defined,no-redef]
|
|
40
|
-
from airflow.exceptions import AirflowException, AirflowNotFoundException, AirflowSkipException
|
|
41
35
|
from airflow.models import BaseOperator
|
|
42
36
|
from airflow.models.dag import DAG
|
|
43
37
|
from airflow.models.variable import Variable
|
|
38
|
+
from airflow.providers.common.compat.sdk import (
|
|
39
|
+
AirflowException,
|
|
40
|
+
AirflowNotFoundException,
|
|
41
|
+
AirflowSkipException,
|
|
42
|
+
)
|
|
44
43
|
from airflow.providers.standard.operators.empty import EmptyOperator
|
|
44
|
+
from airflow.sdk.execution_time.context import context_to_airflow_vars
|
|
45
45
|
|
|
46
|
+
try:
|
|
47
|
+
from airflow.sdk import task, task_group
|
|
48
|
+
except ImportError:
|
|
49
|
+
from airflow.decorators import task, task_group # type: ignore[attr-defined,no-redef]
|
|
46
50
|
try:
|
|
47
51
|
from airflow.sdk import BaseHook
|
|
48
52
|
except ImportError:
|
|
49
53
|
from airflow.hooks.base import BaseHook # type: ignore[attr-defined,no-redef]
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
try:
|
|
55
|
+
from airflow.sdk import Param
|
|
56
|
+
except ImportError:
|
|
57
|
+
from airflow.models import Param # type: ignore[attr-defined,no-redef]
|
|
52
58
|
try:
|
|
53
59
|
from airflow.sdk import TriggerRule
|
|
54
60
|
except ImportError:
|
|
55
|
-
# Compatibility for Airflow < 3.1
|
|
56
61
|
from airflow.utils.trigger_rule import TriggerRule # type: ignore[no-redef,attr-defined]
|
|
57
|
-
from airflow.sdk.execution_time.context import context_to_airflow_vars
|
|
58
|
-
from airflow.utils.types import ArgNotSet
|
|
59
|
-
|
|
60
|
-
if TYPE_CHECKING:
|
|
61
|
-
try:
|
|
62
|
-
from airflow.sdk.types import RuntimeTaskInstanceProtocol as TaskInstance
|
|
63
|
-
except ImportError:
|
|
64
|
-
from airflow.models import TaskInstance # type: ignore[assignment]
|
|
65
|
-
from airflow.utils.context import Context
|
|
66
|
-
|
|
67
62
|
try:
|
|
68
|
-
from airflow.operators
|
|
63
|
+
from airflow.providers.common.compat.standard.operators import PythonOperator
|
|
64
|
+
except ImportError:
|
|
65
|
+
from airflow.operators.python import PythonOperator # type: ignore[no-redef]
|
|
66
|
+
try:
|
|
67
|
+
from airflow.sdk.definitions._internal.types import NOTSET, ArgNotSet
|
|
69
68
|
except ImportError:
|
|
70
|
-
from airflow.
|
|
69
|
+
from airflow.utils.types import NOTSET, ArgNotSet # type: ignore[attr-defined,no-redef]
|
|
70
|
+
try:
|
|
71
|
+
from airflow.sdk.definitions._internal.types import is_arg_set
|
|
72
|
+
except ImportError:
|
|
73
|
+
|
|
74
|
+
def is_arg_set(value): # type: ignore[misc,no-redef]
|
|
75
|
+
return value is not NOTSET
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
if TYPE_CHECKING:
|
|
79
|
+
from airflow.sdk import Context
|
|
80
|
+
from airflow.sdk.types import RuntimeTaskInstanceProtocol as TaskInstance
|
|
71
81
|
|
|
72
82
|
|
|
73
83
|
class CmdOperator(BaseOperator):
|
|
@@ -163,7 +173,7 @@ class CmdOperator(BaseOperator):
|
|
|
163
173
|
# When using the @task.command decorator, the command is not known until the underlying Python
|
|
164
174
|
# callable is executed and therefore set to NOTSET initially. This flag is useful during execution to
|
|
165
175
|
# determine whether the command value needs to re-rendered.
|
|
166
|
-
self._init_command_not_set =
|
|
176
|
+
self._init_command_not_set = not is_arg_set(self.command)
|
|
167
177
|
|
|
168
178
|
@staticmethod
|
|
169
179
|
def refresh_command(ti: TaskInstance) -> None:
|