* 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.utils;
-import akka.cluster.ddata.Key;
-import akka.cluster.ddata.ORMap;
-import akka.cluster.ddata.ORMapKey;
-import java.util.Map;
import org.opendaylight.controller.cluster.access.concepts.MemberName;
-import org.opendaylight.controller.cluster.datastore.config.PrefixShardConfiguration;
import org.opendaylight.controller.cluster.datastore.identifiers.ShardIdentifier;
import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Utils for encoding prefix shard name.
*/
-public class ClusterUtils {
+public final class ClusterUtils {
+ private static final Logger LOG = LoggerFactory.getLogger(ClusterUtils.class);
+
+ // id for the shard used to store prefix configuration
+ public static final String PREFIX_CONFIG_SHARD_ID = "prefix-configuration-shard";
+
+ public static final QName PREFIX_SHARDS_QNAME =
+ QName.create("urn:opendaylight:params:xml:ns:yang:controller:md:sal:clustering:prefix-shard-configuration",
+ "2017-01-10", "prefix-shards").intern();
+ public static final QName SHARD_LIST_QNAME =
+ QName.create(PREFIX_SHARDS_QNAME, "shard").intern();
+ public static final QName SHARD_PREFIX_QNAME =
+ QName.create(PREFIX_SHARDS_QNAME, "prefix").intern();
+ public static final QName SHARD_REPLICAS_QNAME =
+ QName.create(PREFIX_SHARDS_QNAME, "replicas").intern();
+ public static final QName SHARD_REPLICA_QNAME =
+ QName.create(PREFIX_SHARDS_QNAME, "replica").intern();
- // key for replicated configuration key
- public static final Key<ORMap<PrefixShardConfiguration>> CONFIGURATION_KEY =
- ORMapKey.create("prefix-shard-configuration");
+ public static final YangInstanceIdentifier PREFIX_SHARDS_PATH =
+ YangInstanceIdentifier.of(PREFIX_SHARDS_QNAME).toOptimized();
+ public static final YangInstanceIdentifier SHARD_LIST_PATH =
+ PREFIX_SHARDS_PATH.node(SHARD_LIST_QNAME).toOptimized();
+
+ private ClusterUtils() {
+ }
public static ShardIdentifier getShardIdentifier(final MemberName memberName, final DOMDataTreeIdentifier prefix) {
final String type;
break;
default:
type = prefix.getDatastoreType().name();
+ LOG.warn("Unknown data store type {}", type);
}
return ShardIdentifier.create(getCleanShardName(prefix.getRootIdentifier()), memberName, type);
builder.append(p.getNodeType().getLocalName());
if (p instanceof NodeIdentifierWithPredicates) {
builder.append("-key_");
- final Map<QName, Object> key = ((NodeIdentifierWithPredicates) p).getKeyValues();
- key.entrySet().forEach(e -> {
- builder.append(e.getKey().getLocalName());
- builder.append(e.getValue());
- builder.append("-");
+ ((NodeIdentifierWithPredicates) p).entrySet().forEach(entry -> {
+ builder.append(entry.getKey().getLocalName()).append(entry.getValue()).append('-');
});
- builder.append("_");
+ builder.append('_');
}
- builder.append("!");
+ builder.append('!');
});
return builder.toString();
}