diff --git a/backend/src/main/java/org/davidbohl/dirigent/deployments/api/DeploymentsController.java b/backend/src/main/java/org/davidbohl/dirigent/deployments/api/DeploymentsController.java index ce54183..036998d 100644 --- a/backend/src/main/java/org/davidbohl/dirigent/deployments/api/DeploymentsController.java +++ b/backend/src/main/java/org/davidbohl/dirigent/deployments/api/DeploymentsController.java @@ -33,8 +33,8 @@ public class DeploymentsController { } @PostMapping("/{name}/start") - public void startDeployment(@PathVariable String name, @RequestParam(required = false) boolean force) { - applicationEventPublisher.publishEvent(new NamedDeploymentStartRequestedEvent(this, name, force)); + public void startDeployment(@PathVariable String name, @RequestParam(required = false) boolean forceRecreate) { + applicationEventPublisher.publishEvent(new NamedDeploymentStartRequestedEvent(this, name, forceRecreate)); } @PostMapping("/{name}/stop") diff --git a/backend/src/main/java/org/davidbohl/dirigent/deployments/management/DeploymentsService.java b/backend/src/main/java/org/davidbohl/dirigent/deployments/management/DeploymentsService.java index ef17a31..21f125e 100644 --- a/backend/src/main/java/org/davidbohl/dirigent/deployments/management/DeploymentsService.java +++ b/backend/src/main/java/org/davidbohl/dirigent/deployments/management/DeploymentsService.java @@ -202,7 +202,18 @@ public class DeploymentsService { private void stopDeployment(String deploymentName) throws InterruptedException, IOException { logger.info("Stopping deployment {}", deploymentName); - applicationEventPublisher.publishEvent(new DeploymentStateEvent(this, deploymentName, DeploymentState.State.STOPPING, "Stopping deployment '%s'".formatted(deploymentName))); + + + Optional optionalState= deploymentStatePersistingService.getDeploymentStates().stream() + .filter(state -> state.getName().equals(deploymentName)) + .findFirst(); + + boolean stopWouldChangeState = optionalState.isEmpty() || optionalState.get().getState() != DeploymentState.State.STOPPED; + + if(stopWouldChangeState) { + applicationEventPublisher.publishEvent(new DeploymentStateEvent(this, deploymentName, DeploymentState.State.STOPPING, "Stopping deployment '%s'".formatted(deploymentName))); + } + List commandArgs = new ArrayList<>(Arrays.stream(composeCommand.split(" ")).toList()); commandArgs.add("down"); new ProcessBuilder(commandArgs)