Added a method to Configuration to get all unique members names
configured for all shards.
Change-Id: I09993541ad7e5963e9eef9cb58b4376daa8f09e8
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
(cherry picked from commit
c3ba770fd6e9ba6e6227717bdba11ccc9f468f05)
package org.opendaylight.controller.cluster.datastore;
import com.google.common.base.Optional;
package org.opendaylight.controller.cluster.datastore;
import com.google.common.base.Optional;
-import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy;
-
+import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy;
public interface Configuration {
public interface Configuration {
* @return
*/
Set<String> getAllShardNames();
* @return
*/
Set<String> getAllShardNames();
+
+ /**
+ * Returns a unique set of all member names configured for all shards.
+ */
+ Collection<String> getUniqueMemberNamesForAllShards();
import com.typesafe.config.ConfigObject;
import java.io.File;
import java.util.ArrayList;
import com.typesafe.config.ConfigObject;
import java.io.File;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.List;
import java.util.Map;
import java.util.Set;
+ @Override
+ public Collection<String> getUniqueMemberNamesForAllShards() {
+ Set<String> allNames = new HashSet<>();
+ for(String shardName: allShardNames) {
+ allNames.addAll(getMembersFromShardName(shardName));
+ }
+
+ return allNames;
+ }
+
private List<Module> readModules(final Config modulesConfig) {
List<? extends ConfigObject> modulesConfigObjectList =
modulesConfig.getObjectList("modules");
private List<Module> readModules(final Config modulesConfig) {
List<? extends ConfigObject> modulesConfigObjectList =
modulesConfig.getObjectList("modules");
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import com.google.common.collect.Sets;
import com.typesafe.config.ConfigFactory;
import java.io.File;
import java.util.List;
import com.typesafe.config.ConfigFactory;
import java.io.File;
import java.util.List;
assertTrue(allShardNames.contains("cars-1"));
assertTrue(allShardNames.contains("test-1"));
}
assertTrue(allShardNames.contains("cars-1"));
assertTrue(allShardNames.contains("test-1"));
}
+
+ @Test
+ public void testGetUniqueMemberNamesForAllShards() {
+ assertEquals("getUniqueMemberNamesForAllShards", Sets.newHashSet("member-1", "member-2", "member-3"),
+ configuration.getUniqueMemberNamesForAllShards());
+ }
import com.google.common.collect.ImmutableMap;
import java.util.ArrayList;
import java.util.Arrays;
import com.google.common.collect.ImmutableMap;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Override public Set<String> getAllShardNames() {
return Collections.emptySet();
}
@Override public Set<String> getAllShardNames() {
return Collections.emptySet();
}
+
+ @Override
+ public Collection<String> getUniqueMemberNamesForAllShards() {
+ Set<String> allNames = new HashSet<>();
+ for(List<String> l: shardMembers.values()) {
+ allNames.addAll(l);
+ }
+
+ return allNames;
+ }