BUG-7965 Switch distributed-data backend to a separate shard
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / utils / ClusterUtils.java
index 607e78c9d4e2a857651adca5e9dac4888c4a884a..2fb9cf1cda0663db408e740f6ff94e66e621e307 100644 (file)
@@ -8,30 +8,41 @@
 
 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.controller.md.sal.common.api.data.LogicalDatastoreType;
 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 {
+    private static final Logger LOG = LoggerFactory.getLogger(ClusterUtils.class);
 
-    // key for replicated configuration key
-    public static final Key<ORMap<PrefixShardConfiguration>> CONFIGURATION_KEY =
-            ORMapKey.create("prefix-shard-configuration-config");
+    // id for the shard used to store prefix configuration
+    public static final String PREFIX_CONFIG_SHARD_ID = "prefix-configuration-shard";
 
-    public static final Key<ORMap<PrefixShardConfiguration>> OPERATIONAL_KEY =
-            ORMapKey.create("prefix-shard-configuration-oper");
+    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();
+
+    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();
 
     public static ShardIdentifier getShardIdentifier(final MemberName memberName, final DOMDataTreeIdentifier prefix) {
         final String type;
@@ -44,6 +55,7 @@ public class ClusterUtils {
                 break;
             default:
                 type = prefix.getDatastoreType().name();
+                LOG.warn("Unknown data store type {}", type);
         }
 
         return ShardIdentifier.create(getCleanShardName(prefix.getRootIdentifier()), memberName, type);
@@ -80,17 +92,4 @@ public class ClusterUtils {
         });
         return builder.toString();
     }
-
-    public static Key<ORMap<PrefixShardConfiguration>> getReplicatorKey(LogicalDatastoreType type) {
-        if (LogicalDatastoreType.CONFIGURATION.equals(type)) {
-            return CONFIGURATION_KEY;
-        } else {
-            return OPERATIONAL_KEY;
-        }
-    }
-
-    public static org.opendaylight.mdsal.common.api.LogicalDatastoreType toMDSalApi(
-            final LogicalDatastoreType logicalDatastoreType) {
-        return org.opendaylight.mdsal.common.api.LogicalDatastoreType.valueOf(logicalDatastoreType.name());
-    }
 }