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

53 lines
2.0 KiB
Ruby

module Pacemaker
# functions related to the cluster properties
# main structure "cluster_properties"
module Properties
# get cluster property CIB section
# @return [REXML::Element]
def cib_section_cluster_property
REXML::XPath.match(cib, '/cib/configuration/crm_config/cluster_property_set').first
end
# get cluster property structure
# @return [Hash<String => Hash>]
def cluster_properties
return @cluster_properties_structure if @cluster_properties_structure
@cluster_properties_structure = children_elements_to_hash cib_section_cluster_property, 'name'
end
# get the value of a cluster property by it's name
# @param property_name [String] the name of the property
# @return [String]
def cluster_property_value(property_name)
return unless cluster_property_defined? property_name
cluster_properties[property_name]['value']
end
# set the value to this cluster's property
# @param property_name [String] the name of the property
# @param property_value [String] the value of the property
def cluster_property_set(property_name, property_value)
options = ['--quiet', '--type', 'crm_config', '--name', property_name]
options += ['--update', property_value]
retry_block { crm_attribute_safe options }
end
# delete this cluster's property
# @param property_name [String] the name of the property
def cluster_property_delete(property_name)
options = ['--quiet', '--type', 'crm_config', '--name', property_name]
options += ['--delete']
retry_block { crm_attribute_safe options }
end
# check if this property has a value
# @param property_name [String] the name of the property
# @return [TrueClass,FalseClass]
def cluster_property_defined?(property_name)
return false unless cluster_properties.key? property_name
return false unless cluster_properties[property_name].is_a?(Hash) && cluster_properties[property_name]['value']
true
end
end
end