Refactor shell handler to use transports

This commit is contained in:
Dmitry Shulyak 2015-10-09 12:39:27 +03:00
parent 19366f66c9
commit 39c5a34a3f

View File

@ -13,7 +13,8 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from fabric import api as fabric_api from solar.core.log import log
from solar import errors
from solar.core.handlers.base import TempFileHandler from solar.core.handlers.base import TempFileHandler
@ -21,4 +22,19 @@ from solar.core.handlers.base import TempFileHandler
class Shell(TempFileHandler): class Shell(TempFileHandler):
def action(self, resource, action_name): def action(self, resource, action_name):
action_file = self._compile_action_file(resource, action_name) action_file = self._compile_action_file(resource, action_name)
fabric_api.local('bash {}'.format(action_file)) log.debug('action_file: %s', action_file)
self.transport_sync.copy(resource, action_file, '/tmp/action.sh')
self.transport_sync.sync_all()
cmd = self.transport_run.run(
resource,
'bash', '/tmp/action.sh',
use_sudo=True,
warn_only=True
)
if cmd.return_code:
raise errors.SolarError(
'Bash execution for {} failed with {}'.format(
resource.name, cmd.return_code))
return cmd