Add amqp_auto_delete and rabbit_transient_queues_ttl params

The amqp_auto_delete option needs this patch:
https://review.opendev.org/c/openstack/puppet-oslo/+/944132

Since transient_queues_ttl is also managed by oslo::messaging::rabbit,
there's no way to use keystone_config to set it, so this patch is
mandatory for one to set rabbit_transient_queues_ttl in keystone.conf.

Change-Id: I86e796d2ac9879eea85bfe822616083c4dc588d1
This commit is contained in:
Thomas Goirand
2025-03-13 09:49:37 +01:00
committed by Takashi Kajinami
parent 7268105cdf
commit 0928fef670
4 changed files with 29 additions and 0 deletions

View File

@@ -94,6 +94,14 @@
# (Optional) Use quorum queues for transients queues in RabbitMQ.
# Defaults to $facts['os_service_default']
#
# [*rabbit_transient_queues_ttl*]
# (Optional) Positive integer representing duration in seconds for
# queue TTL (x-expires). Queues which are unused for the duration
# of the TTL are automatically deleted.
# The parameter affects only reply and fanout queues. (integer value)
# Min to 1
# Defaults to $facts['os_service_default']
#
# [*rabbit_quorum_delivery_limit*]
# (Optional) Each time a message is rdelivered to a consumer, a counter is
# incremented. Once the redelivery count exceeds the delivery limit
@@ -352,6 +360,10 @@
# in the keystone config.
# Defaults to false.
#
# [*amqp_auto_delete*]
# (Optional) Define if transient queues should be auto-deleted (boolean value)
# Defaults to $facts['os_service_default']
#
# [*amqp_durable_queues*]
# (Optional) Whether to use durable queues in AMQP.
# Defaults to $facts['os_service_default'].
@@ -398,6 +410,7 @@ class keystone(
$rabbit_ha_queues = $facts['os_service_default'],
$rabbit_quorum_queue = $facts['os_service_default'],
$rabbit_transient_quorum_queue = $facts['os_service_default'],
$rabbit_transient_queues_ttl = $facts['os_service_default'],
$rabbit_quorum_delivery_limit = $facts['os_service_default'],
$rabbit_quorum_max_memory_length = $facts['os_service_default'],
$rabbit_quorum_max_memory_bytes = $facts['os_service_default'],
@@ -442,6 +455,7 @@ class keystone(
$max_request_body_size = $facts['os_service_default'],
Boolean $purge_config = false,
$amqp_durable_queues = $facts['os_service_default'],
$amqp_auto_delete = $facts['os_service_default'],
# DEPRECATED PARAMETERS
$rabbit_heartbeat_in_pthread = undef,
) inherits keystone::params {
@@ -557,8 +571,10 @@ class keystone(
heartbeat_in_pthread => $rabbit_heartbeat_in_pthread,
rabbit_qos_prefetch_count => $rabbit_qos_prefetch_count,
amqp_durable_queues => $amqp_durable_queues,
amqp_auto_delete => $amqp_auto_delete,
rabbit_quorum_queue => $rabbit_quorum_queue,
rabbit_transient_quorum_queue => $rabbit_transient_quorum_queue,
rabbit_transient_queues_ttl => $rabbit_transient_queues_ttl,
rabbit_quorum_delivery_limit => $rabbit_quorum_delivery_limit,
rabbit_quorum_max_memory_length => $rabbit_quorum_max_memory_length,
rabbit_quorum_max_memory_bytes => $rabbit_quorum_max_memory_bytes,

View File

@@ -0,0 +1,5 @@
---
features:
- |
Add a new ``amqp_auto_delete`` parameter, so that transient queues are
automatically deleted.

View File

@@ -0,0 +1,6 @@
---
features:
- |
A new parameter ``rabbit_transient_queues_ttl`` has been added to the
keystone class to configure how long transient queue should stay until
they are automatically deleted.

View File

@@ -82,8 +82,10 @@ describe 'keystone' do
:heartbeat_in_pthread => nil,
:rabbit_qos_prefetch_count => '<SERVICE DEFAULT>',
:amqp_durable_queues => '<SERVICE DEFAULT>',
:amqp_auto_delete => '<SERVICE DEFAULT>',
:rabbit_quorum_queue => '<SERVICE DEFAULT>',
:rabbit_transient_quorum_queue => '<SERVICE DEFAULT>',
:rabbit_transient_queues_ttl => '<SERVICE DEFAULT>',
:rabbit_quorum_delivery_limit => '<SERVICE DEFAULT>',
:rabbit_quorum_max_memory_length => '<SERVICE DEFAULT>',
:rabbit_quorum_max_memory_bytes => '<SERVICE DEFAULT>',