makedirs(log_dir, uid, gid, LOG_DIR_MODE)
return log_dir
+def move_file(src, dst):
+ """
+ Move a file from src to dst
+ """
+ if os.path.isdir(dst):
+ dst = os.path.join(dst, os.path.basename(src))
+
+ if os.path.islink(src):
+ # shutil.move() in python2 does not handle symlinks correctly
+ src_rl = os.readlink(src)
+ logger.debug('symlink \'%s\' -> \'%s\'' % (dst, src_rl))
+ os.symlink(src_rl, dst)
+ os.unlink(src)
+ else:
+ logger.debug('Move \'%s\' -> \'%s\'' % (src, dst))
+ shutil.move(src, dst)
+
+ return dst
+
def find_program(filename):
# type: (str) -> str
name = find_executable(filename)
data_dir_src = os.path.abspath(args.legacy_dir + data_dir_src)
data_dir_dst = make_data_dir(fsid, daemon_type, daemon_id)
for data_file in glob(os.path.join(data_dir_src, '*')):
- logger.debug('Move \'%s\' -> \'%s\'' % (data_file, data_dir_dst))
- shutil.move(data_file, data_dir_dst)
+ move_file(data_file, data_dir_dst)
logger.debug('Remove dir \'%s\'' % (data_dir_src))
if os.path.ismount(data_dir_src):
call_throws(['umount', data_dir_src])
log_dir_src = os.path.abspath(args.legacy_dir + log_dir_src)
log_dir_dst = make_log_dir(fsid, uid=uid, gid=gid)
for log_file in glob(log_dir_src):
- logger.debug('Move \'%s\' -> \'%s\'' % (log_file, log_dir_dst))
- shutil.move(log_file, log_dir_dst)
+ move_file(log_file, log_dir_dst)
logger.info('Creating new units...')
c = get_container(fsid, daemon_type, daemon_id)