aboutsummaryrefslogtreecommitdiff
path: root/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java')
-rw-r--r--agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java42
1 files changed, 7 insertions, 35 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 1e91020..3ceb9fb 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
@@ -4,16 +4,13 @@ import io.vertx.core.Future;
import io.vertx.core.Vertx;
import io.vertx.core.impl.logging.Logger;
import io.vertx.core.impl.logging.LoggerFactory;
+import moe.yuuta.dn42peering.agent.Deploy;
+import moe.yuuta.dn42peering.agent.Persistent;
import moe.yuuta.dn42peering.agent.proto.DeployResult;
import moe.yuuta.dn42peering.agent.proto.NodeConfig;
import moe.yuuta.dn42peering.agent.proto.VertxAgentGrpc;
-import moe.yuuta.dn42peering.agent.provision.BGPProvisioner;
-import moe.yuuta.dn42peering.agent.provision.Change;
-import moe.yuuta.dn42peering.agent.provision.WireGuardCleanupProvisioner;
-import moe.yuuta.dn42peering.agent.provision.WireGuardProvisioner;
import javax.annotation.Nonnull;
-import java.util.List;
class AgentServiceImpl extends VertxAgentGrpc.AgentVertxImplBase {
private final Logger logger = LoggerFactory.getLogger(getClass().getSimpleName());
@@ -24,37 +21,12 @@ class AgentServiceImpl extends VertxAgentGrpc.AgentVertxImplBase {
this.vertx = vertx;
}
- private Future<Void> chainChanges(@Nonnull List<Change> changes) {
- if(changes.isEmpty()) {
- return Future.succeededFuture();
- }
- Future<Void> last = changes.get(0).execute(vertx);
- for (int i = 1; i < changes.size(); i ++) {
- final Change current = changes.get(i);
- last = last.compose(_v -> current.execute(vertx));
- }
- return last;
- }
-
@Override
public Future<DeployResult> deploy(NodeConfig config) {
- logger.info("Deployment started");
- final BGPProvisioner bgpProvisioner = new BGPProvisioner(vertx);
- final WireGuardProvisioner wireGuardProvisioner = new WireGuardProvisioner(vertx);
- final WireGuardCleanupProvisioner wireGuardCleanupProvisioner = new WireGuardCleanupProvisioner(vertx);
-
- // 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 sequence.
- return wireGuardProvisioner.calculateChanges(config.getNode(), config.getWgsList())
- .compose(this::chainChanges)
- .compose(_v -> bgpProvisioner.calculateChanges(config.getNode(), config.getBgpsList())
- .compose(this::chainChanges))
- .compose(_v -> wireGuardCleanupProvisioner.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));
+ return Deploy.deploy(vertx, config)
+ .compose(_v -> Future.future(f -> {
+ Persistent.persistent(vertx, config)
+ .onComplete(res -> f.complete(_v)); // Ignore errors
+ }));
}
}