apache-airflow-providers-edge3 1.2.0__py3-none-any.whl → 1.3.0__py3-none-any.whl

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.
Files changed (37) hide show
  1. airflow/providers/edge3/__init__.py +1 -1
  2. airflow/providers/edge3/cli/edge_command.py +43 -0
  3. airflow/providers/edge3/cli/worker.py +40 -40
  4. airflow/providers/edge3/models/edge_worker.py +13 -8
  5. airflow/providers/edge3/openapi/v2-edge-generated.yaml +249 -0
  6. airflow/providers/edge3/plugins/www/dist/main.umd.cjs +53 -19
  7. airflow/providers/edge3/plugins/www/openapi-gen/queries/common.ts +7 -0
  8. airflow/providers/edge3/plugins/www/openapi-gen/queries/queries.ts +44 -1
  9. airflow/providers/edge3/plugins/www/openapi-gen/requests/schemas.gen.ts +14 -0
  10. airflow/providers/edge3/plugins/www/openapi-gen/requests/services.gen.ts +158 -1
  11. airflow/providers/edge3/plugins/www/openapi-gen/requests/types.gen.ts +155 -0
  12. airflow/providers/edge3/plugins/www/package.json +14 -10
  13. airflow/providers/edge3/plugins/www/pnpm-lock.yaml +601 -457
  14. airflow/providers/edge3/plugins/www/src/components/AddQueueButton.tsx +138 -0
  15. airflow/providers/edge3/plugins/www/src/components/MaintenanceEditCommentButton.tsx +106 -0
  16. airflow/providers/edge3/plugins/www/src/components/MaintenanceEnterButton.tsx +102 -0
  17. airflow/providers/edge3/plugins/www/src/components/MaintenanceExitButton.tsx +92 -0
  18. airflow/providers/edge3/plugins/www/src/components/RemoveQueueButton.tsx +151 -0
  19. airflow/providers/edge3/plugins/www/src/components/WorkerDeleteButton.tsx +104 -0
  20. airflow/providers/edge3/plugins/www/src/components/WorkerOperations.tsx +85 -0
  21. airflow/providers/edge3/plugins/www/src/components/WorkerShutdownButton.tsx +104 -0
  22. airflow/providers/edge3/plugins/www/src/components/WorkerStateBadge.tsx +33 -0
  23. airflow/providers/edge3/plugins/www/src/components/ui/ScrollToAnchor.tsx +49 -0
  24. airflow/providers/edge3/plugins/www/src/components/ui/createToaster.ts +24 -0
  25. airflow/providers/edge3/plugins/www/src/components/ui/index.ts +2 -0
  26. airflow/providers/edge3/plugins/www/src/context/colorMode/ColorModeProvider.tsx +1 -2
  27. airflow/providers/edge3/plugins/www/src/context/colorMode/useColorMode.tsx +2 -5
  28. airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx +52 -15
  29. airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx +52 -22
  30. airflow/providers/edge3/plugins/www/src/theme.ts +378 -130
  31. airflow/providers/edge3/plugins/www/vite.config.ts +2 -0
  32. airflow/providers/edge3/worker_api/datamodels_ui.py +12 -0
  33. airflow/providers/edge3/worker_api/routes/ui.py +193 -3
  34. {apache_airflow_providers_edge3-1.2.0.dist-info → apache_airflow_providers_edge3-1.3.0.dist-info}/METADATA +6 -6
  35. {apache_airflow_providers_edge3-1.2.0.dist-info → apache_airflow_providers_edge3-1.3.0.dist-info}/RECORD +37 -27
  36. {apache_airflow_providers_edge3-1.2.0.dist-info → apache_airflow_providers_edge3-1.3.0.dist-info}/WHEEL +0 -0
  37. {apache_airflow_providers_edge3-1.2.0.dist-info → apache_airflow_providers_edge3-1.3.0.dist-info}/entry_points.txt +0 -0
@@ -17,18 +17,30 @@
17
17
 
18
18
  from __future__ import annotations
19
19
 
20
- from fastapi import Depends
20
+ from datetime import datetime
21
+
22
+ from fastapi import Depends, HTTPException, status
21
23
  from sqlalchemy import select
22
24
 
23
25
  from airflow.api_fastapi.auth.managers.models.resource_details import AccessView
24
26
  from airflow.api_fastapi.common.db.common import SessionDep # noqa: TC001
25
27
  from airflow.api_fastapi.common.router import AirflowRouter
26
- from airflow.api_fastapi.core_api.security import requires_access_view
28
+ from airflow.api_fastapi.core_api.security import GetUserDep, requires_access_view
27
29
  from airflow.providers.edge3.models.edge_job import EdgeJobModel
28
- from airflow.providers.edge3.models.edge_worker import EdgeWorkerModel
30
+ from airflow.providers.edge3.models.edge_worker import (
31
+ EdgeWorkerModel,
32
+ add_worker_queues,
33
+ change_maintenance_comment,
34
+ exit_maintenance,
35
+ remove_worker,
36
+ remove_worker_queues,
37
+ request_maintenance,
38
+ request_shutdown,
39
+ )
29
40
  from airflow.providers.edge3.worker_api.datamodels_ui import (
30
41
  Job,
31
42
  JobCollectionResponse,
43
+ MaintenanceRequest,
32
44
  Worker,
33
45
  WorkerCollectionResponse,
34
46
  )
