From e0d3b6a36553f3627c86bdef420fd55e24e9a0b5 Mon Sep 17 00:00:00 2001 From: zhhuabj Date: Mon, 4 Sep 2023 18:15:31 +0800 Subject: [PATCH] Support disabling apache wsgi socket rotation Bug LP 1863232 introduced a new Apache configuration option called WSGISocketRotation which allows users to disable wsgi socket rotation. This patch makes this configurable with a new wsgi-socket-rotation config option that defaults to the Apache default and can optionally be set to False. Closes-Bug: #2021550 Change-Id: I85d48b646b3d0778aae3a7dd3942ad45b4af002d --- charmhelpers/contrib/openstack/context.py | 8 ++++---- .../contrib/openstack/templates/wsgi-openstack-api.conf | 2 +- .../openstack/templates/wsgi-openstack-metadata.conf | 2 +- charmhelpers/contrib/storage/linux/ceph.py | 8 ++++++-- charmhelpers/core/unitdata.py | 3 ++- charmhelpers/fetch/snap.py | 2 +- config.yaml | 8 ++++++++ 7 files changed, 23 insertions(+), 10 deletions(-) diff --git a/charmhelpers/contrib/openstack/context.py b/charmhelpers/contrib/openstack/context.py index 24a13d0d..42f15032 100644 --- a/charmhelpers/contrib/openstack/context.py +++ b/charmhelpers/contrib/openstack/context.py @@ -1748,9 +1748,9 @@ class WSGIWorkerConfigContext(WorkerConfigContext): def __call__(self): total_processes = _calculate_workers() - enable_wsgi_rotation = config('wsgi-rotation') - if enable_wsgi_rotation is None: - enable_wsgi_rotation = True + enable_wsgi_socket_rotation = config('wsgi-socket-rotation') + if enable_wsgi_socket_rotation is None: + enable_wsgi_socket_rotation = True ctxt = { "service_name": self.service_name, "user": self.user, @@ -1764,7 +1764,7 @@ class WSGIWorkerConfigContext(WorkerConfigContext): "public_processes": int(math.ceil(self.public_process_weight * total_processes)), "threads": 1, - "wsgi_rotation": enable_wsgi_rotation, + "wsgi_socket_rotation": enable_wsgi_socket_rotation, } return ctxt diff --git a/charmhelpers/contrib/openstack/templates/wsgi-openstack-api.conf b/charmhelpers/contrib/openstack/templates/wsgi-openstack-api.conf index 2cb735e9..de5f603f 100644 --- a/charmhelpers/contrib/openstack/templates/wsgi-openstack-api.conf +++ b/charmhelpers/contrib/openstack/templates/wsgi-openstack-api.conf @@ -12,7 +12,7 @@ Listen {{ admin_port }} Listen {{ public_port }} {% endif -%} -{% if wsgi_rotation -%} +{% if wsgi_socket_rotation -%} WSGISocketRotation On {% else -%} WSGISocketRotation Off diff --git a/charmhelpers/contrib/openstack/templates/wsgi-openstack-metadata.conf b/charmhelpers/contrib/openstack/templates/wsgi-openstack-metadata.conf index 2cb735e9..de5f603f 100644 --- a/charmhelpers/contrib/openstack/templates/wsgi-openstack-metadata.conf +++ b/charmhelpers/contrib/openstack/templates/wsgi-openstack-metadata.conf @@ -12,7 +12,7 @@ Listen {{ admin_port }} Listen {{ public_port }} {% endif -%} -{% if wsgi_rotation -%} +{% if wsgi_socket_rotation -%} WSGISocketRotation On {% else -%} WSGISocketRotation Off diff --git a/charmhelpers/contrib/storage/linux/ceph.py b/charmhelpers/contrib/storage/linux/ceph.py index 2e1fc1b5..6ec67cba 100644 --- a/charmhelpers/contrib/storage/linux/ceph.py +++ b/charmhelpers/contrib/storage/linux/ceph.py @@ -158,15 +158,19 @@ def get_osd_settings(relation_name): return _order_dict_by_key(osd_settings) -def send_application_name(relid=None): +def send_application_name(relid=None, app_name=None): """Send the application name down the relation. :param relid: Relation id to set application name in. :type relid: str + :param app_name: Application name to send in the relation. + :type app_name: str """ + if app_name is None: + app_name = application_name() relation_set( relation_id=relid, - relation_settings={'application-name': application_name()}) + relation_settings={'application-name': app_name}) def send_osd_settings(): diff --git a/charmhelpers/core/unitdata.py b/charmhelpers/core/unitdata.py index dac757f1..65153f1f 100644 --- a/charmhelpers/core/unitdata.py +++ b/charmhelpers/core/unitdata.py @@ -529,7 +529,8 @@ def kv(): env_var = os.environ.get("CHARM_HELPERS_TESTMODE", "auto").lower() if env_var not in ["auto", "no", "yes"]: - logging.warning(f"Unknown value for CHARM_HELPERS_TESTMODE '{env_var}', assuming 'no'") + logging.warning("Unknown value for CHARM_HELPERS_TESTMODE '%s'" + ", assuming 'no'", env_var) env_var = "no" if env_var == "no": diff --git a/charmhelpers/fetch/snap.py b/charmhelpers/fetch/snap.py index 36d6bce9..7ab7ce3e 100644 --- a/charmhelpers/fetch/snap.py +++ b/charmhelpers/fetch/snap.py @@ -52,7 +52,7 @@ def _snap_exec(commands): :param commands: List commands :return: Integer exit code """ - assert type(commands) == list + assert isinstance(commands, list) retry_count = 0 return_code = None diff --git a/config.yaml b/config.yaml index 2b1c4b4e..f220a2bb 100644 --- a/config.yaml +++ b/config.yaml @@ -790,3 +790,11 @@ options: allowed and letting the request fail, Negative number: Allows unlimited number of local devices, Positive number: Allows only these many number of local devices. + wsgi-socket-rotation: + type: boolean + default: True + description: | + Allow users to disable Apache wsgi socket rotation. If not configured, + this option sets True as the default value, which is consistent with the + default value 'WSGISocketRotation On' in Apache. This option should be + used with caution. Please read the Apache doc page for more information.