|
39 | 39 | JobListing,
|
40 | 40 | )
|
41 | 41 | from openeo_driver.config import get_backend_config, OpenEoBackendConfig
|
42 |
| -from openeo_driver.constants import STAC_EXTENSION |
| 42 | +from openeo_driver.constants import STAC_EXTENSION, DEFAULT_LOG_LEVEL_RETRIEVAL, DEFAULT_LOG_LEVEL_PROCESSING |
43 | 43 | from openeo_driver.datacube import DriverMlModel
|
44 | 44 | from openeo_driver.errors import (
|
45 | 45 | OpenEOApiException,
|
@@ -654,7 +654,7 @@ def result(user: User):
|
654 | 654 | process_graph = _extract_process_graph(post_data)
|
655 | 655 | budget = post_data.get("budget")
|
656 | 656 | plan = post_data.get("plan")
|
657 |
| - log_level = post_data.get("log_level", "info") |
| 657 | + log_level = post_data.get("log_level", DEFAULT_LOG_LEVEL_PROCESSING) |
658 | 658 | job_options = _extract_job_options(
|
659 | 659 | post_data, to_ignore=["process", "process_graph", "budget", "plan", "log_level"]
|
660 | 660 | )
|
@@ -880,7 +880,7 @@ def create_job(user: User):
|
880 | 880 | post_data, to_ignore=["process", "process_graph", "title", "description", "plan", "budget", "log_level"]
|
881 | 881 | )
|
882 | 882 | metadata = {k: post_data[k] for k in ["title", "description", "plan", "budget"] if k in post_data}
|
883 |
| - metadata["log_level"] = post_data.get("log_level", "info") |
| 883 | + metadata["log_level"] = post_data.get("log_level", DEFAULT_LOG_LEVEL_PROCESSING) |
884 | 884 | job_info = backend_implementation.batch_jobs.create_job(
|
885 | 885 | # TODO: remove `filter_supported_kwargs` (when all implementations have migrated to `user` iso `user_id`)
|
886 | 886 | **filter_supported_kwargs(
|
@@ -1513,16 +1513,26 @@ def download_job_result_signed(job_id, user_base64, secure_key, filename):
|
1513 | 1513 | @blueprint.route("/jobs/<job_id>/logs", methods=["GET"])
|
1514 | 1514 | @auth_handler.requires_bearer_auth
|
1515 | 1515 | def get_job_logs(job_id, user: User):
|
1516 |
| - offset = request.args.get("offset") |
1517 |
| - level = request.args.get("level", "debug") |
| 1516 | + offset = request.args.get("offset", default=None) |
| 1517 | + limit = request.args.get("limit", default=None, type=int) |
| 1518 | + level = request.args.get("level", default=DEFAULT_LOG_LEVEL_RETRIEVAL) |
1518 | 1519 | request_id = FlaskRequestCorrelationIdLogging.get_request_id()
|
1519 | 1520 | # TODO: implement paging support: `limit`, next/prev/first/last `links`, ...
|
1520 |
| - logs = backend_implementation.batch_jobs.get_log_entries( |
| 1521 | + |
| 1522 | + # TODO: remove this `function_has_argument` once all implementations are migrated |
| 1523 | + if function_has_argument(backend_implementation.batch_jobs.get_log_entries, argument="limit"): |
| 1524 | + logs = backend_implementation.batch_jobs.get_log_entries( |
| 1525 | + job_id=job_id, user_id=user.user_id, offset=offset, level=level, limit=limit |
| 1526 | + ) |
| 1527 | + else: |
| 1528 | + logs = backend_implementation.batch_jobs.get_log_entries( |
1521 | 1529 | job_id=job_id, user_id=user.user_id, offset=offset, level=level
|
1522 | 1530 | )
|
1523 | 1531 |
|
1524 | 1532 | def generate():
|
1525 |
| - yield """{"logs":[""" |
| 1533 | + yield "{" |
| 1534 | + yield f'"level": {json.dumps(level)},' |
| 1535 | + yield '"logs":[' |
1526 | 1536 |
|
1527 | 1537 | sep = ""
|
1528 | 1538 | try:
|
@@ -1550,7 +1560,9 @@ def generate():
|
1550 | 1560 | }
|
1551 | 1561 | yield sep + json.dumps(log)
|
1552 | 1562 |
|
1553 |
| - yield """],"links":[]}""" |
| 1563 | + yield "]," |
| 1564 | + # TODO: add pagination links (next, prev, first, last) |
| 1565 | + yield '"links":[]}' |
1554 | 1566 |
|
1555 | 1567 | return current_app.response_class(generate(), mimetype="application/json")
|
1556 | 1568 |
|
@@ -1665,12 +1677,13 @@ def service_delete(service_id, user: User):
|
1665 | 1677 | @blueprint.route('/services/<service_id>/logs', methods=['GET'])
|
1666 | 1678 | @auth_handler.requires_bearer_auth
|
1667 | 1679 | def service_logs(service_id, user: User):
|
1668 |
| - level = request.args.get("level", "debug") |
1669 |
| - offset = request.args.get('offset', 0) |
| 1680 | + offset = request.args.get("offset", default=None) |
| 1681 | + limit = request.args.get("limit", default=None, type=int) |
| 1682 | + level = request.args.get("level", default=DEFAULT_LOG_LEVEL_RETRIEVAL) |
1670 | 1683 | logs = backend_implementation.secondary_services.get_log_entries(
|
1671 |
| - service_id=service_id, user_id=user.user_id, offset=offset |
| 1684 | + service_id=service_id, user_id=user.user_id, offset=offset, limit=limit, level=level |
1672 | 1685 | )
|
1673 |
| - return jsonify({"logs": logs, "links": []}) |
| 1686 | + return jsonify({"logs": logs, "links": [], "level": level}) |
1674 | 1687 |
|
1675 | 1688 |
|
1676 | 1689 | def register_views_udp(
|
|
0 commit comments