@@ -100,3 +112,181 @@ def jobs(
100
112
  jobs=result,
101
113
  total_entries=len(result),
102
114
  )
115
+
116
+
117
+ @ui_router.post(
118
+ "/worker/{worker_name}/maintenance",
119
+ dependencies=[
120
+ Depends(requires_access_view(access_view=AccessView.JOBS)),
121
+ ],
122
+ )
123
+ def request_worker_maintenance(
124
+ worker_name: str,
125
+ maintenance_request: MaintenanceRequest,
126
+ session: SessionDep,
127
+ user: GetUserDep,
128
+ ) -> None:
129
+ """Put a worker into maintenance mode."""
130
+ # Check if worker exists first
131
+ worker_query = select(EdgeWorkerModel).where(EdgeWorkerModel.worker_name == worker_name)
132
+ worker = session.scalar(worker_query)
133
+ if not worker:
134
+ raise HTTPException(status.HTTP_404_NOT_FOUND, detail=f"Worker {worker_name} not found")
135
+ if not maintenance_request.maintenance_comment:
136
+ raise HTTPException(status.HTTP_400_BAD_REQUEST, detail="Maintenance comment is required")
137
+
138
+ # Format the comment with timestamp and username (username will be added by plugin layer)
139
+ formatted_comment = f"[{datetime.now().strftime('%Y-%m-%d %H:%M')}] - {user.get_name()} put node into maintenance mode\nComment: {maintenance_request.maintenance_comment}"
140
+
141
+ try:
142
+ request_maintenance(worker_name, formatted_comment, session=session)
143
+ except Exception as e:
144
+ raise HTTPException(status.HTTP_400_BAD_REQUEST, detail=str(e))
145
+
146
+
147
+ @ui_router.patch(
148
+ "/worker/{worker_name}/maintenance",
149
+ dependencies=[
150
+ Depends(requires_access_view(access_view=AccessView.JOBS)),
151
+ ],
152
+ )
153
+ def update_worker_maintenance(
154
+ worker_name: str,
155
+ maintenance_request: MaintenanceRequest,
156
+ session: SessionDep,
157
+ user: GetUserDep,
158
+ ) -> None:
159
+ """Update maintenance comments for a worker."""
160
+ # Check if worker exists first
161
+ worker_query = select(EdgeWorkerModel).where(EdgeWorkerModel.worker_name == worker_name)
162
+ worker = session.scalar(worker_query)
163
+ if not worker:
164
+ raise HTTPException(status.HTTP_404_NOT_FOUND, detail=f"Worker {worker_name} not found")
165
+ if not maintenance_request.maintenance_comment:
166
+ raise HTTPException(status.HTTP_400_BAD_REQUEST, detail="Maintenance comment is required")
167
+
168
+ # Format the comment with timestamp and username (username will be added by plugin layer)
169
+ first_line = worker.maintenance_comment.split("\n", 1)[0] if worker.maintenance_comment else ""
170
+ formatted_comment = f"{first_line}\n[{datetime.now().strftime('%Y-%m-%d %H:%M')}] - {user.get_name()} updated comment:\n{maintenance_request.maintenance_comment}"
171
+
172
+ try:
173
+ change_maintenance_comment(worker_name, formatted_comment, session=session)
174
+ except Exception as e:
175
+ raise HTTPException(status.HTTP_400_BAD_REQUEST, detail=str(e))
176
+
177
+
178
+ @ui_router.delete(
179
+ "/worker/{worker_name}/maintenance",
180
+ dependencies=[
181
+ Depends(requires_access_view(access_view=AccessView.JOBS)),
182
+ ],
183
+ )
184
+ def exit_worker_maintenance(
185
+ worker_name: str,
186
+ session: SessionDep,
187
+ ) -> None:
188
+ """Exit a worker from maintenance mode."""
189
+ # Check if worker exists first
190
+ worker_query = select(EdgeWorkerModel).where(EdgeWorkerModel.worker_name == worker_name)
191
+ worker = session.scalar(worker_query)
192
+ if not worker:
193
+ raise HTTPException(status.HTTP_404_NOT_FOUND, detail=f"Worker {worker_name} not found")
194
+
195
+ try:
196
+ exit_maintenance(worker_name, session=session)
197
+ except Exception as e:
198
+ raise HTTPException(status.HTTP_400_BAD_REQUEST, detail=str(e))
199
+
200
+
201
+ @ui_router.post(
202
+ "/worker/{worker_name}/shutdown",
203
+ dependencies=[
204
+ Depends(requires_access_view(access_view=AccessView.JOBS)),
205
+ ],
206
+ )
207
+ def request_worker_shutdown(
208
+ worker_name: str,
209
+ session: SessionDep,
210
+ ) -> None:
211
+ """Request shutdown of a worker."""
212
+ # Check if worker exists first
213
+ worker_query = select(EdgeWorkerModel).where(EdgeWorkerModel.worker_name == worker_name)
214
+ worker = session.scalar(worker_query)
215
+ if not worker:
216
+ raise HTTPException(status.HTTP_404_NOT_FOUND, detail=f"Worker {worker_name} not found")
217
+
218
+ try:
219
+ request_shutdown(worker_name, session=session)
220
+ except Exception as e:
221
+ raise HTTPException(status.HTTP_400_BAD_REQUEST, detail=str(e))
222
+
223
+
224
+ @ui_router.delete(
225
+ "/worker/{worker_name}",
226
+ dependencies=[
227
+ Depends(requires_access_view(access_view=AccessView.JOBS)),
228
+ ],
229
+ )
230
+ def delete_worker(
231
+ worker_name: str,
232
+ session: SessionDep,
233
+ ) -> None:
234
+ """Delete a worker record from the system."""
235
+ # Check if worker exists first
236
+ worker_query = select(EdgeWorkerModel).where(EdgeWorkerModel.worker_name == worker_name)
237
+ worker = session.scalar(worker_query)
238
+ if not worker:
239
+ raise HTTPException(status.HTTP_404_NOT_FOUND, detail=f"Worker {worker_name} not found")
240
+
241
+ try:
242
+ remove_worker(worker_name, session=session)
243
+ except Exception as e:
244
+ raise HTTPException(status.HTTP_400_BAD_REQUEST, detail=str(e))
245
+
246
+
247
+ @ui_router.put(
248
+ "/worker/{worker_name}/queues/{queue_name}",
249
+ dependencies=[
250
+ Depends(requires_access_view(access_view=AccessView.JOBS)),
251
+ ],
252
+ )
253
+ def add_worker_queue(
254
+ worker_name: str,
255
+ queue_name: str,
256
+ session: SessionDep,
257
+ ) -> None:
258
+ """Add a queue to a worker."""
259
+ # Check if worker exists first
260
+ worker_query = select(EdgeWorkerModel).where(EdgeWorkerModel.worker_name == worker_name)
261
+ worker = session.scalar(worker_query)
262
+ if not worker:
263
+ raise HTTPException(status.HTTP_404_NOT_FOUND, detail=f"Worker {worker_name} not found")
264
+
265
+ try:
266
+ add_worker_queues(worker_name, [queue_name], session=session)
267
+ except Exception as e:
268
+ raise HTTPException(status.HTTP_400_BAD_REQUEST, detail=str(e))
269
+
270
+
271
+ @ui_router.delete(
272
+ "/worker/{worker_name}/queues/{queue_name}",
273
+ dependencies=[
274
+ Depends(requires_access_view(access_view=AccessView.JOBS)),
275
+ ],
276
+ )
277
+ def remove_worker_queue(
278
+ worker_name: str,
279
+ queue_name: str,
280
+ session: SessionDep,
281
+ ) -> None:
282
+ """Remove a queue from a worker."""
283
+ # Check if worker exists first
284
+ worker_query = select(EdgeWorkerModel).where(EdgeWorkerModel.worker_name == worker_name)
285
+ worker = session.scalar(worker_query)
286
+ if not worker:
287
+ raise HTTPException(status.HTTP_404_NOT_FOUND, detail=f"Worker {worker_name} not found")
288
+
289
+ try:
290
+ remove_worker_queues(worker_name, [queue_name], session=session)
291
+ except Exception as e:
292
+ raise HTTPException(status.HTTP_400_BAD_REQUEST, detail=str(e))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apache-airflow-providers-edge3
3
- Version: 1.2.0
3
+ Version: 1.3.0
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>
@@ -24,8 +24,8 @@ Requires-Dist: apache-airflow>=2.10.0
24
24
  Requires-Dist: pydantic>=2.11.0
