From: Robert Varga Date: Tue, 17 Aug 2021 22:57:08 +0000 (+0200) Subject: Rename NativeEosService to DataCenterControl X-Git-Tag: v4.0.2~9 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=55d8c678f2e25c8b9e78b3dad686de287b4ae5ea Rename NativeEosService to DataCenterControl This is a wee bit more descriptive name. While we are here, also ditch java.lang.Void, as it promotes nulls. Use yamg.common.Empty, which has a singleton instance. Fold common implementation code into a static method, which is making things very obvious. Change-Id: I28230523034224e978244d1edce997376812bf91 Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/AkkaEntityOwnershipService.java b/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/AkkaEntityOwnershipService.java index ffce30dafa..fdb8a4d02f 100644 --- a/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/AkkaEntityOwnershipService.java +++ b/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/AkkaEntityOwnershipService.java @@ -38,7 +38,6 @@ import org.opendaylight.controller.eos.akka.owner.checker.command.StateCheckerCo import org.opendaylight.controller.eos.akka.owner.supervisor.command.ActivateDataCenter; import org.opendaylight.controller.eos.akka.owner.supervisor.command.DeactivateDataCenter; import org.opendaylight.controller.eos.akka.owner.supervisor.command.OwnerSupervisorCommand; -import org.opendaylight.controller.eos.akka.owner.supervisor.command.OwnerSupervisorReply; import org.opendaylight.controller.eos.akka.registry.candidate.command.CandidateRegistryCommand; import org.opendaylight.controller.eos.akka.registry.candidate.command.RegisterCandidate; import org.opendaylight.controller.eos.akka.registry.candidate.command.UnregisterCandidate; @@ -52,6 +51,7 @@ import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipCandidateRegistratio import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipListener; import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipListenerRegistration; import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService; +import org.opendaylight.yangtools.yang.common.Empty; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; @@ -65,8 +65,8 @@ import org.slf4j.LoggerFactory; * the appropriate owners. */ @Singleton -@Component(immediate = true, service = { DOMEntityOwnershipService.class, NativeEosService.class }) -public class AkkaEntityOwnershipService implements DOMEntityOwnershipService, NativeEosService, AutoCloseable { +@Component(immediate = true, service = { DOMEntityOwnershipService.class, DataCenterControl.class }) +public class AkkaEntityOwnershipService implements DOMEntityOwnershipService, DataCenterControl, AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(AkkaEntityOwnershipService.class); private static final String DATACENTER_PREFIX = "dc"; private static final Duration DATACENTER_OP_TIMEOUT = Duration.ofSeconds(20); @@ -171,45 +171,18 @@ public class AkkaEntityOwnershipService implements DOMEntityOwnershipService, Na } @Override - public ListenableFuture activateDataCenter() { + public ListenableFuture activateDataCenter() { LOG.debug("Activating datacenter: {}", datacenter); - final SettableFuture future = SettableFuture.create(); - final CompletionStage ask = - AskPattern.ask(ownerSupervisor, ActivateDataCenter::new, DATACENTER_OP_TIMEOUT, scheduler); - ask.whenComplete((reply, failure) -> { - if (failure != null) { - LOG.warn("Activate DataCenter has failed.", failure); - future.setException(failure); - return; - } - - LOG.debug("Activate DataCenter successful."); - future.set(null); - }); - - return future; + return toListenableFuture("Activate", + AskPattern.ask(ownerSupervisor, ActivateDataCenter::new, DATACENTER_OP_TIMEOUT, scheduler)); } @Override - public ListenableFuture deactivateDataCenter() { + public ListenableFuture deactivateDataCenter() { LOG.debug("Deactivating datacenter: {}", datacenter); - final SettableFuture future = SettableFuture.create(); - final CompletionStage ask = - AskPattern.ask(ownerSupervisor, DeactivateDataCenter::new, DATACENTER_OP_TIMEOUT, scheduler); - - ask.whenComplete((reply, failure) -> { - if (failure != null) { - LOG.warn("Deactivate DataCenter has failed.", failure); - future.setException(failure); - return; - } - - LOG.debug("Deactivate DataCenter successful."); - future.set(null); - }); - - return future; + return toListenableFuture("Deactivate", + AskPattern.ask(ownerSupervisor, DeactivateDataCenter::new, DATACENTER_OP_TIMEOUT, scheduler)); } void unregisterCandidate(final DOMEntity entity) { @@ -230,4 +203,18 @@ public class AkkaEntityOwnershipService implements DOMEntityOwnershipService, Na RunningContext getRunningContext() { return runningContext; } + + private static ListenableFuture toListenableFuture(final String op, final CompletionStage stage) { + final SettableFuture future = SettableFuture.create(); + stage.whenComplete((reply, failure) -> { + if (failure != null) { + LOG.warn("{} DataCenter has failed", op, failure); + future.setException(failure); + } else { + LOG.debug("{} DataCenter successful", op); + future.set(Empty.getInstance()); + } + }); + return future; + } } diff --git a/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/NativeEosService.java b/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/DataCenterControl.java similarity index 82% rename from opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/NativeEosService.java rename to opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/DataCenterControl.java index 6445eba8cd..cb9cff97ad 100644 --- a/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/NativeEosService.java +++ b/opendaylight/md-sal/eos-dom-akka/src/main/java/org/opendaylight/controller/eos/akka/DataCenterControl.java @@ -9,6 +9,8 @@ package org.opendaylight.controller.eos.akka; import com.google.common.annotations.Beta; import com.google.common.util.concurrent.ListenableFuture; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yangtools.yang.common.Empty; /** * Service used to bring up/down the NativeEos service in individual datacenters. @@ -22,15 +24,16 @@ import com.google.common.util.concurrent.ListenableFuture; * datacenter or multiple datacenters. */ @Beta -public interface NativeEosService { - +public interface DataCenterControl { /** * Activates the native eos service in the datacenter that this method is called. */ - ListenableFuture activateDataCenter(); + @NonNull ListenableFuture activateDataCenter(); /** * Deactivates the native eos service in the datacenter that this method is called. + * + * @return Completion future */ - ListenableFuture deactivateDataCenter(); + @NonNull ListenableFuture deactivateDataCenter(); } diff --git a/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/ClusterAdminRpcService.java b/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/ClusterAdminRpcService.java index f11c60f561..e00d620d7c 100644 --- a/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/ClusterAdminRpcService.java +++ b/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/ClusterAdminRpcService.java @@ -54,7 +54,7 @@ import org.opendaylight.controller.cluster.datastore.persisted.DatastoreSnapshot import org.opendaylight.controller.cluster.datastore.persisted.DatastoreSnapshotList; import org.opendaylight.controller.cluster.datastore.utils.ActorUtils; import org.opendaylight.controller.cluster.raft.client.messages.GetSnapshot; -import org.opendaylight.controller.eos.akka.NativeEosService; +import org.opendaylight.controller.eos.akka.DataCenterControl; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ActivateEosDatacenterInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ActivateEosDatacenterOutput; @@ -135,12 +135,12 @@ public class ClusterAdminRpcService implements ClusterAdminService { private final DistributedDataStoreInterface operDataStore; private final BindingNormalizedNodeSerializer serializer; private final Timeout makeLeaderLocalTimeout; - private final NativeEosService nativeEosService; + private final DataCenterControl dataCenterControl; public ClusterAdminRpcService(final DistributedDataStoreInterface configDataStore, final DistributedDataStoreInterface operDataStore, final BindingNormalizedNodeSerializer serializer, - final NativeEosService nativeEosService) { + final DataCenterControl dataCenterControl) { this.configDataStore = configDataStore; this.operDataStore = operDataStore; this.serializer = serializer; @@ -149,7 +149,7 @@ public class ClusterAdminRpcService implements ClusterAdminService { new Timeout(configDataStore.getActorUtils().getDatastoreContext() .getShardLeaderElectionTimeout().duration().$times(2)); - this.nativeEosService = nativeEosService; + this.dataCenterControl = dataCenterControl; } @Override @@ -528,9 +528,9 @@ public class ClusterAdminRpcService implements ClusterAdminService { final ActivateEosDatacenterInput input) { LOG.debug("Activating EOS Datacenter"); final SettableFuture> future = SettableFuture.create(); - Futures.addCallback(nativeEosService.activateDataCenter(), new FutureCallback<>() { + Futures.addCallback(dataCenterControl.activateDataCenter(), new FutureCallback<>() { @Override - public void onSuccess(final Void result) { + public void onSuccess(final Empty result) { LOG.debug("Successfully activated datacenter."); future.set(RpcResultBuilder.success().build()); } @@ -550,9 +550,9 @@ public class ClusterAdminRpcService implements ClusterAdminService { final DeactivateEosDatacenterInput input) { LOG.debug("Deactivating EOS Datacenter"); final SettableFuture> future = SettableFuture.create(); - Futures.addCallback(nativeEosService.deactivateDataCenter(), new FutureCallback<>() { + Futures.addCallback(dataCenterControl.deactivateDataCenter(), new FutureCallback<>() { @Override - public void onSuccess(final Void result) { + public void onSuccess(final Empty result) { LOG.debug("Successfully deactivated datacenter."); future.set(RpcResultBuilder.success().build()); } diff --git a/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/OSGiClusterAdmin.java b/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/OSGiClusterAdmin.java index c0e944815e..82a669e166 100644 --- a/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/OSGiClusterAdmin.java +++ b/opendaylight/md-sal/sal-cluster-admin-impl/src/main/java/org/opendaylight/controller/cluster/datastore/admin/OSGiClusterAdmin.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.cluster.datastore.admin; import com.google.common.annotations.Beta; import org.opendaylight.controller.cluster.datastore.DistributedDataStoreInterface; -import org.opendaylight.controller.eos.akka.NativeEosService; +import org.opendaylight.controller.eos.akka.DataCenterControl; import org.opendaylight.mdsal.binding.api.RpcProviderService; import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ClusterAdminService; @@ -35,14 +35,14 @@ public final class OSGiClusterAdmin { @Reference RpcProviderService rpcProviderService = null; @Reference - NativeEosService nativeEosService = null; + DataCenterControl dataCenterControl = null; private ObjectRegistration reg; @Activate void activate() { reg = rpcProviderService.registerRpcImplementation(ClusterAdminService.class, - new ClusterAdminRpcService(configDatastore, operDatastore, serializer, nativeEosService)); + new ClusterAdminRpcService(configDatastore, operDatastore, serializer, dataCenterControl)); LOG.info("Cluster Admin services started"); }