X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/ac0abc56a5a3cff166c51d8d312c8c69b85af1db..8e5a705d239f0d3740a6d539ae8e9d9d12115615:/lib/utils/io.py?ds=sidebyside diff --git a/lib/utils/io.py b/lib/utils/io.py index 08c9990..8ed204c 100644 --- a/lib/utils/io.py +++ b/lib/utils/io.py @@ -290,7 +290,8 @@ def RemoveDir(dirname): raise -def RenameFile(old, new, mkdir=False, mkdir_mode=0750): +def RenameFile(old, new, mkdir=False, mkdir_mode=0750, dir_uid=None, + dir_gid=None): """Renames a file. @type old: string @@ -301,6 +302,10 @@ def RenameFile(old, new, mkdir=False, mkdir_mode=0750): @param mkdir: Whether to create target directory if it doesn't exist @type mkdir_mode: int @param mkdir_mode: Mode for newly created directories + @type dir_uid: int + @param dir_uid: The uid for the (if fresh created) dir + @type dir_gid: int + @param dir_gid: The gid for the (if fresh created) dir """ try: @@ -311,7 +316,10 @@ def RenameFile(old, new, mkdir=False, mkdir_mode=0750): # as efficient. if mkdir and err.errno == errno.ENOENT: # Create directory and try again - Makedirs(os.path.dirname(new), mode=mkdir_mode) + dir_path = os.path.dirname(new) + Makedirs(dir_path, mode=mkdir_mode) + if not (dir_uid is None or dir_gid is None): + os.chown(dir_path, dir_uid, dir_gid) return os.rename(old, new)