diff --git a/manifests/messaging/rabbit.pp b/manifests/messaging/rabbit.pp index 9ab71dd..9b2d82a 100644 --- a/manifests/messaging/rabbit.pp +++ b/manifests/messaging/rabbit.pp @@ -113,6 +113,24 @@ # will be run through a green thread. # 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'] +# define oslo::messaging::rabbit( $amqp_durable_queues = $facts['os_service_default'], $kombu_ssl_version = $facts['os_service_default'], @@ -134,6 +152,10 @@ define oslo::messaging::rabbit( $heartbeat_timeout_threshold = $facts['os_service_default'], $heartbeat_rate = $facts['os_service_default'], $heartbeat_in_pthread = $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'], ){ $kombu_ssl_ca_certs_set = (!is_service_default($kombu_ssl_ca_certs) and ($kombu_ssl_ca_certs)) @@ -164,27 +186,32 @@ define oslo::messaging::rabbit( fail('Unsupported Kombu compression. Possible values are gzip and bz2') } - $rabbit_options = { 'oslo_messaging_rabbit/amqp_durable_queues' => { value => $amqp_durable_queues }, - 'oslo_messaging_rabbit/heartbeat_rate' => { value => $heartbeat_rate }, - 'oslo_messaging_rabbit/heartbeat_in_pthread' => { value => $heartbeat_in_pthread }, - 'oslo_messaging_rabbit/heartbeat_timeout_threshold' => { value => $heartbeat_timeout_threshold }, - 'oslo_messaging_rabbit/kombu_compression' => { value => $kombu_compression }, - 'oslo_messaging_rabbit/kombu_failover_strategy' => { value => $kombu_failover_strategy }, - 'oslo_messaging_rabbit/kombu_missing_consumer_retry_timeout' => { value => $kombu_missing_consumer_retry_timeout }, - 'oslo_messaging_rabbit/kombu_reconnect_delay' => { value => $kombu_reconnect_delay }, - 'oslo_messaging_rabbit/rabbit_interval_max' => { value => $rabbit_interval_max }, - 'oslo_messaging_rabbit/rabbit_login_method' => { value => $rabbit_login_method }, - 'oslo_messaging_rabbit/rabbit_retry_backoff' => { value => $rabbit_retry_backoff }, - 'oslo_messaging_rabbit/rabbit_retry_interval' => { value => $rabbit_retry_interval }, - 'oslo_messaging_rabbit/rabbit_transient_queues_ttl' => { value => $rabbit_transient_queues_ttl }, - 'oslo_messaging_rabbit/ssl' => { value => $rabbit_use_ssl }, - 'oslo_messaging_rabbit/rabbit_qos_prefetch_count' => { value => $rabbit_qos_prefetch_count }, - 'oslo_messaging_rabbit/rabbit_ha_queues' => { value => $rabbit_ha_queues }, - 'oslo_messaging_rabbit/ssl_ca_file' => { value => $kombu_ssl_ca_certs }, - 'oslo_messaging_rabbit/ssl_cert_file' => { value => $kombu_ssl_certfile }, - 'oslo_messaging_rabbit/ssl_key_file' => { value => $kombu_ssl_keyfile }, - 'oslo_messaging_rabbit/ssl_version' => { value => $kombu_ssl_version }, - } + $rabbit_options = { + 'oslo_messaging_rabbit/amqp_durable_queues' => { value => $amqp_durable_queues }, + 'oslo_messaging_rabbit/heartbeat_rate' => { value => $heartbeat_rate }, + 'oslo_messaging_rabbit/heartbeat_in_pthread' => { value => $heartbeat_in_pthread }, + 'oslo_messaging_rabbit/heartbeat_timeout_threshold' => { value => $heartbeat_timeout_threshold }, + 'oslo_messaging_rabbit/kombu_compression' => { value => $kombu_compression }, + 'oslo_messaging_rabbit/kombu_failover_strategy' => { value => $kombu_failover_strategy }, + 'oslo_messaging_rabbit/kombu_missing_consumer_retry_timeout' => { value => $kombu_missing_consumer_retry_timeout }, + 'oslo_messaging_rabbit/kombu_reconnect_delay' => { value => $kombu_reconnect_delay }, + 'oslo_messaging_rabbit/rabbit_interval_max' => { value => $rabbit_interval_max }, + 'oslo_messaging_rabbit/rabbit_login_method' => { value => $rabbit_login_method }, + 'oslo_messaging_rabbit/rabbit_retry_backoff' => { value => $rabbit_retry_backoff }, + 'oslo_messaging_rabbit/rabbit_retry_interval' => { value => $rabbit_retry_interval }, + 'oslo_messaging_rabbit/rabbit_transient_queues_ttl' => { value => $rabbit_transient_queues_ttl }, + 'oslo_messaging_rabbit/ssl' => { value => $rabbit_use_ssl }, + 'oslo_messaging_rabbit/rabbit_qos_prefetch_count' => { value => $rabbit_qos_prefetch_count }, + 'oslo_messaging_rabbit/rabbit_ha_queues' => { value => $rabbit_ha_queues }, + 'oslo_messaging_rabbit/rabbit_quorum_queue' => { value => $rabbit_quorum_queue }, + 'oslo_messaging_rabbit/rabbit_quorum_delivery_limit' => { value => $rabbit_quorum_delivery_limit }, + 'oslo_messaging_rabbit/rabbit_quorum_max_memory_length' => { value => $rabbit_quorum_max_memory_length }, + 'oslo_messaging_rabbit/rabbit_quorum_max_memory_bytes' => { value => $rabbit_quorum_max_memory_bytes }, + 'oslo_messaging_rabbit/ssl_ca_file' => { value => $kombu_ssl_ca_certs }, + 'oslo_messaging_rabbit/ssl_cert_file' => { value => $kombu_ssl_certfile }, + 'oslo_messaging_rabbit/ssl_key_file' => { value => $kombu_ssl_keyfile }, + 'oslo_messaging_rabbit/ssl_version' => { value => $kombu_ssl_version }, + } create_resources($name, $rabbit_options) } diff --git a/releasenotes/notes/rabbit-quorum-queue-86ab6394546356a9.yaml b/releasenotes/notes/rabbit-quorum-queue-86ab6394546356a9.yaml new file mode 100644 index 0000000..c1adbbc --- /dev/null +++ b/releasenotes/notes/rabbit-quorum-queue-86ab6394546356a9.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + The ``oslo::messaging::rabbit`` defined resource type now supports options + for quorum queues in RabbitMQ. diff --git a/spec/defines/oslo_messaging_rabbit_spec.rb b/spec/defines/oslo_messaging_rabbit_spec.rb index 6751a3b..6736052 100644 --- a/spec/defines/oslo_messaging_rabbit_spec.rb +++ b/spec/defines/oslo_messaging_rabbit_spec.rb @@ -8,42 +8,56 @@ describe 'oslo::messaging::rabbit' do context 'with default parameters' do it 'configure oslo_messaging_rabbit default params' do - is_expected.to contain_keystone_config('oslo_messaging_rabbit/amqp_durable_queues').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_reconnect_delay').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_missing_consumer_retry_timeout').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_failover_strategy').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_compression').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_qos_prefetch_count').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/ssl').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_login_method').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_retry_interval').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_retry_backoff').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_interval_max').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_transient_queues_ttl').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_rate').with_value('') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/amqp_durable_queues').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_reconnect_delay').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_missing_consumer_retry_timeout').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_failover_strategy').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_compression').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_qos_prefetch_count').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/ssl').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_login_method').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_retry_interval').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_retry_backoff').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_interval_max').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_transient_queues_ttl').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_rate').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_quorum_queue').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_quorum_delivery_limit').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_quorum_max_memory_length').with_value('') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_quorum_max_memory_bytes').with_value('') end end context 'with overridden parameters' do let :params do - { :rabbit_qos_prefetch_count => '10', - :heartbeat_timeout_threshold => '60', - :heartbeat_rate => '10', - :heartbeat_in_pthread => true, - :kombu_compression => 'bz2', - :rabbit_ha_queues => true, } + { + :rabbit_qos_prefetch_count => 10, + :heartbeat_timeout_threshold => 60, + :heartbeat_rate => 10, + :heartbeat_in_pthread => true, + :kombu_compression => 'bz2', + :rabbit_ha_queues => true, + :rabbit_quorum_queue => true, + :rabbit_quorum_delivery_limit => 3, + :rabbit_quorum_max_memory_length => 5, + :rabbit_quorum_max_memory_bytes => 1073741824, + } end it 'configures rabbit' do - is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_qos_prefetch_count').with_value('10') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('60') - is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_rate').with_value('10') + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_qos_prefetch_count').with_value(10) + is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value(60) + is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_rate').with_value(10) is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value(true) is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_compression').with_value('bz2') is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value(true) + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_quorum_queue').with_value(true) + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_quorum_delivery_limit').with_value(3) + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_quorum_max_memory_length').with_value(5) + is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_quorum_max_memory_bytes').with_value(1073741824) end end