СloudLinux Blog

Stable: Python 3 migration with gradual rollout

Written by Ivan Zhmud | Mar 17, 2020 5:45:39 PM

I’m here to announce that today we are migrating our codebase to Python 3. Earlier, we announced Python 3 migration for Beta and there are some changes compared with the Beta release, namely, we have decided to keep the former name for the alt-python27-cllib package to provide backward compatibility and proper downgrade.

And now, all packages related to this release are scheduled for gradual rollout from our production repository and will be available for all customers within three weeks.

Rollout slot for CloudLinux 6/ 6 hybrid /7: 1

Rollout slot for CloudLinux 8: 2

Rolled out to: 1%

ETA for 100% rollout: March, 31st

Instruction for installation, update and downgrade

LVE-Manager, LVE-Utils, LVE-Stats, CageFS, Alt-Python27-cllib

Install:

# yum install lvemanager lve-utils lve-stats cagefs alt-python27-cllib cloudlinux-linksafe

Update:

# yum update lvemanager lve-utils lve-stats cagefs alt-python27-cllib cloudlinux-linksafe

Downgrade:

# yum downgrade lvemanager lve-utils lve-stats cagefs alt-python27-cllib cagefs-safebin cloudlinux-linksafe

Immediate installation (via bypass):

  • For CloudLinux 6 / 6 hybrid / 7
yum install lvemanager lve-utils lve-stats cagefs alt-python27-cllib cloudlinux-linksafe --enablerepo=cloudlinux-rollout-1-bypass
  • For CloudLinux 8
yum install lvemanager lve-utils lve-stats cagefs alt-python27-cllib cloudlinux-linksafe --enablerepo=cloudlinux-rollout-2-bypass

MySQL Governor

Install:

# yum install governor-mysql

Update:

# yum update governor-mysql

Downgrade:

# yum downgrade governor-mysql

Immediate installation (via bypass):

  • For CloudLinux 6 / 6 hybrid / 7
yum install governor-mysql --enablerepo=cloudlinux-rollout-1-bypass

Alt-mod-passenger

EasyApache 3 (note EA3 EoL), Plesk, DirectAdmin and no control panel RPM-based platforms:

Install:

# yum install alt-mod-passenger

Update:

# yum update alt-mod-passenger

Downgrade:

# yum downgrade alt-mod-passenger

Immediate installation (via bypass):

  • For CloudLinux 6 / 6 hybrid / 7
yum install alt-mod-passenger --enablerepo=cloudlinux-rollout-1-bypass
  • For CloudLinux 8
yum install alt-mod-passenger --enablerepo=cloudlinux-rollout-2-bypass

httpd24

Install:

# yum install httpd24-alt-mod-passenger

Update:

# yum update httpd24-alt-mod-passenger

Downgrade:

# yum downgrade httpd24-alt-mod-passenger

Immediate installation (via bypass):

  • For CloudLinux 6 / 6 hybrid / 7
yum install httpd24-alt-mod-passenger --enablerepo=cloudlinux-rollout-1-bypass
  • For CloudLinux 8
yum install httpd24-alt-mod-passenger --enablerepo=cloudlinux-rollout-2-bypass

Bypass commands (immediate installation):

yum install --enablerepo=cloudlinux-rollout-1-bypass <packageName>
yum install --enablerepo=cloudlinux-rollout-2-bypass <packageName>
Changelog

