%PDF- %PDF-
Direktori : /opt/alt/python37/lib/python3.7/site-packages/clconfigure/cli/ |
Current File : //opt/alt/python37/lib/python3.7/site-packages/clconfigure/cli/cloudlinux-reconfigure.py |
#!/opt/alt/python37/bin/python3 -bb # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2018 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # https://cloudlinux.com/docs/LICENCE.TXT # from __future__ import absolute_import import argparse import logging import sys from clconfigure import task from clconfigure.services import set_service_state, STATE_RUNNING, STATE_MASKED, STATE_STOPPED, STATE_UNMASKED from clconfigure.packages import set_package_state, get_list_installed_alt_phps, STATE_INSTALLED, STATE_REMOVED from lve_utils.sentry import init_lve_utils_sentry_client from clconfigure import setup_logger from clcommon.lib.cledition import is_cl_solo_edition LOGS_PATH = '/var/log/cloudlinux/clcustomizer.log' CONFLICTED_PACKAGES = ( 'ea-apache24-mod_lsapi', 'mod_lsapi', 'httpd24-mod_lsapi', 'mod_hostinglimits', 'ea-apache24-mod_hostinglimits', 'httpd24-mod_hostinglimits', 'cagefs', 'pam_lve', 'governor-mysql', ) @task("Configuring environment for CloudLinux OS Solo: is_posttrans='{is_posttrans}'") def install_cl_solo(is_posttrans): """ Converts "normal" CloudLinux into CL Solo by disabling some services and installing some packages. :param is_posttrans: When true, we must do only actions that need to be done during %posttrans section of cloudlinux-solo-meta package """ if not is_posttrans: alt_phps = ['alt-' + php for php in get_list_installed_alt_phps()] for conflicted_package in CONFLICTED_PACKAGES: set_package_state(STATE_REMOVED, conflicted_package) for php in alt_phps: set_package_state(STATE_REMOVED, php) set_package_state(STATE_INSTALLED, 'cloudlinux-solo-meta') else: set_service_state(STATE_STOPPED, 'lve') set_service_state(STATE_STOPPED, 'lve_namespaces') set_service_state(STATE_STOPPED, 'lvestats') set_service_state(STATE_STOPPED, 'lvectl') set_service_state(STATE_MASKED, 'lve') set_service_state(STATE_MASKED, 'lve_namespaces') set_service_state(STATE_MASKED, 'lvestats') set_service_state(STATE_MASKED, 'lvectl') @task("Converting environment from CloudLinux OS Solo to CloudLinux OS Shared: is_posttrans='{is_posttrans}'") def uninstall_cl_solo(is_posttrans): """ Converts CL Solo into "normal" CloudLinux by enabling some services and installing some packages. :param is_posttrans: When true, we must do only actions that need to be done during %posttrans section of cloudlinux-solo-meta package """ if not is_posttrans: set_package_state(STATE_REMOVED, 'cloudlinux-solo-meta') set_package_state(STATE_INSTALLED, 'cagefs') else: set_service_state(STATE_UNMASKED, 'lve') set_service_state(STATE_UNMASKED, 'lve_namespaces') set_service_state(STATE_UNMASKED, 'lvestats') set_service_state(STATE_UNMASKED, 'lvectl') set_service_state(STATE_RUNNING, 'lve') set_service_state(STATE_RUNNING, 'lve_namespaces') set_service_state(STATE_RUNNING, 'lvectl') set_service_state(STATE_RUNNING, 'lvestats') def main(): """ Entry point for this program. Parses arguments and calls needed methods. """ setup_logger(None, LOGS_PATH) logging.debug('Executing "%s"', ' '.join(sys.argv)) parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(dest='action') reconfigure = subparsers.add_parser('reconfigure') reconfigure.add_argument('-t', '--target', choices=['solo', 'shared', 'auto'], required=True) reconfigure.add_argument('--posttrans', default=False, action='store_true') args = parser.parse_args() if args.action is None: parser.print_help() return if args.target == 'solo': install_cl_solo(args.posttrans) elif args.target == 'shared': uninstall_cl_solo(args.posttrans) elif args.target == 'auto': if is_cl_solo_edition(skip_jwt_check=False): install_cl_solo(args.posttrans) else: uninstall_cl_solo(args.posttrans) else: raise NotImplementedError() if __name__ == '__main__': logging.basicConfig(level=logging.INFO) init_lve_utils_sentry_client('clconfigure') main()