Skip to content

Commit c7e6206

Browse files
authored
Merge pull request #1030 from LangJV/master
Add quorum queue auto-reconciliation parameter support
2 parents 14e0306 + 539e45f commit c7e6206

File tree

5 files changed

+258
-89
lines changed

5 files changed

+258
-89
lines changed

REFERENCE.md

+54
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,11 @@ The following parameters are available in the `rabbitmq` class:
255255
* [`package_name`](#-rabbitmq--package_name)
256256
* [`port`](#-rabbitmq--port)
257257
* [`python_package`](#-rabbitmq--python_package)
258+
* [`quorum_membership_reconciliation_enabled`](#-rabbitmq--quorum_membership_reconciliation_enabled)
259+
* [`quorum_membership_reconciliation_auto_remove`](#-rabbitmq--quorum_membership_reconciliation_auto_remove)
260+
* [`quorum_membership_reconciliation_interval`](#-rabbitmq--quorum_membership_reconciliation_interval)
261+
* [`quorum_membership_reconciliation_trigger_interval`](#-rabbitmq--quorum_membership_reconciliation_trigger_interval)
262+
* [`quorum_membership_reconciliation_target_group_size`](#-rabbitmq--quorum_membership_reconciliation_target_group_size)
258263
* [`repos_ensure`](#-rabbitmq--repos_ensure)
259264
* [`service_ensure`](#-rabbitmq--service_ensure)
260265
* [`service_manage`](#-rabbitmq--service_manage)
@@ -809,6 +814,55 @@ Name of the package required by rabbitmqadmin.
809814

810815
Default value: `'python'`
811816

817+
##### <a name="-rabbitmq--quorum_membership_reconciliation_enabled"></a>`quorum_membership_reconciliation_enabled`
818+
819+
Data type: `Optional[Boolean]`
820+
821+
Enables or disables continuous membership reconciliation.
822+
This REQUIRES RabbitMQ 3.13 or higher to be set to true. More information on this configuration
823+
can be found here: https://www.rabbitmq.com/docs/quorum-queues
824+
825+
Default value: `undef`
826+
827+
##### <a name="-rabbitmq--quorum_membership_reconciliation_auto_remove"></a>`quorum_membership_reconciliation_auto_remove`
828+
829+
Data type: `Optional[Boolean]`
830+
831+
Enables or disables automatic removal of member nodes that are no longer part of the cluster,
832+
but still a member of the quorum queue.
833+
Important Note: This only takes affect if quorum_membership_reconciliation_enabled is set to true.
834+
835+
Default value: `undef`
836+
837+
##### <a name="-rabbitmq--quorum_membership_reconciliation_interval"></a>`quorum_membership_reconciliation_interval`
838+
839+
Data type: `Optional[Integer]`
840+
841+
The default evaluation interval in milliseconds.
842+
Important Note: This only takes affect if quorum_membership_reconciliation_enabled is set to true.
843+
844+
Default value: `undef`
845+
846+
##### <a name="-rabbitmq--quorum_membership_reconciliation_trigger_interval"></a>`quorum_membership_reconciliation_trigger_interval`
847+
848+
Data type: `Optional[Integer]`
849+
850+
The reconciliation delay in milliseconds, used when a trigger event occurs,
851+
for example, a node is added or removed from the cluster or an applicable policy changes.
852+
This delay will be applied only once, then the regular interval will be used again.
853+
Important Note: This only takes affect if quorum_membership_reconciliation_enabled is set to true.
854+
855+
Default value: `undef`
856+
857+
##### <a name="-rabbitmq--quorum_membership_reconciliation_target_group_size"></a>`quorum_membership_reconciliation_target_group_size`
858+
859+
Data type: `Optional[Integer]`
860+
861+
Controls the target group size for a quorum queue
862+
Important Note: This only takes affect if quorum_membership_reconciliation_enabled is set to true.
863+
864+
Default value: `undef`
865+
812866
##### <a name="-rabbitmq--repos_ensure"></a>`repos_ensure`
813867

814868
Data type: `Boolean`

manifests/config.pp

+93-88
Original file line numberDiff line numberDiff line change
@@ -3,94 +3,99 @@
33
#
44
# @api private
55
class rabbitmq::config {
6-
$admin_enable = $rabbitmq::admin_enable
7-
$management_enable = $rabbitmq::management_enable
8-
$use_config_file_for_plugins = $rabbitmq::use_config_file_for_plugins
9-
$plugins = $rabbitmq::plugins
10-
$cluster_node_type = $rabbitmq::cluster_node_type
11-
$cluster_nodes = $rabbitmq::cluster_nodes
12-
$config = $rabbitmq::config
13-
$config_cluster = $rabbitmq::config_cluster
14-
$config_cowboy_opts = $rabbitmq::config_cowboy_opts
15-
$config_path = $rabbitmq::config_path
16-
$config_ranch = $rabbitmq::config_ranch
17-
$config_stomp = $rabbitmq::config_stomp
18-
$stomp_ensure = $rabbitmq::stomp_ensure
19-
$config_shovel = $rabbitmq::config_shovel
20-
$config_shovel_statics = $rabbitmq::config_shovel_statics
21-
$default_user = $rabbitmq::default_user
22-
$default_pass = $rabbitmq::default_pass
23-
$env_config = $rabbitmq::env_config
24-
$env_config_path = $rabbitmq::env_config_path
25-
$erlang_cookie = $rabbitmq::erlang_cookie
26-
$interface = $rabbitmq::interface
27-
$management_port = $rabbitmq::management_port
28-
$management_ssl = $rabbitmq::management_ssl
29-
$management_hostname = $rabbitmq::management_hostname
30-
$node_ip_address = $rabbitmq::node_ip_address
31-
$rabbitmq_user = $rabbitmq::rabbitmq_user
32-
$rabbitmq_group = $rabbitmq::rabbitmq_group
33-
$rabbitmq_home = $rabbitmq::rabbitmq_home
34-
$port = $rabbitmq::port
35-
$tcp_keepalive = $rabbitmq::tcp_keepalive
36-
$tcp_backlog = $rabbitmq::tcp_backlog
37-
$tcp_sndbuf = $rabbitmq::tcp_sndbuf
38-
$tcp_recbuf = $rabbitmq::tcp_recbuf
39-
$heartbeat = $rabbitmq::heartbeat
40-
$service_name = $rabbitmq::service_name
41-
$ssl = $rabbitmq::ssl
42-
$ssl_only = $rabbitmq::ssl_only
43-
$ssl_cacert = $rabbitmq::ssl_cacert
44-
$ssl_cert = $rabbitmq::ssl_cert
45-
$ssl_key = $rabbitmq::ssl_key
46-
$ssl_depth = $rabbitmq::ssl_depth
47-
$ssl_cert_password = $rabbitmq::ssl_cert_password
48-
$ssl_port = $rabbitmq::ssl_port
49-
$ssl_interface = $rabbitmq::ssl_interface
50-
$ssl_management_port = $rabbitmq::ssl_management_port
51-
$ssl_management_cacert = $rabbitmq::ssl_management_cacert
52-
$ssl_management_cert = $rabbitmq::ssl_management_cert
53-
$ssl_management_key = $rabbitmq::ssl_management_key
54-
$ssl_management_verify = $rabbitmq::ssl_management_verify
55-
$ssl_management_fail_if_no_peer_cert = $rabbitmq::ssl_management_fail_if_no_peer_cert
56-
$ssl_stomp_port = $rabbitmq::ssl_stomp_port
57-
$ssl_verify = $rabbitmq::ssl_verify
58-
$ssl_fail_if_no_peer_cert = $rabbitmq::ssl_fail_if_no_peer_cert
59-
$ssl_client_renegotiation = $rabbitmq::ssl_client_renegotiation
60-
$ssl_secure_renegotiate = $rabbitmq::ssl_secure_renegotiate
61-
$ssl_reuse_sessions = $rabbitmq::ssl_reuse_sessions
62-
$ssl_honor_cipher_order = $rabbitmq::ssl_honor_cipher_order
63-
$ssl_dhfile = $rabbitmq::ssl_dhfile
64-
$ssl_versions = $rabbitmq::ssl_versions
65-
$ssl_ciphers = $rabbitmq::ssl_ciphers
66-
$ssl_crl_check = $rabbitmq::ssl_crl_check
67-
$ssl_crl_cache_hash_dir = $rabbitmq::ssl_crl_cache_hash_dir
68-
$ssl_crl_cache_http_timeout = $rabbitmq::ssl_crl_cache_http_timeout
69-
$stomp_port = $rabbitmq::stomp_port
70-
$stomp_ssl_only = $rabbitmq::stomp_ssl_only
71-
$ldap_auth = $rabbitmq::ldap_auth
72-
$ldap_server = $rabbitmq::ldap_server
73-
$ldap_user_dn_pattern = $rabbitmq::ldap_user_dn_pattern
74-
$ldap_other_bind = $rabbitmq::ldap_other_bind
75-
$ldap_use_ssl = $rabbitmq::ldap_use_ssl
76-
$ldap_port = $rabbitmq::ldap_port
77-
$ldap_log = $rabbitmq::ldap_log
78-
$ldap_config_variables = $rabbitmq::ldap_config_variables
79-
$wipe_db_on_cookie_change = $rabbitmq::wipe_db_on_cookie_change
80-
$config_variables = $rabbitmq::config_variables
81-
$config_kernel_variables = $rabbitmq::config_kernel_variables
82-
$config_management_variables = $rabbitmq::config_management_variables
83-
$config_additional_variables = $rabbitmq::config_additional_variables
84-
$auth_backends = $rabbitmq::auth_backends
85-
$cluster_partition_handling = $rabbitmq::cluster_partition_handling
86-
$file_limit = $rabbitmq::file_limit
87-
$oom_score_adj = $rabbitmq::oom_score_adj
88-
$collect_statistics_interval = $rabbitmq::collect_statistics_interval
89-
$ipv6 = $rabbitmq::ipv6
90-
$inetrc_config = $rabbitmq::inetrc_config
91-
$inetrc_config_path = $rabbitmq::inetrc_config_path
92-
$ssl_erl_dist = $rabbitmq::ssl_erl_dist
93-
$loopback_users = $rabbitmq::loopback_users
6+
$admin_enable = $rabbitmq::admin_enable
7+
$management_enable = $rabbitmq::management_enable
8+
$use_config_file_for_plugins = $rabbitmq::use_config_file_for_plugins
9+
$plugins = $rabbitmq::plugins
10+
$cluster_node_type = $rabbitmq::cluster_node_type
11+
$cluster_nodes = $rabbitmq::cluster_nodes
12+
$config = $rabbitmq::config
13+
$config_cluster = $rabbitmq::config_cluster
14+
$config_cowboy_opts = $rabbitmq::config_cowboy_opts
15+
$config_path = $rabbitmq::config_path
16+
$config_ranch = $rabbitmq::config_ranch
17+
$config_stomp = $rabbitmq::config_stomp
18+
$stomp_ensure = $rabbitmq::stomp_ensure
19+
$config_shovel = $rabbitmq::config_shovel
20+
$config_shovel_statics = $rabbitmq::config_shovel_statics
21+
$default_user = $rabbitmq::default_user
22+
$default_pass = $rabbitmq::default_pass
23+
$env_config = $rabbitmq::env_config
24+
$env_config_path = $rabbitmq::env_config_path
25+
$erlang_cookie = $rabbitmq::erlang_cookie
26+
$interface = $rabbitmq::interface
27+
$management_port = $rabbitmq::management_port
28+
$management_ssl = $rabbitmq::management_ssl
29+
$management_hostname = $rabbitmq::management_hostname
30+
$node_ip_address = $rabbitmq::node_ip_address
31+
$quorum_membership_reconciliation_enabled = $rabbitmq::quorum_membership_reconciliation_enabled
32+
$quorum_membership_reconciliation_auto_remove = $rabbitmq::quorum_membership_reconciliation_auto_remove
33+
$quorum_membership_reconciliation_interval = $rabbitmq::quorum_membership_reconciliation_interval
34+
$quorum_membership_reconciliation_trigger_interval = $rabbitmq::quorum_membership_reconciliation_trigger_interval
35+
$quorum_membership_reconciliation_target_group_size = $rabbitmq::quorum_membership_reconciliation_target_group_size
36+
$rabbitmq_user = $rabbitmq::rabbitmq_user
37+
$rabbitmq_group = $rabbitmq::rabbitmq_group
38+
$rabbitmq_home = $rabbitmq::rabbitmq_home
39+
$port = $rabbitmq::port
40+
$tcp_keepalive = $rabbitmq::tcp_keepalive
41+
$tcp_backlog = $rabbitmq::tcp_backlog
42+
$tcp_sndbuf = $rabbitmq::tcp_sndbuf
43+
$tcp_recbuf = $rabbitmq::tcp_recbuf
44+
$heartbeat = $rabbitmq::heartbeat
45+
$service_name = $rabbitmq::service_name
46+
$ssl = $rabbitmq::ssl
47+
$ssl_only = $rabbitmq::ssl_only
48+
$ssl_cacert = $rabbitmq::ssl_cacert
49+
$ssl_cert = $rabbitmq::ssl_cert
50+
$ssl_key = $rabbitmq::ssl_key
51+
$ssl_depth = $rabbitmq::ssl_depth
52+
$ssl_cert_password = $rabbitmq::ssl_cert_password
53+
$ssl_port = $rabbitmq::ssl_port
54+
$ssl_interface = $rabbitmq::ssl_interface
55+
$ssl_management_port = $rabbitmq::ssl_management_port
56+
$ssl_management_cacert = $rabbitmq::ssl_management_cacert
57+
$ssl_management_cert = $rabbitmq::ssl_management_cert
58+
$ssl_management_key = $rabbitmq::ssl_management_key
59+
$ssl_management_verify = $rabbitmq::ssl_management_verify
60+
$ssl_management_fail_if_no_peer_cert = $rabbitmq::ssl_management_fail_if_no_peer_cert
61+
$ssl_stomp_port = $rabbitmq::ssl_stomp_port
62+
$ssl_verify = $rabbitmq::ssl_verify
63+
$ssl_fail_if_no_peer_cert = $rabbitmq::ssl_fail_if_no_peer_cert
64+
$ssl_client_renegotiation = $rabbitmq::ssl_client_renegotiation
65+
$ssl_secure_renegotiate = $rabbitmq::ssl_secure_renegotiate
66+
$ssl_reuse_sessions = $rabbitmq::ssl_reuse_sessions
67+
$ssl_honor_cipher_order = $rabbitmq::ssl_honor_cipher_order
68+
$ssl_dhfile = $rabbitmq::ssl_dhfile
69+
$ssl_versions = $rabbitmq::ssl_versions
70+
$ssl_ciphers = $rabbitmq::ssl_ciphers
71+
$ssl_crl_check = $rabbitmq::ssl_crl_check
72+
$ssl_crl_cache_hash_dir = $rabbitmq::ssl_crl_cache_hash_dir
73+
$ssl_crl_cache_http_timeout = $rabbitmq::ssl_crl_cache_http_timeout
74+
$stomp_port = $rabbitmq::stomp_port
75+
$stomp_ssl_only = $rabbitmq::stomp_ssl_only
76+
$ldap_auth = $rabbitmq::ldap_auth
77+
$ldap_server = $rabbitmq::ldap_server
78+
$ldap_user_dn_pattern = $rabbitmq::ldap_user_dn_pattern
79+
$ldap_other_bind = $rabbitmq::ldap_other_bind
80+
$ldap_use_ssl = $rabbitmq::ldap_use_ssl
81+
$ldap_port = $rabbitmq::ldap_port
82+
$ldap_log = $rabbitmq::ldap_log
83+
$ldap_config_variables = $rabbitmq::ldap_config_variables
84+
$wipe_db_on_cookie_change = $rabbitmq::wipe_db_on_cookie_change
85+
$config_variables = $rabbitmq::config_variables
86+
$config_kernel_variables = $rabbitmq::config_kernel_variables
87+
$config_management_variables = $rabbitmq::config_management_variables
88+
$config_additional_variables = $rabbitmq::config_additional_variables
89+
$auth_backends = $rabbitmq::auth_backends
90+
$cluster_partition_handling = $rabbitmq::cluster_partition_handling
91+
$file_limit = $rabbitmq::file_limit
92+
$oom_score_adj = $rabbitmq::oom_score_adj
93+
$collect_statistics_interval = $rabbitmq::collect_statistics_interval
94+
$ipv6 = $rabbitmq::ipv6
95+
$inetrc_config = $rabbitmq::inetrc_config
96+
$inetrc_config_path = $rabbitmq::inetrc_config_path
97+
$ssl_erl_dist = $rabbitmq::ssl_erl_dist
98+
$loopback_users = $rabbitmq::loopback_users
9499

95100
if $ssl_only {
96101
$default_ssl_env_variables = {}

manifests/init.pp

+24
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,25 @@
243243
# The RabbitMQ port.
244244
# @param python_package
245245
# Name of the package required by rabbitmqadmin.
246+
# @param quorum_membership_reconciliation_enabled
247+
# Enables or disables continuous membership reconciliation.
248+
# This REQUIRES RabbitMQ 3.13 or higher to be set to true. More information on this configuration
249+
# can be found here: https://www.rabbitmq.com/docs/quorum-queues
250+
# @param quorum_membership_reconciliation_auto_remove
251+
# Enables or disables automatic removal of member nodes that are no longer part of the cluster,
252+
# but still a member of the quorum queue.
253+
# Important Note: This only takes affect if quorum_membership_reconciliation_enabled is set to true.
254+
# @param quorum_membership_reconciliation_interval
255+
# The default evaluation interval in milliseconds.
256+
# Important Note: This only takes affect if quorum_membership_reconciliation_enabled is set to true.
257+
# @param quorum_membership_reconciliation_trigger_interval
258+
# The reconciliation delay in milliseconds, used when a trigger event occurs,
259+
# for example, a node is added or removed from the cluster or an applicable policy changes.
260+
# This delay will be applied only once, then the regular interval will be used again.
261+
# Important Note: This only takes affect if quorum_membership_reconciliation_enabled is set to true.
262+
# @param quorum_membership_reconciliation_target_group_size
263+
# Controls the target group size for a quorum queue
264+
# Important Note: This only takes affect if quorum_membership_reconciliation_enabled is set to true.
246265
# @param repos_ensure
247266
# Ensure that a repo with the official (and newer) RabbitMQ package is configured, along with its signing key.
248267
# Defaults to false (use system packages). This does not ensure that soft dependencies are present.
@@ -385,6 +404,11 @@
385404
Optional[Variant[Numeric, String[1]]] $package_apt_pin = undef,
386405
String $package_ensure = 'installed',
387406
Optional[String] $package_gpg_key = undef,
407+
Optional[Boolean] $quorum_membership_reconciliation_enabled = undef,
408+
Optional[Boolean] $quorum_membership_reconciliation_auto_remove = undef,
409+
Optional[Integer] $quorum_membership_reconciliation_interval = undef,
410+
Optional[Integer] $quorum_membership_reconciliation_trigger_interval = undef,
411+
Optional[Integer] $quorum_membership_reconciliation_target_group_size = undef,
388412
Optional[String] $repo_gpg_key = undef,
389413
Variant[String, Array] $package_name = 'rabbitmq',
390414
Optional[String] $package_source = undef,

0 commit comments

Comments
 (0)