Kaynağa Gözat

Improve resiliency in SSH connections

Alessandro Pilotti 8 yıl önce
ebeveyn
işleme
d2a46a8a96
1 değiştirilmiş dosya ile 7 ekleme ve 4 silme
  1. 7 4
      coriolis/osmorphing/osmount/base.py

+ 7 - 4
coriolis/osmorphing/osmount/base.py

@@ -68,15 +68,18 @@ class BaseSSHOSMountTools(BaseOSMountTools):
         ssh = paramiko.SSHClient()
         ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 
-        ssh.connect(hostname=ip, port=port, username=username, pkey=pkey,
-                    password=password)
+        @utils.retry_on_error()
+        def _ssh_connect():
+            ssh.connect(hostname=ip, port=port, username=username, pkey=pkey,
+                        password=password)
+        _ssh_connect()
+
         self._ssh = ssh
 
         if self._allow_ssh_env_vars():
             # Reconnect after a reload
             ssh.close()
-            ssh.connect(hostname=ip, port=port, username=username, pkey=pkey,
-                        password=password)
+            _ssh_connect()
 
     def _allow_ssh_env_vars(self):
         self._exec_cmd('sudo sed -i -e "\$aAcceptEnv *" /etc/ssh/sshd_config')