Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
7fe2e7d
Provide React UI for Edge
jscheffl Jul 20, 2025
2e66192
Fix static checks
jscheffl Jul 20, 2025
351243e
Have dist file out of gitignore until we have a proper way of build o…
jscheffl Jul 20, 2025
e6051b6
Have dist file out of gitignore until we have a proper way of build o…
jscheffl Jul 20, 2025
86fbeaa
Add mime-type mapping
jscheffl Jul 20, 2025
f056fff
Add icon to edge UI
jscheffl Jul 29, 2025
7d184e7
Add dockerignore to fix tests
jscheffl Jul 30, 2025
1b4b4e3
Add correct icon to edge plugin menu entries
jscheffl Aug 9, 2025
af94152
ups, re-add from main
jscheffl Aug 17, 2025
c7a0e2e
Fix merge conflict from prek migration
jscheffl Aug 17, 2025
8a834e4
Add first two empty pages and navigation
jscheffl Aug 17, 2025
2a4bde9
Layout nit to align to dags view
jscheffl Aug 17, 2025
23a8394
Create start of DataTable for worker display
jscheffl Aug 17, 2025
36b5298
Upgrade dependencies
jscheffl Aug 19, 2025
4bb1c9a
Also add dependabot for edge UI
jscheffl Aug 19, 2025
8bed3d1
Add API Specs generation to prepare service binding code generation
jscheffl Aug 24, 2025
41c3dbd
Create API service stubs
jscheffl Aug 24, 2025
30a613f
Implement first table accessor for worker list
jscheffl Aug 24, 2025
c4663c0
Fix hashing and exclude pnpm store
jscheffl Aug 24, 2025
3d894c9
Fix pytests
jscheffl Aug 24, 2025
391093d
Remove yarn.lock
jscheffl Aug 24, 2025
37b6b8b
Fix problems in pytests with back-compat and db access
jscheffl Aug 24, 2025
4cd904e
Enable debug mode in vite with real Airflow backend for standalone te…
jscheffl Aug 24, 2025
1722748
Disable sorting
jscheffl Aug 24, 2025
8176667
Uuups, remove debug print
jscheffl Aug 24, 2025
6e879fa
Implement authentication for endpoint and fallback ugly HTML table
jscheffl Aug 24, 2025
d9faaaa
Remove clone of DataTable which seems not working
jscheffl Aug 25, 2025
2722268
Switch to Chakra Table
jscheffl Aug 25, 2025
25634c8
Chakra Table additions
jscheffl Aug 25, 2025
961ab8f
Add Jobs page and services
jscheffl Aug 25, 2025
a614438
Ensure codegen is always executed in prek
jscheffl Sep 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ airflow/www/node_modules
# But ensure UI dist files are included
!airflow-core/src/airflow/ui/dist
!providers/fab/src/airflow/providers/fab/www/dist
!providers/edge3/src/airflow/providers/edge3/plugins/www/dist

