Fix problem with jail and zone connection plugins and symlinks from within the jail/zone.

This commit is contained in:
Toshio Kuratomi 2015-06-19 11:09:48 -07:00
parent ca2f2c4ebd
commit 0777d02505
2 changed files with 18 additions and 7 deletions

View file

@ -59,8 +59,6 @@ class Connection(object):
# remove \n # remove \n
return stdout[:-1] return stdout[:-1]
def __init__(self, runner, host, port, *args, **kwargs): def __init__(self, runner, host, port, *args, **kwargs):
self.jail = host self.jail = host
self.runner = runner self.runner = runner
@ -137,7 +135,10 @@ class Connection(object):
vvv("PUT %s TO %s" % (in_path, out_path), host=self.jail) vvv("PUT %s TO %s" % (in_path, out_path), host=self.jail)
with open(in_path, 'rb') as in_file: with open(in_path, 'rb') as in_file:
p = self._buffered_exec_command('dd of=%s' % out_path, None, stdin=in_file) try:
p = self._buffered_exec_command('dd of=%s' % out_path, None, stdin=in_file)
except OSError:
raise errors.AnsibleError("jail connection requires dd command in the jail")
try: try:
stdout, stderr = p.communicate() stdout, stderr = p.communicate()
except: except:
@ -152,7 +153,10 @@ class Connection(object):
vvv("FETCH %s TO %s" % (in_path, out_path), host=self.jail) vvv("FETCH %s TO %s" % (in_path, out_path), host=self.jail)
p = self._buffered_exec_command('dd if=%s bs=%s' % (in_path, BUFSIZE), None) try:
p = self._buffered_exec_command('dd if=%s bs=%s' % (in_path, BUFSIZE), None)
except OSError:
raise errors.AnsibleError("jail connection requires dd command in the jail")
with open(out_path, 'wb+') as out_file: with open(out_path, 'wb+') as out_file:
try: try:

View file

@ -148,7 +148,10 @@ class Connection(object):
vvv("PUT %s TO %s" % (in_path, out_path), host=self.zone) vvv("PUT %s TO %s" % (in_path, out_path), host=self.zone)
with open(in_path, 'rb') as in_file: with open(in_path, 'rb') as in_file:
p = self._buffered_exec_command('dd of=%s' % out_path, None, stdin=in_file) try:
p = self._buffered_exec_command('dd of=%s' % out_path, None, stdin=in_file)
except OSError:
raise errors.AnsibleError("zone connection requires dd command in the zone")
try: try:
stdout, stderr = p.communicate() stdout, stderr = p.communicate()
except: except:
@ -163,7 +166,11 @@ class Connection(object):
vvv("FETCH %s TO %s" % (in_path, out_path), host=self.zone) vvv("FETCH %s TO %s" % (in_path, out_path), host=self.zone)
p = self._buffered_exec_command('dd if=%s bs=%s' % (in_path, BUFSIZE), None) try:
p = self._buffered_exec_command('dd if=%s bs=%s' % (in_path, BUFSIZE), None)
except OSError:
raise errors.AnsibleError("zone connection requires dd command in the zone")
with open(out_path, 'wb+') as out_file: with open(out_path, 'wb+') as out_file:
try: try: