Merge "Use tobiko.makedirs instead of os.makedirs to avoid concurrency problems"
This commit is contained in:
commit
e7e969c7fe
|
@ -20,6 +20,7 @@ from tobiko.common import _fixture
|
||||||
from tobiko.common import _logging
|
from tobiko.common import _logging
|
||||||
from tobiko.common.managers import testcase as testcase_manager
|
from tobiko.common.managers import testcase as testcase_manager
|
||||||
from tobiko.common.managers import loader as loader_manager
|
from tobiko.common.managers import loader as loader_manager
|
||||||
|
from tobiko.common import _os
|
||||||
from tobiko.common import _select
|
from tobiko.common import _select
|
||||||
from tobiko.common import _skip
|
from tobiko.common import _skip
|
||||||
|
|
||||||
|
@ -55,6 +56,8 @@ CaptureLogFixture = _logging.CaptureLogFixture
|
||||||
load_object = loader_manager.load_object
|
load_object = loader_manager.load_object
|
||||||
load_module = loader_manager.load_module
|
load_module = loader_manager.load_module
|
||||||
|
|
||||||
|
makedirs = _os.makedirs
|
||||||
|
|
||||||
discover_testcases = testcase_manager.discover_testcases
|
discover_testcases = testcase_manager.discover_testcases
|
||||||
|
|
||||||
Selection = _select.Selection
|
Selection = _select.Selection
|
||||||
|
|
|
@ -21,7 +21,7 @@ from oslo_log import log
|
||||||
LOG = log.getLogger(__name__)
|
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.
|
"""Creates directory and its parents if directory doesn't exists.
|
||||||
|
|
||||||
This emulates Python3 os.makedirs behavior[1]
|
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)
|
[1] https://docs.python.org/3/library/os.html#os.makedirs)
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
os.makedirs(path, mode)
|
os.makedirs(name, mode)
|
||||||
except os.error:
|
except Exception:
|
||||||
if not exist_ok:
|
if not exist_ok or not os.path.isdir(name):
|
||||||
raise
|
raise
|
|
@ -19,8 +19,8 @@ import jinja2
|
||||||
|
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
|
|
||||||
|
import tobiko
|
||||||
from tobiko.fault import constants as fault_const
|
from tobiko.fault import constants as fault_const
|
||||||
from tobiko.common.utils import file as file_utils
|
|
||||||
from tobiko.openstack import nova
|
from tobiko.openstack import nova
|
||||||
|
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ class FaultConfig(object):
|
||||||
def generate_config_file(self):
|
def generate_config_file(self):
|
||||||
"""Generates os-faults configuration file."""
|
"""Generates os-faults configuration file."""
|
||||||
LOG.info("Generating os-fault 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()
|
rendered_conf = self.get_rendered_configuration()
|
||||||
with open(self.DEFAULT_CONF_FILE, "w") as f:
|
with open(self.DEFAULT_CONF_FILE, "w") as f:
|
||||||
f.write(rendered_conf)
|
f.write(rendered_conf)
|
||||||
|
|
|
@ -357,9 +357,8 @@ class URLGlanceImageFixture(FileGlanceImageFixture):
|
||||||
|
|
||||||
def _download_image_file(self, image_file, chunks, expected_size):
|
def _download_image_file(self, image_file, chunks, expected_size):
|
||||||
image_dir = os.path.dirname(image_file)
|
image_dir = os.path.dirname(image_file)
|
||||||
if not os.path.isdir(image_dir):
|
LOG.debug('Ensure image directory exists: %r', image_dir)
|
||||||
LOG.debug('Creating image directory: %r', image_dir)
|
tobiko.makedirs(image_dir)
|
||||||
os.makedirs(image_dir)
|
|
||||||
|
|
||||||
fd, temp_file = tempfile.mkstemp(dir=image_dir)
|
fd, temp_file = tempfile.mkstemp(dir=image_dir)
|
||||||
with io.open(fd, 'wb', io.DEFAULT_BUFFER_SIZE) as image_data:
|
with io.open(fd, 'wb', io.DEFAULT_BUFFER_SIZE) as image_data:
|
||||||
|
|
|
@ -54,9 +54,7 @@ class KeyPairStackFixture(heat.HeatStackFixture):
|
||||||
key_file = os.path.realpath(self.key_file)
|
key_file = os.path.realpath(self.key_file)
|
||||||
if not os.path.isfile(key_file):
|
if not os.path.isfile(key_file):
|
||||||
key_dir = os.path.dirname(key_file)
|
key_dir = os.path.dirname(key_file)
|
||||||
if not os.path.isdir(key_dir):
|
tobiko.makedirs(key_dir)
|
||||||
os.makedirs(key_dir)
|
|
||||||
assert os.path.isdir(key_dir)
|
|
||||||
try:
|
try:
|
||||||
sh.local_execute(['ssh-keygen', '-f', key_file, '-P', ''])
|
sh.local_execute(['ssh-keygen', '-f', key_file, '-P', ''])
|
||||||
except sh.ShellCommandFailed:
|
except sh.ShellCommandFailed:
|
||||||
|
|
Loading…
Reference in New Issue