Initial support for properties managed by pcs 0.10

pcs0.10 removed support for 'pcs property --node'. The command to
be used is 'pcs node attribute'

We cannot detect the pcs version via facter as that breaks when pcs
is not installed at the moment puppet is run.

Doing it with an additional yum call like
https://github.com/fsalum/puppet-redis/blob/master/lib/facter/redis_version.rb#L50
seems also suboptimal.

Change-Id: I27b8aa930a7413069539eb4fac13c41822049889
This commit is contained in:
Michele Baldessari 2018-12-18 21:47:58 +01:00
parent c7b21ee0cb
commit 306b0e001a
1 changed files with 21 additions and 8 deletions

View File

@ -8,13 +8,18 @@ Puppet::Type.type(:pcmk_property).provide(:default) do
property = @resource[:property]
node = @resource[:node]
value = @resource[:value]
cmd = "property set"
if not_empty_string(node)
if Puppet::Util::Package.versioncmp(pcs_cli_version(), '0.10.0') >= 0
cmd = "node attribute #{node}"
else
cmd = "property set --node #{node}"
end
else
cmd = "property set"
end
if not_empty_string(@resource[:force])
cmd += " --force"
end
if not_empty_string(node)
cmd += " --node #{node}"
end
cmd += " #{property}=#{value}"
ret = pcs('create', @resource[:property], cmd, @resource[:tries], @resource[:try_sleep])
Puppet.debug("property create: #{cmd} -> #{ret}")
@ -24,11 +29,15 @@ Puppet::Type.type(:pcmk_property).provide(:default) do
def destroy
property = @resource[:property]
node = @resource[:node]
cmd = "property unset"
if not_empty_string(node)
cmd += " --node #{node}"
if Puppet::Util::Package.versioncmp(pcs_cli_version(), '0.10.0') >= 0
cmd = "node attribute #{node} #{property}="
else
cmd = "property unset --node #{node} #{property}"
end
else
cmd = "property unset #{property}"
end
cmd += " #{property}"
ret = pcs('delete', @resource[:property], cmd, @resource[:tries], @resource[:try_sleep])
Puppet.debug("property destroy: #{cmd} -> #{ret}")
return ret
@ -45,7 +54,11 @@ Puppet::Type.type(:pcmk_property).provide(:default) do
else
value = ''
end
cmd = "property show"
if Puppet::Util::Package.versioncmp(pcs_cli_version(), '0.10.0') >= 0 and not_empty_string(node)
cmd = "node attribute #{node}"
else
cmd = "property show"
end
# We need to distinguish between per node properties and global ones as the output is
# different:
# Cluster Properties: