CLI: fix getting port from target 01/160301/5
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Tue, 14 Nov 2017 14:54:17 +0000 (17:54 +0300)
committerDmitry Kovalenko <d.kovalenko@samsung.com>
Fri, 8 Dec 2017 09:11:56 +0000 (09:11 +0000)
Change-Id: I6c37f09497962905909e55b5dc175ea28968a53a
Signed-off-by: Vyacheslav Cherkashin <v.cherkashin@samsung.com>
src/cli/swap_cli/client_lib.py

index e1671b11adb3a2617c8a071f31a67fd77b2c1bfb..85610dc276db052509ea4c0a5e2b2678d575088e 100644 (file)
@@ -282,26 +282,37 @@ def get_device_intr(target_config):
     return dev_class(target_config)
 
 
-def _get_port(device_intr):
+def get_port_old_version(intr):
+    port_file = '/tmp/port.da'
     for _ in xrange(10):
-        if device_intr.pull("/tmp/port.da", "/tmp/port.da")[0] == -1:
-            # logging.critical('Can not get /tmp/port.da from target')
-            raise ValueError('Cannot /tmp/port.da from target')
-        port_file = open("/tmp/port.da", "r")
-        port = port_file.read()
-        port = int(port.split('\n')[-1])
-        port_file.close()
-        os.remove("/tmp/port.da")
-        return port
-    raise ValueError('Port not found')
+        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)
+
+    raise ValueError('Cannot get port from target (%s)' % port_file)
+
+
+def get_port(intr):
+    port_file = '/run/swap/manager/port'
+    ret, out, _ = intr.shell('cat %s' % port_file)
+    if ret != 0:
+        return get_port_old_version(intr)
+
+    if len(out) == 0:
+        raise ValueError('Port not found (%s)' % port_file)
+
+    return int(out)
 
 
 class Network:
     def __init__(self, intr, config):
         self.__ip = config['ip']
-        self.__port = config['port']
-        if self.__port is None:
-            self.__port = _get_port(intr)
+        self.__port = get_port(intr)
         local_port = intr.forward_port(self.__port)
 
         logging.info('Trying to connect "%s:%d"', self.__ip, local_port)