25
25
  Requires-Dist: retryhttp>=1.2.0,!=1.3.0
26
26
  Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
27
- Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.2.0/changelog.html
28
- Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.2.0
27
+ Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.3.0/changelog.html
28
+ Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.3.0
29
29
  Project-URL: Mastodon, https://fosstodon.org/@airflow
30
30
  Project-URL: Slack Chat, https://s.apache.org/airflow-slack
31
31
  Project-URL: Source Code, https://github.com/apache/airflow
@@ -56,7 +56,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
56
56
 
57
57
  Package ``apache-airflow-providers-edge3``
58
58
 
59
- Release: ``1.2.0``
59
+ Release: ``1.3.0``
60
60
 
61
61
 
62
62
  Handle edge workers on remote sites via HTTP(s) connection and orchestrates work over distributed sites.
@@ -81,7 +81,7 @@ This is a provider package for ``edge3`` provider. All classes for this provider
81
81
  are in ``airflow.providers.edge3`` python package.
82
82
 
83
83
  You can find package information and changelog for the provider
84
- in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.2.0/>`_.
84
+ in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.3.0/>`_.
85
85
 
86
86
  Installation
87
87
  ------------
@@ -104,5 +104,5 @@ PIP package Version required
104
104
  ================== ===================
105
105
 
106
106
  The changelog for the provider package can be found in the
