RabbitMQ: Add support for quorum queue options
Change-Id: Ic95ebf1128152bac120b3a3f3732c8bc5891c27b
This commit is contained in:
3 changed files with 92 additions and 46 deletions
@@ -113,6 +113,24 @@
#willberunthroughagreenthread.
#Defaultsto$facts['os_service_default']
#
#[*rabbit_quorum_queue*]
#(Optional)UsequorumqueuesinRabbitMQ.
#Defaultsto$facts['os_service_default']
#
#[*rabbit_quorum_delivery_limit*]
#(Optional)Eachtimeamessageisrdeliveredtoaconsumer,acounteris
#incremented.Oncetheredeliverycountexceedsthedeliverylimit
#themessagegetsdroppedordead-lettered.
#Defaultsto$facts['os_service_default']
#
#[*rabbit_quorum_max_memory_length*]
#(Optional)Limitthenumberofmessagesinthequorumqueue.
#Defaultsto$facts['os_service_default']
#
#[*rabbit_quorum_max_memory_bytes*]
#(Optional)Limitthenumberofmemorybytesusedbythequorumqueue.
#Defaultsto$facts['os_service_default']
#
defineoslo::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)
}
@@ -0,0 +1,5 @@
---
features:
- |
The ``oslo::messaging::rabbit`` defined resource type now supports options
for quorum queues in RabbitMQ.
@@ -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('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_reconnect_delay').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_missing_consumer_retry_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_failover_strategy').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_compression').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_qos_prefetch_count').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/ssl').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_login_method').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_retry_interval').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_retry_backoff').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_interval_max').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_transient_queues_ttl').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_rate').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/amqp_durable_queues').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_reconnect_delay').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_missing_consumer_retry_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_failover_strategy').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/kombu_compression').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_qos_prefetch_count').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/ssl').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_login_method').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_retry_interval').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_retry_backoff').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_interval_max').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_transient_queues_ttl').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_rate').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_quorum_queue').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_quorum_delivery_limit').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_quorum_max_memory_length').with_value('<SERVICE DEFAULT>')
is_expected.to contain_keystone_config('oslo_messaging_rabbit/rabbit_quorum_max_memory_bytes').with_value('<SERVICE DEFAULT>')
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
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.