docs: def start(self):
          """Start the ssh client and connect to the host.
  
          It will wait until the ssh service is available during 90 seconds.
          If it doesn't succed to connect then the function will raise
          an SSHException.
          """
          if self.via_ip:
              connect_to = self.via_ip
              self.description = '[%s@%s via %s]' % (self._user,
                                                     self._hostname,
                                                     self.via_ip)
          else:
              connect_to = self._hostname
              self.description = '[%s@%s]' % (self._user,
                                              self._hostname)
  
          exception = None
          for i in range(60):
              try:
                  self._client.connect(
                      connect_to,
                      username=self._user,
                      allow_agent=True,
                      key_filename=self._key_filename)
              # NOTE(Gonéri): TypeError is in the list because of
              # https://github.com/paramiko/paramiko/issues/615
                  self._transport = self._get_transport()
              except (OSError,
                      TypeError,
                      ssh_exception.SSHException,
                      ssh_exception.NoValidConnectionsError) as e:
                  exception = e
                  LOG.info('%s waiting for %s: %s' %
                           (self.description, connect_to, str(exception)))
                  time.sleep(1)
              else:
                  LOG.debug('%s connected' % self.description)
                  self._started = True
                  return
  
          _error = ("unable to connect to ssh service on '%s': %s" %
                    (self._hostname, str(exception)))
          LOG.error(_error)
          raise exception