@Override
    public void suspendAll(HostName parentHostname, List<HostName> hostNames)
            throws BatchHostStateChangeDeniedException, BatchHostNameNotFoundException, BatchInternalErrorException {
        try (OrchestratorContext context = OrchestratorContext.createContextForMultiAppOp(clock)) {
            List<NodeGroup> nodeGroupsOrderedByApplication;
            try {
                nodeGroupsOrderedByApplication = nodeGroupsOrderedForSuspend(hostNames);
            } catch (HostNameNotFoundException e) {
                throw new BatchHostNameNotFoundException(parentHostname, hostNames, e);
            }

            suspendAllNodeGroups(context, parentHostname, nodeGroupsOrderedByApplication, true);
            suspendAllNodeGroups(context, parentHostname, nodeGroupsOrderedByApplication, false);
        }
    }
Suspend normal operations for a group of nodes in the same application.

@param nodeGroup The group of nodes in an application.
@throws HostStateChangeDeniedException if the request cannot be met due to policy constraints.
orchestrator/src/main/java/com/yahoo/vespa/orchestrator/OrchestratorImpl.java