[stable-2.6] Temporarily revert c119d54

There were bugs in this that needed to be resolved.  No time to get the
fix reviewed sufficiently for 2.6.0.

We'll get this into 2.7.0 and try to get this into 2.6.1 as well.

Will need the work done in https://github.com/ansible/ansible/pull/36218
when it does get merged.
(cherry picked from commit 5c614a59a6)

Co-authored-by: Toshio Kuratomi <a.badger@gmail.com>
This commit is contained in:
Toshio Kuratomi 2018-06-15 11:36:07 -07:00 committed by Matt Clay
parent bf1cc2f1f4
commit 1a5ba963b6
6 changed files with 13 additions and 13 deletions

View file

@ -107,9 +107,9 @@ from ansible.module_utils.six import b
from ansible.module_utils._text import to_native from ansible.module_utils._text import to_native
def assemble_from_fragments(src_path, delimiter=None, compiled_regexp=None, ignore_hidden=False, tmpdir=None): def assemble_from_fragments(src_path, delimiter=None, compiled_regexp=None, ignore_hidden=False):
''' assemble a file from a directory of fragments ''' ''' assemble a file from a directory of fragments '''
tmpfd, temp_path = tempfile.mkstemp(dir=tmpdir) tmpfd, temp_path = tempfile.mkstemp()
tmp = os.fdopen(tmpfd, 'wb') tmp = os.fdopen(tmpfd, 'wb')
delimit_me = False delimit_me = False
add_newline = False add_newline = False
@ -204,7 +204,7 @@ def main():
if validate and "%s" not in validate: if validate and "%s" not in validate:
module.fail_json(msg="validate must contain %%s: %s" % validate) module.fail_json(msg="validate must contain %%s: %s" % validate)
path = assemble_from_fragments(src, delimiter, compiled_regexp, ignore_hidden, getattr(module, 'tmpdir', None)) path = assemble_from_fragments(src, delimiter, compiled_regexp, ignore_hidden)
path_hash = module.sha1(path) path_hash = module.sha1(path)
result['checksum'] = path_hash result['checksum'] = path_hash

View file

@ -160,7 +160,7 @@ from ansible.module_utils._text import to_bytes
def write_changes(module, contents, path): def write_changes(module, contents, path):
tmpfd, tmpfile = tempfile.mkstemp(dir=getattr(module, 'tmpdir', None)) tmpfd, tmpfile = tempfile.mkstemp()
f = os.fdopen(tmpfd, 'wb') f = os.fdopen(tmpfd, 'wb')
f.write(contents) f.write(contents)
f.close() f.close()

View file

@ -154,7 +154,7 @@ from ansible.module_utils.basic import AnsibleModule
def write_changes(module, contents, path): def write_changes(module, contents, path):
tmpfd, tmpfile = tempfile.mkstemp(dir=getattr(module, 'tmpdir', None)) tmpfd, tmpfile = tempfile.mkstemp()
f = os.fdopen(tmpfd, 'wb') f = os.fdopen(tmpfd, 'wb')
f.write(contents) f.write(contents)
f.close() f.close()

View file

@ -49,8 +49,7 @@ options:
tmp_dest: tmp_dest:
description: description:
- Absolute path of where temporary file is downloaded to. - Absolute path of where temporary file is downloaded to.
- When run on Ansible 2.5 or greater, path defaults to ansible's remote_tmp setting - Defaults to C(TMPDIR), C(TEMP) or C(TMP) env variables or a platform specific value.
- When run on Ansible prior to 2.5, it defaults to C(TMPDIR), C(TEMP) or C(TMP) env variables or a platform specific value.
- U(https://docs.python.org/2/library/tempfile.html#tempfile.tempdir) - U(https://docs.python.org/2/library/tempfile.html#tempfile.tempdir)
version_added: '2.1' version_added: '2.1'
force: force:
@ -341,17 +340,18 @@ def url_get(module, url, dest, use_proxy, last_mod_time, force, timeout=10, head
module.fail_json(msg="%s is a file but should be a directory." % tmp_dest) module.fail_json(msg="%s is a file but should be a directory." % tmp_dest)
else: else:
module.fail_json(msg="%s directory does not exist." % tmp_dest) module.fail_json(msg="%s directory does not exist." % tmp_dest)
else:
tmp_dest = getattr(module, 'tmpdir', None)
fd, tempname = tempfile.mkstemp(dir=tmp_dest) fd, tempname = tempfile.mkstemp(dir=tmp_dest)
else:
fd, tempname = tempfile.mkstemp()
f = os.fdopen(fd, 'wb') f = os.fdopen(fd, 'wb')
try: try:
shutil.copyfileobj(rsp, f) shutil.copyfileobj(rsp, f)
except Exception as e: except Exception as e:
os.remove(tempname) os.remove(tempname)
module.fail_json(msg="failed to create temporary content file: %s" % to_native(e), exception=traceback.format_exc()) module.fail_json(msg="failed to create temporary content file: %s" % to_native(e),
exception=traceback.format_exc())
f.close() f.close()
rsp.close() rsp.close()
return tempname, info return tempname, info

View file

@ -252,7 +252,7 @@ JSON_CANDIDATES = ('text', 'json', 'javascript')
def write_file(module, url, dest, content): def write_file(module, url, dest, content):
# create a tempfile with some test content # create a tempfile with some test content
fd, tmpsrc = tempfile.mkstemp(dir=getattr(module, 'tmpdir', None)) fd, tmpsrc = tempfile.mkstemp()
f = open(tmpsrc, 'wb') f = open(tmpsrc, 'wb')
try: try:
f.write(content) f.write(content)

View file

@ -333,7 +333,7 @@ def ensure_yum_utils(module):
def fetch_rpm_from_url(spec, module=None): def fetch_rpm_from_url(spec, module=None):
# download package so that we can query it # download package so that we can query it
package_name, _ = os.path.splitext(str(spec.rsplit('/', 1)[1])) package_name, _ = os.path.splitext(str(spec.rsplit('/', 1)[1]))
package_file = tempfile.NamedTemporaryFile(dir=getattr(module, 'tmpdir', None), prefix=package_name, suffix='.rpm', delete=False) package_file = tempfile.NamedTemporaryFile(prefix=package_name, suffix='.rpm', delete=False)
module.add_cleanup_file(package_file.name) module.add_cleanup_file(package_file.name)
try: try:
rsp, info = fetch_url(module, spec) rsp, info = fetch_url(module, spec)