lve-manager-6.0.4-1

  • LVEMAN-1653: Wrong stack trace in PHP Selector
  • LU-1500: Create master-py3 branch
  • LU-1500: Add commented pylint --py3k
  • LU-1500: Update specifiction file for LVE Manager
  • LU-1566: Add -bb option to LVE Manager
  • Fix shebangs with -s and -bb keys for LVE Manager
  • LVEMAN-1603: Python 2 to 3 migration: LVE Manager: replace with compatible imports + unit tests
  • LU-1492: Write errors in case of bad cPanel configs
  • LVEMAN-1603: Migrate LVE Manager to Python 3: stabilizing for rpms
  • LVEMAN-1603: Fix the collect_py_files script to work with Python 3
  • LU-1589: Fix Wizard errors on CloudLinux 8
  • LU-1591: Fix the fix-homedirs command
  • LVEMAN-1628: Fix an issue with Pylint that does not start in LVE Manager spec
  • LVEMAN-1630: Fix LVE Manager unit tests mocks
  • LU-1607: LVE Manager: add interpolation=None
  • LVEMAN-1603: Migrate LVE Manager to Python 3: stabilising for rpms
  • WEB-1733: Adapt Protractor tests to Python 3
  • WEB-1774: Fix traceback when try to create a ticket to Support (Python 3 branch)
  • LVEMAN-1623: Python/Node.js Selector: improve integration with LiteSpeed
  • LU-1583: Enable Pylint py3k LVE Manager
  • PTCLLIB-182: Fix hooks installation on cPanel 84+
  • LVEMAN-1586 : Fix cl-quota
  • LVEMAN-1637: Make possible ea-ruby24-mod_passenger works with CloudLinux Python Selector
  • LU-1630: (LVE Manager) usage of os.makedirs on Python 3
  • Move News component to module
  • Fix no-panel PHP version bugs
  • Remove sourcemap for jQuery
  • Remove circular dependencies
  • Hide Domains tab for PHP Selector
  • WEB-1791: Ignore errors from other plugins in Plesk
  • LU-1664: post_modify_domain should not crash on Plesk
  • PTCLLIB-201: Fix wrong obsoletes in alt-python27-cllib that breaks yum update
  • LVEMAN-1626: Selector-ctl breaks PHP if non-existant PHP version is selected
  • WEB-1639: Cover Wizard by Protractor tests: mod_hostinglimits
  • WEB-1780: Run Wizard tests on Protractor

lve-utils-4.0.4-1

  • LU-1687: Fix traceback of the cldiag --cron-check command
  • LU-1637: /usr/sbin/lveps cuts user IDs > 8
  • LU-1500: Create master-py3 branch
  • LU-1500: Add commented pylint --py3k
  • LU-1486: Build lve-utils package for CloudLinux 8
  • LU-1500: Version up
  • Version change
  • LU-1492: Fix a bug with _parse_lve_lines
  • LU-1492: Do not call struct.pack with float argument
  • LU-1500: Update spec file for python_lve
  • LU-1566 Add the -bb option to the lve-utils
  • LU-1492: Migrate lve-utils code to use universal Python 2/3 code
  • Fix shebangs with -s and -bb keys for lve-utils
  • LU-1492: Migrate lve-utils code to Python 3 (limits manipulation)
  • Fix writing MySQL Governor config file
  • LU-1492: Write errors in case of bad cPanel configs
  • LU-1492: Use process.cmdline as a method because of new psutil version
  • PTCLLIB-184 : (Py_lve) Fix DirectAdmin CP API tests
  • LU-1492: Remove unneeded encode() in clcontrollib for Plesk
  • LU-1492: Fix cldiaglib error reporting about user's packages
  • LU-1492: Fix the migration_ve1_to_v2.py script
  • LU-1492: Enable unit tests for the lve-utils package
  • LU-1492: Fix checking users's packages in cldiaglib
  • Fix removed variable initialisation
  • LU-1589: Fix Wizard errors on CloudLinux 8
  • LU-1501: Manually build pyc pyo for CloudLinux 8
  • LU-1604: Fix lve-utils CloudLinux 8 and Python 3 tests
  • LU-1607: LVE-Utils: add interpolation=None
  • LU-1620 Fix clsummary enabling/disabling error
  • LU-1629: cl-summary get-remote returns -42 for CageFS parameters
  • LU-1637: /usr/sbin/lveps cuts user IDs > 8
  • LU-1630: Usage of os.makedirs on Python 3
  • PTCLLIB-201: Fix wrong obsoletes in alt-python27-cllib that breaks yum update
  • CAG-1029: Fix writing toprettyxml to files

lve-stats-3.0.1-1

  • LU-1598: Add Requires: jq for the lve-stats-itests package
  • LU-1583: Enable pylint py3k lve-stats
  • LVES-987: Make dbmigrator workable
  • LU-1500: Create master-py3 branch
  • LU-1500: Add commented pylint --py3k
  • LU-1500: Version up
  • LVES-968: Update dependencies and shebangs for Python 3
  • LVES-968: Use corresponding file mode to write bytes and strings
  • LVES-968: Update code to use prettytable version
  • LVES-968: Update LiteSpeed library
  • LVES-968: Update Sentry library
  • LVES-968: Update code that uses configparser
  • LVES-968: Do not raise StopIteration in __iter__
  • LVES-968: Update typing in statsnotifier
  • LVES-968: Update res_mem_collector to use bytes during lveps parsing
  • LVES-968: Fix bytes manipulation in snapshots
  • LVES-968: Replace assertItemsEqual with assertCountEqual
  • LVES-968: Remove unneeded Matplotlib test
  • LVES-968: Call tzset after modifying os.environ['TZ']
  • LVES-968: Fix usage of newer psutil
  • LVES-968: Avoid comparison of dictionaries as strings
  • LVES-968: Replace StringIO module with IO
  • LVES-968: Fix invalid imports for Python 3
  • LVES-968: Make stderr redirection to the /dev/null buffer
  • LVES-968: Minor fixes in order to make pylint and unit tests work
  • Update specification of lve-stats
  • Fix lve-stats tests on Python 3 (psycopq2 and lve_read_snapshot)
  • LU-1566: Add -bb option to lve-stats
  • LVES-968: Fix lve-stats unit tests run with -bb
  • LVES-968: Final checks of lve-stats with Python 3 from real repositories
  • LU-1598: Add Requires: jq for lve-stats-itests package
  • LU-1583: Enable pylint py3k lve-stats
  • LVES-987: Make dbmigrator workable
  • LVES-988: Fix traceback in postun section of previous installed lve-stats package
  • LVES-990: Fix traceback of LVE-stats server after downgrade
  • PTCLLIB-201: Fix wrong obsoletes in the alt-python27-cllib that breaks yum update
  • LVES-947: LVE-stats should not treat admins users as resellers customers
  • LVES-992: Fix Unicode characters in email templates

cagefs-7.0.3-1

  • LU-1500: Create master-py3 branch
  • LU-1500: Add commented pylint --py3k
  • CAG-987: Build simple_rpm.so for alt-python37
  • LU-1500: Version up
  • LVEMAN-1500: Change the spec file and shebangs for Python 3
  • LU-1566: Add -bb option to CageFS
  • LU-1501: Manually build pyc pyo for CloudLinux 8
  • CAG-988: Migrate CageFS code to the universal Python 2/3 code (stage 1 + Unicode literals)
  • CAG-988: Migrate CageFS code to the universal Python 2/3 code(stage 2)
  • CAG-988: Migrate CageFS code to the universal Python 2/3 code (fix errors after migration)
  • CAG-988: Migrate CageFS code to the universal Python 2/3 code (fix errors after migration)
  • CAG-1010: Set umask in CageFS
  • LU-1607: CageFS: add interpolation=None
  • CAG-988: Migrate CageFS code to the universal Python 2/3 code (fix errors #2)
  • LU-1583: Enable pylint py3k CageFS
  • PTCLLIB-182: Fix hooks installation on cPanel 84+
  • CAG-1014: Investigate failed test 958-list-mounted-users on DirectAdmin
  • CAG-1020: Add python3-virtualenv and python36 packages to CageFS
  • LU-1630: CAG: usage of os.makedirs on Python 3
  • LU-1625: Rewrite some expensive CageFS tests as unit tests
  • CAG-1027: Fix pickle incompatibility between Python 2 and Python 3
  • CAG-1023: Improve help for the cagefsctl --addrpm PACKAGE command
  • PTCLLIB-201: Fix wrong obsoletes in alt-python27-cllib that breaks yum update
  • CAG-1011: jail_shell_disable.sh improvements
  • CAG-1029: Fix writing LiteSpeed conf

cloudlinux-linksafe-1-1.25

  • LVEMAN-1648: Add --skip-php-reload to the cagefsctl --setup-cl-selector called by the /usr/bin/cl-linksafe-reconfigure

alt-python27-cllib-2.0.8-5

  • LU-1500: Create master-py3 branch
  • LU-1500: Add commented pylint --py3k
  • PTCLLIB-175: Build alt-python27-cllib package for CloudLinux 8
  • LU-1500: Version up
  • PTCLLIB-179: Replace assert(Not)Eqals with assert(Not)Equal
  • PTCLLIB-179: Replace deprecated assertItemsEqual with assertCountEqual
  • PTCLLIB-179: Replace builtin imports with builtins
  • PTCLLIB-179: Replace deprecated NoneType
  • PTCLLIB-179: Fix the reload_processes function
  • PTCLLIB-179: Use bytes when parsing php_conf config
  • PTCLLIB-179: Fix unit tests behaviour
  • PTCLLIB-179: (Stage 2) Safe fixes of futurize
  • LU-1500: Update spec and shebangs for Python 3
  • PTCLLIB-179: (Nobuild) Stage 2 of futurize
  • PTCLLIB-179: (Fixes) Stage 2 of futurize
  • PTCLLIB-179: Fix vendors_api
  • PTCLLIB-179: Fix cpapi plugins Plesk users encoding
  • PTCLLIB-179: Remove multiple imports on single lines
  • LU-1566: Add -bb option to cllib
  • PTCLLIB-179: Use text=True in all subprocess calls
  • LU-1492: Remove byteify usage from cpapi plugins
  • Minor fixes to cllib to work on Python 3
  • LU-1492: Make hooks installation work on Plesk
  • LU-1492: Write errors in case of bad cPanel configs
  • LU-1492: Use text=True for subprocess while installing cPanel hooks
  • Add text=True to the clcaptain
  • PTCLLIB-184 Fix DirectAdmin CP AP tests
  • PTCLLIB-183: Rewrite pretrans using Lua
  • PTCLLIB-185: Fix admins sync when admin does not have system user
  • PTCLLIB-186: Make db_info optional, as mentioned in documentation
  • LVES-968: Make it possible to get raw subprocess from the run_command
  • LU-1501: Add manual pyc pyo build for cllib
  • PTCLLIB-191: Fix unit tests
  • LU-1589: Fix Wizard errors on CloudLinux 8
  • LU-1607: Python-cllib: add interpolation=None
  • LU-1583: Enable pylint py3k for cllib
  • LVEMAN-1636: Fix sendmail subprocess error
  • PTCLLIB-182: Fix hooks installation on cPanel 84+
  • CAG-1014: Investigate failed test 958-list-mounted-users on DirectAdmin
  • PTCLLIB-193: Fix issues with upgrade and downgrade of the alt-python-cllib package
  • PTCLLIB-183: Rewrite pretrans using Lua
  • PTCLLIB-195: Fix NoneType Traceback with whmapi call on cPanel 86.0
  • LU-1641: Investigate an issues with CloudLinux 8 installation into empty chroot (ISO install)
  • LU-1646: Fix cl-wizard on CloudLinux 7 hybrid
  • LU-1630: Usage of os.makedirs on Python 3
  • CAG-1027: Fix pickle incompatibility between Python 2 and Python 3
  • PTCLLIB-201: Fix wrong obsoletes in alt-python27-cllib that breaks yum update

alt-mod-passenger-5.3.7-11

httpd24-alt-mod-passenger5.3.7-11

ea-apache24-mod-alt-passenger-5.3.7-11

  • ALMODP-144: Migrate to the Python 3 codebase
  • ALMODP-147: Fixed module installation on DirectAdmin

governor-mysql 1.2-53

  • MYSQLG-452: CloudLinux8 modularity caching during install, mysql:8.0 as auto version
  • MYSQLG-458: Codebase is migrated to Python 3.7
  • MYSQLG-468: Added mariadb104 support
  • MYSQLG-466: Allow duplicates when reading /etc/my.cnf

Stay in touch

Please, give us feedback on the latest release or share your ideas and feature requests with the product team via feedback@cloudlinux.com.

If you encounter any issues, do not hesitate and reach out to our support team at https://cloudlinux.zendesk.com/.