ssh credential prompt before progress (#2660)

* ssh credential prompt before progress

* clean up ssh cred handling

- fixes https://github.com/iterative/dvc/pull/2660#discussion_r338536169
This commit is contained in:
Casper da Costa-Luis
2019-10-24 19:14:07 +03:00
committed by Ruslan Kuprieiev
parent 24ed639901
commit ed1f643a6e
+12 -5
View File
@@ -115,9 +115,10 @@ class RemoteSSH(RemoteBASE):
return identity_file[0]
return None
def ssh(self, path_info):
def ensure_credentials(self, path_info=None):
if path_info is None:
path_info = self.path_info
host, user, port = path_info.host, path_info.user, path_info.port
# NOTE: we use the same password regardless of the server :(
if self.ask_password and self.password is None:
with saved_passwords_lock:
@@ -133,13 +134,16 @@ class RemoteSSH(RemoteBASE):
)
self.password = password
def ssh(self, path_info):
self.ensure_credentials(path_info)
from .connection import SSHConnection
return get_connection(
SSHConnection,
host,
username=user,
port=port,
path_info.host,
username=path_info.user,
port=path_info.port,
key_filename=self.keyfile,
timeout=self.timeout,
password=self.password,
@@ -306,6 +310,9 @@ class RemoteSSH(RemoteBASE):
if not self.no_traverse:
return list(set(checksums) & set(self.all()))
# possibly prompt for credentials before "Querying" progress output
self.ensure_credentials()
with Tqdm(
desc="Querying "
+ ("cache in " + name if name else "remote cache"),