From 3857edf5143275103bd2eccb89a7375bbb4a5497 Mon Sep 17 00:00:00 2001 From: viambot <79611529+viambot@users.noreply.github.com> Date: Mon, 17 Nov 2025 16:43:12 +0000 Subject: [PATCH] [WORKFLOW] AI update based on proto changes from commit 44bc963fe53123c4b4a6e058c18eedbe46a922b5 --- src/viam/robot/client.py | 6 ++++-- src/viam/robot/service.py | 10 ++++++++++ tests/test_robot.py | 6 +++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/viam/robot/client.py b/src/viam/robot/client.py index fa6a42732..5ace73611 100644 --- a/src/viam/robot/client.py +++ b/src/viam/robot/client.py @@ -30,6 +30,7 @@ GetOperationsResponse, GetVersionRequest, GetVersionResponse, + JobStatus, LogRequest, ModuleModel, Operation, @@ -890,7 +891,7 @@ async def get_version(self) -> GetVersionResponse: async def get_machine_status(self) -> GetMachineStatusResponse: """ - Get status information about the machine's resources and configuration. + Get status information about the machine's resources, configuration, and job statuses. :: @@ -899,9 +900,10 @@ async def get_machine_status(self) -> GetMachineStatusResponse: resource_statuses = machine_status.resources cloud_metadata = machine_status.resources[0].cloud_metadata config_status = machine_status.config + job_statuses = machine.get_machine_status().job_statuses Returns: - viam.proto.robot.GetMachineStatusResponse: current status of the machine (initializing or running), current status of the resources (List[ResourceStatus]) and the revision of the config of the machine. + viam.proto.robot.GetMachineStatusResponse: current status of the machine (initializing or running), current status of the resources (List[ResourceStatus]), the revision of the config of the machine, and current job statuses (List[JobStatus]). For more information, see `Machine Management API `_. """ diff --git a/src/viam/robot/service.py b/src/viam/robot/service.py index 151fe7e9f..a22724056 100644 --- a/src/viam/robot/service.py +++ b/src/viam/robot/service.py @@ -8,6 +8,7 @@ from viam.errors import ViamGRPCError from viam.proto.common import ResourceName from viam.proto.robot import ( + JobStatus, ResourceNamesRequest, ResourceNamesResponse, StopAllRequest, @@ -67,3 +68,12 @@ async def StopAll(self, stream: Stream[StopAllRequest, StopAllResponse]) -> None if errors: raise ViamGRPCError(f'Failed to stop components named {", ".join(errors)}') await stream.send_message(StopAllResponse()) + + async def GetMachineStatus(self, stream: Stream[ResourceNamesRequest, ResourceNamesResponse]) -> None: + request = await stream.recv_message() + assert request is not None + # Placeholder for retrieving actual job statuses. + # This would typically involve retrieving actual job statuses from the robot's internal state or a job management system. + job_statuses = [] + response = ResourceNamesResponse(resources=self._generate_metadata(), job_statuses=job_statuses) + await stream.send_message(response) diff --git a/tests/test_robot.py b/tests/test_robot.py index e7e8097c8..d5b013246 100644 --- a/tests/test_robot.py +++ b/tests/test_robot.py @@ -31,6 +31,7 @@ GetOperationsResponse, GetVersionRequest, GetVersionResponse, + JobStatus, Operation, ResourceNamesRequest, ResourceNamesResponse, @@ -109,7 +110,8 @@ name=ResourceName(namespace=RESOURCE_NAMESPACE_RDK, type=RESOURCE_TYPE_COMPONENT, subtype="arm", name="arm1"), state=ResourceStatus.State.STATE_READY, ) - ] + ], + job_statuses=[JobStatus(job_name="my_job", recent_successful_runs=[], recent_failed_runs=[])] ) @@ -367,6 +369,8 @@ async def test_get_machine_status(self, service: RobotService): async with await RobotClient.with_channel(channel, RobotClient.Options()) as client: statuses = await client.get_machine_status() assert statuses == GET_MACHINE_STATUS_RESPONSE + assert len(statuses.job_statuses) == 1 + assert statuses.job_statuses[0].job_name == "my_job" async def test_get_operations(self, service: RobotService): async with ChannelFor([service]) as channel: