5/9eddlmZddlZddlmZddlmZmZmZddl m Z ddl m Z ddl mZddlmZmZmZmZmZmZmZdd lmZmZdd lmZGd d eZdS) )absolute_importN)abstractmethod)ListDictOptional)cpapi) is_ubuntu)GroupInfoReader) run_commandExternalProgramFailedis_package_installedget_package_db_errorsget_passenger_package_nameis_ea4get_cl_version)convert_package_version setup_logger)InstallationFailedExceptionceZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZedZedZedZedZedZdS)WizardInstallerz2 General interface for modules installers NcTtd|jjz|j|_dS)Nzwizard.)r __class____name__LOG_FILE app_loggerselfs py/clwizard/modules/base.py__init__zWizardInstaller.__init__)s#&y4>3J'JDMZZc|jd|jdd| t|}|jd|j|nT#t$rG}|jd|jt |d}~wwxYw|jd|S)z!Run external tool and log resultsz<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~zExecuting command %s... z3...external command successfully ended with output:zL...external command failed, see following lines for tracebacks, errors, etc.Nz<------------------------------------------------------------)rinfojoinr r errorstr)rcmdoutputerrs r _run_commandzWizardInstaller._run_command,s X&&&  %sxx}} 6 6 6 ) %%F O E G G G O  ( ( ( (%    O 5 6 6 6 O ! !#c(( + + +    X&&& s B CACCct}|r0d|d|}|j|tt |S)z!Check if package exists on serverzCan't check package z presence. Errors: )rrr&rr )r package_name error_message log_messages r_is_package_installedz%WizardInstaller._is_package_installedAs].//  0bbbS`bbK O ! !+ . . .-// /#L111r!cFtr |j|S|j|S)z!Install a package and log results)r _install_apt_package_install_yum_packagerpackagess r_install_packagez WizardInstaller._install_packageLs0 ;; 8,4,h7 7,4,h7 7r!cX|r'|gdt|zSdS)z&Install an apt package and log results)zapt-getinstall-yNr+listr4s rr2z$WizardInstaller._install_apt_packageTs=  ?$$,,,tH~~=?? ?tr!cX|r'|gdt|zSdS)z%Install a yum package and log results)yumr8r9Nr:r4s rr3z$WizardInstaller._install_yum_package\s=  ;$$(((4>>9;; ;tr!cFtr |j|S|j|S)z Install a package group. At the moment, DEB metapackages are not supported, and provided names are simply installed as normal packages. This will change in the future. )r r2_install_yum_groupsrgroupss r_install_groupszWizardInstaller._install_groupsds0 ;; 5,4,f5 5+4+V4 4r!cX|r'|gdt|zSdS)z.Install package group with yum and log results)r= groupinstallr9Nr:r@s rr?z#WizardInstaller._install_yum_groupsqs=  >$$---V <>> >tr!cd}tj|rdStpd}d|vrd}nd|vrd}nt dd|d}|jd |||dS) z Check whether cloudlinux-ea4.repo is present and install it if not. It's required only on EA4 to install proper Passenger package z$/etc/yum.repos.d/cloudlinux-ea4.repoNUnknown76z.Failed to get the distribution's major versionzIhttps://repo.cloudlinux.com/cloudlinux/EA4/cloudlinux-ea4-release-latest-z .noarch.rpmzFUnable to find cloudlinux-ea4 repo. Trying to install it using url: %s)ospathexistsrrrr$r3)rcl_ea4_repofiledist dist_maj_ver package_urls r_ensure_cl_ea4_repo_existsz*WizardInstaller._ensure_cl_ea4_repo_existsysA 7>>/ * *  F,9 $;;LL D[[LL-@BB BQ7CQQQ   1     !!+.....r!c tr|t}|jd| ||dS#t $r}t|d}~wwxYw)zb Install proper passenger package for Selectors if it's not yet installed z'Trying to install Passenger package: %sN)rrPrrr$r3r r)r passenger extern_faileds r_install_passengerz"WizardInstaller._install_passengers 88 .  + + - - -.00  F& ( ( ( C  % %i 0 0 0 0 0$ C C C-//] B Cs A$$ B.A==Bctj|}g}|dkrdnd}|D],}|t |d|-|S)z Get a list of available Python, NodeJS, PHP or Ruby module versions. :param group: - group name, e.g: python :return: list of available versions nodejsversion) version_size)r get_group_infovaluesappendr)groupavailable_groups_infoversionsver_size group_datas r_get_available_versionsz'WizardInstaller._get_available_versionss!0 >u E E ))11q/6688 L LJ OO3Jy4IAIKKK L L L Lr!ctNNotImplementedError)roptionss rrun_installationz WizardInstaller.run_installations"###r!ctSre)setclss rsupported_optionsz!WizardInstaller.supported_optionss uu r!ct)z Method that returns dictionary with two required keys: {installed: True|False and options: {...}] This will be used by lvemanager to properly display wizard. rfrs rinitial_statuszWizardInstaller.initial_statuss"###r!cF|jdStj|jS)z9 Checks whether we must :return: NT)_REQUIRED_CL_COMPONENT_SUPPORTris_panel_feature_supportedrls ris_supported_by_control_panelz-WizardInstaller.is_supported_by_control_panels-  - 54/  .00 0r!)r __module__ __qualname____doc__rrrr r+r0r6r2r3rBr?rPrT staticmethodrcrri classmethodrnrprtr!rrr!sNH%)"[[[* 2 2 2888 5 5 5///8CCC"\($$^$[$$^$00[000r!r) __future__rrIabcrtypingrrrclcommonrclcommon.lib.cleditionr clcommon.group_info_readerr clcommon.utilsr r r rrrrclwizard.utilsrrclwizard.exceptionsrobjectrrzr!rrsM'&&&&& '''''''''',,,,,,666666A@@@@@@@;;;;;;v0v0v0v0v0fv0v0v0v0v0r!