Add support for choosing segmentation id
[unimgr.git] / netvirt / src / main / java / org / opendaylight / unimgr / mef / netvirt / NetvirtUtils.java
index 71e26d3a92879c248c12103bb43f34b913cf5da7..c86c8b52d1b6b9121df11b928646c5c30d9e46c9 100644 (file)
@@ -49,8 +49,8 @@ public class NetvirtUtils {
     private static final Logger logger = LoggerFactory.getLogger(NetvirtUtils.class);
     private static final long DEFAULT_MAC_TIMEOUT = 300;
 
-    public static void createElanInstance(DataBroker dataBroker, String instanceName, boolean isEtree) {
-        ElanInstanceBuilder einstBuilder = createElanInstance(instanceName);
+    public static void createElanInstance(DataBroker dataBroker, String instanceName, boolean isEtree, Long segmentationId) {
+        ElanInstanceBuilder einstBuilder = createElanInstance(instanceName, segmentationId);
 
         if (isEtree) {
             EtreeInstance etreeInstance = new EtreeInstanceBuilder().build();
@@ -74,6 +74,13 @@ public class NetvirtUtils {
                 einstBuilder.build());
     }
 
+    public static void updateElanInstance(String instanceName, WriteTransaction tx, Long segmentationId) {
+        ElanInstanceBuilder einstBuilder = createElanInstance(instanceName, segmentationId);
+
+        tx.merge(LogicalDatastoreType.CONFIGURATION, getElanInstanceInstanceIdentifier(instanceName),
+                einstBuilder.build());
+    }
+
     public static void updateElanInterface(DataBroker dataBroker, String instanceName, String interfaceName) {
         ElanInterfaceBuilder einterfaceBuilder = createElanInterface(instanceName, interfaceName);
 
@@ -123,11 +130,15 @@ public class NetvirtUtils {
     }
 
     private static ElanInstanceBuilder createElanInstance(String instanceName) {
+        return createElanInstance(instanceName, Long.valueOf(Math.abs((short) instanceName.hashCode())));
+    }
+
+    private static ElanInstanceBuilder createElanInstance(String instanceName, Long segmentationId) {
         ElanInstanceBuilder einstBuilder = new ElanInstanceBuilder();
         einstBuilder.setElanInstanceName(instanceName);
         einstBuilder.setKey(new ElanInstanceKey(instanceName));
         einstBuilder.setMacTimeout(DEFAULT_MAC_TIMEOUT);
-        einstBuilder.setSegmentationId(Long.valueOf(Math.abs((short) instanceName.hashCode())));
+        einstBuilder.setSegmentationId(segmentationId);
         einstBuilder.setSegmentType(SegmentTypeVxlan.class);
         return einstBuilder;
     }