1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2024-10-06 19:01:15 +01:00
workload-automation/wa/framework/host.py

39 lines
1.5 KiB
Python
Raw Normal View History

2017-02-21 13:37:11 +00:00
import os
2017-12-06 14:56:05 +00:00
import shutil
2017-02-21 13:37:11 +00:00
from wa.framework.configuration.core import settings
from wa.framework.configuration.default import generate_default_config
2017-02-21 13:37:11 +00:00
2017-12-06 14:55:02 +00:00
# Have to disable this due to dynamic attributes
# pylint: disable=no-member
def init_user_directory(overwrite_existing=False): # pylint: disable=R0914
2017-02-21 13:37:11 +00:00
"""
2017-12-06 14:54:53 +00:00
Initialise a fresh user directory.
2017-02-21 13:37:11 +00:00
"""
if os.path.exists(settings.user_directory):
if not overwrite_existing:
raise RuntimeError('Environment {} already exists.'.format(settings.user_directory))
shutil.rmtree(settings.user_directory)
os.makedirs(settings.user_directory)
os.makedirs(settings.dependencies_directory)
os.makedirs(settings.plugins_directory)
2017-02-21 13:37:11 +00:00
generate_default_config(os.path.join(settings.user_directory, 'config.yaml'))
2017-02-21 13:37:11 +00:00
if os.getenv('USER') == 'root':
# If running with sudo on POSIX, change the ownership to the real user.
real_user = os.getenv('SUDO_USER')
if real_user:
import pwd # done here as module won't import on win32
user_entry = pwd.getpwnam(real_user)
uid, gid = user_entry.pw_uid, user_entry.pw_gid
os.chown(settings.user_directory, uid, gid)
# why, oh why isn't there a recusive=True option for os.chown?
for root, dirs, files in os.walk(settings.user_directory):
for d in dirs:
os.chown(os.path.join(root, d), uid, gid)
2017-12-06 14:54:53 +00:00
for f in files:
os.chown(os.path.join(root, f), uid, gid)