107
- `changelog <https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.2.0/changelog.html>`_.
107
+ `changelog <https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.3.0/changelog.html>`_.
108
108
 
@@ -1,13 +1,13 @@
1
1
  airflow/providers/edge3/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
2
- airflow/providers/edge3/__init__.py,sha256=0XLD5y7rsAnoja7NzOrsd5B1NpLtduJa_hHW2mh1Xtw,1494
2
+ airflow/providers/edge3/__init__.py,sha256=vT6YKrohbryLOfXpKveRM0-hfus4_pJ9k-nCpQ8Rq4A,1494
3
3
  airflow/providers/edge3/get_provider_info.py,sha256=Ek27-dB4UALHUFYoYjtoQIGq0p7zeHcEgmELHvpVmCU,6836
4
4
  airflow/providers/edge3/version_compat.py,sha256=OMSc1Esqxt7BSjjyG6zWo_4pgW0dGi-71UXSuUKT8jE,1603
5
5
  airflow/providers/edge3/cli/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
6
6
  airflow/providers/edge3/cli/api_client.py,sha256=334KHVB4eMSzRpQ5emS56o-RTUJQprxf5Q3xQldCHDQ,7440
7
7
  airflow/providers/edge3/cli/dataclasses.py,sha256=JUuvvmzSVWvG9uOEfzLIiXrTZ-HbESvu50jkPpVIYVw,2895
8
- airflow/providers/edge3/cli/edge_command.py,sha256=qfHjVxA8QJ6zD8Eb8Ipieso4wo51_3MBaTtuSSIEOI4,20339
8
+ airflow/providers/edge3/cli/edge_command.py,sha256=aZ8P9x9FBR_pyuDxi6LaLkz4ubGOBDk1RNNp0ppTbKY,21747
9
9
  airflow/providers/edge3/cli/signalling.py,sha256=sf4S6j6OoP0bLkda3UlCmlZabjv5wsMypy3kAvx56Z0,3220
10
- airflow/providers/edge3/cli/worker.py,sha256=f_ydI9Z7Ey4rJPnast3CAAuf8DZiBrKOXNUbpq5OTew,17385
10
+ airflow/providers/edge3/cli/worker.py,sha256=hYRx6LjP4bWnD8k0i8L7c1zto2BMiutY2Jxd7yZIMXE,17216
11
11
  airflow/providers/edge3/example_dags/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
12
12
  airflow/providers/edge3/example_dags/integration_test.py,sha256=_bY2tVjUZvKAJXzm0Ozrwas0efRU4X9kULKWxu7LYB4,6264
13
13
  airflow/providers/edge3/example_dags/win_notepad.py,sha256=zYcrKqODN4KLZQ-5wNnZQQskrDd5LA-nKJNgKQDntSE,2832
@@ -17,10 +17,10 @@ airflow/providers/edge3/executors/edge_executor.py,sha256=fsGOiJNp6RNT1xGFtV8G0Y
17
17
  airflow/providers/edge3/models/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
18
18
  airflow/providers/edge3/models/edge_job.py,sha256=3D5HAzcVkyI2bxl3pVbbRxjIz--Tnr_eNFiw2oI6gEQ,3167
19
19
  airflow/providers/edge3/models/edge_logs.py,sha256=bNstp7gR54O2vbxzz4NTL0erbifFbGUjZ-YOM0I4sqk,2768
20
- airflow/providers/edge3/models/edge_worker.py,sha256=z3Rru2iFqaFVyvJ6vBQ4-W0T9MenDHip6bJHfLqI6K4,12102
20
+ airflow/providers/edge3/models/edge_worker.py,sha256=wUxDfxN-Hb4oAyHiA3TdwriIbgostHyg0fquyy37rEI,12405
21
21
  airflow/providers/edge3/openapi/__init__.py,sha256=0O-WvmDx8GeKSoECpHYrbe0hW-LgjlKny3VqTCpBQeQ,927
22
22
  airflow/providers/edge3/openapi/edge_worker_api_v1.yaml,sha256=GAE2IdOXmcUueNy5KFkLBgNpoWnOjnHT9TrW5NZEWpI,24938
23
- airflow/providers/edge3/openapi/v2-edge-generated.yaml,sha256=rCoakQu0LR_Jl7NCVusSCn8uSW89V7wrK8Av1r3krGs,33676
23
+ airflow/providers/edge3/openapi/v2-edge-generated.yaml,sha256=Log1huZkCqBTei1Z9no-O6pSQWPphHJTO5nBda7MFEw,40489
24
24
  airflow/providers/edge3/plugins/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
25
25
  airflow/providers/edge3/plugins/edge_executor_plugin.py,sha256=Ajc2cpX68Kf3dKlBluXDPoEeVIQN6qBQZS7KG3_ucd8,12741
26
26
  airflow/providers/edge3/plugins/templates/edge_worker_hosts.html,sha256=0_P2yfZwpy3Kvqd3GBvu_PgmmKCUbso3ieW8aYa76iU,8997