# Exclude temporary vi files
**/*~
Expand Down
9 changes: 9 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,15 @@ updates:
core-ui-package-updates:
patterns:
- "*"
- package-ecosystem: npm
directories:
- /providers/edge3/src/airflow/providers/edge3/plugins/www
schedule:
interval: daily
groups:
fab-ui-package-updates:
patterns:
- "*"
- package-ecosystem: npm
directories:
- /providers/fab/src/airflow/providers/fab/www
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ build/
develop-eggs/
dist/
!providers/fab/**/www/static/dist
!providers/edge3/**/www/dist
downloads/
eggs/
.eggs/
Expand Down
44 changes: 41 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ repos:
- id: insert-license
name: Add license for CSS/JS/JSX/PUML/TS/TSX
files: \.(css|jsx?|puml|tsx?)$
exclude: ^\.github/.*$|ui/openapi-gen/|.*/dist/.*
exclude: ^\.github/.*$|ui/openapi-gen/|www/openapi-gen/|.*/dist/.*
args:
- --comment-style
- "/*!| *| */"
Expand Down Expand Up @@ -435,7 +435,15 @@ repos:
entry: ./scripts/ci/prek/replace_bad_characters.py
language: python
types: [file, text]
exclude: ^clients/gen/go\.sh$|^\.gitmodules$|^airflow-core/src/airflow/ui/openapi-gen/|.*/dist/.*|\.go$|/go\.(mod|sum)$
exclude: >
(?x)
^clients/gen/go\.sh$|
^\.gitmodules$|
^airflow-core/src/airflow/ui/openapi-gen/|
^providers/edge3/src/airflow/providers/edge3/plugins/www/openapi-gen/|
.*/dist/.*|
\.go$|
/go\.(mod|sum)$
- id: lint-dockerfile
name: Lint Dockerfile
language: python
Expand Down Expand Up @@ -760,7 +768,8 @@ repos:
^airflow-core/newsfragments/43349\.significant\.rst$|
^airflow-core/newsfragments/41368\.significant\.rst$|
.*/dist/.*|
package-lock\.json$
package-lock\.json$|
^providers/edge3/src/airflow/providers/edge3/plugins/www/pnpm-lock.yaml$
- id: check-base-operator-partial-arguments
name: Check BaseOperator and partial() arguments
language: python
Expand Down Expand Up @@ -940,6 +949,13 @@ repos:
entry: ./scripts/ci/prek/compile_provider_assets.py fab
pass_filenames: false
additional_dependencies: ['yarn@1.22.21']
- id: compile-edge-assets
name: Compile Edge provider assets
language: node
files: ^providers/edge3/.*/www/
entry: ./scripts/ci/prek/compile_provider_assets.py edge
pass_filenames: false
additional_dependencies: ['yarn@1.22.21']
- id: compile-ui-assets-dev
name: Compile ui assets in dev mode (manual)
language: node
Expand Down Expand Up @@ -1343,6 +1359,22 @@ repos:
additional_dependencies: ['pnpm@9.7.1']
pass_filenames: true
require_serial: true
- id: ts-compile-lint-edge-ui
name: Compile / format / lint edge UI
description: TS types generation / ESLint / Prettier new UI files in Edge Provider
language: node
files: |
(?x)
^providers/edge3/src/airflow/providers/edge3/plugins/www/.*\.(js|ts|tsx|yaml|css|json)$|
^providers/edge3/src/airflow/providers/edge3/openapi/v2-edge-generated.yaml$
exclude: |
(?x)
^providers/edge3/src/airflow/providers/edge3/plugins/www/node-modules/.*|
^providers/edge3/src/airflow/providers/edge3/plugins/www/.pnpm-store
entry: ./scripts/ci/prek/ts_compile_lint_edge.py
additional_dependencies: ['pnpm@9.7.1']
pass_filenames: true
require_serial: true
## ADD MOST PREK HOOK ABOVE THAT LINE
# The below prek hooks are those requiring CI image to be built
- id: mypy-dev
Expand Down Expand Up @@ -1443,6 +1475,12 @@ repos:
entry: ./scripts/ci/prek/generate_openapi_spec_providers.py fab
pass_filenames: false
files: ^providers/fab/src/airflow/providers/fab/auth_manager/api_fastapi/.*\.py$
- id: generate-openapi-spec-edge
name: Generate the FastAPI API spec for Edge
language: python
entry: ./scripts/ci/prek/generate_openapi_spec_providers.py edge
pass_filenames: false
files: ^providers/edge3/src/airflow/providers/edge3/worker_api/.*\.py$
- id: generate-openapi-spec-keycloak
name: Generate the FastAPI API spec for Keycloak
language: python
Expand Down
1 change: 1 addition & 0 deletions airflow-core/tests/unit/always/test_project_structure.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ def test_providers_modules_should_have_tests(self):
"providers/edge3/tests/unit/edge3/worker_api/test_app.py",
"providers/edge3/tests/unit/edge3/worker_api/test_auth.py",
"providers/edge3/tests/unit/edge3/worker_api/test_datamodels.py",
"providers/edge3/tests/unit/edge3/worker_api/test_datamodels_ui.py",
"providers/fab/tests/unit/fab/auth_manager/api_fastapi/datamodels/test_login.py",
"providers/fab/tests/unit/fab/migrations/test_env.py",
"providers/fab/tests/unit/fab/www/api_connexion/test_exceptions.py",
Expand Down
10 changes: 5 additions & 5 deletions providers/edge3/docs/ui_plugin.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ REST API endpoints

The Edge provider adds the following REST API endpoints to the Airflow API:

- ``/api/v1/edge/health``: Check that the API endpoint is deployed and active
- ``/api/v1/edge/jobs``: Endpoints to fetch jobs for workers and report state
- ``/api/v1/edge/logs``: Endpoint to push log chunks from workers to the Airflow cluster
- ``/api/v1/edge/workers``: Endpoints to register and manage workers, report heartbeat
- ``/edge_worker/v1/jobs``: Endpoints to fetch jobs for workers and report state
- ``/edge_worker/v1/logs``: Endpoint to push log chunks from workers to the Airflow cluster
- ``/edge_worker/v1/workers``: Endpoints to register and manage workers, report heartbeat
- ``/edge_worker/v1/health``: Check that the API endpoint is deployed and active

To see full documentation of the API endpoints open the Airflow web UI and navigate to
the sub-path ``/edge_worker/v1/docs`` (Airflow 3.0) or ``/edge_worker/v1/ui`` (Airflow 2.10).
the sub-path ``/edge_worker/docs`` (Airflow 3.0) or ``/edge_worker/v1/ui`` (Airflow 2.10).

Web UI Plugin (Airflow 2.10 only)
---------------------------------
Expand Down
Loading