Bug 8960: port information for 1 dpn is missing in subnet-op-data and
[netvirt.git] / vpnservice / neutronvpn / neutronvpn-api / src / main / java / org / opendaylight / netvirt / neutronvpn / api / utils / NeutronUtils.java
index 2185ecb6933c98b3bca59e6d71537472650d594e..ff37f52c3bf74882b8ddf4f2738f4c2b1a959632 100644 (file)
@@ -8,8 +8,10 @@
 
 package org.opendaylight.netvirt.neutronvpn.api.utils;
 
+import com.google.common.base.Preconditions;
 import java.util.List;
 import java.util.Objects;
+import java.util.regex.Pattern;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -39,6 +41,7 @@ public class NeutronUtils {
     public static final String PORT_STATUS_DOWN = "DOWN";
     public static final String PORT_STATUS_ERROR = "ERROR";
     public static final String PORT_STATUS_NOTAPPLICABLE = "N/A";
+    private static Pattern uuidPattern;
 
     /**
      * Create a Neutron Port status entry in the operational data store.
@@ -191,5 +194,22 @@ public class NeutronUtils {
         return segmentationId;
     }
 
+    public static boolean isUuid(String possibleUuid) {
+        Preconditions.checkNotNull(possibleUuid, "possibleUuid == null");
+
+        if (uuidPattern == null) {
+            // Thread safe because it really doesn't matter even if we were to do this initialization more than once
+            if (Uuid.PATTERN_CONSTANTS.size() != 1) {
+                throw new IllegalStateException("Uuid.PATTERN_CONSTANTS.size() != 1");
+            }
+            uuidPattern = Pattern.compile(Uuid.PATTERN_CONSTANTS.get(0));
+        }
+
+        if (uuidPattern.matcher(possibleUuid).matches()) {
+            return Boolean.TRUE;
+        } else {
+            return Boolean.FALSE;
+        }
+    }
 
 }