@@ -31,27 +31,27 @@ airflow/providers/edge3/plugins/www/.prettierrc,sha256=l0bDuMVuy86p4BwgAssF2AqJL
31
31
  airflow/providers/edge3/plugins/www/README.md,sha256=VLm9Gf_vSdATdAaSeHDkKHmw3Oo_r4ZIHyu_8o0hju4,5110
32
32
  airflow/providers/edge3/plugins/www/eslint.config.js,sha256=8KEosRBtZkvb2mZYWagAukze0WUu8hrPWz4eSj1ONKE,1851
33
33
  airflow/providers/edge3/plugins/www/index.html,sha256=PsqOtfHrJYYwQjxqcAkVOmsl2cRJe8biKygXJjAj2ng,413
34
- airflow/providers/edge3/plugins/www/package.json,sha256=9e0z6polyYW-_LRdJU-6-OD2JKOs2zQBKdiVHi6p5qM,2381
35
- airflow/providers/edge3/plugins/www/pnpm-lock.yaml,sha256=6ZgC4tmmVhawGa7Hyqxv3MfASaOAeF_sbdcM3MZJBog,216063
34
+ airflow/providers/edge3/plugins/www/package.json,sha256=7gagPyIlh-DzD_iYc2zW0RkzyPtyPfVNpuT95RIEOGA,2450
35
+ airflow/providers/edge3/plugins/www/pnpm-lock.yaml,sha256=MV2XlPs4AhZQyaWBt8bXQqJfCzF860Kzky9yUDnq8o0,220866
36
36
  airflow/providers/edge3/plugins/www/testsSetup.ts,sha256=x1L_lXmigZgufra1L32Xcci_lLifbaG_tP6vx6gPscc,852
37
37
  airflow/providers/edge3/plugins/www/tsconfig.app.json,sha256=zpihgvrBvwjOwtHddJtYUi7Gp26diFtNYmJ7XlM3GUU,753
38
38
  airflow/providers/edge3/plugins/www/tsconfig.json,sha256=jZfUc2grkJB0eRDSFPEPfmBblsr__nGAww3ojidM0ho,158
39
39
  airflow/providers/edge3/plugins/www/tsconfig.lib.json,sha256=Z5M3uhtIZ0Uc9CFjc7Fro7sWv9iOP3z0iX-dzmdTBtQ,392
40
40
  airflow/providers/edge3/plugins/www/tsconfig.node.json,sha256=On9I0qUPqRSyxJNKP5OlnWX_rYR1CKZV8A3IgF1UxvE,680
41
- airflow/providers/edge3/plugins/www/vite.config.ts,sha256=V2XLg7JUx10H_JeHGDmznAsRZw8cJd8NZx3bZ0gS4eI,2806
41
+ airflow/providers/edge3/plugins/www/vite.config.ts,sha256=d1AANLpXH9lmreFQXxKJDGLDK20GOSp2tlhcKT9aLQk,2876
42
42
  airflow/providers/edge3/plugins/www/dist/main.d.ts,sha256=eZKjnWzeXgUOt4RhqL-a2YYXWpSCboNcEQs5ZykL0kk,10
43
- airflow/providers/edge3/plugins/www/dist/main.umd.cjs,sha256=SYbnGEgErqeIgz4emyUAZx9skUXLWEQTFyWEIYd-lf8,504507
44
- airflow/providers/edge3/plugins/www/openapi-gen/queries/common.ts,sha256=2e7JKQUXQB4rkjwPXTe1VoJPlNoLi_qBi1DOMcoo7vg,2721
43
+ airflow/providers/edge3/plugins/www/dist/main.umd.cjs,sha256=GJ9n3CbnTmtQsUXuMXuy0mCdfUXdwPhNr47aUBlvACM,562721
44
+ airflow/providers/edge3/plugins/www/openapi-gen/queries/common.ts,sha256=mnY7x73LFNTprAZjwPRbl9W1VSmKXPflqtaQa4ocOxw,3531
45
45
  airflow/providers/edge3/plugins/www/openapi-gen/queries/ensureQueryData.ts,sha256=CCvoih7AKo7voklUkF6EjcjMMVB0HOTY53mBFn2Nly0,1317
46
46
  airflow/providers/edge3/plugins/www/openapi-gen/queries/index.ts,sha256=p941sYs7pyF4XLKPxPgBXIko0H6s2U4sowFygzJ6Jos,114
47
47
  airflow/providers/edge3/plugins/www/openapi-gen/queries/infiniteQueries.ts,sha256=1Oy_tZ9ORQp_IbfL50MHgh9kYHXNxn2p89eVsxG-RtQ,61
48
48
  airflow/providers/edge3/plugins/www/openapi-gen/queries/prefetch.ts,sha256=pRKqxicGVetBFpV1UCWI9p5i5_EI2jCfOHgR44JhDRs,1301
