feat: show estimated time remaining for in-progress jobs#992
Conversation
| def cli_job(): | ||
| """ | ||
| def _format_duration(seconds: float) -> str: | ||
| """Format seconds as human-readable duration (e.g., '1 hour, 30 minutes').""" |
There was a problem hiding this comment.
There seems to an issue with the comment quotes (e.g. """). The one in line 108 should be removed.
There was a problem hiding this comment.
Issue addressed in the latest revision.
| return ", ".join(parts) | ||
|
|
||
|
|
||
| def _estimate_completion_time(job: dict) -> Optional[str]: |
There was a problem hiding this comment.
This is pretty cool, @vinadomi11! Could we add unit tests?
| def cli_job(): | ||
| """ | ||
| def _format_duration(seconds: float) -> str: | ||
| """Format seconds as human-readable duration (e.g., '1 hour, 30 minutes').""" |
There was a problem hiding this comment.
Issue addressed in the latest revision.
| ) | ||
| class TestEstimateCompletionTime: | ||
| def test_format_duration_seconds(self): | ||
| from deadline.client.cli._groups.job_group import _format_duration |
There was a problem hiding this comment.
Could we move all the imports to the top of the file? As opposed to have an import in each test.
| @_handle_error | ||
| def cli_job(): | ||
| """ | ||
| """ |
There was a problem hiding this comment.
The spacing is broken here. You should be able to run 'hatch run fmt' to fix this up to 4 instead of 3 spaces.
This docstring should also not change in your PR. I see that below, it's adjacent to code, which looks wrong.
| parts = [f"{hours} hour{'s' if hours != 1 else ''}"] | ||
| if mins: | ||
| parts.append(f"{mins} minute{'s' if mins != 1 else ''}") | ||
| return ", ".join(parts) |
There was a problem hiding this comment.
This helper function could go into _job_helpers.py instead of in this main job_group file, to keep this one focused on the interface itself.
| }, | ||
| } | ||
|
|
||
| with patch.object(api._session, "get_boto3_session") as session_mock: |
There was a problem hiding this comment.
We're using the deadline_mock fixture for this instead of patching the boto3 session directly, it would be great to switch these tests over to that.
|
Instead of adding a new |
35106ac to
2afb32e
Compare
fff6b22 to
aa53b4c
Compare
aa53b4c to
478bf6e
Compare
eb29ac7 to
e6b4b83
Compare
Add estimated time remaining to 'deadline job list' and 'deadline job get' output. The estimate is calculated by computing average time per completed task and multiplying by remaining tasks. Output shows human-readable durations like '5 minutes' or '1 hour, 30 minutes'. Shows 'N/A' when an estimate cannot be computed (e.g., no tasks completed yet, or job is already done). Signed-off-by: vtubbs <vtubbs@amazon.com>
e6b4b83 to
bdd2bb2
Compare
|
1 similar comment
|


What was the problem/requirement? (What/Why)
Users have no way to see estimated time remaining for in-progress jobs from the CLI. This makes it harder to plan and monitor long-running render jobs.
What was the solution? (How)
Added a --show-estimates flag to deadline job list and deadline job get commands that displays estimated time remaining for in-progress jobs. The estimate is calculated by:
Computing average time per completed task
Multiplying by remaining tasks (running + pending)
Output shows human-readable durations like "5 minutes" or "1 hour, 30 minutes".
What is the impact of this change?
New optional CLI flag - no impact on existing behavior.
How was this change tested?
Have you run the unit tests?
Have you run the integration tests?
Was this change documented?
Are relevant docstrings in the code base updated?
Has the README.md been updated?
Does this PR introduce new dependencies?
This PR does not add any new dependencies.
Is this a breaking change?
No - this adds an optional flag with no changes to existing behavior.
Does this change impact security?
No security impact.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.