Skip to content

Commit

Permalink
Add possibility to define watchdog_device resource
Browse files Browse the repository at this point in the history
  • Loading branch information
Damian Lukowski committed May 30, 2020
1 parent a062493 commit 0ffca92
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 68 deletions.
142 changes: 74 additions & 68 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,11 @@
# Whether we should test new configuration files with `corosync -t`.
# (requires corosync 2.3.4)
#
# @param watchdog_device
# Watchdog device to use, for example '/dev/watchdog' or 'off'.
# Its presence (or lack thereof) shifted with corosync versions.
# Default: undef
#
# @example Simple configuration without secauth
#
# class { 'corosync':
Expand All @@ -337,74 +342,75 @@
# Copyright 2012, Puppet Labs, LLC.
#
class corosync(
Boolean $enable_secauth = $corosync::params::enable_secauth,
Enum['file', 'string'] $authkey_source = $corosync::params::authkey_source,
Variant[Stdlib::Filesource,Stdlib::Base64] $authkey = $corosync::params::authkey,
Corosync::CryptoHash $crypto_hash = 'sha1',
Corosync::CryptoCipher $crypto_cipher = 'aes256',
Optional[Integer] $threads = undef,
Optional[Variant[Stdlib::Port, Array[Stdlib::Port]]] $port = $corosync::params::port,
Corosync::IpStringIp $bind_address = $corosync::params::bind_address,
Optional[Corosync::IpStringIp] $multicast_address = undef,
Optional[Array] $unicast_addresses = undef,
Boolean $force_online = $corosync::params::force_online,
Boolean $check_standby = $corosync::params::check_standby,
Boolean $log_timestamp = $corosync::params::log_timestamp,
Boolean $log_file = $corosync::params::log_file,
Optional[Stdlib::Absolutepath] $log_file_name = undef,
Boolean $debug = $corosync::params::debug,
Boolean $log_stderr = $corosync::params::log_stderr,
Corosync::SyslogPriority $syslog_priority = $corosync::params::syslog_priority,
Boolean $log_function_name = $corosync::params::log_function_name,
Optional[Enum['none', 'active', 'passive']] $rrp_mode = undef,
Optional[Integer] $netmtu = undef,
Optional[Integer[0,255]] $ttl = undef,
Optional[Enum['ykd', 'none']] $vsftype = undef,
Boolean $package_corosync = $corosync::params::package_corosync,
Boolean $package_crmsh = $corosync::params::package_crmsh,
Boolean $package_pacemaker = $corosync::params::package_pacemaker,
Boolean $package_pcs = $corosync::params::package_pcs,
Boolean $package_fence_agents = $corosync::params::package_fence_agents,
Optional[Array[String[1]]] $packageopts_corosync = $corosync::params::package_install_options,
Optional[Array[String[1]]] $packageopts_pacemaker = $corosync::params::package_install_options,
Optional[Array[String[1]]] $packageopts_crmsh = $corosync::params::package_install_options,
Optional[Array[String[1]]] $packageopts_pcs = $corosync::params::package_install_options,
Optional[Array[String[1]]] $packageopts_fence_agents = $corosync::params::package_install_options,
String[1] $version_corosync = $corosync::params::version_corosync,
String[1] $version_crmsh = $corosync::params::version_crmsh,
String[1] $version_pacemaker = $corosync::params::version_pacemaker,
String[1] $version_pcs = $corosync::params::version_pcs,
String[1] $version_fence_agents = $corosync::params::version_fence_agents,
Boolean $set_votequorum = $corosync::params::set_votequorum,
Optional[Integer] $votequorum_expected_votes = undef,
Array $quorum_members = ['localhost'],
Optional[Array] $quorum_members_ids = undef,
Optional[Array] $quorum_members_names = undef,
Optional[Integer] $token = undef,
Optional[Integer] $token_retransmits_before_loss_const = undef,
Optional[String] $compatibility = undef,
Boolean $enable_corosync_service = $corosync::params::enable_corosync_service,
Boolean $manage_corosync_service = $corosync::params::manage_corosync_service,
Boolean $enable_pacemaker_service = $corosync::params::enable_pacemaker_service,
Boolean $manage_pacemaker_service = $corosync::params::manage_pacemaker_service,
Boolean $enable_pcsd_service = $corosync::params::enable_pcsd_service,
Boolean $manage_pcsd_service = false,
Boolean $manage_pcsd_auth = false,
Optional[Sensitive[String]] $sensitive_hacluster_password = undef,
Optional[Sensitive[String]] $sensitive_hacluster_hash = undef,
Enum['first','last'] $manage_pcsd_auth_node = 'first',
Boolean $manage_quorum_device = false,
Optional[Stdlib::Fqdn] $quorum_device_host = undef,
Optional[Corosync::QuorumAlgorithm] $quorum_device_algorithm = 'ffsplit',
Optional[String] $package_quorum_device = $corosync::params::package_quorum_device,
Optional[Sensitive[String]] $sensitive_quorum_device_password = undef,
Optional[String[1]] $cluster_name = undef,
Optional[Integer] $join = undef,
Optional[Integer] $consensus = undef,
Optional[String[1]] $ip_version = undef,
Optional[Enum['yes', 'no']] $clear_node_high_bit = undef,
Optional[Integer] $max_messages = undef,
Boolean $test_corosync_config = $corosync::params::test_corosync_config,
Boolean $enable_secauth = $corosync::params::enable_secauth,
Enum['file', 'string'] $authkey_source = $corosync::params::authkey_source,
Variant[Stdlib::Filesource,Stdlib::Base64] $authkey = $corosync::params::authkey,
Corosync::CryptoHash $crypto_hash = 'sha1',
Corosync::CryptoCipher $crypto_cipher = 'aes256',
Optional[Integer] $threads = undef,
Optional[Variant[Stdlib::Port, Array[Stdlib::Port]]] $port = $corosync::params::port,
Corosync::IpStringIp $bind_address = $corosync::params::bind_address,
Optional[Corosync::IpStringIp] $multicast_address = undef,
Optional[Array] $unicast_addresses = undef,
Boolean $force_online = $corosync::params::force_online,
Boolean $check_standby = $corosync::params::check_standby,
Boolean $log_timestamp = $corosync::params::log_timestamp,
Boolean $log_file = $corosync::params::log_file,
Optional[Stdlib::Absolutepath] $log_file_name = undef,
Boolean $debug = $corosync::params::debug,
Boolean $log_stderr = $corosync::params::log_stderr,
Corosync::SyslogPriority $syslog_priority = $corosync::params::syslog_priority,
Boolean $log_function_name = $corosync::params::log_function_name,
Optional[Enum['none', 'active', 'passive']] $rrp_mode = undef,
Optional[Integer] $netmtu = undef,
Optional[Integer[0,255]] $ttl = undef,
Optional[Enum['ykd', 'none']] $vsftype = undef,
Boolean $package_corosync = $corosync::params::package_corosync,
Boolean $package_crmsh = $corosync::params::package_crmsh,
Boolean $package_pacemaker = $corosync::params::package_pacemaker,
Boolean $package_pcs = $corosync::params::package_pcs,
Boolean $package_fence_agents = $corosync::params::package_fence_agents,
Optional[Array[String[1]]] $packageopts_corosync = $corosync::params::package_install_options,
Optional[Array[String[1]]] $packageopts_pacemaker = $corosync::params::package_install_options,
Optional[Array[String[1]]] $packageopts_crmsh = $corosync::params::package_install_options,
Optional[Array[String[1]]] $packageopts_pcs = $corosync::params::package_install_options,
Optional[Array[String[1]]] $packageopts_fence_agents = $corosync::params::package_install_options,
String[1] $version_corosync = $corosync::params::version_corosync,
String[1] $version_crmsh = $corosync::params::version_crmsh,
String[1] $version_pacemaker = $corosync::params::version_pacemaker,
String[1] $version_pcs = $corosync::params::version_pcs,
String[1] $version_fence_agents = $corosync::params::version_fence_agents,
Boolean $set_votequorum = $corosync::params::set_votequorum,
Optional[Integer] $votequorum_expected_votes = undef,
Array $quorum_members = ['localhost'],
Optional[Array] $quorum_members_ids = undef,
Optional[Array] $quorum_members_names = undef,
Optional[Integer] $token = undef,
Optional[Integer] $token_retransmits_before_loss_const = undef,
Optional[String] $compatibility = undef,
Boolean $enable_corosync_service = $corosync::params::enable_corosync_service,
Boolean $manage_corosync_service = $corosync::params::manage_corosync_service,
Boolean $enable_pacemaker_service = $corosync::params::enable_pacemaker_service,
Boolean $manage_pacemaker_service = $corosync::params::manage_pacemaker_service,
Boolean $enable_pcsd_service = $corosync::params::enable_pcsd_service,
Boolean $manage_pcsd_service = false,
Boolean $manage_pcsd_auth = false,
Optional[Sensitive[String]] $sensitive_hacluster_password = undef,
Optional[Sensitive[String]] $sensitive_hacluster_hash = undef,
Enum['first','last'] $manage_pcsd_auth_node = 'first',
Boolean $manage_quorum_device = false,
Optional[Stdlib::Fqdn] $quorum_device_host = undef,
Optional[Corosync::QuorumAlgorithm] $quorum_device_algorithm = 'ffsplit',
Optional[String] $package_quorum_device = $corosync::params::package_quorum_device,
Optional[Sensitive[String]] $sensitive_quorum_device_password = undef,
Optional[String[1]] $cluster_name = undef,
Optional[Integer] $join = undef,
Optional[Integer] $consensus = undef,
Optional[String[1]] $ip_version = undef,
Optional[Enum['yes', 'no']] $clear_node_high_bit = undef,
Optional[Integer] $max_messages = undef,
Boolean $test_corosync_config = $corosync::params::test_corosync_config,
Optional[Variant[Stdlib::Absolutepath, Enum['off']]] $watchdog_device = undef,
) inherits ::corosync::params {

if $set_votequorum and (empty($quorum_members) and empty($multicast_address) and !$cluster_name) {
Expand Down
22 changes: 22 additions & 0 deletions spec/classes/corosync_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,28 @@
end
end

context 'with undefined watchdog_device' do
it 'does not configure watchdog_device resource' do
is_expected.to contain_file('/etc/corosync/corosync.conf').without_content(
%r{watchdog_device:}
)
end
end

context 'with defined watchdog_device' do
before do
params.merge!(
watchdog_device: 'off'
)
end

it 'configures watchdog_device resource' do
is_expected.to contain_file('/etc/corosync/corosync.conf').with_content(
%r{watchdog_device: off}
)
end
end

context 'when log_file and log_file_name are set' do
let(:params) do
super().merge(
Expand Down
6 changes: 6 additions & 0 deletions templates/corosync.conf.erb
Original file line number Diff line number Diff line change
Expand Up @@ -166,3 +166,9 @@ nodelist {
}
<% end -%>
<% end -%>
<% unless @watchdog_device.nil? -%>
resources {
watchdog_device: <%= @watchdog_device %>
}
<% end -%>

0 comments on commit 0ffca92

Please sign in to comment.