49
- airflow/providers/edge3/plugins/www/openapi-gen/queries/queries.ts,sha256=OLYVdvGAIc9MEI7y9Hx1t4xdzUKeZCd6308gePKGtrw,6206
49
+ airflow/providers/edge3/plugins/www/openapi-gen/queries/queries.ts,sha256=XQUk9_HwXC3A-3X_QeiB5V_Q3n1jv6Cql__-x4CPmBM,9616
50
50
  airflow/providers/edge3/plugins/www/openapi-gen/queries/suspense.ts,sha256=fB73K0oi6HFwvqVz8q3zM-lOp6H4EMS2zt3Lqii59cA,2186
51
51
  airflow/providers/edge3/plugins/www/openapi-gen/requests/index.ts,sha256=eykx9J6S_c0q9PV3cHOSrSw9OnGo7njAdBjYO3VA_N8,326
52
- airflow/providers/edge3/plugins/www/openapi-gen/requests/schemas.gen.ts,sha256=ZrCutRrFdsNbEyIj27rQLZsR4zQTSKAjzt42o9wpRXY,19657
53
- airflow/providers/edge3/plugins/www/openapi-gen/requests/services.gen.ts,sha256=6FrNQ_KZPUR234zuqRvFHgYfqe4VVbdGzhbhaW9Z5VY,9832
54
- airflow/providers/edge3/plugins/www/openapi-gen/requests/types.gen.ts,sha256=RNMN8BLyk3ScbTi8axD8vu2p9d-ePM0tSXOkqGvRMO8,15269
52
+ airflow/providers/edge3/plugins/www/openapi-gen/requests/schemas.gen.ts,sha256=Vu5-aOO7-RU3QwS4G-4420bnNrj5W0ao4hcfDi_n_rc,20065
53
+ airflow/providers/edge3/plugins/www/openapi-gen/requests/services.gen.ts,sha256=D-vVoLWvjh9qDoBnjtLgHESYUTC0S_GJcclCqH4_IBY,15177
54
+ airflow/providers/edge3/plugins/www/openapi-gen/requests/types.gen.ts,sha256=Sn6qG4qSAjCDB6gAAG-PU-Mwct2h7RENhdkyxxQeFzc,18943
55
55
  airflow/providers/edge3/plugins/www/openapi-gen/requests/core/ApiError.ts,sha256=lfUGx_azgmK9WTL4eCD6q3MSHgi9kwbORAtzKpRD_pU,611
56
56
  airflow/providers/edge3/plugins/www/openapi-gen/requests/core/ApiRequestOptions.ts,sha256=TXwm2FFITqANuXL9C6kdYUtG6TJEuQWtERQOrbS1zxA,617
57
57
  airflow/providers/edge3/plugins/www/openapi-gen/requests/core/ApiResult.ts,sha256=i4pH_Yw7ZHyZmsb4PIXn8LhRqJVMFIp4fZ6OkPO32k4,166
@@ -60,23 +60,33 @@ airflow/providers/edge3/plugins/www/openapi-gen/requests/core/OpenAPI.ts,sha256=
60
60
  airflow/providers/edge3/plugins/www/openapi-gen/requests/core/request.ts,sha256=jG833drJAZFBKN9hnEL6RIRmAfys9eb5rC8p99wBWXk,9598
61
61
  airflow/providers/edge3/plugins/www/src/dev.tsx,sha256=5sZlduF3IFFXKZMxV06hLsxhcCuWNzUMM4Ni1RITG8w,1114
62
62
  airflow/providers/edge3/plugins/www/src/main.tsx,sha256=Iv_6Ln7cYlcsZT8C3vDsJGRY3YdDwVBe86CrcCs7euQ,1837
63
- airflow/providers/edge3/plugins/www/src/theme.ts,sha256=c_UfM2PXZxjIHvyxcfchXKmXptrqA1YbAW550Xg32Yk,6856
63
+ airflow/providers/edge3/plugins/www/src/theme.ts,sha256=jHKET2sbLILW2nrARgAL5cXYfAxOIoIt16WruK26Ies,21459
64
64
  airflow/providers/edge3/plugins/www/src/vite-env.d.ts,sha256=eY6SmeO3WS4Bxne5yY6kn_PXLilnlFfluNuZswLUDys,848
65
+ airflow/providers/edge3/plugins/www/src/components/AddQueueButton.tsx,sha256=Ahyf0_NXqEM0UjIdMyTuANKToD1coqfEjdsQiudK_Fg,4159
65
66
  airflow/providers/edge3/plugins/www/src/components/ErrorAlert.tsx,sha256=4DFdnxEPWRBHCvMm5q5HKMH4D223jMNUX6zxKdZStNM,2182
