more gracefully handle fact cache failures for hosts that contain /

see: https://github.com/ansible/awx/issues/1977
related: https://github.com/ansible/ansible/issues/41413
This commit is contained in:
Ryan Petrello 2018-06-11 15:01:46 -04:00
parent ab4271b36d
commit d0d7bf5c21
No known key found for this signature in database
GPG Key ID: F2AA5F2122351777

View File

@ -774,9 +774,13 @@ class Job(UnifiedJob, JobOptions, SurveyJobMixin, JobNotificationMixin, TaskMana
if not os.path.realpath(filepath).startswith(destination):
system_tracking_logger.error('facts for host {} could not be cached'.format(smart_str(host.name)))
continue
with codecs.open(filepath, 'w', encoding='utf-8') as f:
os.chmod(f.name, 0o600)
json.dump(host.ansible_facts, f)
try:
with codecs.open(filepath, 'w', encoding='utf-8') as f:
os.chmod(f.name, 0o600)
json.dump(host.ansible_facts, f)
except IOError:
system_tracking_logger.error('facts for host {} could not be cached'.format(smart_str(host.name)))
continue
# make note of the time we wrote the file so we can check if it changed later
modification_times[filepath] = os.path.getmtime(filepath)