aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <yuuta@yuuta.moe>2021-04-03 16:16:58 -0700
committerTrumeet <yuuta@yuuta.moe>2021-04-03 16:16:58 -0700
commit78794e70902fcf020e5438ba2a258ef34a7f46fd (patch)
tree184375f1a37f55d662029277c1019051e9b5be97
parentbcc4b45ae926937eba3fdbf7d3504998d0a80397 (diff)
downloaddn42peering-78794e70902fcf020e5438ba2a258ef34a7f46fd.tar
dn42peering-78794e70902fcf020e5438ba2a258ef34a7f46fd.tar.gz
dn42peering-78794e70902fcf020e5438ba2a258ef34a7f46fd.tar.bz2
dn42peering-78794e70902fcf020e5438ba2a258ef34a7f46fd.zip
feat(agent): always use sequential execution
-rw-r--r--agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java18
1 files changed, 7 insertions, 11 deletions
diff --git a/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java b/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java
index 97daf61..f477599 100644
--- a/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java
+++ b/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java
@@ -1,6 +1,5 @@
package moe.yuuta.dn42peering.agent.grpc;
-import io.vertx.core.CompositeFuture;
import io.vertx.core.Future;
import io.vertx.core.Vertx;
import io.vertx.core.impl.logging.Logger;
@@ -13,7 +12,6 @@ import moe.yuuta.dn42peering.agent.provision.Change;
import moe.yuuta.dn42peering.agent.provision.WireGuardProvisioner;
import javax.annotation.Nonnull;
-import java.util.ArrayList;
import java.util.List;
class AgentServiceImpl extends VertxAgentGrpc.AgentVertxImplBase {
@@ -43,16 +41,14 @@ class AgentServiceImpl extends VertxAgentGrpc.AgentVertxImplBase {
final BGPProvisioner bgpProvisioner = new BGPProvisioner(vertx);
final WireGuardProvisioner wireGuardProvisioner = new WireGuardProvisioner(vertx);
- final List<Future> execFutures = new ArrayList<>(2);
- execFutures.add(bgpProvisioner.calculateChanges(config.getNode(), config.getBgpsList())
- .compose(this::chainChanges));
- execFutures.add(wireGuardProvisioner.calculateChanges(config.getNode(), config.getWgsList())
- .compose(this::chainChanges));
-
+ // TODO: Currently all provisioning operations are non-fault-tolering. This means that
+ // TODO: if one operation fails, the following will fail. This may be changed in later.
// Changes in each provisioners are executed in sequence.
- // Two provisioners are executed in parallel.
- // We must wait all calculations done.
- return CompositeFuture.join(execFutures)
+ // Two provisioners are executed in sequence.
+ return bgpProvisioner.calculateChanges(config.getNode(), config.getBgpsList())
+ .compose(this::chainChanges)
+ .compose(_v -> wireGuardProvisioner.calculateChanges(config.getNode(), config.getWgsList())
+ .compose(this::chainChanges))
.onSuccess(res -> logger.info("Deployment finished. Detailed log can be traced above."))
.onFailure(err -> logger.error("Deployment failed. Detailed log can be traced above.", err))
.compose(compositeFuture -> Future.succeededFuture(null));