67
+ airflow/providers/edge3/plugins/www/src/components/MaintenanceEditCommentButton.tsx,sha256=Yuy9iSaIlp25MdU2TDum7EKlI8BDuT27TEhkkokMUk0,3586
68
+ airflow/providers/edge3/plugins/www/src/components/MaintenanceEnterButton.tsx,sha256=uJTKGJgWHATpSTMhshUkmGgTt0vLxOtwACRnOe5glyU,3641
69
+ airflow/providers/edge3/plugins/www/src/components/MaintenanceExitButton.tsx,sha256=zkKv9UfPiXVr2y3wBwTnpM_kV-i2cc0CkNVH9izXpRw,3183
70
+ airflow/providers/edge3/plugins/www/src/components/RemoveQueueButton.tsx,sha256=L6S9v0Z7kNShiyQN6UnjZXnrVOvWHT-yO4y4ImTB-qo,4792
66
71
  airflow/providers/edge3/plugins/www/src/components/StateBadge.tsx,sha256=rORPnRI5h2oJaOGffnW7x4EgP6O_IbHAqA_6jO3DQUw,1506
67
72
  airflow/providers/edge3/plugins/www/src/components/StateIcon.tsx,sha256=Bdrl_DOjV5lN4fXHVmxLK_OjNpODQiy2Fqk3iA5Z87s,2131
68
- airflow/providers/edge3/plugins/www/src/components/WorkerStateBadge.tsx,sha256=BefwNkMPxplc26c_SqiiWB1y_IGDUzRtIu7uyvhv2bw,2135
73
+ airflow/providers/edge3/plugins/www/src/components/WorkerDeleteButton.tsx,sha256=4JPuKGcDAXqsFMEBeO2rZm9BDjpCTLMjOuBFh2VY8mM,3529
74
+ airflow/providers/edge3/plugins/www/src/components/WorkerOperations.tsx,sha256=NUCPGr8hAg1HiSFWaMRd5H7IssCp1HxHhzKK-K01CLA,3330
75
+ airflow/providers/edge3/plugins/www/src/components/WorkerShutdownButton.tsx,sha256=IehKTRjCOkDuN1FeSQR-2TCxuK3BaN4VIWz_LBC9bjM,3629
76
+ airflow/providers/edge3/plugins/www/src/components/WorkerStateBadge.tsx,sha256=tJX9FifJZKt4WqUyaTwMFxreTGpqxXK6-idfFSvNfXQ,3925
69
77
  airflow/providers/edge3/plugins/www/src/components/WorkerStateIcon.tsx,sha256=kJ3HgTLlQb5xBph9Cb-LxYLO-d7DMMURBbq-asfXDo0,2158
70
78
  airflow/providers/edge3/plugins/www/src/components/ui/Alert.tsx,sha256=gvndA8o2UqF0tfqijDZD4NkZ_DGBQK4Xj-oPKSgjEGw,2200
71
79
  airflow/providers/edge3/plugins/www/src/components/ui/CloseButton.tsx,sha256=ZsaWKOHXz5Ic20l9nxy1IUNFJqvTXEn6Tnz6LVha1ZM,1341
72
- airflow/providers/edge3/plugins/www/src/components/ui/index.ts,sha256=0-HHyE8t8AA63LCcFygeK0OcavKw_zOhdTTYfHWUDhc,835
73
- airflow/providers/edge3/plugins/www/src/context/colorMode/ColorModeProvider.tsx,sha256=TBTDueq9Pfv52BUdP47qCnhgsywGS1MrRg-AkJZb65U,1065
80
+ airflow/providers/edge3/plugins/www/src/components/ui/ScrollToAnchor.tsx,sha256=iznVBnAu5kbGY-F8YoDu1ZXrm_K-0mnqsfVCv0adVP8,1653
81
+ airflow/providers/edge3/plugins/www/src/components/ui/createToaster.ts,sha256=kuOy0Zs_gLXSWJguySQALqjn1r5KPB90Hci8sVKbjrE,955
82
+ airflow/providers/edge3/plugins/www/src/components/ui/index.ts,sha256=oMFdotQy8u1LqSJRZ_oZ_pyXVbA17pmWKG1V5hOT7wA,902
83
+ airflow/providers/edge3/plugins/www/src/context/colorMode/ColorModeProvider.tsx,sha256=D9tDe9sYEQvCSQ_3fmf6zCaS9rZnzWoZrvb3qrJ0qf0,1024
74
84
  airflow/providers/edge3/plugins/www/src/context/colorMode/index.ts,sha256=nTdA6xva8PrXEybO-JdQN4oSY9GHlHCPvUwREzJvhDM,879
75
- airflow/providers/edge3/plugins/www/src/context/colorMode/useColorMode.tsx,sha256=c00cGOKmck1JMyQBq4_rtkbKtHat_XStsJS6NSyOobI,1166
85
+ airflow/providers/edge3/plugins/www/src/context/colorMode/useColorMode.tsx,sha256=YYcXELSveM_10fOwZeCh9yxiN8H7essKz1QDiy9Jio8,1122
76
86
  airflow/providers/edge3/plugins/www/src/layouts/EdgeLayout.tsx,sha256=1VBqDFOsmj3GUz9xOv94t7ntNs1mwWZwYb-RMFxoaiU,1573
77
87
  airflow/providers/edge3/plugins/www/src/layouts/NavTabs.tsx,sha256=I3UV7KnEhIXfyYVRf4muloLAcpx_x6dFIPGSTRwMQfI,2126
