summaryrefslogtreecommitdiffstats
path: root/roles
diff options
context:
space:
mode:
authorSamuel Munilla <smunilla@redhat.com>2016-10-25 15:37:57 -0400
committerSamuel Munilla <smunilla@redhat.com>2016-10-25 16:00:43 -0400
commit07113bc31ffa60a5fc3f34b392576d4639474485 (patch)
tree3bac8a17b5c199a5ee6255f4243997819ecb8c8a /roles
parent6c705bae58578893d17ed6aeaf30efc3a7681b0a (diff)
downloadopenshift-07113bc31ffa60a5fc3f34b392576d4639474485.tar.gz
openshift-07113bc31ffa60a5fc3f34b392576d4639474485.tar.bz2
openshift-07113bc31ffa60a5fc3f34b392576d4639474485.tar.xz
openshift-07113bc31ffa60a5fc3f34b392576d4639474485.zip
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
Diffstat (limited to 'roles')
-rwxr-xr-xroles/openshift_facts/library/openshift_facts.py7
1 files changed, 5 insertions, 2 deletions
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)