2
0
mirror of https://github.com/frappe/bench.git synced 2025-01-09 08:30:39 +00:00

symlinks creation/deletion

This commit is contained in:
Revant Nandgaonkar 2018-04-13 00:26:52 +05:30
parent b285a688d7
commit 47b88fb722
2 changed files with 73 additions and 7 deletions

View File

@ -259,10 +259,13 @@ def setup_nginx_proxy_jail(**kwargs):
@click.option('--user')
@click.option('--yes', help='Yes to regeneration of systemd config files', is_flag=True, default=False)
@click.option('--stop', help='Stop bench services', is_flag=True, default=False)
def setup_systemd(user=None, yes=False, stop=False):
@click.option('--create-symlinks', help='Create Symlinks', is_flag=True, default=False)
@click.option('--delete-symlinks', help='Delete Symlinks', is_flag=True, default=False)
def setup_systemd(user=None, yes=False, stop=False, create_symlinks=False, delete_symlinks=False):
"generate configs for systemd with an optional user argument"
from bench.config.systemd import generate_systemd_config
generate_systemd_config(bench_path=".", user=user, yes=yes, stop=stop)
generate_systemd_config(bench_path=".", user=user, yes=yes,
stop=stop, create_symlinks=create_symlinks, delete_symlinks=delete_symlinks)
setup.add_command(setup_sudoers)
setup.add_command(setup_nginx)

View File

@ -1,10 +1,13 @@
import os, getpass, click
import bench
from bench.utils import exec_cmd
from bench.app import get_current_frappe_version, use_rq
from bench.utils import get_bench_name, find_executable
from bench.config.common_site_config import get_config, update_config, get_gunicorn_workers
def generate_systemd_config(bench_path, user=None, yes=False, stop=False):
from bench.app import get_current_frappe_version, use_rq
from bench.utils import get_bench_name, find_executable
from bench.config.common_site_config import get_config, update_config, get_gunicorn_workers
def generate_systemd_config(bench_path, user=None, yes=False,
stop=False, create_symlinks=False,
delete_symlinks=False):
if not user:
user = getpass.getuser()
@ -15,10 +18,17 @@ def generate_systemd_config(bench_path, user=None, yes=False, stop=False):
bench_name = get_bench_name(bench_path)
if stop:
from bench.utils import exec_cmd
exec_cmd('sudo systemctl stop -- $(systemctl show -p Requires {bench_name}.target | cut -d= -f2)'.format(bench_name=bench_name))
return
if create_symlinks:
_create_symlinks(bench_path)
return
if delete_symlinks:
_delete_symlinks(bench_path)
return
bench_info = {
"bench_dir": bench_dir,
"sites_dir": os.path.join(bench_dir, 'sites'),
@ -149,3 +159,56 @@ def setup_redis_config(bench_info, bench_path):
with open(bench_redis_socketio_config_path, 'w') as f:
f.write(bench_redis_socketio_config)
def _create_symlinks(bench_path):
bench_dir = os.path.abspath(bench_path)
etc_systemd_system = os.path.join('/', 'etc', 'systemd', 'system')
config_path = os.path.join(bench_dir, 'config', 'systemd')
unit_files = get_unit_files(bench_dir)
for unit_file in unit_files:
filename = "".join(unit_file)
# if '-worker' in unit_file[0] and unit_file[1] == '.service':
# unit_file.insert(1, '@')
exec_cmd('sudo ln -s {config_path}/{unit_file} {etc_systemd_system}/{unit_file_init}'.format(
config_path=config_path,
etc_systemd_system=etc_systemd_system,
unit_file=filename,
unit_file_init="".join(unit_file)
))
exec_cmd('sudo systemctl daemon-reload')
def _delete_symlinks(bench_path):
bench_dir = os.path.abspath(bench_path)
etc_systemd_system = os.path.join('/', 'etc', 'systemd', 'system')
config_path = os.path.join(bench_dir, 'config', 'systemd')
unit_files = get_unit_files(bench_dir)
for unit_file in unit_files:
# if '-worker' in unit_file[0] and unit_file[1] == '.service':
# unit_file.insert(1, '@')
exec_cmd('sudo rm {etc_systemd_system}/{unit_file_init}'.format(
config_path=config_path,
etc_systemd_system=etc_systemd_system,
unit_file_init="".join(unit_file)
))
exec_cmd('sudo systemctl daemon-reload')
def get_unit_files(bench_path):
bench_name = get_bench_name(bench_path)
unit_files = [
[bench_name, ".target"],
[bench_name+"-workers", ".target"],
[bench_name+"-web", ".target"],
[bench_name+"-redis", ".target"],
[bench_name+"-frappe-default-worker", ".service"],
[bench_name+"-frappe-short-worker", ".service"],
[bench_name+"-frappe-long-worker", ".service"],
[bench_name+"-frappe-schedule", ".service"],
[bench_name+"-frappe-web", ".service"],
[bench_name+"-node-socketio", ".service"],
[bench_name+"-redis-cache", ".service"],
[bench_name+"-redis-queue", ".service"],
[bench_name+"-redis-socketio", ".service"],
]
return unit_files