Merge "Ensure tripleo ansible inventory file update is atomic" into stable/train

This commit is contained in:
Zuul 2020-08-17 08:30:41 +00:00 committed by Gerrit Code Review
commit 4ce40a6654
2 changed files with 10 additions and 4 deletions

View File

@ -16,7 +16,8 @@
# under the License. # under the License.
from collections import OrderedDict from collections import OrderedDict
import os.path import os
import tempfile
import yaml import yaml
@ -137,8 +138,10 @@ class TripleoInventories(object):
if var in inventory: if var in inventory:
inventory[var]['vars'].update(value) inventory[var]['vars'].update(value)
with open(inventory_file_path, 'w') as inventory_file: # Atomic update as concurrent tripleoclient commands can call this
with tempfile.NamedTemporaryFile('w', delete=False) as inventory_file:
yaml.dump(inventory, inventory_file, TemplateDumper) yaml.dump(inventory, inventory_file, TemplateDumper)
os.rename(inventory_file.name, inventory_file_path)
def host(self): def host(self):
# Dynamic inventory scripts must return empty json if they don't # Dynamic inventory scripts must return empty json if they don't

View File

@ -17,8 +17,9 @@
from collections import OrderedDict from collections import OrderedDict
import logging import logging
import os.path import os
import sys import sys
import tempfile
import yaml import yaml
from heatclient.exc import HTTPNotFound from heatclient.exc import HTTPNotFound
@ -383,5 +384,7 @@ class TripleoInventory(object):
if var in inventory: if var in inventory:
inventory[var]['vars'].update(value) inventory[var]['vars'].update(value)
with open(inventory_file_path, 'w') as inventory_file: # Atomic update as concurrent tripleoclient commands can call this
with tempfile.NamedTemporaryFile('w', delete=False) as inventory_file:
yaml.dump(inventory, inventory_file, TemplateDumper) yaml.dump(inventory, inventory_file, TemplateDumper)
os.rename(inventory_file.name, inventory_file_path)