publik-common/publik-cluster-link

79 lines
2.1 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',
'fargo',
'hobo',
'lingo',
'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(hobo_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))