#!/usr/local/bin/python3 from argparse import ArgumentParser from application_info import * import logging from systemd import journal import os log = logging.getLogger('mynode_manage_apps') log.addHandler(journal.JournaldLogHandler()) log.setLevel(logging.INFO) set_logger(log) def main(): # Check running as root if os.geteuid() != 0: print("This script needs to be run as root.") exit(1) # App name arguments should be in shortname format # mynode-manage-apps [init, openports, install , uninstall , ...] parser = ArgumentParser(prog='mynode-manage-apps') subparsers = parser.add_subparsers(dest='command') parser_init = subparsers.add_parser('init', help='Initialize Apps') parser_openports = subparsers.add_parser('openports', help='Open app ports in firewall') parser_list = subparsers.add_parser('list', help='List dynamic apps') parser_install = subparsers.add_parser('install', help='Install Dynamic Application') parser_install.add_argument('app', help='App to install', default="all", nargs='*') parser_uninstall = subparsers.add_parser('reinstall', help='Reinstall Dynamic Application') parser_uninstall.add_argument('app', help='App to reinstall', nargs='+') # required parser_uninstall = subparsers.add_parser('uninstall', help='Uninstall Dynamic Application') parser_uninstall.add_argument('app', help='App to uninstall', nargs='+') # required parser_upgrade = subparsers.add_parser('upgrade', help='Upgrade Dynamic Application') parser_upgrade.add_argument('app', help='App to install', default="all", nargs='*') parser_help = subparsers.add_parser('help', help='Display Help') args = parser.parse_args() if args.command == "init": init_dynamic_apps() elif args.command == "openports": open_application_ports() elif args.command == "list": list_dynamic_apps() elif args.command == "install" or \ args.command == "upgrade" or \ args.command == "reinstall": # If no app name, install all # Re-install requires app name (from above) app_names = args.app if not isinstance(app_names, list): app_names = [app_names] for app_name in app_names: if args.command == "reinstall": clear_installed_version(app_name) if app_name != "all" and is_application_valid(app_name): mark_app_installed(app_name) upgrade_dynamic_apps(app_name) elif args.command == "upgrade": # If no app name, upgrade all app_names = args.app if not isinstance(app_names, list): app_names = [app_names] for app_name in app_names: upgrade_dynamic_apps(app_name) elif args.command == "uninstall": # Requires specified application app_names = args.app for app_name in app_names: uninstall_dynamic_app(app_name) elif args.command == "help": parser.print_help() else: parser.print_help() if __name__ == '__main__': main()