apache-airflow-providers-edge3 1.4.0__py3-none-any.whl → 1.4.1__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.
- airflow/providers/edge3/__init__.py +1 -1
- airflow/providers/edge3/cli/api_client.py +9 -3
- airflow/providers/edge3/cli/worker.py +15 -9
- airflow/providers/edge3/executors/edge_executor.py +6 -4
- airflow/providers/edge3/models/edge_job.py +1 -1
- airflow/providers/edge3/models/edge_worker.py +21 -7
- airflow/providers/edge3/plugins/edge_executor_plugin.py +3 -12
- airflow/providers/edge3/plugins/www/dist/main.umd.cjs +14 -50
- airflow/providers/edge3/plugins/www/package.json +22 -22
- airflow/providers/edge3/plugins/www/pnpm-lock.yaml +1502 -1509
- airflow/providers/edge3/plugins/www/src/layouts/EdgeLayout.tsx +9 -14
- airflow/providers/edge3/plugins/www/src/layouts/NavTabs.tsx +1 -8
- airflow/providers/edge3/plugins/www/src/main.tsx +0 -5
- airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx +7 -8
- airflow/providers/edge3/plugins/www/src/utils/index.ts +0 -1
- airflow/providers/edge3/plugins/www/vite.config.ts +2 -1
- airflow/providers/edge3/worker_api/routes/_v2_compat.py +1 -0
- airflow/providers/edge3/worker_api/routes/jobs.py +4 -5
- airflow/providers/edge3/worker_api/routes/ui.py +8 -3
- airflow/providers/edge3/worker_api/routes/worker.py +8 -4
- {apache_airflow_providers_edge3-1.4.0.dist-info → apache_airflow_providers_edge3-1.4.1.dist-info}/METADATA +11 -11
- {apache_airflow_providers_edge3-1.4.0.dist-info → apache_airflow_providers_edge3-1.4.1.dist-info}/RECORD +24 -25
- airflow/providers/edge3/plugins/www/src/utils/tokenHandler.ts +0 -51
- {apache_airflow_providers_edge3-1.4.0.dist-info → apache_airflow_providers_edge3-1.4.1.dist-info}/WHEEL +0 -0
- {apache_airflow_providers_edge3-1.4.0.dist-info → apache_airflow_providers_edge3-1.4.1.dist-info}/entry_points.txt +0 -0
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* under the License.
|
|
18
18
|
*/
|
|
19
19
|
import { Box } from "@chakra-ui/react";
|
|
20
|
-
import {
|
|
20
|
+
import { Navigate, Route, Routes } from "react-router-dom";
|
|
21
21
|
|
|
22
22
|
import { JobsPage } from "src/pages/JobsPage";
|
|
23
23
|
import { WorkerPage } from "src/pages/WorkerPage";
|
|
@@ -26,23 +26,18 @@ import { NavTabs } from "./NavTabs";
|
|
|
26
26
|
|
|
27
27
|
export const EdgeLayout = () => {
|
|
28
28
|
const tabs = [
|
|
29
|
-
{ label: "Edge Worker", value: "
|
|
30
|
-
{ label: "Edge Jobs", value: "
|
|
29
|
+
{ label: "Edge Worker", value: "worker" },
|
|
30
|
+
{ label: "Edge Jobs", value: "jobs" },
|
|
31
31
|
];
|
|
32
32
|
|
|
33
|
-
// Extract base URL from HTML base element to handle webserver.base_url configuration
|
|
34
|
-
const baseUrl = document.querySelector("base")?.href ?? "http://localhost:8080/";
|
|
35
|
-
const basename = new URL(baseUrl).pathname;
|
|
36
|
-
|
|
37
33
|
return (
|
|
38
34
|
<Box p={2} /* Compensate for parent padding from ExternalView */>
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
</BrowserRouter>
|
|
35
|
+
<NavTabs tabs={tabs} />
|
|
36
|
+
<Routes>
|
|
37
|
+
<Route index element={<Navigate to="worker" replace />} />
|
|
38
|
+
<Route path="worker" element={<WorkerPage />} />
|
|
39
|
+
<Route path="jobs" element={<JobsPage />} />
|
|
40
|
+
</Routes>
|
|
46
41
|
</Box>
|
|
47
42
|
);
|
|
48
43
|
};
|
|
@@ -33,14 +33,7 @@ export const NavTabs = ({ tabs }: Props) => {
|
|
|
33
33
|
return (
|
|
34
34
|
<Flex alignItems="center" borderBottomWidth={1} mb={2} ref={containerRef}>
|
|
35
35
|
{tabs.map(({ icon, label, value }) => (
|
|
36
|
-
<NavLink
|
|
37
|
-
end
|
|
38
|
-
key={value}
|
|
39
|
-
title={label}
|
|
40
|
-
to={{
|
|
41
|
-
pathname: value,
|
|
42
|
-
}}
|
|
43
|
-
>
|
|
36
|
+
<NavLink end key={value} title={label} to={value}>
|
|
44
37
|
{({ isActive }) => (
|
|
45
38
|
<Center
|
|
46
39
|
borderBottomColor="border.info"
|
|
@@ -18,13 +18,11 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { ChakraProvider } from "@chakra-ui/react";
|
|
20
20
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
21
|
-
import axios from "axios";
|
|
22
21
|
import { OpenAPI } from "openapi/requests/core/OpenAPI";
|
|
23
22
|
import { FC } from "react";
|
|
24
23
|
|
|
25
24
|
import { ColorModeProvider } from "src/context/colorMode";
|
|
26
25
|
import { EdgeLayout } from "src/layouts/EdgeLayout";
|
|
27
|
-
import { tokenHandler } from "src/utils";
|
|
28
26
|
|
|
29
27
|
import { system } from "./theme";
|
|
30
28
|
|
|
@@ -39,9 +37,6 @@ const PluginComponent: FC<PluginComponentProps> = () => {
|
|
|
39
37
|
const baseUrl = new URL(baseHref, globalThis.location.origin);
|
|
40
38
|
OpenAPI.BASE = baseUrl.pathname.replace(/\/$/, ""); // Remove trailing slash
|
|
41
39
|
|
|
42
|
-
// ensure HTTP API calls are authenticated with current session token
|
|
43
|
-
axios.interceptors.request.use(tokenHandler);
|
|
44
|
-
|
|
45
40
|
const queryClient = new QueryClient({
|
|
46
41
|
defaultOptions: {
|
|
47
42
|
queries: {
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
* specific language governing permissions and limitations
|
|
17
17
|
* under the License.
|
|
18
18
|
*/
|
|
19
|
-
import { Box,
|
|
19
|
+
import { Box, Table, Text } from "@chakra-ui/react";
|
|
20
20
|
import { useUiServiceJobs } from "openapi/queries";
|
|
21
|
-
import { Link
|
|
21
|
+
import { Link } from "react-router-dom";
|
|
22
22
|
import TimeAgo from "react-timeago";
|
|
23
23
|
|
|
24
24
|
import { ErrorAlert } from "src/components/ErrorAlert";
|
|
@@ -60,22 +60,21 @@ export const JobsPage = () => {
|
|
|
60
60
|
key={`${job.dag_id}.${job.run_id}.${job.task_id}.${job.map_index}.${job.try_number}`}
|
|
61
61
|
>
|
|
62
62
|
<Table.Cell>
|
|
63
|
-
|
|
64
|
-
<Link href={`../dags/${job.dag_id}`}>{job.dag_id}</Link>
|
|
63
|
+
<Link to={`/dags/${job.dag_id}`}>{job.dag_id}</Link>
|
|
65
64
|
</Table.Cell>
|
|
66
65
|
<Table.Cell>
|
|
67
|
-
<Link
|
|
66
|
+
<Link to={`/dags/${job.dag_id}/runs/${job.run_id}`}>{job.run_id}</Link>
|
|
68
67
|
</Table.Cell>
|
|
69
68
|
<Table.Cell>
|
|
70
69
|
{job.map_index >= 0 ? (
|
|
71
70
|
<Link
|
|
72
|
-
|
|
71
|
+
to={`/dags/${job.dag_id}/runs/${job.run_id}/tasks/${job.task_id}/mapped/${job.map_index}?try_number=${job.try_number}`}
|
|
73
72
|
>
|
|
74
73
|
{job.task_id}
|
|
75
74
|
</Link>
|
|
76
75
|
) : (
|
|
77
76
|
<Link
|
|
78
|
-
|
|
77
|
+
to={`/dags/${job.dag_id}/runs/${job.run_id}/tasks/${job.task_id}?try_number=${job.try_number}`}
|
|
79
78
|
>
|
|
80
79
|
{job.task_id}
|
|
81
80
|
</Link>
|
|
@@ -91,7 +90,7 @@ export const JobsPage = () => {
|
|
|
91
90
|
{job.queued_dttm ? <TimeAgo date={job.queued_dttm} live={false} /> : undefined}
|
|
92
91
|
</Table.Cell>
|
|
93
92
|
<Table.Cell>
|
|
94
|
-
<
|
|
93
|
+
<Link to={`../worker#${job.edge_worker}`}>{job.edge_worker}</Link>
|
|
95
94
|
</Table.Cell>
|
|
96
95
|
<Table.Cell>
|
|
97
96
|
{job.last_update ? <TimeAgo date={job.last_update} live={false} /> : undefined}
|
|
@@ -38,11 +38,12 @@ export default defineConfig(({ command }) => {
|
|
|
38
38
|
name: "AirflowPlugin",
|
|
39
39
|
},
|
|
40
40
|
rollupOptions: {
|
|
41
|
-
external: ["react", "react-dom"],
|
|
41
|
+
external: ["react", "react-dom", "react-router-dom", "react/jsx-runtime"],
|
|
42
42
|
output: {
|
|
43
43
|
globals: {
|
|
44
44
|
react: "React",
|
|
45
45
|
"react-dom": "ReactDOM",
|
|
46
|
+
"react-router-dom": "ReactRouterDOM",
|
|
46
47
|
"react/jsx-runtime": "ReactJSXRuntime",
|
|
47
48
|
},
|
|
48
49
|
},
|
|
@@ -39,7 +39,6 @@ from airflow.providers.edge3.worker_api.routes._v2_compat import (
|
|
|
39
39
|
status,
|
|
40
40
|
)
|
|
41
41
|
from airflow.stats import Stats
|
|
42
|
-
from airflow.utils.sqlalchemy import with_row_locks
|
|
43
42
|
from airflow.utils.state import TaskInstanceState
|
|
44
43
|
|
|
45
44
|
jobs_router = AirflowRouter(tags=["Jobs"], prefix="/jobs")
|
|
@@ -78,8 +77,8 @@ def fetch(
|
|
|
78
77
|
if body.queues:
|
|
79
78
|
query = query.where(EdgeJobModel.queue.in_(body.queues))
|
|
80
79
|
query = query.limit(1)
|
|
81
|
-
query =
|
|
82
|
-
job: EdgeJobModel = session.scalar(query)
|
|
80
|
+
query = query.with_for_update(skip_locked=True)
|
|
81
|
+
job: EdgeJobModel | None = session.scalar(query)
|
|
83
82
|
if not job:
|
|
84
83
|
return None
|
|
85
84
|
job.state = TaskInstanceState.RUNNING
|
|
@@ -148,7 +147,7 @@ def state(
|
|
|
148
147
|
)
|
|
149
148
|
Stats.incr("edge_worker.ti.finish", tags=tags)
|
|
150
149
|
|
|
151
|
-
|
|
150
|
+
query2 = (
|
|
152
151
|
update(EdgeJobModel)
|
|
153
152
|
.where(
|
|
154
153
|
EdgeJobModel.dag_id == dag_id,
|
|
@@ -159,4 +158,4 @@ def state(
|
|
|
159
158
|
)
|
|
160
159
|
.values(state=state, last_update=timezone.utcnow())
|
|
161
160
|
)
|
|
162
|
-
session.execute(
|
|
161
|
+
session.execute(query2)
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
from __future__ import annotations
|
|
19
19
|
|
|
20
20
|
from datetime import datetime
|
|
21
|
+
from typing import TYPE_CHECKING
|
|
21
22
|
|
|
22
23
|
from fastapi import Depends, HTTPException, status
|
|
23
24
|
from sqlalchemy import select
|
|
@@ -44,6 +45,10 @@ from airflow.providers.edge3.worker_api.datamodels_ui import (
|
|
|
44
45
|
Worker,
|
|
45
46
|
WorkerCollectionResponse,
|
|
46
47
|
)
|
|
48
|
+
from airflow.utils.state import TaskInstanceState
|
|
49
|
+
|
|
50
|
+
if TYPE_CHECKING:
|
|
51
|
+
from sqlalchemy.engine import ScalarResult
|
|
47
52
|
|
|
48
53
|
ui_router = AirflowRouter(tags=["UI"])
|
|
49
54
|
|
|
@@ -59,7 +64,7 @@ def worker(
|
|
|
59
64
|
) -> WorkerCollectionResponse:
|
|
60
65
|
"""Return Edge Workers."""
|
|
61
66
|
query = select(EdgeWorkerModel).order_by(EdgeWorkerModel.worker_name)
|
|
62
|
-
workers:
|
|
67
|
+
workers: ScalarResult[EdgeWorkerModel] = session.scalars(query)
|
|
63
68
|
|
|
64
69
|
result = [
|
|
65
70
|
Worker(
|
|
@@ -91,7 +96,7 @@ def jobs(
|
|
|
91
96
|
) -> JobCollectionResponse:
|
|
92
97
|
"""Return Edge Jobs."""
|
|
93
98
|
query = select(EdgeJobModel).order_by(EdgeJobModel.queued_dttm)
|
|
94
|
-
jobs:
|
|
99
|
+
jobs: ScalarResult[EdgeJobModel] = session.scalars(query)
|
|
95
100
|
|
|
96
101
|
result = [
|
|
97
102
|
Job(
|
|
@@ -100,7 +105,7 @@ def jobs(
|
|
|
100
105
|
run_id=j.run_id,
|
|
101
106
|
map_index=j.map_index,
|
|
102
107
|
try_number=j.try_number,
|
|
103
|
-
state=j.state,
|
|
108
|
+
state=TaskInstanceState(j.state),
|
|
104
109
|
queue=j.queue,
|
|
105
110
|
queued_dttm=j.queued_dttm,
|
|
106
111
|
edge_worker=j.edge_worker,
|
|
@@ -172,7 +172,7 @@ def register(
|
|
|
172
172
|
"""Register a new worker to the backend."""
|
|
173
173
|
_assert_version(body.sysinfo)
|
|
174
174
|
query = select(EdgeWorkerModel).where(EdgeWorkerModel.worker_name == worker_name)
|
|
175
|
-
worker: EdgeWorkerModel = session.scalar(query)
|
|
175
|
+
worker: EdgeWorkerModel | None = session.scalar(query)
|
|
176
176
|
if not worker:
|
|
177
177
|
worker = EdgeWorkerModel(worker_name=worker_name, state=body.state, queues=body.queues)
|
|
178
178
|
worker.state = redefine_state(worker.state, body.state)
|
|
@@ -194,7 +194,9 @@ def set_state(
|
|
|
194
194
|
) -> WorkerSetStateReturn:
|
|
195
195
|
"""Set state of worker and returns the current assigned queues."""
|
|
196
196
|
query = select(EdgeWorkerModel).where(EdgeWorkerModel.worker_name == worker_name)
|
|
197
|
-
worker: EdgeWorkerModel = session.scalar(query)
|
|
197
|
+
worker: EdgeWorkerModel | None = session.scalar(query)
|
|
198
|
+
if not worker:
|
|
199
|
+
raise HTTPException(status.HTTP_404_NOT_FOUND, "Worker not found")
|
|
198
200
|
worker.state = redefine_state(worker.state, body.state)
|
|
199
201
|
worker.maintenance_comment = redefine_maintenance_comments(
|
|
200
202
|
worker.maintenance_comment, body.maintenance_comments
|
|
@@ -213,7 +215,7 @@ def set_state(
|
|
|
213
215
|
free_concurrency=int(body.sysinfo["free_concurrency"]),
|
|
214
216
|
queues=worker.queues,
|
|
215
217
|
)
|
|
216
|
-
_assert_version(body.sysinfo) #
|
|
218
|
+
_assert_version(body.sysinfo) # Exception only after worker state is in the DB
|
|
217
219
|
return WorkerSetStateReturn(
|
|
218
220
|
state=worker.state, queues=worker.queues, maintenance_comments=worker.maintenance_comment
|
|
219
221
|
)
|
|
@@ -229,7 +231,9 @@ def update_queues(
|
|
|
229
231
|
session: SessionDep,
|
|
230
232
|
) -> None:
|
|
231
233
|
query = select(EdgeWorkerModel).where(EdgeWorkerModel.worker_name == worker_name)
|
|
232
|
-
worker: EdgeWorkerModel = session.scalar(query)
|
|
234
|
+
worker: EdgeWorkerModel | None = session.scalar(query)
|
|
235
|
+
if not worker:
|
|
236
|
+
raise HTTPException(status.HTTP_404_NOT_FOUND, "Worker not found")
|
|
233
237
|
if body.new_queues:
|
|
234
238
|
worker.add_queues(body.new_queues)
|
|
235
239
|
if body.remove_queues:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-edge3
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.1
|
|
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>
|
|
@@ -20,13 +20,13 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.13
|
|
22
22
|
Classifier: Topic :: System :: Monitoring
|
|
23
|
-
Requires-Dist: apache-airflow>=2.10.0
|
|
23
|
+
Requires-Dist: apache-airflow>=2.10.0,!=3.1.0
|
|
24
24
|
Requires-Dist: apache-airflow-providers-common-compat>=1.8.0
|
|
25
25
|
Requires-Dist: pydantic>=2.11.0
|
|
26
26
|
Requires-Dist: retryhttp>=1.2.0,!=1.3.0
|
|
27
27
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
28
|
-
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.4.
|
|
29
|
-
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.4.
|
|
28
|
+
Project-URL: Changelog, https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.4.1/changelog.html
|
|
29
|
+
Project-URL: Documentation, https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.4.1
|
|
30
30
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
31
31
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
32
32
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
@@ -57,7 +57,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
|
57
57
|
|
|
58
58
|
Package ``apache-airflow-providers-edge3``
|
|
59
59
|
|
|
60
|
-
Release: ``1.4.
|
|
60
|
+
Release: ``1.4.1``
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
Handle edge workers on remote sites via HTTP(s) connection and orchestrates work over distributed sites.
|
|
@@ -82,7 +82,7 @@ This is a provider package for ``edge3`` provider. All classes for this provider
|
|
|
82
82
|
are in ``airflow.providers.edge3`` python package.
|
|
83
83
|
|
|
84
84
|
You can find package information and changelog for the provider
|
|
85
|
-
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.4.
|
|
85
|
+
in the `documentation <https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.4.1/>`_.
|
|
86
86
|
|
|
87
87
|
Installation
|
|
88
88
|
------------
|
|
@@ -96,14 +96,14 @@ The package supports the following python versions: 3.10,3.11,3.12,3.13
|
|
|
96
96
|
Requirements
|
|
97
97
|
------------
|
|
98
98
|
|
|
99
|
-
==========================================
|
|
99
|
+
========================================== ====================
|
|
100
100
|
PIP package Version required
|
|
101
|
-
==========================================
|
|
102
|
-
``apache-airflow`` ``>=2.10.0``
|
|
101
|
+
========================================== ====================
|
|
102
|
+
``apache-airflow`` ``>=2.10.0,!=3.1.0``
|
|
103
103
|
``apache-airflow-providers-common-compat`` ``>=1.8.0``
|
|
104
104
|
``pydantic`` ``>=2.11.0``
|
|
105
105
|
``retryhttp`` ``>=1.2.0,!=1.3.0``
|
|
106
|
-
==========================================
|
|
106
|
+
========================================== ====================
|
|
107
107
|
|
|
108
108
|
Cross provider package dependencies
|
|
109
109
|
-----------------------------------
|
|
@@ -125,5 +125,5 @@ Dependent package
|
|
|
125
125
|
================================================================================================================== =================
|
|
126
126
|
|
|
127
127
|
The changelog for the provider package can be found in the
|
|
128
|
-
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.4.
|
|
128
|
+
`changelog <https://airflow.apache.org/docs/apache-airflow-providers-edge3/1.4.1/changelog.html>`_.
|
|
129
129
|
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
airflow/providers/edge3/LICENSE,sha256=gXPVwptPlW1TJ4HSuG5OMPg-a3h43OGMkZRR1rpwfJA,10850
|
|
2
|
-
airflow/providers/edge3/__init__.py,sha256=
|
|
2
|
+
airflow/providers/edge3/__init__.py,sha256=YJGs4Uf4WWsejZd4Uumqg7rX6HFH8Z1mDA3I79ElcH0,1494
|
|
3
3
|
airflow/providers/edge3/get_provider_info.py,sha256=Ek27-dB4UALHUFYoYjtoQIGq0p7zeHcEgmELHvpVmCU,6836
|
|
4
4
|
airflow/providers/edge3/version_compat.py,sha256=JRhqYf4UklO3xwmtCRPSXLQqq0yD1pCts3bhwxgVC0s,1670
|
|
5
5
|
airflow/providers/edge3/cli/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
6
|
-
airflow/providers/edge3/cli/api_client.py,sha256=
|
|
6
|
+
airflow/providers/edge3/cli/api_client.py,sha256=IxG1dae4aemhO8yfKDA71PYSuBdf2ouGur8Cem1Ys4c,7489
|
|
7
7
|
airflow/providers/edge3/cli/dataclasses.py,sha256=JUuvvmzSVWvG9uOEfzLIiXrTZ-HbESvu50jkPpVIYVw,2895
|
|
8
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=
|
|
10
|
+
airflow/providers/edge3/cli/worker.py,sha256=_ykOpA-io31TxOsjoGpfCtXPC60_E2boQJDjAtqSVIM,17626
|
|
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
|
|
14
14
|
airflow/providers/edge3/example_dags/win_test.py,sha256=9iZ8Ro1Pi9RhYVcFFyyzpb6q3M0Qt8Ft1wJUF1O3dQc,13565
|
|
15
15
|
airflow/providers/edge3/executors/__init__.py,sha256=y830gGSKCvjOcLwLuCDp84NCrHWWB9RSSH1qvJpFhyY,923
|
|
16
|
-
airflow/providers/edge3/executors/edge_executor.py,sha256=
|
|
16
|
+
airflow/providers/edge3/executors/edge_executor.py,sha256=_KWbjIe9KbosUKfoYZpeONNZnIdrqNK3ja3YzENL-pE,19336
|
|
17
17
|
airflow/providers/edge3/models/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
18
|
-
airflow/providers/edge3/models/edge_job.py,sha256=
|
|
18
|
+
airflow/providers/edge3/models/edge_job.py,sha256=PQRZcrl8RCj9d8xvdNFit7UJ6zRxvME_gZBLyBTN_70,3621
|
|
19
19
|
airflow/providers/edge3/models/edge_logs.py,sha256=rFVz4gR0GYiEpwai5Q2C5znkiuaUQTjq5EhfLnQUeZQ,3022
|
|
20
|
-
airflow/providers/edge3/models/edge_worker.py,sha256=
|
|
20
|
+
airflow/providers/edge3/models/edge_worker.py,sha256=kQV344idLt-ldk5Ru5V4g4RaaPlZA4H7XlWul5_KSuU,13789
|
|
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
23
|
airflow/providers/edge3/openapi/v2-edge-generated.yaml,sha256=VBjkPbZjG73QiU75H7UK45q0lLpMsK5E45L9j-LQypI,39727
|
|
24
24
|
airflow/providers/edge3/plugins/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
25
|
-
airflow/providers/edge3/plugins/edge_executor_plugin.py,sha256=
|
|
25
|
+
airflow/providers/edge3/plugins/edge_executor_plugin.py,sha256=VUPAH-goiwEWmlJy01Sp5X0tn_jkkiMrpCFURh4RyOY,13020
|
|
26
26
|
airflow/providers/edge3/plugins/templates/edge_worker_hosts.html,sha256=0_P2yfZwpy3Kvqd3GBvu_PgmmKCUbso3ieW8aYa76iU,8997
|
|
27
27
|
airflow/providers/edge3/plugins/templates/edge_worker_jobs.html,sha256=bZ-6ysmIy6j4eR_TPHiqbgb3qpNMKCcEEB-SpxuxNgc,2831
|
|
28
28
|
airflow/providers/edge3/plugins/www/.gitignore,sha256=glCQO0xBUzFDPKNjn3_mw7F6e51j3sjyo4knJAUqMz4,281
|
|
@@ -31,16 +31,16 @@ 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=
|
|
35
|
-
airflow/providers/edge3/plugins/www/pnpm-lock.yaml,sha256=
|
|
34
|
+
airflow/providers/edge3/plugins/www/package.json,sha256=hvYwweROXrpWJNDpR0rVpH_tgLfEg1_hwC8zjNW5aIk,2446
|
|
35
|
+
airflow/providers/edge3/plugins/www/pnpm-lock.yaml,sha256=nvW-vQc0CYiwWKffQdFRostOzQe4V4AuPyITGd8jyho,219643
|
|
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=
|
|
41
|
+
airflow/providers/edge3/plugins/www/vite.config.ts,sha256=mxAyXyZhIaFA46v7DY4yAo__y6gs9YXuIIPEhN-6xis,2971
|
|
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=
|
|
43
|
+
airflow/providers/edge3/plugins/www/dist/main.umd.cjs,sha256=QA22cjW1aG-FJ-fnc437p52Iw7vNNisn75-c4QEHlFQ,560410
|
|
44
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
|
|
@@ -59,7 +59,7 @@ airflow/providers/edge3/plugins/www/openapi-gen/requests/core/CancelablePromise.
|
|
|
59
59
|
airflow/providers/edge3/plugins/www/openapi-gen/requests/core/OpenAPI.ts,sha256=Gu0_JlDV061xLt7NF2w9zb2gpP84-rybL86sgX71Ef0,1477
|
|
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
|
-
airflow/providers/edge3/plugins/www/src/main.tsx,sha256=
|
|
62
|
+
airflow/providers/edge3/plugins/www/src/main.tsx,sha256=mY1QGUj7UNDq1H0AbG5lOK1Z3889iQrtPGOfwOBEb3A,1999
|
|
63
63
|
airflow/providers/edge3/plugins/www/src/theme.ts,sha256=6Fbo0Mwbah6HTupBYyUqOt_T8DAZtDG2UABtOoxUe1w,21458
|
|
64
64
|
airflow/providers/edge3/plugins/www/src/vite-env.d.ts,sha256=eY6SmeO3WS4Bxne5yY6kn_PXLilnlFfluNuZswLUDys,848
|
|
65
65
|
airflow/providers/edge3/plugins/www/src/components/AddQueueButton.tsx,sha256=Ahyf0_NXqEM0UjIdMyTuANKToD1coqfEjdsQiudK_Fg,4159
|
|
@@ -83,16 +83,15 @@ airflow/providers/edge3/plugins/www/src/components/ui/index.ts,sha256=oMFdotQy8u
|
|
|
83
83
|
airflow/providers/edge3/plugins/www/src/context/colorMode/ColorModeProvider.tsx,sha256=D9tDe9sYEQvCSQ_3fmf6zCaS9rZnzWoZrvb3qrJ0qf0,1024
|
|
84
84
|
airflow/providers/edge3/plugins/www/src/context/colorMode/index.ts,sha256=nTdA6xva8PrXEybO-JdQN4oSY9GHlHCPvUwREzJvhDM,879
|
|
85
85
|
airflow/providers/edge3/plugins/www/src/context/colorMode/useColorMode.tsx,sha256=YYcXELSveM_10fOwZeCh9yxiN8H7essKz1QDiy9Jio8,1122
|
|
86
|
-
airflow/providers/edge3/plugins/www/src/layouts/EdgeLayout.tsx,sha256=
|
|
87
|
-
airflow/providers/edge3/plugins/www/src/layouts/NavTabs.tsx,sha256=
|
|
88
|
-
airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx,sha256=
|
|
86
|
+
airflow/providers/edge3/plugins/www/src/layouts/EdgeLayout.tsx,sha256=17S8T1rnKA9416bz1yTeybK4_U_ENx2PbnezyN9PcXg,1532
|
|
87
|
+
airflow/providers/edge3/plugins/www/src/layouts/NavTabs.tsx,sha256=BA1BHI6VAu_8uB3hkCtEhrvKjxoE5taPQUAI2_1UXHQ,2040
|
|
88
|
+
airflow/providers/edge3/plugins/www/src/pages/JobsPage.tsx,sha256=tBgeEsd5TRDkwcsH2x3oOCMKyC4ak6GzfRbAZK6vjLI,4801
|
|
89
89
|
airflow/providers/edge3/plugins/www/src/pages/WorkerPage.tsx,sha256=nvEuqk0tr1Y_JMGJTYDzmdadwB-LiJ4OrdmqNfHhiwA,5070
|
|
90
90
|
airflow/providers/edge3/plugins/www/src/res/README.md,sha256=v9BEjvcB_pOcCP0bCL8wZ00xovBdzSk79FPFlqM9ZoQ,1010
|
|
91
91
|
airflow/providers/edge3/plugins/www/src/res/cloud-computer-dark.svg,sha256=o_HFnxsF9M8BbBgIMXuAv3gO0Wc7owQDg5hvw-Pz3ek,368
|
|
92
92
|
airflow/providers/edge3/plugins/www/src/res/cloud-computer.svg,sha256=oRbCGtHKdKwIqa3_540Np4Td5fkhu1YQ0n--OCRrkyw,365
|
|
93
93
|
airflow/providers/edge3/plugins/www/src/utils/config.ts,sha256=XTd5NDxkuNshitc1pL6zANnwBnOh8srKnLGfoKJLL80,1118
|
|
94
|
-
airflow/providers/edge3/plugins/www/src/utils/index.ts,sha256=
|
|
95
|
-
airflow/providers/edge3/plugins/www/src/utils/tokenHandler.ts,sha256=aLNV3b1_vYL_FnwPExMZozUMFCtR0cATAXk7c0t92yM,1690
|
|
94
|
+
airflow/providers/edge3/plugins/www/src/utils/index.ts,sha256=h1cm1iCT0LPIY_VzgKkstdUdIHodFoZW8SwSAUImQpA,915
|
|
96
95
|
airflow/providers/edge3/plugins/www/src/utils/useContainerWidth.ts,sha256=lLNc0NGM9y9ao538_MvbTiOBK3UYhNfBPX_PvRslCSg,1386
|
|
97
96
|
airflow/providers/edge3/worker_api/__init__.py,sha256=nnPvxWGTEKZ9YyB1Yd7P9IvDOenK01LVHm22Owwxj3g,839
|
|
98
97
|
airflow/providers/edge3/worker_api/app.py,sha256=yM2S2JLYE2lS4kN88XYnbeKKRa8vqVVhRq10yA_X0ig,3003
|
|
@@ -100,14 +99,14 @@ airflow/providers/edge3/worker_api/auth.py,sha256=nmwfUz-nokUKyQp-UKwlMn-i2U5AXz
|
|
|
100
99
|
airflow/providers/edge3/worker_api/datamodels.py,sha256=FAiXqnrSN8zH4YE2fUMjXfXcH9cHlhRh4uZvvr936Ys,6696
|
|
101
100
|
airflow/providers/edge3/worker_api/datamodels_ui.py,sha256=yPEdtZ7noV5BBNXvA9F-pqVDq7UxTIKUdoUf3_FTDdE,2795
|
|
102
101
|
airflow/providers/edge3/worker_api/routes/__init__.py,sha256=9hdXHABrVpkbpjZgUft39kOFL2xSGeG4GEua0Hmelus,785
|
|
103
|
-
airflow/providers/edge3/worker_api/routes/_v2_compat.py,sha256=
|
|
102
|
+
airflow/providers/edge3/worker_api/routes/_v2_compat.py,sha256=R5w5XPBnOCr9AV-DXZFOP60CRaI9JwTR_kSXwMzt7HU,4576
|
|
104
103
|
airflow/providers/edge3/worker_api/routes/_v2_routes.py,sha256=xcbf6RdOHx5zOl9JlIAW9nQhiy3ju-EIyq1tbXGJSYc,10800
|
|
105
104
|
airflow/providers/edge3/worker_api/routes/health.py,sha256=1nRn_lvGhaMkGKGeEJbD_p7tJdMbC1LhEmwuQbqI9oE,1076
|
|
106
|
-
airflow/providers/edge3/worker_api/routes/jobs.py,sha256=
|
|
105
|
+
airflow/providers/edge3/worker_api/routes/jobs.py,sha256=oFf7E4IBX39npRyptISPy5ApgnKmXOwMJMefvF5iIcw,5678
|
|
107
106
|
airflow/providers/edge3/worker_api/routes/logs.py,sha256=uk0SZ5hAimj3sAcq1FYCDu0AXYNeTeyjZDGBvw-986E,4945
|
|
108
|
-
airflow/providers/edge3/worker_api/routes/ui.py,sha256=
|
|
109
|
-
airflow/providers/edge3/worker_api/routes/worker.py,sha256=
|
|
110
|
-
apache_airflow_providers_edge3-1.4.
|
|
111
|
-
apache_airflow_providers_edge3-1.4.
|
|
112
|
-
apache_airflow_providers_edge3-1.4.
|
|
113
|
-
apache_airflow_providers_edge3-1.4.
|
|
107
|
+
airflow/providers/edge3/worker_api/routes/ui.py,sha256=yjdNQ7N0h7g7rSzsi4r5inwi4rxlHCdmtYA-ZTWRu6k,9970
|
|
108
|
+
airflow/providers/edge3/worker_api/routes/worker.py,sha256=PWgD77rTOCqRGGp5TU4wYPbbu64aCbUrCgwLJEm9iQ8,9199
|
|
109
|
+
apache_airflow_providers_edge3-1.4.1.dist-info/entry_points.txt,sha256=7WUIGfd3o9NvvbK5trbZxNXTgYGc6pqg74wZPigbx5o,206
|
|
110
|
+
apache_airflow_providers_edge3-1.4.1.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
111
|
+
apache_airflow_providers_edge3-1.4.1.dist-info/METADATA,sha256=xYGoBe1Y1YPFwGEP1kNVVGigbFQnm9uWykv2lgPBShg,6113
|
|
112
|
+
apache_airflow_providers_edge3-1.4.1.dist-info/RECORD,,
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Licensed to the Apache Software Foundation (ASF) under one
|
|
3
|
-
* or more contributor license agreements. See the NOTICE file
|
|
4
|
-
* distributed with this work for additional information
|
|
5
|
-
* regarding copyright ownership. The ASF licenses this file
|
|
6
|
-
* to you under the Apache License, Version 2.0 (the
|
|
7
|
-
* "License"); you may not use this file except in compliance
|
|
8
|
-
* with the License. You may obtain a copy of the License at
|
|
9
|
-
*
|
|
10
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
*
|
|
12
|
-
* Unless required by applicable law or agreed to in writing,
|
|
13
|
-
* software distributed under the License is distributed on an
|
|
14
|
-
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
15
|
-
* KIND, either express or implied. See the License for the
|
|
16
|
-
* specific language governing permissions and limitations
|
|
17
|
-
* under the License.
|
|
18
|
-
*/
|
|
19
|
-
import type { InternalAxiosRequestConfig } from "axios";
|
|
20
|
-
|
|
21
|
-
export const TOKEN_STORAGE_KEY = "token";
|
|
22
|
-
const getTokenFromCookies = (): string | undefined => {
|
|
23
|
-
const cookies = document.cookie.split(";");
|
|
24
|
-
|
|
25
|
-
for (const cookie of cookies) {
|
|
26
|
-
const [name, token] = cookie.split("=");
|
|
27
|
-
|
|
28
|
-
if (name?.trim() === "_token" && token !== undefined) {
|
|
29
|
-
localStorage.setItem(TOKEN_STORAGE_KEY, token);
|
|
30
|
-
document.cookie = "_token=; expires=Sat, 01 Jan 2000 00:00:00 UTC; path=/;";
|
|
31
|
-
|
|
32
|
-
return token;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return undefined;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export const tokenHandler = (config: InternalAxiosRequestConfig) => {
|
|
40
|
-
const token = localStorage.getItem(TOKEN_STORAGE_KEY) ?? getTokenFromCookies();
|
|
41
|
-
|
|
42
|
-
if (token !== undefined) {
|
|
43
|
-
config.headers.Authorization = `Bearer ${token}`;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return config;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
export const clearToken = () => {
|
|
50
|
-
localStorage.removeItem(TOKEN_STORAGE_KEY);
|
|
51
|
-
};
|
|
File without changes
|
|
File without changes
|