Description: Add a rabbit_transient_queues_ttl and amqp_auto_delete 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 cinder_config to set it, so this patch is
 mandatory for one to set rabbit_transient_queues_ttl in cinder.conf.
Author: Thomas Goirand <zigo@debian.org>
Date: Thu, 13 Mar 2025 11:59:58 +0100
Change-Id: I8f59ef9186431cdc377cf9060d179f2beb253944
Forwarded: https://review.opendev.org/c/openstack/puppet-cinder/+/944209
Last-Update: 2025-03-13

Index: puppet-module-cinder/manifests/init.pp
===================================================================
--- puppet-module-cinder.orig/manifests/init.pp
+++ puppet-module-cinder/manifests/init.pp
@@ -86,6 +86,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
@@ -154,6 +162,10 @@
 #   (string value)
 #   Defaults to $facts['os_service_default']
 #
+# [*amqp_auto_delete*]
+#   (Optional) Define if transient queues should be auto-deleted (boolean value)
+#   Defaults to $facts['os_service_default']
+#
 # [*amqp_durable_queues*]
 #   Use durable queues in amqp.
 #   (Optional) Defaults to $facts['os_service_default']
@@ -250,6 +262,7 @@ class cinder (
   $rabbit_qos_prefetch_count            = $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'],
@@ -265,6 +278,7 @@ class cinder (
   $kombu_failover_strategy              = $facts['os_service_default'],
   $kombu_compression                    = $facts['os_service_default'],
   $amqp_durable_queues                  = $facts['os_service_default'],
+  $amqp_auto_delete                     = $facts['os_service_default'],
   $package_ensure                       = 'present',
   $api_paste_config                     = '/etc/cinder/api-paste.ini',
   $storage_availability_zone            = 'nova',
@@ -311,9 +325,11 @@ class cinder (
     kombu_ssl_certfile              => $kombu_ssl_certfile,
     kombu_ssl_ca_certs              => $kombu_ssl_ca_certs,
     amqp_durable_queues             => $amqp_durable_queues,
+    amqp_auto_delete                => $amqp_auto_delete,
     kombu_compression               => $kombu_compression,
     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,
Index: puppet-module-cinder/releasenotes/notes/amqp_auto_delete-b34b1a9e219eb8a0.yaml
===================================================================
--- /dev/null
+++ puppet-module-cinder/releasenotes/notes/amqp_auto_delete-b34b1a9e219eb8a0.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add a new `amqp_auto_delete` parameter, so that transient queues are
+    automatically deleted.
Index: puppet-module-cinder/releasenotes/notes/rabbit_transient_queues_ttl-046d931781e0a101.yaml
===================================================================
--- /dev/null
+++ puppet-module-cinder/releasenotes/notes/rabbit_transient_queues_ttl-046d931781e0a101.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    A new parameter `rabbit_transient_queues_ttl` has been added to the
+    heat init class to configure how long transtient queue should stay until
+    they are automatically deleted.
Index: puppet-module-cinder/spec/classes/cinder_init_spec.rb
===================================================================
--- puppet-module-cinder.orig/spec/classes/cinder_init_spec.rb
+++ puppet-module-cinder/spec/classes/cinder_init_spec.rb
@@ -33,6 +33,7 @@ describe 'cinder' do
           :kombu_reconnect_delay           => '<SERVICE DEFAULT>',
           :kombu_failover_strategy         => '<SERVICE DEFAULT>',
           :amqp_durable_queues             => '<SERVICE DEFAULT>',
+          :amqp_auto_delete                => '<SERVICE DEFAULT>',
           :kombu_compression               => '<SERVICE DEFAULT>',
           :kombu_ssl_ca_certs              => '<SERVICE DEFAULT>',
           :kombu_ssl_certfile              => '<SERVICE DEFAULT>',
@@ -42,6 +43,7 @@ describe 'cinder' do
           :rabbit_retry_interval           => '<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>',
@@ -102,6 +104,7 @@ describe 'cinder' do
           :rabbit_qos_prefetch_count          => 0,
           :rabbit_quorum_queue                => true,
           :rabbit_transient_quorum_queue      => true,
+          :rabbit_transient_queues_ttl        => 60,
           :rabbit_quorum_delivery_limit       => 3,
           :rabbit_quorum_max_memory_length    => 5,
           :rabbit_quorum_max_memory_bytes     => 1073741824,
@@ -116,6 +119,7 @@ describe 'cinder' do
         :rabbit_qos_prefetch_count       => 0,
         :rabbit_quorum_queue             => true,
         :rabbit_transient_quorum_queue   => true,
+        :rabbit_transient_queues_ttl     => 60,
         :rabbit_quorum_delivery_limit    => 3,
         :rabbit_quorum_max_memory_length => 5,
         :rabbit_quorum_max_memory_bytes  => 1073741824,
