summaryrefslogtreecommitdiffstats
path: root/openstack/common/fileutils.py
diff options
context:
space:
mode:
authorMichael Still <mikal@stillhq.com>2012-10-10 17:28:11 +1100
committerMichael Still <mikal@stillhq.com>2012-10-18 09:09:17 -0700
commit9a8c1d7e1a537e6580be2be1630baefc910de1de (patch)
treefe6c40b44c3b9d5b1dcaefc4945bc98e01956698 /openstack/common/fileutils.py
parent7695f967a3c750642504aa60f748111f64880a07 (diff)
downloadoslo-9a8c1d7e1a537e6580be2be1630baefc910de1de.tar.gz
oslo-9a8c1d7e1a537e6580be2be1630baefc910de1de.tar.xz
oslo-9a8c1d7e1a537e6580be2be1630baefc910de1de.zip
Move nova's util.synchronized decorator to openstack common.
In the end I needed to port utils.ensure_tree as well. Resolves bug 1063230. Change-Id: I6e6fa8201de2cac3f17e6c60d7b16f7df7c64116
Diffstat (limited to 'openstack/common/fileutils.py')
-rw-r--r--openstack/common/fileutils.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/openstack/common/fileutils.py b/openstack/common/fileutils.py
new file mode 100644
index 0000000..4746ad4
--- /dev/null
+++ b/openstack/common/fileutils.py
@@ -0,0 +1,35 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2011 OpenStack LLC.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+
+import errno
+import os
+
+
+def ensure_tree(path):
+ """Create a directory (and any ancestor directories required)
+
+ :param path: Directory to create
+ """
+ try:
+ os.makedirs(path)
+ except OSError as exc:
+ if exc.errno == errno.EEXIST:
+ if not os.path.isdir(path):
+ raise
+ else:
+ raise