Fabric sync transport does not exit anymore

- Custom Executor class that handles abort_exception in fabric

Change-Id: Ief0cd4cc19d6be470a102f9c5b2205cceb75ff38
Closes-bug: #1549326
This commit is contained in:
Jedrzej Nowak 2016-02-26 13:26:14 +01:00
parent 9f04c94f03
commit de2f683837

View File

@ -23,6 +23,13 @@ from solar.core.transports.base import Executor
from solar.core.transports.base import RunTransport from solar.core.transports.base import RunTransport
from solar.core.transports.base import SolarTransportResult from solar.core.transports.base import SolarTransportResult
from solar.core.transports.base import SyncTransport from solar.core.transports.base import SyncTransport
from solar import errors
class ExecutorForFabric(Executor):
def _abort_exception(self, output):
raise errors.SolarError(output)
class _SSHTransport(object): class _SSHTransport(object):
@ -82,9 +89,7 @@ class SSHSyncTransport(SyncTransport, _SSHTransport):
else: else:
executor = self._copy_directory(resource, _from, _to, use_sudo) executor = self._copy_directory(resource, _from, _to, use_sudo)
# with fabric_api.settings(**self._fabric_settings(resource)): executor = ExecutorForFabric(resource=resource,
# return executor()
executor = Executor(resource=resource,
executor=executor, executor=executor,
params=(_from, _to, use_sudo)) params=(_from, _to, use_sudo))
self.executors.append(executor) self.executors.append(executor)
@ -92,7 +97,10 @@ class SSHSyncTransport(SyncTransport, _SSHTransport):
def run_all(self): def run_all(self):
for executor in self.executors: for executor in self.executors:
resource = executor.resource resource = executor.resource
with fabric_api.settings(**self.settings(resource)): with fabric_api.settings(
abort_exception=executor._abort_exception,
**self.settings(resource)
):
executor.run(self) executor.run(self)