From 07113bc31ffa60a5fc3f34b392576d4639474485 Mon Sep 17 00:00:00 2001 From: Samuel Munilla Date: Tue, 25 Oct 2016 15:37:57 -0400 Subject: Fix race condtion in openshift_facts If, for some reason, two facts processes were run simultaneously on the same host, creating the directory could cause an exception. This should help with that. Fixes Bug 1385449 --- roles/openshift_facts/library/openshift_facts.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'roles/openshift_facts') diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py index 61ce55b7f..1d611f010 100755 --- a/roles/openshift_facts/library/openshift_facts.py +++ b/roles/openshift_facts/library/openshift_facts.py @@ -1380,8 +1380,11 @@ def save_local_facts(filename, facts): """ try: fact_dir = os.path.dirname(filename) - if not os.path.exists(fact_dir): - os.makedirs(fact_dir) + try: + os.makedirs(fact_dir) # try to make the directory + except OSError as exception: + if exception.errno != errno.EEXIST: # but it is okay if it is already there + raise # pass any other exceptions up the chain with open(filename, 'w') as fact_file: fact_file.write(module.jsonify(facts)) os.chmod(filename, 0o600) -- cgit v1.2.3