From 8bdcbc820b418f4db18576cf0ab29ad402d1d770 Mon Sep 17 00:00:00 2001
From: Thomas Goirand <zigo@debian.org>
Date: Fri, 20 Jun 2025 23:51:39 +0200
Subject: [PATCH] Add queue_manager and stream_fanout

This patch adds two new parameters to the toplevel class:
- rabbit_use_queue_manager
- rabbit_stream_fanout

that are already handled by the oslo::messaging::rabbit class, which
makes it impossible to set using nova_config.

Change-Id: Ifb14d23b79e13458e8db9ff165153deca703c7f5
---

Index: puppet-module-nova/manifests/init.pp
===================================================================
--- puppet-module-nova.orig/manifests/init.pp
+++ puppet-module-nova/manifests/init.pp
@@ -101,6 +101,14 @@
 #   (Optional) Limit the number of memory bytes used by the quorum queue.
 #   Defaults to $facts['os_service_default']
 #
+# [*rabbit_use_queue_manager*]
+#   (Optional) Should we use consistant queue names or random ones.
+#   Defaults to $facts['os_service_default']
+#
+# [*rabbit_stream_fanout*]
+#   (Optional) Use stream queues in RabbitMQ (x-queue-type: stream).
+#   Defaults to $facts['os_service_default']
+#
 # [*rabbit_enable_cancel_on_failover*]
 #   (Optional) Enable x-cancel-on-ha-failover flag so that rabbitmq server will
 #   cancel and notify consumers when queue is down.
@@ -365,6 +373,8 @@ class nova(
   $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'],
+  $rabbit_use_queue_manager                = $facts['os_service_default'],
+  $rabbit_stream_fanout                    = $facts['os_service_default'],
   $rabbit_enable_cancel_on_failover        = $facts['os_service_default'],
   $rabbit_retry_interval                   = $facts['os_service_default'],
   $kombu_ssl_ca_certs                      = $facts['os_service_default'],
@@ -533,6 +543,8 @@ class nova(
     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,
+    use_queue_manager               => $rabbit_use_queue_manager,
+    rabbit_stream_fanout            => $rabbit_stream_fanout,
     enable_cancel_on_failover       => $rabbit_enable_cancel_on_failover,
     rabbit_retry_interval           => $rabbit_retry_interval,
   }
Index: puppet-module-nova/releasenotes/notes/queue_manager-and-stream_fanout-55a335733a52f7f6.yaml
===================================================================
--- /dev/null
+++ puppet-module-nova/releasenotes/notes/queue_manager-and-stream_fanout-55a335733a52f7f6.yaml
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    The ``nova`` class now has two new parameters
+    ``rabbit_use_queue_manager`` and ``rabbit_stream_fanout``.
Index: puppet-module-nova/spec/classes/nova_init_spec.rb
===================================================================
--- puppet-module-nova.orig/spec/classes/nova_init_spec.rb
+++ puppet-module-nova/spec/classes/nova_init_spec.rb
@@ -58,6 +58,8 @@ describe 'nova' do
           :rabbit_quorum_delivery_limit    => '<SERVICE DEFAULT>',
           :rabbit_quorum_max_memory_length => '<SERVICE DEFAULT>',
           :rabbit_quorum_max_memory_bytes  => '<SERVICE DEFAULT>',
+          :use_queue_manager               => '<SERVICE DEFAULT>',
+          :rabbit_stream_fanout            => '<SERVICE DEFAULT>',
           :enable_cancel_on_failover       => '<SERVICE DEFAULT>',
           :rabbit_retry_interval           => '<SERVICE DEFAULT>',
         )
@@ -128,6 +130,8 @@ describe 'nova' do
           :rabbit_quorum_delivery_limit       => 3,
           :rabbit_quorum_max_memory_length    => 5,
           :rabbit_quorum_max_memory_bytes     => 1073741824,
+          :rabbit_use_queue_manager           => true,
+          :rabbit_stream_fanout               => true,
           :rabbit_enable_cancel_on_failover   => false,
           :rabbit_retry_interval              => '1',
           :lock_path                          => '/var/locky/path',
@@ -205,6 +209,8 @@ describe 'nova' do
           :rabbit_quorum_delivery_limit    => 3,
           :rabbit_quorum_max_memory_length => 5,
           :rabbit_quorum_max_memory_bytes  => 1073741824,
+          :use_queue_manager               => true,
+          :rabbit_stream_fanout            => true,
           :enable_cancel_on_failover       => false,
           :rabbit_retry_interval           => '1',
         )
