[ONOS-6497] Add globally unique numeric ID generator primitive

Change-Id: Ic2d9214cfa885344694b8ba4250054dd6a33144e
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 e034e57..0e69423 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
@@ -92,6 +92,13 @@
     AtomicCounterBuilder atomicCounterBuilder();
 
     /**
+     * Creates a new AtomicIdGeneratorBuilder.
+     *
+     * @return atomic ID generator builder
+     */
+    AtomicIdGeneratorBuilder atomicIdGeneratorBuilder();
+
+    /**
      * Creates a new AtomicValueBuilder.
      *
      * @param <V> atomic value type
@@ -124,6 +131,16 @@
     }
 
     /**
+     * Returns an instance of {@code AsyncAtomicIdGenerator} with specified name.
+     *
+     * @param name ID generator name
+     * @return AsyncAtomicIdGenerator instance
+     */
+    default AsyncAtomicIdGenerator getAsyncAtomicIdGenerator(String name) {
+        return atomicIdGeneratorBuilder().withName(name).build();
+    }
+
+    /**
      * Returns an instance of {@code AtomicCounter} with specified name.
      * @param name counter name
      *
@@ -134,6 +151,16 @@
     }
 
     /**
+     * Returns an instance of {@code AtomicIdGenerator} with specified name.
+     *
+     * @param name ID generator name
+     * @return AtomicIdGenerator instance
+     */
+    default AtomicIdGenerator getAtomicIdGenerator(String name) {
+        return getAsyncAtomicIdGenerator(name).asAtomicIdGenerator();
+    }
+
+    /**
      * Returns an instance of {@code WorkQueue} with specified name.
      *
      * @param <E> work element type