Merge "Use tobiko.makedirs instead of os.makedirs to avoid concurrency problems"

This commit is contained in:
Zuul 2019-08-27 08:32:56 +00:00 committed by Gerrit Code Review
commit e7e969c7fe
5 changed files with 12 additions and 12 deletions

View File

@ -20,6 +20,7 @@ from tobiko.common import _fixture
from tobiko.common import _logging
from tobiko.common.managers import testcase as testcase_manager
from tobiko.common.managers import loader as loader_manager
from tobiko.common import _os
from tobiko.common import _select
from tobiko.common import _skip
@ -55,6 +56,8 @@ CaptureLogFixture = _logging.CaptureLogFixture
load_object = loader_manager.load_object
load_module = loader_manager.load_module
makedirs = _os.makedirs
discover_testcases = testcase_manager.discover_testcases
Selection = _select.Selection

View File

@ -21,7 +21,7 @@ from oslo_log import log
LOG = log.getLogger(__name__)
def makedirs(path, mode=0o777, exist_ok=True):
def makedirs(name, mode=0o777, exist_ok=True):
"""Creates directory and its parents if directory doesn't exists.
This emulates Python3 os.makedirs behavior[1]
@ -29,7 +29,7 @@ def makedirs(path, mode=0o777, exist_ok=True):
[1] https://docs.python.org/3/library/os.html#os.makedirs)
"""
try:
os.makedirs(path, mode)
except os.error:
if not exist_ok:
os.makedirs(name, mode)
except Exception:
if not exist_ok or not os.path.isdir(name):
raise

View File

@ -19,8 +19,8 @@ import jinja2
from oslo_log import log
import tobiko
from tobiko.fault import constants as fault_const
from tobiko.common.utils import file as file_utils
from tobiko.openstack import nova
@ -49,7 +49,7 @@ class FaultConfig(object):
def generate_config_file(self):
"""Generates os-faults configuration file."""
LOG.info("Generating os-fault configuration file.")
file_utils.makedirs(self.DEFAULT_CONF_PATH)
tobiko.makedirs(self.DEFAULT_CONF_PATH)
rendered_conf = self.get_rendered_configuration()
with open(self.DEFAULT_CONF_FILE, "w") as f:
f.write(rendered_conf)

View File

@ -357,9 +357,8 @@ class URLGlanceImageFixture(FileGlanceImageFixture):
def _download_image_file(self, image_file, chunks, expected_size):
image_dir = os.path.dirname(image_file)
if not os.path.isdir(image_dir):
LOG.debug('Creating image directory: %r', image_dir)
os.makedirs(image_dir)
LOG.debug('Ensure image directory exists: %r', image_dir)
tobiko.makedirs(image_dir)
fd, temp_file = tempfile.mkstemp(dir=image_dir)
with io.open(fd, 'wb', io.DEFAULT_BUFFER_SIZE) as image_data:

View File

@ -54,9 +54,7 @@ class KeyPairStackFixture(heat.HeatStackFixture):
key_file = os.path.realpath(self.key_file)
if not os.path.isfile(key_file):
key_dir = os.path.dirname(key_file)
if not os.path.isdir(key_dir):
os.makedirs(key_dir)
assert os.path.isdir(key_dir)
tobiko.makedirs(key_dir)
try:
sh.local_execute(['ssh-keygen', '-f', key_file, '-P', ''])
except sh.ShellCommandFailed: