Browse Source

Merge "Improve stonith leves idempotency."

tags/12.0.0
Zuul 2 weeks ago
parent
commit
d02be09bda
2 changed files with 46 additions and 1 deletions
  1. +25
    -0
      lib/facter/stonith_levels.rb
  2. +21
    -1
      manifests/fencing.pp

+ 25
- 0
lib/facter/stonith_levels.rb View File

@@ -0,0 +1,25 @@
# Copyright 2016 Red Hat, Inc.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

Facter.add('stonith_levels') do
setcode do

hostname = Facter::Core::Execution.execute("crm_node -n 2> /dev/null", {})

stonith_levels = Facter::Core::Execution.execute("pcs stonith level | sed -n \"/^Target: #{hostname}$/,/^Target:/{/^Target: #{hostname}$/b;/^Target:/b;p}\" |tail -1 | awk '{print $2}' 2> /dev/null", {})

stonith_levels
end
end

+ 21
- 1
manifests/fencing.pp View File

@@ -84,7 +84,7 @@ class tripleo::fencing(
$content = $config['devices']

# check if the devices: section in fence.yaml contains levels.
# if it doesn't, assume level=1 an build a hash with the content.
# if it doesn't, assume level=1 and build a hash with the content.
if is_array($content) {
$all_levels = {'level1' => $content}
}
@@ -92,6 +92,26 @@ class tripleo::fencing(
$all_levels = $content
}

# collect the number of stonith levels currently defined for this system
# and convert it to integer.
$local_levels = 0 + $facts['stonith_levels']

# if the number of levels defined on this system is greather than the number in hiera
# we need to delete the delta.
if $local_levels > $all_levels.length {
$begin = $all_levels.length + 1
range("${begin}", "${local_levels}").each |$level|{
pacemaker::stonith::level{ "stonith-${level}":
ensure => 'absent',
level => $level,
target => '$(/usr/sbin/crm_node -n)',
stonith_resources => [''],
tries => $tries,
try_sleep => $try_sleep,
}
}
}

$all_levels.each |$index, $levelx_devices |{

$level = regsubst($index, 'level', '', 'G')

Loading…
Cancel
Save