puppet-pacemaker/lib/pacemaker/xml/resource_default.rb

57 lines
2.1 KiB
Ruby

module Pacemaker
# functions related to the resource defaults
# main structure "resource_defaults"
module ResourceDefault
# get resource defaults CIB section
# @return [REXML::Element]
def cib_section_resource_defaults
REXML::XPath.match(cib, '/cib/configuration/rsc_defaults/meta_attributes').first
end
# the main 'resource_defaults' structure
# contains defaults operations and their values
# @return [Hash]
def resource_defaults
return @resource_defaults_structure if @resource_defaults_structure
@resource_defaults_structure = children_elements_to_hash cib_section_resource_defaults, 'name'
@resource_defaults_structure = {} unless @resource_defaults_structure
@resource_defaults_structure
end
# extract a single resource default attribute value
# returns nil if it have not been set
# @param attribute_name [String]
# @return [String, nil]
def resource_default_value(attribute_name)
return unless resource_default_defined? attribute_name
resource_defaults[attribute_name]['value']
end
# set a single resource default value
# @param attribute_name [String]
# @param attribute_value [String]
def resource_default_set(attribute_name, attribute_value)
options = ['--quiet', '--type', 'rsc_defaults', '--attr-name', attribute_name]
options += ['--attr-value', attribute_value]
retry_block { crm_attribute_safe options }
end
# remove a defined resource default attribute
# @param attribute_name [String]
def resource_default_delete(attribute_name)
options = ['--quiet', '--type', 'rsc_defaults', '--attr-name', attribute_name]
options += ['--delete-attr']
retry_block { crm_attribute_safe options }
end
# check if this resource default attribute have been defined
# @param attribute_name [String]
# @return [true,false]
def resource_default_defined?(attribute_name)
return false unless resource_defaults.key? attribute_name
return false unless resource_defaults[attribute_name].is_a?(Hash) && resource_defaults[attribute_name]['value']
true
end
end
end