mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
parent
f8c98600a9
commit
b6fcbfe813
7 changed files with 39 additions and 8 deletions
7
changelogs/fragments/dd-put-empty-files.yaml
Normal file
7
changelogs/fragments/dd-put-empty-files.yaml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
bugfixes:
|
||||||
|
- docker connection - Support empty files with copying to target (https://github.com/ansible/ansible/issues/36725)
|
||||||
|
- chroot connection - Support empty files with copying to target (https://github.com/ansible/ansible/issues/36725)
|
||||||
|
- jail connection - Support empty files with copying to target (https://github.com/ansible/ansible/issues/36725)
|
||||||
|
- kubectl connection - Support empty files with copying to target (https://github.com/ansible/ansible/issues/36725)
|
||||||
|
- libvirt_lxc connection - Support empty files with copying to target (https://github.com/ansible/ansible/issues/36725)
|
||||||
|
- zone connection - Support empty files with copying to target (https://github.com/ansible/ansible/issues/36725)
|
|
@ -148,8 +148,12 @@ class Connection(ConnectionBase):
|
||||||
out_path = shlex_quote(self._prefix_login_path(out_path))
|
out_path = shlex_quote(self._prefix_login_path(out_path))
|
||||||
try:
|
try:
|
||||||
with open(to_bytes(in_path, errors='surrogate_or_strict'), 'rb') as in_file:
|
with open(to_bytes(in_path, errors='surrogate_or_strict'), 'rb') as in_file:
|
||||||
|
if not os.fstat(in_file.fileno()).st_size:
|
||||||
|
count = ' count=0'
|
||||||
|
else:
|
||||||
|
count = ''
|
||||||
try:
|
try:
|
||||||
p = self._buffered_exec_command('dd of=%s bs=%s' % (out_path, BUFSIZE), stdin=in_file)
|
p = self._buffered_exec_command('dd of=%s bs=%s%s' % (out_path, BUFSIZE, count), stdin=in_file)
|
||||||
except OSError:
|
except OSError:
|
||||||
raise AnsibleError("chroot connection requires dd command in the chroot")
|
raise AnsibleError("chroot connection requires dd command in the chroot")
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -246,9 +246,13 @@ class Connection(ConnectionBase):
|
||||||
# running containers, so we use docker exec to implement this
|
# running containers, so we use docker exec to implement this
|
||||||
# Although docker version 1.8 and later provide support, the
|
# Although docker version 1.8 and later provide support, the
|
||||||
# owner and group of the files are always set to root
|
# owner and group of the files are always set to root
|
||||||
args = self._build_exec_cmd([self._play_context.executable, "-c", "dd of=%s bs=%s" % (out_path, BUFSIZE)])
|
|
||||||
args = [to_bytes(i, errors='surrogate_or_strict') for i in args]
|
|
||||||
with open(to_bytes(in_path, errors='surrogate_or_strict'), 'rb') as in_file:
|
with open(to_bytes(in_path, errors='surrogate_or_strict'), 'rb') as in_file:
|
||||||
|
if not os.fstat(in_file.fileno()).st_size:
|
||||||
|
count = ' count=0'
|
||||||
|
else:
|
||||||
|
count = ''
|
||||||
|
args = self._build_exec_cmd([self._play_context.executable, "-c", "dd of=%s bs=%s%s" % (out_path, BUFSIZE, count)])
|
||||||
|
args = [to_bytes(i, errors='surrogate_or_strict') for i in args]
|
||||||
try:
|
try:
|
||||||
p = subprocess.Popen(args, stdin=in_file,
|
p = subprocess.Popen(args, stdin=in_file,
|
||||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
|
|
|
@ -158,8 +158,12 @@ class Connection(ConnectionBase):
|
||||||
out_path = shlex_quote(self._prefix_login_path(out_path))
|
out_path = shlex_quote(self._prefix_login_path(out_path))
|
||||||
try:
|
try:
|
||||||
with open(to_bytes(in_path, errors='surrogate_or_strict'), 'rb') as in_file:
|
with open(to_bytes(in_path, errors='surrogate_or_strict'), 'rb') as in_file:
|
||||||
|
if not os.fstat(in_file.fileno()).st_size:
|
||||||
|
count = ' count=0'
|
||||||
|
else:
|
||||||
|
count = ''
|
||||||
try:
|
try:
|
||||||
p = self._buffered_exec_command('dd of=%s bs=%s' % (out_path, BUFSIZE), stdin=in_file)
|
p = self._buffered_exec_command('dd of=%s bs=%s%s' % (out_path, BUFSIZE, count), stdin=in_file)
|
||||||
except OSError:
|
except OSError:
|
||||||
raise AnsibleError("jail connection requires dd command in the jail")
|
raise AnsibleError("jail connection requires dd command in the jail")
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -300,9 +300,13 @@ class Connection(ConnectionBase):
|
||||||
out_path = shlex_quote(out_path)
|
out_path = shlex_quote(out_path)
|
||||||
# kubectl doesn't have native support for copying files into
|
# kubectl doesn't have native support for copying files into
|
||||||
# running containers, so we use kubectl exec to implement this
|
# running containers, so we use kubectl exec to implement this
|
||||||
args = self._build_exec_cmd([self._play_context.executable, "-c", "dd of=%s bs=%s" % (out_path, BUFSIZE)])
|
|
||||||
args = [to_bytes(i, errors='surrogate_or_strict') for i in args]
|
|
||||||
with open(to_bytes(in_path, errors='surrogate_or_strict'), 'rb') as in_file:
|
with open(to_bytes(in_path, errors='surrogate_or_strict'), 'rb') as in_file:
|
||||||
|
if not os.fstat(in_file.fileno()).st_size:
|
||||||
|
count = ' count=0'
|
||||||
|
else:
|
||||||
|
count = ''
|
||||||
|
args = self._build_exec_cmd([self._play_context.executable, "-c", "dd of=%s bs=%s%s" % (out_path, BUFSIZE, count)])
|
||||||
|
args = [to_bytes(i, errors='surrogate_or_strict') for i in args]
|
||||||
try:
|
try:
|
||||||
p = subprocess.Popen(args, stdin=in_file,
|
p = subprocess.Popen(args, stdin=in_file,
|
||||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
|
|
|
@ -138,8 +138,12 @@ class Connection(ConnectionBase):
|
||||||
out_path = shlex_quote(self._prefix_login_path(out_path))
|
out_path = shlex_quote(self._prefix_login_path(out_path))
|
||||||
try:
|
try:
|
||||||
with open(to_bytes(in_path, errors='surrogate_or_strict'), 'rb') as in_file:
|
with open(to_bytes(in_path, errors='surrogate_or_strict'), 'rb') as in_file:
|
||||||
|
if not os.fstat(in_file.fileno()).st_size:
|
||||||
|
count = ' count=0'
|
||||||
|
else:
|
||||||
|
count = ''
|
||||||
try:
|
try:
|
||||||
p = self._buffered_exec_command('dd of=%s bs=%s' % (out_path, BUFSIZE), stdin=in_file)
|
p = self._buffered_exec_command('dd of=%s bs=%s%s' % (out_path, BUFSIZE, count), stdin=in_file)
|
||||||
except OSError:
|
except OSError:
|
||||||
raise AnsibleError("chroot connection requires dd command in the chroot")
|
raise AnsibleError("chroot connection requires dd command in the chroot")
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -157,8 +157,12 @@ class Connection(ConnectionBase):
|
||||||
out_path = shlex_quote(self._prefix_login_path(out_path))
|
out_path = shlex_quote(self._prefix_login_path(out_path))
|
||||||
try:
|
try:
|
||||||
with open(in_path, 'rb') as in_file:
|
with open(in_path, 'rb') as in_file:
|
||||||
|
if not os.fstat(in_file.fileno()).st_size:
|
||||||
|
count = ' count=0'
|
||||||
|
else:
|
||||||
|
count = ''
|
||||||
try:
|
try:
|
||||||
p = self._buffered_exec_command('dd of=%s bs=%s' % (out_path, BUFSIZE), stdin=in_file)
|
p = self._buffered_exec_command('dd of=%s bs=%s%s' % (out_path, BUFSIZE, count), stdin=in_file)
|
||||||
except OSError:
|
except OSError:
|
||||||
raise AnsibleError("jail connection requires dd command in the jail")
|
raise AnsibleError("jail connection requires dd command in the jail")
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Reference in a new issue