Refactor php versions management

This commit is contained in:
VirtuBox
2023-08-05 15:47:01 +02:00
parent f9b3f96e14
commit ce961e90a8
5 changed files with 28 additions and 44 deletions

View File

@@ -16,6 +16,7 @@ license-file = LICENSE
[flake8]
ignore = F405,W504,S322,S404,S603,s607,s602,C901
max-line-length = 120
exclude =
# No need to traverse our git directory
.git,

View File

@@ -879,22 +879,13 @@ def site_package_check(self, stype):
Log.error(self, "Error: two different PHP versions cannot be "
"combined within the same WordOps site")
php_versions = {
'php72': '7.2',
'php73': '7.3',
'php74': '7.4',
'php80': '8.0',
'php81': '8.1',
'php82': '8.2',
}
if ((not pargs.php72) and (not pargs.php73) and (not pargs.php74) and
(not pargs.php80) and (not pargs.php81) and (not pargs.php82) and
stype in ['php', 'mysql', 'wp', 'wpsubdir',
'wpsubdomain']):
Log.debug(self, "Setting apt_packages variable for PHP")
for version_key, version_number in php_versions.items():
for version_key, version_number in WOVar.wo_php_versions.items():
if (self.app.config.has_section('php') and
self.app.config.get('php', 'version') == version_number):
Log.debug(
@@ -904,7 +895,7 @@ def site_package_check(self, stype):
apt_packages += getattr(
WOVar, f'wo_{version_key}') + WOVar.wo_php_extra
for version_key, version_number in php_versions.items():
for version_key, version_number in WOVar.wo_php_versions.items():
if getattr(pargs, version_key) and stype in [version_key, 'mysql', 'wp', 'wpsubdir', 'wpsubdomain']:
Log.debug(self, f"Setting apt_packages variable for PHP {version_number}")
if not WOAptGet.is_installed(self, f'php{version_number}-fpm'):

View File

@@ -670,15 +670,6 @@ class WOStackController(CementBaseController):
apt_packages = apt_packages + WOVar.wo_nginx
# Create a dictionary that maps PHP versions to corresponding variables.
php_versions = {
'php72': '7.2',
'php73': '7.3',
'php74': '7.4',
'php80': '8.0',
'php81': '8.1',
'php82': '8.2',
}
wo_vars = {
'php72': WOVar.wo_php72,
'php73': WOVar.wo_php73,
@@ -689,7 +680,7 @@ class WOStackController(CementBaseController):
}
# Loop through all versions.
for parg_version, version in php_versions.items():
for parg_version, version in WOVar.wo_php_versions.items():
# Check if this version is present in pargs.
if getattr(pargs, parg_version):
Log.debug(self, f"Setting apt_packages variable for PHP {version}")
@@ -699,7 +690,7 @@ class WOStackController(CementBaseController):
# Check if other versions are installed.
if not any(WOAptGet.is_installed(self, f'php{other_version}-fpm') for
other_version in php_versions.values() if other_version != version):
other_version in WOVar.wo_php_versions.values() if other_version != version):
apt_packages += WOVar.wo_php_extra
else:

View File

@@ -12,7 +12,7 @@ class WOConf():
def nginxcommon(self):
"""nginx common configuration deployment"""
wo_php_version = ["php72", "php73", "php74", "php80", "php81", "php82"]
wo_php_version = list(WOVar.wo_php_versions.keys())
ngxcom = '/etc/nginx/common'
if not os.path.exists(ngxcom):
os.mkdir(ngxcom)

View File

@@ -150,31 +150,32 @@ class WOVar():
wo_nginx = ["nginx-custom", "nginx-wo"]
wo_nginx_key = 'FB898660'
wo_php_versions = {
'php72': '7.2',
'php73': '7.3',
'php74': '7.4',
'php80': '8.0',
'php81': '8.1',
'php82': '8.2',
}
wo_module = ["bcmath", "cli", "common", "curl", "fpm", "gd", "igbinary",
"imagick", "imap", "intl", "mbstring", "memcached", "msgpack",
"mysql", "opcache", "readline", "redis", "soap", "xdebug",
"xml", "zip"]
wo_php72 = []
for module in wo_module:
wo_php72 = wo_php72 + ["php7.2-{0}".format(module)]
wo_php72 = wo_php72 + ["php7.2-recode"]
wo_php73 = []
for module in wo_module:
wo_php73 = wo_php73 + ["php7.3-{0}".format(module)]
wo_php73 = wo_php73 + ["php7.3-recode"]
wo_php74 = []
for module in wo_module:
wo_php74 = wo_php74 + ["php7.4-{0}".format(module)]
wo_php74 = wo_php74 + ["php7.4-geoip", "php7.4-json"]
wo_php80 = []
for module in wo_module:
wo_php80 = wo_php80 + ["php8.0-{0}".format(module)]
wo_php81 = []
for module in wo_module:
wo_php81 = wo_php81 + ["php8.1-{0}".format(module)]
wo_php82 = []
for module in wo_module:
wo_php82 = wo_php82 + ["php8.2-{0}".format(module)]
wo_php_modules = {}
for version_key, version_number in wo_php_versions.items():
wo_php_modules[version_key] = []
for module in wo_module:
wo_php_modules[version_key].append("{0}-{1}".format(version_key, module))
# Add version-specific modules
if version_key == 'php72' or version_key == 'php73':
wo_php_modules[version_key].append("{0}-recode".format(version_key))
elif version_key == 'php74':
wo_php_modules[version_key].extend(["{0}-geoip".format(version_key), "{0}-json".format(version_key)])
wo_php_extra = ["graphviz"]