Stable: Python 3 migration with gradual rollout

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-py3branch - LU-1500: Add commented
pylint --py3k - LU-1500: Update specifiction file for LVE Manager
- LU-1566: Add
-bboption to LVE Manager - Fix shebangs with
-sand-bbkeys 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_filesscript to work with Python 3 - LU-1589: Fix Wizard errors on CloudLinux 8
- LU-1591: Fix the
fix-homedirscommand - 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_passengerworks with CloudLinux Python Selector - LU-1630: (LVE Manager) usage of
os.makedirson 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_domainshould not crash on Plesk - PTCLLIB-201: Fix wrong obsoletes in
alt-python27-cllibthat 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-checkcommand - LU-1637:
/usr/sbin/lvepscuts user IDs > 8 - LU-1500: Create
master-py3branch - LU-1500: Add commented
pylint --py3k - LU-1486: Build
lve-utilspackage 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
-bboption to the lve-utils - LU-1492: Migrate lve-utils code to use universal Python 2/3 code
- Fix shebangs with
-sand-bbkeys 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.cmdlineas 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
cldiagliberror reporting about user's packages - LU-1492: Fix the
migration_ve1_to_v2.pyscript - 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-remotereturns-42for CageFS parameters - LU-1637:
/usr/sbin/lvepscuts user IDs > 8 - LU-1630: Usage of
os.makedirson Python 3 - PTCLLIB-201: Fix wrong obsoletes in alt-python27-cllib that breaks yum update
- CAG-1029: Fix writing
toprettyxmlto files
lve-stats-3.0.1-1
- LU-1598: Add
Requires: jqfor 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_collectorto use bytes during lveps parsing - LVES-968: Fix bytes manipulation in snapshots
- LVES-968: Replace
assertItemsEqualwithassertCountEqual - 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/nullbuffer - 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 (
psycopq2andlve_read_snapshot) - LU-1566: Add
-bboption 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: jqfor 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-cllibthat 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-py3branch - LU-1500: Add commented
pylint --py3k - CAG-987: Build
simple_rpm.sofor alt-python37 - LU-1500: Version up
- LVEMAN-1500: Change the spec file and shebangs for Python 3
- LU-1566: Add
-bboption 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
umaskin 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-virtualenvandpython36packages 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 PACKAGEcommand - PTCLLIB-201: Fix wrong obsoletes in alt-python27-cllib that breaks yum update
- CAG-1011:
jail_shell_disable.shimprovements - CAG-1029: Fix writing LiteSpeed conf
cloudlinux-linksafe-1-1.25
- LVEMAN-1648: Add
--skip-php-reloadto thecagefsctl --setup-cl-selectorcalled by the/usr/bin/cl-linksafe-reconfigure
alt-python27-cllib-2.0.8-5
- LU-1500: Create
master-py3branch - 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)Eqalswithassert(Not)Equal - PTCLLIB-179: Replace deprecated
assertItemsEqualwithassertCountEqual - PTCLLIB-179: Replace
builtinimports withbuiltins - PTCLLIB-179: Replace deprecated NoneType
- PTCLLIB-179: Fix the
reload_processesfunction - 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
-bboption to cllib - PTCLLIB-179: Use
text=Truein 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=Truefor subprocess while installing cPanel hooks - Add
text=Trueto theclcaptain - 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_infooptional, 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.makedirson 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
mariadb104support - 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/.




