qalita 2.6.3__py3-none-any.whl → 2.8.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.
- qalita/__main__.py +29 -19
- qalita/_frontend/.next/BUILD_ID +1 -1
- qalita/_frontend/.next/build-manifest.json +7 -7
- qalita/_frontend/.next/prerender-manifest.json +3 -3
- qalita/_frontend/.next/server/app/_global-error/page/build-manifest.json +5 -5
- qalita/_frontend/.next/server/app/_global-error/page.js +1 -1
- qalita/_frontend/.next/server/app/_global-error/page.js.nft.json +1 -1
- qalita/_frontend/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- qalita/_frontend/.next/server/app/_global-error.html +2 -2
- qalita/_frontend/.next/server/app/_global-error.rsc +7 -7
- qalita/_frontend/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- qalita/_frontend/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- qalita/_frontend/.next/server/app/_global-error.segments/_head.segment.rsc +3 -3
- qalita/_frontend/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- qalita/_frontend/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- qalita/_frontend/.next/server/app/_not-found/page/build-manifest.json +5 -5
- qalita/_frontend/.next/server/app/_not-found/page.js +1 -1
- qalita/_frontend/.next/server/app/_not-found/page.js.nft.json +1 -1
- qalita/_frontend/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- qalita/_frontend/.next/server/app/_not-found.html +1 -1
- qalita/_frontend/.next/server/app/_not-found.rsc +14 -12
- qalita/_frontend/.next/server/app/_not-found.segments/_full.segment.rsc +14 -12
- qalita/_frontend/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
- qalita/_frontend/.next/server/app/_not-found.segments/_index.segment.rsc +6 -4
- qalita/_frontend/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- qalita/_frontend/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- qalita/_frontend/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -2
- qalita/_frontend/.next/server/app/page/build-manifest.json +5 -5
- qalita/_frontend/.next/server/app/page.js +1 -1
- qalita/_frontend/.next/server/app/page.js.nft.json +1 -1
- qalita/_frontend/.next/server/app/page_client-reference-manifest.js +1 -1
- qalita/_frontend/.next/server/app/sources/add/page/build-manifest.json +5 -5
- qalita/_frontend/.next/server/app/sources/add/page.js +1 -1
- qalita/_frontend/.next/server/app/sources/add/page.js.nft.json +1 -1
- qalita/_frontend/.next/server/app/sources/add/page_client-reference-manifest.js +1 -1
- qalita/_frontend/.next/server/app/sources/add.html +1 -1
- qalita/_frontend/.next/server/app/sources/add.rsc +18 -16
- qalita/_frontend/.next/server/app/sources/add.segments/_full.segment.rsc +18 -16
- qalita/_frontend/.next/server/app/sources/add.segments/_head.segment.rsc +3 -3
- qalita/_frontend/.next/server/app/sources/add.segments/_index.segment.rsc +6 -4
- qalita/_frontend/.next/server/app/sources/add.segments/_tree.segment.rsc +3 -2
- qalita/_frontend/.next/server/app/sources/add.segments/sources/add/__PAGE__.segment.rsc +4 -4
- qalita/_frontend/.next/server/app/sources/add.segments/sources/add.segment.rsc +3 -3
- qalita/_frontend/.next/server/app/sources/add.segments/sources.segment.rsc +3 -3
- qalita/_frontend/.next/server/app/sources/edit/[id]/page/build-manifest.json +5 -5
- qalita/_frontend/.next/server/app/sources/edit/[id]/page.js +1 -1
- qalita/_frontend/.next/server/app/sources/edit/[id]/page.js.nft.json +1 -1
- qalita/_frontend/.next/server/app/sources/edit/[id]/page_client-reference-manifest.js +1 -1
- qalita/_frontend/.next/server/app/sources/page/build-manifest.json +5 -5
- qalita/_frontend/.next/server/app/sources/page.js +1 -1
- qalita/_frontend/.next/server/app/sources/page.js.nft.json +1 -1
- qalita/_frontend/.next/server/app/sources/page_client-reference-manifest.js +1 -1
- qalita/_frontend/.next/server/app/sources.html +1 -1
- qalita/_frontend/.next/server/app/sources.rsc +18 -16
- qalita/_frontend/.next/server/app/sources.segments/_full.segment.rsc +18 -16
- qalita/_frontend/.next/server/app/sources.segments/_head.segment.rsc +3 -3
- qalita/_frontend/.next/server/app/sources.segments/_index.segment.rsc +6 -4
- qalita/_frontend/.next/server/app/sources.segments/_tree.segment.rsc +3 -2
- qalita/_frontend/.next/server/app/sources.segments/sources/__PAGE__.segment.rsc +4 -4
- qalita/_frontend/.next/server/app/sources.segments/sources.segment.rsc +3 -3
- qalita/_frontend/.next/server/chunks/[root-of-the-server]__e868c9e1._.js +1 -1
- qalita/_frontend/.next/server/chunks/[root-of-the-server]__ebaae723._.js +1 -1
- qalita/_frontend/.next/server/chunks/ssr/[root-of-the-server]__17f2c9b6._.js +1 -1
- qalita/_frontend/.next/server/chunks/ssr/[root-of-the-server]__1d5b5394._.js +3 -0
- qalita/_frontend/.next/server/chunks/ssr/[root-of-the-server]__21824174._.js +3 -0
- qalita/_frontend/.next/server/chunks/ssr/{[root-of-the-server]__b9356576._.js → [root-of-the-server]__336e4c46._.js} +2 -2
- qalita/_frontend/.next/server/chunks/ssr/{[root-of-the-server]__c507bbfe._.js → [root-of-the-server]__7876511a._.js} +2 -2
- qalita/_frontend/.next/server/chunks/ssr/[root-of-the-server]__be91267c._.js +3 -0
- qalita/_frontend/.next/server/chunks/ssr/[root-of-the-server]__d15765f1._.js +3 -0
- qalita/_frontend/.next/server/chunks/ssr/{_3b4a232c._.js → _404f6e81._.js} +4 -4
- qalita/_frontend/.next/server/chunks/ssr/{_cd257a0c._.js → _6a67f6f0._.js} +4 -4
- qalita/_frontend/.next/server/chunks/ssr/_cafb65ac._.js +3 -0
- qalita/_frontend/.next/server/chunks/ssr/_cb7b44d6._.js +1 -1
- qalita/_frontend/.next/server/chunks/ssr/_d44c43ed._.js +3 -0
- qalita/_frontend/.next/server/chunks/ssr/components_DashboardContent_tsx_c3635665._.js +1 -1
- qalita/_frontend/.next/server/chunks/ssr/node_modules_next_dist_server_route-modules_app-page_vendored_a443a6bf._.js +3 -0
- qalita/_frontend/.next/server/middleware-build-manifest.js +5 -5
- qalita/_frontend/.next/server/pages/404.html +1 -1
- qalita/_frontend/.next/server/pages/500.html +2 -2
- qalita/_frontend/.next/server/server-reference-manifest.js +1 -1
- qalita/_frontend/.next/server/server-reference-manifest.json +1 -1
- qalita/_frontend/.next/static/chunks/02a64570f0a14789.js +1 -0
- qalita/_frontend/.next/static/chunks/{7340adf74ff47ec0.js → 0b082245f106d665.js} +1 -1
- qalita/_frontend/.next/static/chunks/27b3ba70c7ef50a8.js +1 -0
- qalita/_frontend/.next/static/chunks/517e9b74d1a3c0ce.js +1 -0
- qalita/_frontend/.next/static/chunks/58689c96b0676c41.js +1 -0
- qalita/_frontend/.next/static/chunks/{236f7e5abd6f09ff.js → 89ba62a8ba9b79ce.js} +2 -2
- qalita/_frontend/.next/static/chunks/acc5da18ff20daa1.js +3 -0
- qalita/_frontend/.next/static/chunks/bdc8a8e7721f5675.js +2 -0
- qalita/_frontend/.next/static/chunks/e0df86cbf44bbf9f.js +1 -0
- qalita/_frontend/.next/static/chunks/e4c3a252774ab7fd.css +1 -0
- qalita/_frontend/.next/static/chunks/e6ce59ba40b863f2.js +1 -0
- qalita/_frontend/.next/static/chunks/{30ea11065999f7ac.js → ec4b1f1e3cd3ae43.js} +1 -1
- qalita/_frontend/.next/static/chunks/{turbopack-25186fc8e1264445.js → turbopack-d21156d03715fafa.js} +1 -1
- qalita/_frontend/node_modules/@swc/helpers/package.json +225 -2
- qalita/_frontend/node_modules/next/node_modules/@swc/helpers/package.json +471 -0
- qalita/_frontend/package.json +12 -1
- qalita/commands/pack.py +61 -8
- qalita/commands/worker.py +46 -20
- qalita/commands/worker_grpc.py +941 -0
- qalita/grpc/__init__.py +8 -0
- qalita/grpc/client.py +693 -0
- qalita/grpc/protos/__init__.py +4 -0
- qalita/grpc/protos/qalita.proto +391 -0
- qalita/grpc/protos/qalita_pb2.py +112 -0
- qalita/grpc/protos/qalita_pb2_grpc.py +588 -0
- qalita/internal/data_preview.py +565 -0
- qalita/internal/request.py +4 -3
- qalita/internal/utils.py +1 -1
- qalita/web/app.py +6 -2
- qalita/web/blueprints/dashboard.py +12 -44
- qalita/web/blueprints/helpers.py +119 -46
- qalita/web/blueprints/sources.py +5 -99
- qalita/web/blueprints/workers.py +6 -6
- {qalita-2.6.3.dist-info → qalita-2.8.1.dist-info}/METADATA +7 -1
- {qalita-2.6.3.dist-info → qalita-2.8.1.dist-info}/RECORD +124 -111
- qalita/_frontend/.next/server/chunks/ssr/[root-of-the-server]__345b6cae._.js +0 -3
- qalita/_frontend/.next/server/chunks/ssr/[root-of-the-server]__7213ba1d._.js +0 -3
- qalita/_frontend/.next/server/chunks/ssr/[root-of-the-server]__9130e1f5._.js +0 -3
- qalita/_frontend/.next/server/chunks/ssr/[root-of-the-server]__e2a7729d._.js +0 -3
- qalita/_frontend/.next/server/chunks/ssr/app_layout_tsx_271801d7._.js +0 -3
- qalita/_frontend/.next/static/chunks/0f84739db4a8acc7.js +0 -1
- qalita/_frontend/.next/static/chunks/1107bdca1eff6d34.css +0 -1
- qalita/_frontend/.next/static/chunks/4b0c5de8d4cc313f.js +0 -1
- qalita/_frontend/.next/static/chunks/4dd28bc3f722184a.js +0 -2
- qalita/_frontend/.next/static/chunks/711d597b816a80c1.js +0 -1
- qalita/_frontend/.next/static/chunks/bb29c2be4df20a40.js +0 -1
- qalita/_frontend/.next/static/chunks/ecf559101be0ae12.js +0 -3
- /qalita/_frontend/.next/static/{N9MqNrf23ZZkbbSW2aXkt → 8__jz-coq8Cacgz6IFGzi}/_buildManifest.js +0 -0
- /qalita/_frontend/.next/static/{N9MqNrf23ZZkbbSW2aXkt → 8__jz-coq8Cacgz6IFGzi}/_clientMiddlewareManifest.json +0 -0
- /qalita/_frontend/.next/static/{N9MqNrf23ZZkbbSW2aXkt → 8__jz-coq8Cacgz6IFGzi}/_ssgManifest.js +0 -0
- /qalita/_frontend/node_modules/{@swc → next/node_modules/@swc}/helpers/cjs/_interop_require_default.cjs +0 -0
- /qalita/_frontend/node_modules/{@swc → next/node_modules/@swc}/helpers/cjs/_interop_require_wildcard.cjs +0 -0
- {qalita-2.6.3.dist-info → qalita-2.8.1.dist-info}/WHEEL +0 -0
- {qalita-2.6.3.dist-info → qalita-2.8.1.dist-info}/entry_points.txt +0 -0
- {qalita-2.6.3.dist-info → qalita-2.8.1.dist-info}/licenses/LICENSE +0 -0
qalita/commands/worker.py
CHANGED
|
@@ -32,14 +32,14 @@ ROUTINE_LAST_SCHEDULED_UTC = {}
|
|
|
32
32
|
@click.option(
|
|
33
33
|
"-n",
|
|
34
34
|
"--name",
|
|
35
|
-
help="The name of the
|
|
35
|
+
help="The name of the worker, it will be used to identify the worker in the qalita platform",
|
|
36
36
|
envvar="QALITA_WORKER_NAME",
|
|
37
37
|
)
|
|
38
38
|
@click.option(
|
|
39
39
|
"-m",
|
|
40
40
|
"--mode",
|
|
41
41
|
type=click.Choice(["job", "worker"], case_sensitive=False),
|
|
42
|
-
help="The mode of the
|
|
42
|
+
help="The mode of the worker, <worker/job> if you run the worker in worker mode, the worker will loop until it gets a job to do, in job mode it will immediately do a job",
|
|
43
43
|
envvar="QALITA_WORKER_MODE",
|
|
44
44
|
)
|
|
45
45
|
@click.option(
|
|
@@ -51,7 +51,7 @@ ROUTINE_LAST_SCHEDULED_UTC = {}
|
|
|
51
51
|
@click.option(
|
|
52
52
|
"-u",
|
|
53
53
|
"--url",
|
|
54
|
-
help="The URL to the qalita backend the
|
|
54
|
+
help="The URL to the qalita backend the worker have to register exemple : http://backend:3080",
|
|
55
55
|
envvar="QALITA_WORKER_ENDPOINT",
|
|
56
56
|
)
|
|
57
57
|
@pass_config
|
|
@@ -96,13 +96,13 @@ def worker(config, name, mode, token, url):
|
|
|
96
96
|
if not name:
|
|
97
97
|
logger.error("Error: Worker name is required!")
|
|
98
98
|
logger.info("\tTo do so, you can set an Environment Variable : ")
|
|
99
|
-
logger.info("\t\texport QALITA_WORKER_NAME='
|
|
99
|
+
logger.info("\t\texport QALITA_WORKER_NAME='worker-1'")
|
|
100
100
|
logger.info("\tor add the name as a commandline argument : ")
|
|
101
|
-
logger.info("\t\tqalita worker --name '
|
|
101
|
+
logger.info("\t\tqalita worker --name 'worker-1'")
|
|
102
102
|
logger.info(
|
|
103
103
|
"\tthe prefered way is to create a file '.env-file' with the values : "
|
|
104
104
|
)
|
|
105
|
-
logger.info("\t\tQALITA_WORKER_NAME=
|
|
105
|
+
logger.info("\t\tQALITA_WORKER_NAME=worker-1")
|
|
106
106
|
logger.info("\tand source it : ")
|
|
107
107
|
logger.info("\t\texport $(xargs < .env-file)")
|
|
108
108
|
all_check_pass = False
|
|
@@ -137,7 +137,7 @@ def worker(config, name, mode, token, url):
|
|
|
137
137
|
logger.info("\tTo do so, you can set an Environment Variable : ")
|
|
138
138
|
logger.info("\t\texport QALITA_WORKER_ENDPOINT='http://localhost:3080'")
|
|
139
139
|
logger.info("\tor add the url as a commandline argument : ")
|
|
140
|
-
logger.info("\t\tqalita worker --url '
|
|
140
|
+
logger.info("\t\tqalita worker --url 'http://localhost:3080'")
|
|
141
141
|
logger.info(
|
|
142
142
|
"\tthe prefered way is to create a file '.env-file' with the values : "
|
|
143
143
|
)
|
|
@@ -250,9 +250,9 @@ def authenticate(config, user_id):
|
|
|
250
250
|
)
|
|
251
251
|
|
|
252
252
|
if agent_exists:
|
|
253
|
-
logger.success(f"
|
|
253
|
+
logger.success(f"Worker '{config.name}' is already registered.")
|
|
254
254
|
else:
|
|
255
|
-
logger.info(f"
|
|
255
|
+
logger.info(f"Worker '{config.name}' is not registered. Registering now...")
|
|
256
256
|
|
|
257
257
|
# Enregistrement de l'agent
|
|
258
258
|
try:
|
|
@@ -280,7 +280,7 @@ def authenticate(config, user_id):
|
|
|
280
280
|
)
|
|
281
281
|
|
|
282
282
|
if r.status_code == 201:
|
|
283
|
-
logger.success(f"
|
|
283
|
+
logger.success(f"Worker '{config.name}' successfully registered.")
|
|
284
284
|
|
|
285
285
|
# Fetch the full list again
|
|
286
286
|
try:
|
|
@@ -290,12 +290,12 @@ def authenticate(config, user_id):
|
|
|
290
290
|
|
|
291
291
|
if r.status_code != 200:
|
|
292
292
|
logger.error(
|
|
293
|
-
f"Failed to retrieve updated
|
|
293
|
+
f"Failed to retrieve updated worker list - HTTP Code: {r.status_code}"
|
|
294
294
|
)
|
|
295
295
|
sys.exit(1)
|
|
296
296
|
else:
|
|
297
297
|
logger.error(
|
|
298
|
-
f"Failed to register
|
|
298
|
+
f"Failed to register worker '{config.name}' - HTTP Code: {r.status_code} - {r.text}"
|
|
299
299
|
)
|
|
300
300
|
sys.exit(1)
|
|
301
301
|
|
|
@@ -404,10 +404,16 @@ def login(config):
|
|
|
404
404
|
help="The pack Version to run the job against, to get the pack version, run qalita pack -p <pack_id> versions, default to latest",
|
|
405
405
|
envvar="QALITA_WORKER_JOB_PACK_VERSION",
|
|
406
406
|
)
|
|
407
|
+
@click.option(
|
|
408
|
+
"--grpc/--no-grpc",
|
|
409
|
+
default=True,
|
|
410
|
+
help="Use gRPC for real-time bidirectional communication (default: enabled). Use --no-grpc to fall back to REST polling.",
|
|
411
|
+
envvar="QALITA_WORKER_GRPC",
|
|
412
|
+
)
|
|
407
413
|
def run(
|
|
408
|
-
config, source_id, source_version, target_id, target_version, pack_id, pack_version
|
|
414
|
+
config, source_id, source_version, target_id, target_version, pack_id, pack_version, grpc
|
|
409
415
|
):
|
|
410
|
-
"""Runs
|
|
416
|
+
"""Runs the worker"""
|
|
411
417
|
# Pre-checks
|
|
412
418
|
if config.mode == "job":
|
|
413
419
|
if source_id is None:
|
|
@@ -424,10 +430,24 @@ def run(
|
|
|
424
430
|
)
|
|
425
431
|
logger.error("To get the pack ID, run qalita pack list")
|
|
426
432
|
sys.exit(1)
|
|
433
|
+
# Use gRPC mode if enabled and in worker mode
|
|
434
|
+
if grpc and config.mode == "worker":
|
|
435
|
+
logger.info("------------- Worker Run (gRPC mode) -------------")
|
|
436
|
+
import asyncio
|
|
437
|
+
try:
|
|
438
|
+
from qalita.commands.worker_grpc import run_worker_grpc
|
|
439
|
+
asyncio.run(run_worker_grpc(config, config.name, config.mode, config.token, config.url))
|
|
440
|
+
return
|
|
441
|
+
except ImportError as e:
|
|
442
|
+
logger.warning(f"gRPC not available, falling back to REST: {e}")
|
|
443
|
+
except Exception as e:
|
|
444
|
+
logger.error(f"gRPC mode failed, falling back to REST: {e}")
|
|
445
|
+
|
|
446
|
+
# REST mode (legacy)
|
|
427
447
|
logger.info("------------- Worker Authenticate -------------")
|
|
428
448
|
validated_info = validate_token(config.token)
|
|
429
449
|
authenticate(validated_info["user_id"])
|
|
430
|
-
logger.info("------------- Worker Run -------------")
|
|
450
|
+
logger.info("------------- Worker Run (REST mode) -------------")
|
|
431
451
|
agent_conf = config.load_worker_config()
|
|
432
452
|
logger.info(f"Worker ID : {agent_conf['context']['remote']['id']}")
|
|
433
453
|
logger.info(f"Worker Mode : {config.mode}")
|
|
@@ -506,11 +526,11 @@ def run(
|
|
|
506
526
|
time.sleep(60)
|
|
507
527
|
except KeyboardInterrupt:
|
|
508
528
|
logger.warning("KILLSIG detected. Gracefully exiting the program.")
|
|
509
|
-
logger.error("Set
|
|
529
|
+
logger.error("Set Worker OFFLINE...")
|
|
510
530
|
send_alive(config_file=agent_conf, status="offline")
|
|
511
531
|
logger.error("Exit")
|
|
512
532
|
else:
|
|
513
|
-
logger.error("
|
|
533
|
+
logger.error("Worker mode not supported : <worker/job>")
|
|
514
534
|
sys.exit(1)
|
|
515
535
|
|
|
516
536
|
|
|
@@ -655,8 +675,11 @@ def job_run(
|
|
|
655
675
|
)
|
|
656
676
|
source_version = latest_version["sem_ver_id"]
|
|
657
677
|
source_version_id = latest_version["id"]
|
|
658
|
-
|
|
659
|
-
|
|
678
|
+
elif source_version_id is None:
|
|
679
|
+
logger.error(f"Source with id {source_id} has no versions. Cannot proceed without a source version.")
|
|
680
|
+
sys.exit(1)
|
|
681
|
+
elif response_source.status_code == 204:
|
|
682
|
+
logger.error(f"Source with id {source_id} not found, source doesn't exist or you don't have the permission to access it. \nWorker is [{agent_conf['context']['remote']['name']}] You may need to change worker.")
|
|
660
683
|
sys.exit(1)
|
|
661
684
|
|
|
662
685
|
logger.info(
|
|
@@ -676,8 +699,11 @@ def job_run(
|
|
|
676
699
|
)
|
|
677
700
|
pack_version = latest_version["sem_ver_id"]
|
|
678
701
|
pack_version_id = latest_version["id"]
|
|
702
|
+
elif pack_version_id is None:
|
|
703
|
+
logger.error(f"Pack with id {pack_id} has no versions. Cannot proceed without a pack version.")
|
|
704
|
+
sys.exit(1)
|
|
679
705
|
elif response_pack.status_code == 204:
|
|
680
|
-
logger.error(f"Pack with id {pack_id} not found, pack doesn't exist or you don't have the permission to access it. \
|
|
706
|
+
logger.error(f"Pack with id {pack_id} not found, pack doesn't exist or you don't have the permission to access it. \nWorker is [{agent_conf['context']['remote']['name']}] You may need to change worker.")
|
|
681
707
|
sys.exit(1)
|
|
682
708
|
|
|
683
709
|
logger.info(f"pack version not specified, Latest pack version is {pack_version}")
|