X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fconfig%2FConfiguration.java;h=a2e19579534a844c4b7cea5ee27e03a657582009;hb=4b59df006c79ffb8119152e5a8bc6aadd276c031;hp=21801c0102912f95fd6e3b29617c29cd86304c11;hpb=5273c33b6f2051a7e3b1afcc4eeae4e457b6f26c;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/Configuration.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/Configuration.java index 21801c0102..a2e1957953 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/Configuration.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/Configuration.java @@ -5,41 +5,48 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.cluster.datastore.config; import java.util.Collection; +import java.util.Map; import java.util.Set; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; +import org.opendaylight.controller.cluster.access.concepts.MemberName; import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy; +import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; public interface Configuration { /** * Returns all the shard names that belong on the member by the given name. */ - @Nonnull Collection getMemberShardNames(@Nonnull String memberName); + @NonNull Collection getMemberShardNames(@NonNull MemberName memberName); /** - * Returns the namespace for the given module name or null if not found. + * Returns the module name for the given namespace name or null if not found. */ - @Nullable String getModuleNameFromNameSpace(@Nonnull String nameSpace); + @Nullable String getModuleNameFromNameSpace(@NonNull String nameSpace); /** * Returns the first shard name corresponding to the given module name or null if none is configured. */ - @Nullable String getShardNameForModule(@Nonnull String moduleName); + @Nullable String getShardNameForModule(@NonNull String moduleName); + + /** + * Return the shard name corresponding to the prefix, or null if none is configured. + */ + @Nullable String getShardNameForPrefix(@NonNull DOMDataTreeIdentifier prefix); /** * Returns the member replicas for the given shard name. */ - @Nonnull Collection getMembersFromShardName(@Nonnull String shardName); + @NonNull Collection getMembersFromShardName(@NonNull String shardName); /** * Returns the ShardStrategy for the given module name or null if the module is not found. */ - @Nullable ShardStrategy getStrategyForModule(@Nonnull String moduleName); + @Nullable ShardStrategy getStrategyForModule(@NonNull String moduleName); /** * Returns all the configured shard names. @@ -49,10 +56,47 @@ public interface Configuration { /** * Adds a new configuration for a module and shard. */ - void addModuleShardConfiguration(@Nonnull ModuleShardConfiguration config); + void addModuleShardConfiguration(@NonNull ModuleShardConfiguration config); + + /** + * Adds a new configuration for a shard based on prefix. + */ + void addPrefixShardConfiguration(@NonNull PrefixShardConfiguration config); + + /** + * Removes a shard configuration for the specified prefix. + */ + void removePrefixShardConfiguration(@NonNull DOMDataTreeIdentifier prefix); + + /** + * Returns the configuration for all configured prefix shards. + * + * @return An immutable copy of the currently configured prefix shards. + */ + Map getAllPrefixShardConfigurations(); /** * Returns a unique set of all member names configured for all shards. */ - Collection getUniqueMemberNamesForAllShards(); + Collection getUniqueMemberNamesForAllShards(); + + /* + * Verifies if the given module shard in available in the cluster + */ + boolean isShardConfigured(String shardName); + + /** + * Adds the given member as the new replica for the given shardName. + */ + void addMemberReplicaForShard(String shardName, MemberName memberName); + + /** + * Removes the given member as a replica for the given shardName. + */ + void removeMemberReplicaForShard(String shardName, MemberName memberName); + + /** + * Returns the ShardStrategy for the given prefix or null if the prefix is not found. + */ + @Nullable ShardStrategy getStrategyForPrefix(@NonNull DOMDataTreeIdentifier prefix); }