Skip to content

Commit

Permalink
add summary param to show only global progress or file by file
Browse files Browse the repository at this point in the history
  • Loading branch information
plaharanne committed Oct 17, 2023
1 parent 51a265b commit 44b1d08
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 29 deletions.
5 changes: 5 additions & 0 deletions croud/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -834,6 +834,11 @@
help="The offset to skip before beginning to "
"return the files."
),
Argument(
"--summary", type=lambda x: bool(strtobool(str(x))),
required=False,
help="Show only global progress."
),
],
"resolver": import_job_progress,
},
Expand Down
45 changes: 26 additions & 19 deletions croud/clusters/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -326,26 +326,33 @@ def import_job_progress(args: Namespace) -> None:
f"/api/v2/clusters/{args.cluster_id}/import-jobs/{args.import_job_id}/progress/"
)
data, errors = client.get(url, params=params)
print_response(
data=data.get("progress", {}) if data else {},
errors=errors,
keys=[
"percent",
"records",
"failed_records",
"total_records",
"total_files",
"files",
],
output_fmt=get_output_format(args),
transforms={
"files": _format_files,
},
)


def _format_files(field):
return ",\n".join(str(f) for f in field) if field else None
if args.summary:
print_response(
data=data.get("progress", {}) if data else {},
errors=errors,
keys=[
"percent",
"records",
"failed_records",
"total_records",
"total_files",
],
output_fmt=get_output_format(args),
)
else:
print_response(
data=data.get("progress", {}).get("files", []) if data else {},
errors=errors,
keys=[
"name",
"percent",
"records",
"failed_records",
"total_records",
],
output_fmt=get_output_format(args),
)


def clusters_upgrade(args: Namespace) -> None:
Expand Down
33 changes: 24 additions & 9 deletions docs/commands/clusters.rst
Original file line number Diff line number Diff line change
Expand Up @@ -735,20 +735,35 @@ Example
:prog: croud
:path: clusters import-jobs progress

Example
-------
Examples
--------

.. code-block:: console
sh$ ❯ croud clusters import-jobs progress \
--cluster-id e1e38d92-a650-48f1-8a70-8133f2d5c400 \
--import-job-id 00de6048-3af6-41da-bfaa-661199d1c106
+-----------+-----------+------------------+-----------------+---------------+-----------------------------------------------------------------------------------+
| percent | records | failed_records | total_records | total_files | files |
|-----------+-----------+------------------+-----------------+---------------+-----------------------------------------------------------------------------------|
| 100 | 891 | 0 | 891 | 2 | {'failed_records': 0, 'name': 'file1.csv', 'records': 800, 'total_records': 891}, |
| | | | | | {'failed_records': 0, 'name': 'file2.csv', 'records': 91, 'total_records': 891} |
+-----------+-----------+------------------+-----------------+---------------+-----------------------------------------------------------------------------------+
--import-job-id 00de6048-3af6-41da-bfaa-661199d1c106 \
--summary true
+-----------+-----------+------------------+-----------------+---------------+
| percent | records | failed_records | total_records | total_files |
|-----------+-----------+------------------+-----------------+---------------+
| 100 | 891 | 0 | 891 | 2 |
+-----------+-----------+------------------+-----------------+---------------+
.. code-block:: console
sh$ ❯ croud clusters import-jobs progress \
--cluster-id e1e38d92-a650-48f1-8a70-8133f2d5c400 \
--import-job-id 00de6048-3af6-41da-bfaa-661199d1c106 \
--limit ALL
--offset 0
+-----------+-----------+-----------+------------------+-----------------+
| name | percent | records | failed_records | total_records |
|-----------+-----------+-----------+------------------+-----------------|
| file1.csv | 100 | 800 | 0 | 800 |
| file2.csv | 100 | 91 | 0 | 91 |
+-----------+-----------+-----------+------------------+-----------------+
``clusters export-jobs``
Expand Down
29 changes: 28 additions & 1 deletion tests/commands/test_clusters.py
Original file line number Diff line number Diff line change
Expand Up @@ -1741,11 +1741,38 @@ def test_import_job_list(mock_request, output_format):
)


@mock.patch.object(Client, "request", return_value=({}, None))
def test_import_job_progress_summary(mock_request):
cluster_id = gen_uuid()
import_job_id = gen_uuid()

args = [
"croud",
"clusters",
"import-jobs",
"progress",
"--summary",
"true",
"--cluster-id",
cluster_id,
"--import-job-id",
import_job_id,
]

call_command(*args)
assert_rest(
mock_request,
RequestMethod.GET,
f"/api/v2/clusters/{cluster_id}/import-jobs/{import_job_id}/progress/",
params={},
)


@mock.patch.object(Client, "request", return_value=({}, None))
@pytest.mark.parametrize(
"params", [{}, {"offset": 2}, {"limit": "2"}, {"limit": "ALL", "offset": 2}]
)
def test_import_job_progress(mock_request, params):
def test_import_job_progress_files(mock_request, params):
cluster_id = gen_uuid()
import_job_id = gen_uuid()

Expand Down

0 comments on commit 44b1d08

Please sign in to comment.