private BatchOperationResult suspendAll(RestApi.RequestContext context) {
        String parentHostnameString = context.pathParameters().getStringOrThrow("hostname");
        List<String> hostnamesAsStrings = context.queryParameters().getStringList("hostname");

        HostName parentHostname = new HostName(parentHostnameString);
        List<HostName> hostnames = hostnamesAsStrings.stream().map(HostName::new).toList();
        try {
            orchestrator.suspendAll(parentHostname, hostnames);
        } catch (BatchHostStateChangeDeniedException | UncheckedTimeoutException e) {
            log.log(Level.FINE, e, () -> "Failed to suspend nodes " + hostnames + " with parent host " + parentHostname);
            throw createRestApiException(e.getMessage(), Response.Status.CONFLICT, e);
        } catch (BatchHostNameNotFoundException e) {
            log.log(Level.FINE, e, () -> "Failed to suspend nodes " + hostnames + " with parent host " + parentHostname);
            // Note that we're returning BAD_REQUEST instead of NOT_FOUND because the resource identified
            // by the URL path was found. It's one of the hostnames in the request it failed to find.
            throw createRestApiException(e.getMessage(), Response.Status.BAD_REQUEST, e);
        } catch (BatchInternalErrorException e) {
            log.log(Level.FINE, e, () -> "Failed to suspend nodes " + hostnames + " with parent host " + parentHostname);
            throw createRestApiException(e.getMessage(), Response.Status.INTERNAL_SERVER_ERROR, e);
        }
        log.log(Level.FINE, () -> "Suspended " + hostnames + " with parent " + parentHostname);
        return BatchOperationResult.successResult();
    }
@Test
    void throws_409_on_suspendAll_timeout() throws BatchHostStateChangeDeniedException, BatchHostNameNotFoundException, BatchInternalErrorException {
        Orchestrator orchestrator = mock(Orchestrator.class);
        doThrow(new UncheckedTimeoutException("Timeout Message")).when(orchestrator).suspendAll(any(), any());
        RestApiTestDriver testDriver = createTestDriver(orchestrator);
        HttpResponse response = executeSuspendAllRequest(testDriver, "parenthost", List.of("h1", "h2", "h3"));
        assertEquals(409, response.getStatus());
    }