def test_get_statuses_watch(self, sdk_get_run_statuses): settings.CLIENT_CONFIG.watch_interval = 1 client = RunClient(owner="owner", project="project", run_uuid=uuid.uuid4().hex) for _ in client.watch_statuses(): resp = MagicMock(status=V1Statuses.FAILED, status_conditions=[]) sdk_get_run_statuses.return_value = resp assert sdk_get_run_statuses.call_count == 2
def statuses(ctx, watch): """Get run or run job statuses. Uses /docs/core/cli/#caching Examples getting run statuses: \b $ polyaxon ops statuses \b $ polyaxon ops -uid=8aac02e3a62a4f0aaa257c59da5eab80 statuses """ def _handle_run_statuses(): if not conditions: return Printer.print_header("Latest status:") latest_status = Printer.add_status_color( {"status": status}, status_key="status" ) click.echo("{}\n".format(latest_status["status"])) objects = list_dicts_to_tabulate( [ Printer.add_status_color(o.to_dict(), status_key="type") for o in conditions ] ) if objects: Printer.print_header("Conditions:") dict_tabulate(objects, is_list_dict=True) owner, project_name, run_uuid = get_project_run_or_local( ctx.obj.get("project"), ctx.obj.get("run_uuid"), is_cli=True, ) client = RunClient(owner=owner, project=project_name, run_uuid=run_uuid) if watch: try: for status, conditions in client.watch_statuses(): _handle_run_statuses() except (ApiException, HTTPError, PolyaxonClientException) as e: handle_cli_error( e, message="Could get status for run `{}`.".format(run_uuid) ) sys.exit(1) else: try: status, conditions = client.get_statuses() _handle_run_statuses() except (ApiException, HTTPError, PolyaxonClientException) as e: handle_cli_error( e, message="Could get status for run `{}`.".format(run_uuid) ) sys.exit(1)