puppet-pacemaker/lib/puppet/type/pcmk_resource.rb

156 lines
4.2 KiB
Ruby

require 'puppet/parameter/boolean'
Puppet::Type.newtype(:pcmk_resource) do
@doc = "Base resource definition for a pacemaker resource"
ensurable
newparam(:name) do
desc "A unique name for the resource"
end
newparam(:resource_type) do
desc "the pacemaker type to create"
end
newparam(:post_success_sleep) do
desc "The time to sleep after successful pcs action. The reason to set
this is to avoid immediate back-to-back 'pcs resource create' calls
when creating multiple resources. Defaults to '0'."
munge do |value|
if value.is_a?(String)
unless value =~ /^[-\d.]+$/
raise ArgumentError, "post_success_sleep must be a number"
end
value = Float(value)
end
raise ArgumentError, "post_success_sleep cannot be a negative number" if value < 0
value
end
defaultto 0
end
## borrowed from exec.rb
newparam(:tries) do
desc "The number of times to attempt to create a pcs resource.
Defaults to '1'."
munge do |value|
if value.is_a?(String)
unless value =~ /^[\d]+$/
raise ArgumentError, "Tries must be an integer"
end
value = Integer(value)
end
raise ArgumentError, "Tries must be an integer >= 1" if value < 1
value
end
defaultto 1
end
newparam(:try_sleep) do
desc "The time to sleep in seconds between 'tries'."
munge do |value|
if value.is_a?(String)
unless value =~ /^[-\d.]+$/
raise ArgumentError, "try_sleep must be a number"
end
value = Float(value)
end
raise ArgumentError, "try_sleep cannot be a negative number" if value < 0
value
end
defaultto 0
end
newparam(:verify_on_create, :boolean => true, :parent => Puppet::Parameter::Boolean) do
desc "Whether to verify pcs resource creation with an additional
call to 'pcs resource config' rather than just relying on the exit
status of 'pcs resource create'. When true, $try_sleep
determines how long to wait to verify and $post_success_sleep is
ignored. Defaults to `false`."
defaultto false
end
newparam(:force, :boolean => true, :parent => Puppet::Parameter::Boolean) do
desc "Wheter to use --force with pcs"
defaultto false
end
newproperty(:op_params) do
desc "op parameters"
end
newproperty(:meta_params) do
desc "meta parameters"
end
newproperty(:resource_params) do
desc "resource parameters"
end
newproperty(:clone_params) do
desc "clone params"
end
newproperty(:group_params) do
desc "A resource group to put the resource in"
end
newproperty(:master_params) do
desc "set if this is a cloned resource"
end
newproperty(:bundle) do
desc "set to bundle id if part of a bundle"
end
newproperty(:location_rule) do
desc "A location rule constraint hash"
end
newproperty(:remote_address) do
desc "Address for remote resources"
end
newproperty(:reconnect_interval) do
desc "reconnection interval for remote resources"
munge do |value|
if value.is_a?(String)
unless value =~ /^[-\d.]+$/
raise ArgumentError, "reconnect_interval must be a number"
end
value = Float(value)
end
raise ArgumentError, "reconnect_interval cannot be a negative number" if value < 0
value
end
defaultto 60
end
newparam(:deep_compare, :boolean => true, :parent => Puppet::Parameter::Boolean) do
desc "Whether to enable deep comparing of resource
When set to true a resource will be compared in full (options, meta parameters,..)
to the existing one and in case of difference it will be repushed to the CIB
Defaults to `false`."
defaultto false
end
newparam(:update_settle_secs) do
desc "The time in seconds to wait for the cluster to settle after resource has been updated
when :deep_compare kicked in. Defaults to '600'."
munge do |value|
if value.is_a?(String)
unless value =~ /^[-\d.]+$/
raise ArgumentError, "update_settle_secs must be a number"
end
value = Float(value)
end
raise ArgumentError, "update_settle_secs cannot be a negative number" if value < 0
value
end
defaultto 600
end
end