+ SSH.__existing_connections[node_hash] = self._ssh
+
+ logger.trace('connect took {} seconds'.format(time() - start))
+ logger.debug('new ssh: {0}'.format(self._ssh))
+
+ logger.debug('Connect peer: {0}'.
+ format(self._ssh.get_transport().getpeername()))
+ logger.debug('Connections: {0}'.
+ format(str(SSH.__existing_connections)))
+ except:
+ if attempts > 0:
+ self._reconnect(attempts-1)
+ else:
+ raise
+
+ def disconnect(self, node):
+ """Close SSH connection to the node.
+
+ :param node: The node to disconnect from.
+ :type node: dict
+ """
+ node_hash = self._node_hash(node)
+ if node_hash in SSH.__existing_connections:
+ logger.debug('Disconnecting peer: {}, {}'.
+ format(node['host'], node['port']))
+ ssh = SSH.__existing_connections.pop(node_hash)
+ ssh.close()