78
- airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx,sha256=mC6x1TAxzo8v_zdlWW-N-AZi_KSrX_Nx4AHRXpd7Xf4,3392
79
- airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx,sha256=HOTJayfJNl6bv30CYrqgIMDnyNYHQWjdk4yLRlqE6sY,3891
88
+ airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx,sha256=9spI-Ru7ANKkadWGiiILHnllbc-TRmIA4iY3-YM5Kww,4971
89
+ airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx,sha256=nvEuqk0tr1Y_JMGJTYDzmdadwB-LiJ4OrdmqNfHhiwA,5070
80
90
  airflow/providers/edge3/plugins/www/src/res/README.md,sha256=v9BEjvcB_pOcCP0bCL8wZ00xovBdzSk79FPFlqM9ZoQ,1010
81
91
  airflow/providers/edge3/plugins/www/src/res/cloud-computer-dark.svg,sha256=o_HFnxsF9M8BbBgIMXuAv3gO0Wc7owQDg5hvw-Pz3ek,368
82
92
  airflow/providers/edge3/plugins/www/src/res/cloud-computer.svg,sha256=oRbCGtHKdKwIqa3_540Np4Td5fkhu1YQ0n--OCRrkyw,365
@@ -88,16 +98,16 @@ airflow/providers/edge3/worker_api/__init__.py,sha256=nnPvxWGTEKZ9YyB1Yd7P9IvDOe
88
98
  airflow/providers/edge3/worker_api/app.py,sha256=yM2S2JLYE2lS4kN88XYnbeKKRa8vqVVhRq10yA_X0ig,3003
89
99
  airflow/providers/edge3/worker_api/auth.py,sha256=nmwfUz-nokUKyQp-UKwlMn-i2U5AXzq7c8Xfrt_bGeU,4867
90
100
  airflow/providers/edge3/worker_api/datamodels.py,sha256=FAiXqnrSN8zH4YE2fUMjXfXcH9cHlhRh4uZvvr936Ys,6696
91
- airflow/providers/edge3/worker_api/datamodels_ui.py,sha256=xROczXO2M9aiVMbMScaztOFtJ6AWlAw5lGpvtyNX-rc,2425
101
+ airflow/providers/edge3/worker_api/datamodels_ui.py,sha256=yPEdtZ7noV5BBNXvA9F-pqVDq7UxTIKUdoUf3_FTDdE,2795
92
102
  airflow/providers/edge3/worker_api/routes/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
93
103
  airflow/providers/edge3/worker_api/routes/_v2_compat.py,sha256=PuzSL9dMuji_MsluCoPdCvYboqJD0h4zERcIoB5kJvI,4543
94
104
  airflow/providers/edge3/worker_api/routes/_v2_routes.py,sha256=xcbf6RdOHx5zOl9JlIAW9nQhiy3ju-EIyq1tbXGJSYc,10800
95
105
  airflow/providers/edge3/worker_api/routes/health.py,sha256=1nRn_lvGhaMkGKGeEJbD_p7tJdMbC1LhEmwuQbqI9oE,1076
96
106
  airflow/providers/edge3/worker_api/routes/jobs.py,sha256=UK1w6nXEUadOLwE9abZ4jHH4KtbvXcwaAF0EnwSa3y4,5733
97
107
  airflow/providers/edge3/worker_api/routes/logs.py,sha256=uk0SZ5hAimj3sAcq1FYCDu0AXYNeTeyjZDGBvw-986E,4945
98
- airflow/providers/edge3/worker_api/routes/ui.py,sha256=bZXjN1RqNyjLW8xwDV7OGrAxM9FHrj7bs4l-r4HbLk8,3174
108
+ airflow/providers/edge3/worker_api/routes/ui.py,sha256=qXELQI6RZ80fLDTB0K6Z2H__ofJwRSvK6J1UYW3JC7g,9786
99
109
  airflow/providers/edge3/worker_api/routes/worker.py,sha256=BGARu1RZ74lW9X-ltuMYbbVXczm_MZdqHaai2MhDWtY,8969
100
- apache_airflow_providers_edge3-1.2.0.dist-info/entry_points.txt,sha256=7WUIGfd3o9NvvbK5trbZxNXTgYGc6pqg74wZPigbx5o,206
101
- apache_airflow_providers_edge3-1.2.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
102
- apache_airflow_providers_edge3-1.2.0.dist-info/METADATA,sha256=_lcmdgrcPSU7ES9uRFGEzbIWUYJtACYh7gBmBaVvtDs,4741
103
- apache_airflow_providers_edge3-1.2.0.dist-info/RECORD,,
110
+ apache_airflow_providers_edge3-1.3.0.dist-info/entry_points.txt,sha256=7WUIGfd3o9NvvbK5trbZxNXTgYGc6pqg74wZPigbx5o,206
111
+ apache_airflow_providers_edge3-1.3.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
112
+ apache_airflow_providers_edge3-1.3.0.dist-info/METADATA,sha256=YqVQO-zSk_1IGy_UGpGEqTmhVfLE5n7yatlzdYHZnPY,4741
113
+ apache_airflow_providers_edge3-1.3.0.dist-info/RECORD,,