BUG 9166 - Fix Netvirt L2GW Illegal state exception 43/63243/2
authorVictor Pickard <vpickard@redhat.com>
Mon, 18 Sep 2017 20:03:33 +0000 (16:03 -0400)
committerVictor Pickard <vpickard@redhat.com>
Mon, 18 Sep 2017 20:07:31 +0000 (16:07 -0400)
Fix exception and modify logic for comparing OVSDB
Hardware_vtep database version retrived from device
to min version specified.

Change-Id: I0b882b4a4883af80a3ea01224781e781eaefac1a
Signed-off-by: Victor Pickard <vpickard@redhat.com>
utils/southbound-utils/src/main/java/org/opendaylight/ovsdb/utils/southbound/utils/SouthboundUtils.java

index c93a2df6296dfb21d76a8fa5f7e12994682fb550..77bacdc2b8f2060497a16c53d1d4fcd136c4fad0 100644 (file)
@@ -1228,14 +1228,41 @@ public class SouthboundUtils {
     public static boolean compareDbVersionToMinVersion(final String dbVersion, final String minVersion) {
         final Matcher dbVersionMatcher = PATTERN.matcher(dbVersion);
         final Matcher minVersionMatcher = PATTERN.matcher(minVersion);
+        LOG.debug("dbVersion {}, minVersion {}", dbVersion, minVersion);
+        if (!dbVersionMatcher.find()){
+            LOG.error("Invalid DB version format {}", dbVersion);
+            return false;
+        }
+        if (!minVersionMatcher.find()){
+            LOG.error("Invalid Min DB version format {}", minVersion);
+            return false;
+        }
+
         if (dbVersion != null && !dbVersion.isEmpty() && minVersion != null
                 && !minVersion.isEmpty()) {
-            if ((Integer.valueOf(dbVersionMatcher.group(1)).equals(Integer.valueOf(minVersionMatcher.group(1))) &&
-                    Integer.valueOf(dbVersionMatcher.group(2)).equals(Integer.valueOf(minVersionMatcher.group(2))) &&
-                    Integer.valueOf(dbVersionMatcher.group(3)).equals(Integer.valueOf(minVersionMatcher.group(3)))) ||
-                    Integer.valueOf(dbVersionMatcher.group(1)).intValue() > Integer.valueOf(minVersionMatcher.group(1)).intValue() ||
-                    Integer.valueOf(dbVersionMatcher.group(2)).intValue() >= Integer.valueOf(minVersionMatcher.group(2)).intValue() ||
-                    Integer.valueOf(dbVersionMatcher.group(3)).intValue() >= Integer.valueOf(minVersionMatcher.group(3)).intValue()) {
+            if (Integer.valueOf(dbVersionMatcher.group(1)).equals(Integer.valueOf(minVersionMatcher.group(1))) &&
+                   Integer.valueOf(dbVersionMatcher.group(2)).equals(Integer.valueOf(minVersionMatcher.group(2))) &&
+                   Integer.valueOf(dbVersionMatcher.group(3)).equals(Integer.valueOf(minVersionMatcher.group(3)))) {
+                return true;
+            }
+
+            if (Integer.valueOf(dbVersionMatcher.group(1)).intValue() > Integer.valueOf(minVersionMatcher.group(1)).intValue()) {
+                return true;
+            }
+
+            if (Integer.valueOf(dbVersionMatcher.group(1)).intValue() < Integer.valueOf(minVersionMatcher.group(1)).intValue()) {
+                return false;
+            }
+
+            // major version is equal
+            if (Integer.valueOf(dbVersionMatcher.group(2)).intValue() > Integer.valueOf(minVersionMatcher.group(2)).intValue()) {
+                return true;
+            }
+            if (Integer.valueOf(dbVersionMatcher.group(2)).intValue() < Integer.valueOf(minVersionMatcher.group(2)).intValue()) {
+                return false;
+            }
+
+           if (Integer.valueOf(dbVersionMatcher.group(3)).intValue() > Integer.valueOf(minVersionMatcher.group(3)).intValue()) {
                 return true;
             }
         }