78 lines
2.2 KiB
Python
Executable File
78 lines
2.2 KiB
Python
Executable File
#!/usr/bin/python3
|
|
# Create links on Publik clustered installations
|
|
# 2018 Entr'ouvert
|
|
import argparse
|
|
import shutil
|
|
import os
|
|
|
|
|
|
briques = ['authentic2-multitenant',
|
|
'bijoe',
|
|
'chrono',
|
|
'combo',
|
|
'corbo',
|
|
'fargo',
|
|
'hobo',
|
|
'mandayejs',
|
|
'passerelle',
|
|
'wcs',
|
|
'welco']
|
|
|
|
|
|
def link(application, basepath):
|
|
if application == 'authentic2-multitenant':
|
|
user = 'authentic-multitenant'
|
|
else:
|
|
user = application
|
|
|
|
etc = os.path.join(basepath, 'etc')
|
|
lib = os.path.join(basepath, 'lib')
|
|
nginx = os.path.join(basepath, 'etc', 'nginx')
|
|
hobo_agent = os.path.join(basepath, 'etc', 'hobo_agent')
|
|
app_etc = os.path.join(etc, application)
|
|
app_lib = os.path.join(lib, application)
|
|
app_nginx = os.path.join(nginx, application)
|
|
app_hobo_agent = os.path.join(hob_agent, application)
|
|
|
|
for p in [etc, lib, nginx, app_etc, app_lib, app_nginx, hobo_agent, app_hobo_agent]:
|
|
if not os.path.isdir(p):
|
|
os.mkdir(p)
|
|
if p in [app_etc, app_lib]:
|
|
os.system('chown %s %s' % (user, p))
|
|
|
|
def move_and_link(src, dst):
|
|
|
|
if not os.path.islink(src):
|
|
if os.path.isdir(src):
|
|
os.system('mv -n %s/* %s' % (src, dst))
|
|
shutil.rmtree(src, ignore_errors=True)
|
|
|
|
if not os.path.exists(src):
|
|
os.symlink(dst, src)
|
|
|
|
move_and_link('/etc/%s' % application, app_etc)
|
|
move_and_link('/var/lib/%s' % application, app_lib)
|
|
move_and_link('/etc/nginx', app_nginx)
|
|
move_and_link('/etc/hobo-agent', app_hobo_agent)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('application')
|
|
parser.add_argument('basepath')
|
|
args = parser.parse_args()
|
|
application = args.application
|
|
basepath = args.basepath
|
|
|
|
if not os.path.isdir(basepath):
|
|
raise(Exception('path not found: %s' % basepath))
|
|
|
|
if application == 'all':
|
|
for app in briques:
|
|
link(app, basepath)
|
|
else:
|
|
if application in briques:
|
|
link(application, basepath)
|
|
else:
|
|
raise(Exception('application unknown: %s' % application))
|