From ccf4c50573ccb2386ae7876b251e0c7e033815ec Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Thu, 14 Sep 2023 14:46:43 +0900 Subject: [PATCH] RabbitMQ: Add support for quorum queue options Depends-on: https://review.opendev.org/894866 Change-Id: I007ca152da1c40564bb575b62eb8ff975970865a --- manifests/init.pp | 54 ++++++++++++++----- .../rabbit-quorum-queue-e49041163fd3f4d5.yaml | 5 ++ spec/classes/ceilometer_init_spec.rb | 22 ++++---- 3 files changed, 58 insertions(+), 23 deletions(-) create mode 100644 releasenotes/notes/rabbit-quorum-queue-e49041163fd3f4d5.yaml diff --git a/manifests/init.pp b/manifests/init.pp index d6f7586a..926fb4eb 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -61,6 +61,24 @@ # option, you must wipe the RabbitMQ database. (boolean value) # Defaults to $facts['os_service_default'] # +# [*rabbit_quorum_queue*] +# (Optional) Use quorum queues in RabbitMQ. +# 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 +# the message gets dropped or dead-lettered. +# Defaults to $facts['os_service_default'] +# +# [*rabbit_quorum_max_memory_length*] +# (Optional) Limit the number of messages in the quorum queue. +# Defaults to $facts['os_service_default'] +# +# [*rabbit_quorum_max_memory_bytes*] +# (Optional) Limit the number of memory bytes used by the quorum queue. +# Defaults to $facts['os_service_default'] +# # [*rabbit_heartbeat_timeout_threshold*] # (Optional) Number of seconds after which the Rabbit broker is # considered down if heartbeat's keep-alive fails @@ -221,6 +239,10 @@ class ceilometer( $control_exchange = $facts['os_service_default'], $notification_transport_url = $facts['os_service_default'], $rabbit_ha_queues = $facts['os_service_default'], + $rabbit_quorum_queue = $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'], $rabbit_heartbeat_timeout_threshold = $facts['os_service_default'], $rabbit_heartbeat_rate = $facts['os_service_default'], $rabbit_heartbeat_in_pthread = $facts['os_service_default'], @@ -269,20 +291,24 @@ class ceilometer( } oslo::messaging::rabbit {'ceilometer_config': - rabbit_ha_queues => $rabbit_ha_queues, - heartbeat_timeout_threshold => $rabbit_heartbeat_timeout_threshold, - heartbeat_rate => $rabbit_heartbeat_rate, - heartbeat_in_pthread => $rabbit_heartbeat_in_pthread, - rabbit_qos_prefetch_count => $rabbit_qos_prefetch_count, - amqp_durable_queues => $amqp_durable_queues, - rabbit_use_ssl => $rabbit_use_ssl, - kombu_ssl_ca_certs => $kombu_ssl_ca_certs, - kombu_ssl_certfile => $kombu_ssl_certfile, - kombu_ssl_keyfile => $kombu_ssl_keyfile, - kombu_ssl_version => $kombu_ssl_version, - kombu_reconnect_delay => $kombu_reconnect_delay, - kombu_failover_strategy => $kombu_failover_strategy, - kombu_compression => $kombu_compression, + rabbit_ha_queues => $rabbit_ha_queues, + heartbeat_timeout_threshold => $rabbit_heartbeat_timeout_threshold, + heartbeat_rate => $rabbit_heartbeat_rate, + heartbeat_in_pthread => $rabbit_heartbeat_in_pthread, + rabbit_qos_prefetch_count => $rabbit_qos_prefetch_count, + amqp_durable_queues => $amqp_durable_queues, + rabbit_use_ssl => $rabbit_use_ssl, + kombu_ssl_ca_certs => $kombu_ssl_ca_certs, + kombu_ssl_certfile => $kombu_ssl_certfile, + kombu_ssl_keyfile => $kombu_ssl_keyfile, + kombu_ssl_version => $kombu_ssl_version, + kombu_reconnect_delay => $kombu_reconnect_delay, + kombu_failover_strategy => $kombu_failover_strategy, + kombu_compression => $kombu_compression, + rabbit_quorum_queue => $rabbit_quorum_queue, + 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, } oslo::messaging::amqp { 'ceilometer_config': diff --git a/releasenotes/notes/rabbit-quorum-queue-e49041163fd3f4d5.yaml b/releasenotes/notes/rabbit-quorum-queue-e49041163fd3f4d5.yaml new file mode 100644 index 00000000..323de49f --- /dev/null +++ b/releasenotes/notes/rabbit-quorum-queue-e49041163fd3f4d5.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + The ``ceilometer`` class now supports options for quorum queues in + RabbitMQ. diff --git a/spec/classes/ceilometer_init_spec.rb b/spec/classes/ceilometer_init_spec.rb index 0804620a..d47f5e55 100644 --- a/spec/classes/ceilometer_init_spec.rb +++ b/spec/classes/ceilometer_init_spec.rb @@ -148,15 +148,19 @@ describe 'ceilometer' do it 'configures rabbit' do is_expected.to contain_oslo__messaging__rabbit('ceilometer_config').with( - :rabbit_ha_queues => '', - :heartbeat_timeout_threshold => '', - :heartbeat_rate => '', - :heartbeat_in_pthread => '', - :rabbit_qos_prefetch_count => '', - :amqp_durable_queues => '', - :kombu_reconnect_delay => '', - :kombu_failover_strategy => '', - :kombu_compression => '', + :rabbit_ha_queues => '', + :heartbeat_timeout_threshold => '', + :heartbeat_rate => '', + :heartbeat_in_pthread => '', + :rabbit_qos_prefetch_count => '', + :amqp_durable_queues => '', + :kombu_reconnect_delay => '', + :kombu_failover_strategy => '', + :kombu_compression => '', + :rabbit_quorum_queue => '', + :rabbit_quorum_delivery_limit => '', + :rabbit_quorum_max_memory_length => '', + :rabbit_quorum_max_memory_bytes => '', ) end