diff --git a/manifests/init.pp b/manifests/init.pp index e334d758..d8e4b61f 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -68,6 +68,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'] +# # [*kombu_ssl_ca_certs*] # (optional) SSL certification authority file (valid only if SSL enabled). # Defaults to $facts['os_service_default'] @@ -123,31 +141,35 @@ # Defaults to $facts['os_service_default']. # class designate( - $package_ensure = present, - $common_package_name = $::designate::params::common_package_name, - $host = $facts['os_service_default'], - $root_helper = 'sudo designate-rootwrap /etc/designate/rootwrap.conf', - $state_path = $::designate::params::state_path, - $notification_transport_url = $facts['os_service_default'], - $rabbit_use_ssl = $facts['os_service_default'], - $rabbit_ha_queues = $facts['os_service_default'], - $rabbit_heartbeat_in_pthread = $facts['os_service_default'], - $kombu_ssl_ca_certs = $facts['os_service_default'], - $kombu_ssl_certfile = $facts['os_service_default'], - $kombu_ssl_keyfile = $facts['os_service_default'], - $kombu_ssl_version = $facts['os_service_default'], - $kombu_reconnect_delay = $facts['os_service_default'], - $kombu_failover_strategy = $facts['os_service_default'], - $notification_driver = 'messaging', - $default_transport_url = $facts['os_service_default'], - $rpc_response_timeout = $facts['os_service_default'], - $control_exchange = $facts['os_service_default'], - $executor_thread_pool_size = $facts['os_service_default'], - $notification_topics = $facts['os_service_default'], - Boolean $purge_config = false, - $amqp_durable_queues = $facts['os_service_default'], - $default_ttl = $facts['os_service_default'], - $supported_record_type = $facts['os_service_default'], + $package_ensure = present, + $common_package_name = $::designate::params::common_package_name, + $host = $facts['os_service_default'], + $root_helper = 'sudo designate-rootwrap /etc/designate/rootwrap.conf', + $state_path = $::designate::params::state_path, + $notification_transport_url = $facts['os_service_default'], + $rabbit_use_ssl = $facts['os_service_default'], + $rabbit_ha_queues = $facts['os_service_default'], + $rabbit_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 = $facts['os_service_default'], + $kombu_ssl_certfile = $facts['os_service_default'], + $kombu_ssl_keyfile = $facts['os_service_default'], + $kombu_ssl_version = $facts['os_service_default'], + $kombu_reconnect_delay = $facts['os_service_default'], + $kombu_failover_strategy = $facts['os_service_default'], + $notification_driver = 'messaging', + $default_transport_url = $facts['os_service_default'], + $rpc_response_timeout = $facts['os_service_default'], + $control_exchange = $facts['os_service_default'], + $executor_thread_pool_size = $facts['os_service_default'], + $notification_topics = $facts['os_service_default'], + Boolean $purge_config = false, + $amqp_durable_queues = $facts['os_service_default'], + $default_ttl = $facts['os_service_default'], + $supported_record_type = $facts['os_service_default'], ) inherits designate::params { include designate::deps @@ -163,16 +185,20 @@ class designate( } oslo::messaging::rabbit { 'designate_config': - kombu_ssl_version => $kombu_ssl_version, - kombu_ssl_keyfile => $kombu_ssl_keyfile, - kombu_ssl_certfile => $kombu_ssl_certfile, - kombu_ssl_ca_certs => $kombu_ssl_ca_certs, - kombu_reconnect_delay => $kombu_reconnect_delay, - kombu_failover_strategy => $kombu_failover_strategy, - rabbit_use_ssl => $rabbit_use_ssl, - rabbit_ha_queues => $rabbit_ha_queues, - heartbeat_in_pthread => $rabbit_heartbeat_in_pthread, - amqp_durable_queues => $amqp_durable_queues, + kombu_ssl_version => $kombu_ssl_version, + kombu_ssl_keyfile => $kombu_ssl_keyfile, + kombu_ssl_certfile => $kombu_ssl_certfile, + kombu_ssl_ca_certs => $kombu_ssl_ca_certs, + kombu_reconnect_delay => $kombu_reconnect_delay, + kombu_failover_strategy => $kombu_failover_strategy, + rabbit_use_ssl => $rabbit_use_ssl, + rabbit_ha_queues => $rabbit_ha_queues, + heartbeat_in_pthread => $rabbit_heartbeat_in_pthread, + amqp_durable_queues => $amqp_durable_queues, + 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::default { 'designate_config': diff --git a/releasenotes/notes/rabbit-quorum-queue-0ea3563f75c0a14a.yaml b/releasenotes/notes/rabbit-quorum-queue-0ea3563f75c0a14a.yaml new file mode 100644 index 00000000..43014194 --- /dev/null +++ b/releasenotes/notes/rabbit-quorum-queue-0ea3563f75c0a14a.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + The ``designate`` class now supports options for quorum queues in RabbitMQ. diff --git a/spec/classes/designate_init_spec.rb b/spec/classes/designate_init_spec.rb index f2815a85..1621113f 100644 --- a/spec/classes/designate_init_spec.rb +++ b/spec/classes/designate_init_spec.rb @@ -107,16 +107,20 @@ describe 'designate' do :topics => '' ) is_expected.to contain_oslo__messaging__rabbit('designate_config').with( - :kombu_ssl_version => '', - :kombu_ssl_keyfile => '', - :kombu_ssl_certfile => '', - :kombu_ssl_ca_certs => '', - :kombu_reconnect_delay => '', - :kombu_failover_strategy => '', - :rabbit_use_ssl => '', - :rabbit_ha_queues => '', - :heartbeat_in_pthread => '', - :amqp_durable_queues => '', + :kombu_ssl_version => '', + :kombu_ssl_keyfile => '', + :kombu_ssl_certfile => '', + :kombu_ssl_ca_certs => '', + :kombu_reconnect_delay => '', + :kombu_failover_strategy => '', + :rabbit_use_ssl => '', + :rabbit_ha_queues => '', + :heartbeat_in_pthread => '', + :amqp_durable_queues => '', + :rabbit_quorum_queue => '', + :rabbit_quorum_delivery_limit => '', + :rabbit_quorum_max_memory_length => '', + :rabbit_quorum_max_memory_bytes => '', ) end @@ -125,11 +129,15 @@ describe 'designate' do shared_examples_for 'rabbit transport' do before do params.merge!({ - :default_transport_url => 'rabbit://designate:secret@127.0.0.1:5672/designate', - :rabbit_ha_queues => true, - :rabbit_heartbeat_in_pthread => true, - :kombu_reconnect_delay => '1.0', - :kombu_failover_strategy => 'shuffle', + :default_transport_url => 'rabbit://designate:secret@127.0.0.1:5672/designate', + :rabbit_ha_queues => true, + :rabbit_heartbeat_in_pthread => true, + :rabbit_quorum_queue => true, + :rabbit_quorum_delivery_limit => 3, + :rabbit_quorum_max_memory_length => 5, + :rabbit_quorum_max_memory_bytes => 1073741824, + :kombu_reconnect_delay => '1.0', + :kombu_failover_strategy => 'shuffle', }) end @@ -137,10 +145,14 @@ describe 'designate' do :transport_url => 'rabbit://designate:secret@127.0.0.1:5672/designate', ) } it { is_expected.to contain_oslo__messaging__rabbit('designate_config').with( - :rabbit_ha_queues => true, - :heartbeat_in_pthread => true, - :kombu_reconnect_delay => '1.0', - :kombu_failover_strategy => 'shuffle' + :rabbit_ha_queues => true, + :heartbeat_in_pthread => true, + :rabbit_quorum_queue => true, + :rabbit_quorum_delivery_limit => 3, + :rabbit_quorum_max_memory_length => 5, + :rabbit_quorum_max_memory_bytes => 1073741824, + :kombu_reconnect_delay => '1.0', + :kombu_failover_strategy => 'shuffle' ) } end