X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-cluster-admin-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fadmin%2FClusterAdminRpcService.java;h=f11c60f5615d850d48908a898dac41c9b274044f;hb=refs%2Fchanges%2F81%2F95981%2F14;hp=cc1152bb8435d35395c62456d206bb33b7c1874f;hpb=dcc776a5e749d495a66e8753e123a1ddbd15d9c6;p=controller.git 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 cc1152bb84..f11c60f561 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,10 @@ 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.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; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.AddReplicasForAllShardsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.AddReplicasForAllShardsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.AddReplicasForAllShardsOutputBuilder; @@ -72,6 +75,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controll import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ChangeMemberVotingStatesForShardOutputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.ClusterAdminService; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.DataStoreType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.DeactivateEosDatacenterInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.DeactivateEosDatacenterOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.FlipMemberVotingStatesForAllShardsInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.FlipMemberVotingStatesForAllShardsOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.cluster.admin.rev151013.FlipMemberVotingStatesForAllShardsOutputBuilder; @@ -130,10 +135,12 @@ public class ClusterAdminRpcService implements ClusterAdminService { private final DistributedDataStoreInterface operDataStore; private final BindingNormalizedNodeSerializer serializer; private final Timeout makeLeaderLocalTimeout; + private final NativeEosService nativeEosService; public ClusterAdminRpcService(final DistributedDataStoreInterface configDataStore, - final DistributedDataStoreInterface operDataStore, - final BindingNormalizedNodeSerializer serializer) { + final DistributedDataStoreInterface operDataStore, + final BindingNormalizedNodeSerializer serializer, + final NativeEosService nativeEosService) { this.configDataStore = configDataStore; this.operDataStore = operDataStore; this.serializer = serializer; @@ -141,6 +148,8 @@ public class ClusterAdminRpcService implements ClusterAdminService { this.makeLeaderLocalTimeout = new Timeout(configDataStore.getActorUtils().getDatastoreContext() .getShardLeaderElectionTimeout().duration().$times(2)); + + this.nativeEosService = nativeEosService; } @Override @@ -514,6 +523,50 @@ public class ClusterAdminRpcService implements ClusterAdminService { MoreExecutors.directExecutor()); } + @Override + public ListenableFuture> activateEosDatacenter( + final ActivateEosDatacenterInput input) { + LOG.debug("Activating EOS Datacenter"); + final SettableFuture> future = SettableFuture.create(); + Futures.addCallback(nativeEosService.activateDataCenter(), new FutureCallback<>() { + @Override + public void onSuccess(final Void result) { + LOG.debug("Successfully activated datacenter."); + future.set(RpcResultBuilder.success().build()); + } + + @Override + public void onFailure(final Throwable failure) { + future.set(ClusterAdminRpcService.newFailedRpcResultBuilder( + "Failed to activate datacenter.", failure).build()); + } + }, MoreExecutors.directExecutor()); + + return future; + } + + @Override + public ListenableFuture> deactivateEosDatacenter( + final DeactivateEosDatacenterInput input) { + LOG.debug("Deactivating EOS Datacenter"); + final SettableFuture> future = SettableFuture.create(); + Futures.addCallback(nativeEosService.deactivateDataCenter(), new FutureCallback<>() { + @Override + public void onSuccess(final Void result) { + LOG.debug("Successfully deactivated datacenter."); + future.set(RpcResultBuilder.success().build()); + } + + @Override + public void onFailure(final Throwable failure) { + future.set(ClusterAdminRpcService.newFailedRpcResultBuilder( + "Failed to deactivate datacenter.", failure).build()); + } + }, MoreExecutors.directExecutor()); + + return future; + } + private static RpcResult processReplies( final ImmutableMap> allShardReplies) { final Map result = Maps.newHashMapWithExpectedSize(allShardReplies.size());