Fix: guarantee to referring to the correct openstack node state

Change-Id: I73265ba744ea5ec8e5e0e3e8f36735ae1d1ac952
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/web/OpenstackManagementWebResource.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/web/OpenstackManagementWebResource.java
index ddb130f..3af0eca 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/web/OpenstackManagementWebResource.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/web/OpenstackManagementWebResource.java
@@ -52,6 +52,7 @@
 import java.util.Objects;
 import java.util.Optional;
 
+import static java.lang.Thread.sleep;
 import static org.onlab.util.Tools.nullIsIllegal;
 import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.addRouterIface;
 import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.checkArpMode;
@@ -68,7 +69,7 @@
     private static final String FLOATINGIPS = "floatingips";
     private static final String ARP_MODE_NAME = "arpMode";
 
-    private static final long TIMEOUT_MS = 10000; // we wait 10s for init each node
+    private static final long SLEEP_MS = 3000; // we wait 3s for init each node
 
     private static final String DEVICE_OWNER_IFACE = "network:router_interface";
 
@@ -299,19 +300,16 @@
             OpenstackNode updated = osNode.updateState(NodeState.INIT);
             osNodeAdminService.updateNode(updated);
 
-            long timeoutExpiredMs = System.currentTimeMillis() + TIMEOUT_MS;
-            while (updated.state() != NodeState.COMPLETE) {
-                long  waitMs = timeoutExpiredMs - System.currentTimeMillis();
+            try {
+                sleep(SLEEP_MS);
+            } catch (InterruptedException e) {
+                log.error("Exception caused during node synchronization...");
+            }
 
-                if (updated.state() == NodeState.COMPLETE) {
-                    log.info("Finished sync rules for node {}", updated.hostname());
-                    break;
-                }
-
-                if (waitMs <= 0) {
-                    log.warn("Failed to sync rules for node {}", updated.hostname());
-                    break;
-                }
+            if (osNodeService.node(osNode.hostname()).state() == NodeState.COMPLETE) {
+                log.info("Finished sync rules for node {}", osNode.hostname());
+            } else {
+                log.info("Failed to sync rules for node {}", osNode.hostname());
             }
         });
     }