From 839f957ae0e81860356c571d67958340cb310795 Mon Sep 17 00:00:00 2001 From: Chris K Wensel <chris@wensel.net> Date: Tue, 26 Sep 2023 17:09:47 -0700 Subject: [PATCH] add retry to deploy command --- .../clusterless/command/project/DeployCommandOptions.java | 6 ++++++ .../conductor/worker/cli/ClusterlessBootstrapWorker.java | 4 ++-- .../conductor/worker/cli/DeployerProjectWorker.java | 2 +- .../clusterless/substrate/aws/cdk/lifecycle/Deploy.java | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/clusterless-main-common/src/main/java/clusterless/command/project/DeployCommandOptions.java b/clusterless-main-common/src/main/java/clusterless/command/project/DeployCommandOptions.java index 2aa24f80..ff9c6fc8 100644 --- a/clusterless-main-common/src/main/java/clusterless/command/project/DeployCommandOptions.java +++ b/clusterless-main-common/src/main/java/clusterless/command/project/DeployCommandOptions.java @@ -19,6 +19,8 @@ */ @CommandLine.Command(description = "Deploy the given project files.") public class DeployCommandOptions extends ProjectCommandOptions { + @CommandLine.Option(names = "--retry", description = "Retry the operation.") + private boolean retry = false; @SuppressWarnings("OptionalUsedAsFieldOrParameterType") @CommandLine.Option( names = "--approve", @@ -29,6 +31,10 @@ public class DeployCommandOptions extends ProjectCommandOptions { ) Optional<Boolean> approve; + public boolean retry() { + return retry; + } + public Optional<Boolean> approve() { return approve; } diff --git a/clusterless-scenario/src/main/java/clusterless/scenario/conductor/worker/cli/ClusterlessBootstrapWorker.java b/clusterless-scenario/src/main/java/clusterless/scenario/conductor/worker/cli/ClusterlessBootstrapWorker.java index 8beeeff2..0367df18 100644 --- a/clusterless-scenario/src/main/java/clusterless/scenario/conductor/worker/cli/ClusterlessBootstrapWorker.java +++ b/clusterless-scenario/src/main/java/clusterless/scenario/conductor/worker/cli/ClusterlessBootstrapWorker.java @@ -38,7 +38,7 @@ public TaskResult execute(Task task) { String workingDirectory = Objects.toString(inputData.get("workingDirectory"), null); Map<String, String> placement = (Map<String, String>) inputData.get("placement"); - ClusterlessBootstrapExecutor deploy = ClusterlessBootstrapExecutor.Builder.builder() + ClusterlessBootstrapExecutor executor = ClusterlessBootstrapExecutor.Builder.builder() .withClsApp(options.clsApp()) .withDryRun(getDryRun()) .withPlacement(placement) @@ -48,7 +48,7 @@ public TaskResult execute(Task task) { LOG.info("worker executing bootstrap, placement: {}, destroy: {}", placement, destroy); - int exitCode = deploy.exec(); + int exitCode = executor.exec(); LOG.info("worker executed bootstrap, with exit: {}", exitCode); diff --git a/clusterless-scenario/src/main/java/clusterless/scenario/conductor/worker/cli/DeployerProjectWorker.java b/clusterless-scenario/src/main/java/clusterless/scenario/conductor/worker/cli/DeployerProjectWorker.java index fe83a5e0..abb8df79 100644 --- a/clusterless-scenario/src/main/java/clusterless/scenario/conductor/worker/cli/DeployerProjectWorker.java +++ b/clusterless-scenario/src/main/java/clusterless/scenario/conductor/worker/cli/DeployerProjectWorker.java @@ -14,7 +14,7 @@ public class DeployerProjectWorker extends ClusterlessProjectWorker { public DeployerProjectWorker(Options options) { - super("deploy", options); + super("deploy", options, "--retry"); } @Override diff --git a/clusterless-substrate-aws-kernel/src/main/java/clusterless/substrate/aws/cdk/lifecycle/Deploy.java b/clusterless-substrate-aws-kernel/src/main/java/clusterless/substrate/aws/cdk/lifecycle/Deploy.java index 487ce424..c3640713 100644 --- a/clusterless-substrate-aws-kernel/src/main/java/clusterless/substrate/aws/cdk/lifecycle/Deploy.java +++ b/clusterless-substrate-aws-kernel/src/main/java/clusterless/substrate/aws/cdk/lifecycle/Deploy.java @@ -24,7 +24,7 @@ public class Deploy extends BaseCDKCommand implements Callable<Integer> { @CommandLine.Mixin DeployCommandOptions commandOptions = new DeployCommandOptions(); @CommandLine.Mixin - CDKProcessExec processExec = new CDKProcessExec(commandOptions::dryRun, this::verbosityLevel); + CDKProcessExec processExec = new CDKProcessExec(commandOptions::dryRun, commandOptions::retry, this::verbosityLevel); @Override public Integer call() throws Exception {