password="test",
min_size=1,
max_size=1)
- self.mock_object(sshpool.item(), 'close')
self.driver.sshpool = mock.Mock(return_value=sshpool)
+ ssh = mock.Mock(paramiko.SSHClient)
+ self.driver.sshpool.item().__enter__ = mock.Mock(return_value=ssh)
+ self.driver.sshpool.item().__exit__ = mock.Mock(return_value=False)
# now call the execute
self.assertRaises(exception.VolumeBackendAPIException,
self.driver._eql_execute, "fake command")
password="test",
min_size=1,
max_size=1)
- self.mock_object(sshpool.item(), 'close')
self.driver.sshpool = mock.Mock(return_value=sshpool)
+ ssh = mock.Mock(paramiko.SSHClient)
+ self.driver.sshpool.item().__enter__ = mock.Mock(return_value=ssh)
+ self.driver.sshpool.item().__exit__ = mock.Mock(return_value=False)
# mocks for _ssh_execute and _get_output
self.mock_object(self.driver, '_get_output',
mock.Mock(side_effect=exception.
max_size=max_size)
try:
total_attempts = attempts
- ssh = self.sshpool.item()
- while attempts > 0:
- attempts -= 1
- try:
- LOG.info(_LI('EQL-driver: executing "%s".'), command)
- return self._ssh_execute(
- ssh, command,
- timeout=self.configuration.eqlx_cli_timeout)
- except processutils.ProcessExecutionError:
- raise
- except Exception as e:
- LOG.exception(e)
- greenthread.sleep(random.randint(20, 500) / 100.0)
- msg = (_("SSH Command failed after '%(total_attempts)r' "
- "attempts : '%(command)s'") %
- {'total_attempts': total_attempts - attempts,
- 'command': command})
- ssh.close()
- raise exception.VolumeBackendAPIException(data=msg)
+ with self.sshpool.item() as ssh:
+ while attempts > 0:
+ attempts -= 1
+ try:
+ LOG.info(_LI('EQL-driver: executing "%s".'), command)
+ return self._ssh_execute(
+ ssh, command,
+ timeout=self.configuration.eqlx_cli_timeout)
+ except processutils.ProcessExecutionError:
+ raise
+ except Exception as e:
+ LOG.exception(e)
+ greenthread.sleep(random.randint(20, 500) / 100.0)
+ msg = (_("SSH Command failed after '%(total_attempts)r' "
+ "attempts : '%(command)s'") %
+ {'total_attempts': total_attempts - attempts,
+ 'command': command})
+ raise exception.VolumeBackendAPIException(data=msg)
except Exception:
with excutils.save_and_reraise_exception():