class SaltOrchestrator implements HostOrchestrator {

    @SuppressFBWarnings("REC_CATCH_EXCEPTION")
    @Override
    public void runService(List<GatewayConfig> allGateway, Set<Node> allNodes, SaltConfig saltConfig, ExitCriteriaModel exitModel)
            throws CloudbreakOrchestratorException {
        LOGGER.debug("Run Services on nodes: {}", allNodes);
        GatewayConfig primaryGateway = saltService.getPrimaryGatewayConfig(allGateway);
        try (SaltConnector sc = saltService.createSaltConnector(primaryGateway)) {
            retry.testWith2SecDelayMax5Times(() -> getRolesBeforeHighstateMagic(sc));
            Set<String> allHostnames = allNodes.stream().map(Node::getHostname).collect(Collectors.toSet());
            runNewService(sc, new HighStateAllRunner(allHostnames, allNodes), exitModel);
        } catch (ExecutionException e) {
            LOGGER.info("Error occurred during bootstrap", e);
            if (e.getCause() instanceof CloudbreakOrchestratorFailedException) {
                throw (CloudbreakOrchestratorFailedException) e.getCause();
            }
            throw new CloudbreakOrchestratorFailedException(e);
        } catch (Exception e) {
            LOGGER.info("Error occurred during bootstrap", e);
            throw new CloudbreakOrchestratorFailedException(e);
        }
        LOGGER.debug("Run services on nodes finished: {}", allNodes);
    }

}