CLI: fix old versions port getting 44/164144/4
authorAlexander Aksenov <a.aksenov@samsung.com>
Fri, 15 Dec 2017 13:24:50 +0000 (16:24 +0300)
committerAlexander Aksenov <a.aksenov@samsung.com>
Mon, 18 Dec 2017 11:56:29 +0000 (14:56 +0300)
Change-Id: I73847c8807742922af73fea9b838fc88ba5da611
Signed-off-by: Alexander Aksenov <a.aksenov@samsung.com>
src/cli/swap_cli/client_lib.py

index 85610dc276db052509ea4c0a5e2b2678d575088e..2015ac31d3f34bd495fb3d57d1d3f408c063a865 100644 (file)
@@ -284,28 +284,27 @@ def get_device_intr(target_config):
 
 def get_port_old_version(intr):
     port_file = '/tmp/port.da'
-    for _ in xrange(10):
-        ret, out, _ = intr.shell('cat %s' % port_file)
-        if ret != 0:
-            continue
-
-        if len(out) == 0:
-            raise ValueError('Port not found (%s)' % port_file)
-
-        return int(out)
+    # port file appears in some time after start, so let's wait it 60 secs
+    ret, out, _ = intr.shell('while [ ! -s ' + port_file + ' ]; '
+                             + 'do sleep 1; done; cat ' + port_file, 60)
+    if ret != 0 or len(out) == 0:
+        raise ValueError('Port not found (%s)' % port_file)
 
-    raise ValueError('Cannot get port from target (%s)' % port_file)
+    return int(out)
 
 
 def get_port(intr):
     port_file = '/run/swap/manager/port'
-    ret, out, _ = intr.shell('cat %s' % port_file)
-    if ret != 0:
+    # sdb shell doesn't provide return code of the command, so we check it
+    # this way
+    _, out, _ = intr.shell('ls ' + port_file)
+    if len(out) >= len(port_file) and out[0:len(port_file)] == port_file:
+        _, out, _ = intr.shell('cat ' + port_file)
+        if len(out) == 0:
+            raise ValueError('Port not found (%s)' % port_file)
+    else:
         return get_port_old_version(intr)
 
-    if len(out) == 0:
-        raise ValueError('Port not found (%s)' % port_file)
-
     return int(out)