#!/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))