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)