X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fjmx%2Fmbeans%2Fshardmanager%2FShardManagerInfo.java;h=94bf67557be278d1510a54457967c177fffe82d5;hp=79beae72a339acac1438d652c16b8b3cd8512e55;hb=b34452ce75563e360ae1d02a9f2aa6223d6208c3;hpb=4e186d6e4a9c84482dc74aee353e12a12f6728a7 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shardmanager/ShardManagerInfo.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shardmanager/ShardManagerInfo.java index 79beae72a3..94bf67557b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shardmanager/ShardManagerInfo.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shardmanager/ShardManagerInfo.java @@ -18,6 +18,12 @@ import org.opendaylight.controller.cluster.raft.RaftState; import org.opendaylight.controller.md.sal.common.util.jmx.AbstractMXBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.opendaylight.controller.cluster.datastore.messages.AddShardReplica; +import org.opendaylight.controller.cluster.datastore.messages.RemoveShardReplica; +import akka.pattern.Patterns; +import akka.util.Timeout; +import java.util.concurrent.TimeUnit; +import scala.concurrent.Await; public class ShardManagerInfo extends AbstractMXBean implements ShardManagerInfoMBean { @@ -96,4 +102,38 @@ public class ShardManagerInfo extends AbstractMXBean implements ShardManagerInfo public void setShardManager(ShardManager shardManager){ this.shardManager = shardManager; } + + @Override + public void setAddShardReplica (String shardName) { + LOG.info ("addShardReplica initiated for shard {}", shardName); + + // TODO addTimeout to be made configurable + Timeout addTimeOut = new Timeout(1, TimeUnit.MINUTES); + try { + Await.result(Patterns.ask(shardManager.getSelf(), + new AddShardReplica(shardName), addTimeOut), + addTimeOut.duration()); + } catch (Exception ex) { + LOG.debug ("Obtained an exception during addShardReplica", ex); + throw (new RuntimeException(ex.getMessage())); + } + return; + } + + @Override + public void setRemoveShardReplica (String shardName) { + LOG.info ("removeShardReplica initiated for shard {}", shardName); + + // TODO remTimeOut to be made configurable + Timeout remTimeOut = new Timeout(30, TimeUnit.SECONDS); + try { + Await.result(Patterns.ask(shardManager.getSelf(), + new RemoveShardReplica(shardName), remTimeOut), + remTimeOut.duration()); + } catch (Exception ex) { + LOG.debug ("Obtained an exception during removeShardReplica", ex); + throw (new RuntimeException(ex.getMessage())); + } + return; + } }