Support a inmemory p0 partition encompassing all nodes in the cluster. This will be used by leadership manager and other usecases
that need strong consistency for coordination and not durable storage

Change-Id: I8e590e46d82a3d43cae3157a04be820bb7e1b175
diff --git a/core/api/src/main/java/org/onosproject/store/service/ConsistentMap.java b/core/api/src/main/java/org/onosproject/store/service/ConsistentMap.java
index e0ed4bc..6d19259 100644
--- a/core/api/src/main/java/org/onosproject/store/service/ConsistentMap.java
+++ b/core/api/src/main/java/org/onosproject/store/service/ConsistentMap.java
@@ -17,8 +17,8 @@
 package org.onosproject.store.service;
 
 import java.util.Collection;
-import java.util.Set;
 import java.util.Map.Entry;
+import java.util.Set;
 
 /**
  * A distributed, strongly consistent map.
diff --git a/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java b/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java
new file mode 100644
index 0000000..6a02f34
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/store/service/ConsistentMapBuilder.java
@@ -0,0 +1,75 @@
+package org.onosproject.store.service;
+
+
+/**
+ * Builder for consistent maps.
+ *
+ * @param <K> type for map key
+ * @param <V> type for map value
+ */
+public interface ConsistentMapBuilder<K, V> {
+
+    /**
+     * Sets the name of the map.
+     * <p>
+     * Each consistent map is identified by a unique map name.
+     * </p>
+     * <p>
+     * Note: This is a mandatory parameter.
+     * </p>
+     *
+     * @param name name of the consistent map
+     * @return this ConsistentMapBuilder
+     */
+    public ConsistentMapBuilder<K, V> withName(String name);
+
+    /**
+     * Sets a serializer that can be used to serialize
+     * both the keys and values inserted into the map. The serializer
+     * builder should be pre-populated with any classes that will be
+     * put into the map.
+     * <p>
+     * Note: This is a mandatory parameter.
+     * </p>
+     *
+     * @param serializer serializer
+     * @return this ConsistentMapBuilder
+     */
+    public ConsistentMapBuilder<K, V> withSerializer(Serializer serializer);
+
+    /**
+     * Disables distribution of map entries across multiple database partitions.
+     * <p>
+     * When partitioning is disabled, the returned map will have a single partition
+     * that spans the entire cluster. Furthermore, the changes made to the map are
+     * ephemeral and do not survive a full cluster restart.
+     * </p>
+     * <p>
+     * Disabling partitions is more appropriate when the returned map is used for
+     * coordination activities such as leader election and not for long term data persistence.
+     * </p>
+     * <p>
+     * Note: By default partitions are enabled and entries in the map are durable.
+     * </p>
+     * @return this ConsistentMapBuilder
+     */
+    public ConsistentMapBuilder<K, V> withPartitionsDisabled();
+
+    /**
+     * Builds an consistent map based on the configuration options
+     * supplied to this builder.
+     *
+     * @return new consistent map
+     * @throws java.lang.RuntimeException if a mandatory parameter is missing
+     */
+    public ConsistentMap<K, V> build();
+
+    /**
+     * Builds an async consistent map based on the configuration options
+     * supplied to this builder.
+     *
+     * @return new async consistent map
+     * @throws java.lang.RuntimeException if a mandatory parameter is missing
+     */
+    public AsyncConsistentMap<K, V> buildAsyncMap();
+}
\ No newline at end of file
diff --git a/core/api/src/main/java/org/onosproject/store/service/StorageService.java b/core/api/src/main/java/org/onosproject/store/service/StorageService.java
index a59e376..c8a394d 100644
--- a/core/api/src/main/java/org/onosproject/store/service/StorageService.java
+++ b/core/api/src/main/java/org/onosproject/store/service/StorageService.java
@@ -29,28 +29,6 @@
 public interface StorageService {
 
     /**
-     * Creates a ConsistentMap.
-     *
-     * @param name map name
-     * @param serializer serializer to use for serializing keys and values
-     * @return consistent map.
-     * @param <K> key type
-     * @param <V> value type
-     */
-    <K, V> ConsistentMap<K , V> createConsistentMap(String name, Serializer serializer);
-
-    /**
-     * Creates a AsyncConsistentMap.
-     *
-     * @param name map name
-     * @param serializer serializer to use for serializing keys and values
-     * @return async consistent map
-     * @param <K> key type
-     * @param <V> value type
-     */
-    <K, V> AsyncConsistentMap<K , V> createAsyncConsistentMap(String name, Serializer serializer);
-
-    /**
      * Creates a new transaction context.
      *
      * @return transaction context
@@ -66,4 +44,12 @@
      */
     <K, V> EventuallyConsistentMapBuilder<K, V> eventuallyConsistentMapBuilder();
 
-}
+    /**
+     * Creates a new EventuallyConsistentMapBuilder.
+     *
+     * @param <K> key type
+     * @param <V> value type
+     * @return builder for an eventually consistent map
+     */
+    <K, V> ConsistentMapBuilder<K, V> consistentMapBuilder();
+}
\ No newline at end of file