From 788f1c2982de2d335fcca138ca43f2cb2638901a Mon Sep 17 00:00:00 2001 From: Zhang Hua Date: Wed, 5 Jul 2023 18:29:45 +0800 Subject: [PATCH] Allow users to disable wsgi socket rotation (#801) The lp bug 1863232 introduced a new configuration option called WSGISocketRotation which allows users to disable socket rotation on the apache side. This patch will also allow setting this option on the charm side. Other gerrit review links: horizon: https://review.opendev.org/c/openstack/charm-openstack-dashboard/+/886373 cinder: https://review.opendev.org/c/openstack/charm-cinder/+/886356 keystone: https://review.opendev.org/c/openstack/charm-keystone/+/886377 ncc: https://review.opendev.org/c/openstack/charm-nova-cloud-controller/+/885836 Partial-Bug: 2021550 (cherry picked from commit 996f2410632b44a7dc207cc4bbfc1a38c83140a8) Signed-off-by: zhhuabj --- charmhelpers/contrib/openstack/context.py | 4 ++++ .../openstack/templates/wsgi-openstack-api.conf | 6 ++++++ tests/contrib/openstack/test_os_contexts.py | 10 ++++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/charmhelpers/contrib/openstack/context.py b/charmhelpers/contrib/openstack/context.py index 2c21ed357..ff9a3e9f6 100644 --- a/charmhelpers/contrib/openstack/context.py +++ b/charmhelpers/contrib/openstack/context.py @@ -1674,6 +1674,9 @@ def __init__(self, name=None, script=None, admin_script=None, def __call__(self): total_processes = _calculate_workers() + enable_wsgi_rotation = config('wsgi-rotation') + if enable_wsgi_rotation is None: + enable_wsgi_rotation = True ctxt = { "service_name": self.service_name, "user": self.user, @@ -1687,6 +1690,7 @@ def __call__(self): "public_processes": int(math.ceil(self.public_process_weight * total_processes)), "threads": 1, + "wsgi_rotation": enable_wsgi_rotation, } return ctxt diff --git a/charmhelpers/contrib/openstack/templates/wsgi-openstack-api.conf b/charmhelpers/contrib/openstack/templates/wsgi-openstack-api.conf index 6c4e37e40..2cb735e94 100644 --- a/charmhelpers/contrib/openstack/templates/wsgi-openstack-api.conf +++ b/charmhelpers/contrib/openstack/templates/wsgi-openstack-api.conf @@ -12,6 +12,12 @@ Listen {{ admin_port }} Listen {{ public_port }} {% endif -%} +{% if wsgi_rotation -%} +WSGISocketRotation On +{% else -%} +WSGISocketRotation Off +{% endif -%} + {% if port -%} WSGIDaemonProcess {{ service_name }} processes={{ processes }} threads={{ threads }} user={{ user }} group={{ group }} \ diff --git a/tests/contrib/openstack/test_os_contexts.py b/tests/contrib/openstack/test_os_contexts.py index fde43dc0e..5ec5277db 100644 --- a/tests/contrib/openstack/test_os_contexts.py +++ b/tests/contrib/openstack/test_os_contexts.py @@ -3295,7 +3295,9 @@ def test_loglevel_context_unset(self): @patch.object(context, '_calculate_workers') def test_wsgi_worker_config_context(self, _calculate_workers): - self.config.return_value = 2 # worker-multiplier=2 + self.config.side_effect = fake_config({ + 'worker-multiplier': 2, 'non-defined-wsgi-rotation': True + }) _calculate_workers.return_value = 8 service_name = 'service-name' script = '/usr/bin/script' @@ -3312,13 +3314,16 @@ def test_wsgi_worker_config_context(self, "admin_processes": 2, "public_processes": 6, "threads": 1, + "wsgi_rotation": True, } self.assertEqual(expect, ctxt()) @patch.object(context, '_calculate_workers') def test_wsgi_worker_config_context_user_and_group(self, _calculate_workers): - self.config.return_value = 1 + self.config.side_effect = fake_config({ + 'worker-multiplier': 1, 'wsgi-rotation': False + }) _calculate_workers.return_value = 1 service_name = 'service-name' script = '/usr/bin/script' @@ -3339,6 +3344,7 @@ def test_wsgi_worker_config_context_user_and_group(self, "admin_processes": 1, "public_processes": 1, "threads": 1, + "wsgi_rotation": False, } self.assertEqual(expect, ctxt())