# File lib/kafo/puppet_module.rb, line 88 def primary_parameter_group @groups.detect { |g| g.formatted_name == PRIMARY_GROUP_NAME } || dummy_primary_group end
class Kafo::PuppetModule
Constants
- PRIMARY_GROUP_NAME
Attributes
class_name[R]
configuration[R]
dir_name[R]
groups[R]
identifier[R]
manifest_name[R]
manifest_path[R]
name[R]
params[R]
params_class_name[R]
params_path[R]
raw_data[R]
Public Class Methods
find_parser()
click to toggle source
# File lib/kafo/puppet_module.rb, line 14 def self.find_parser @parser ||= begin logger = KafoConfigure.logger parser = KafoParsers::Parsers.find_available(:logger => logger) if parser logger.debug "Using Puppet module parser #{parser}" parser else logger.debug "No available Puppet module parser found" :none # prevent continually re-checking end end end
new(identifier, parser: nil, configuration: KafoConfigure.config)
click to toggle source
# File lib/kafo/puppet_module.rb, line 28 def initialize(identifier, parser: nil, configuration: KafoConfigure.config) @identifier = identifier @configuration = configuration @name = get_name @dir_name = get_dir_name @manifest_name = get_manifest_name @class_name = get_class_name @params = [] if @configuration.module_dirs.count == 1 module_dir = @configuration.module_dirs.first else module_dir = @configuration.module_dirs.find { |dir| File.exists?(File.join(dir, module_manifest_path)) } || warn("Manifest #{module_manifest_path} was not found in #{@configuration.module_dirs.join(', ')}") end @manifest_path = File.join(module_dir, module_manifest_path) @parser = parser @parser_cache = @configuration.parser_cache @logger = KafoConfigure.logger @groups = {} @params_path = get_params_path @params_class_name = get_params_class_name @raw_data = nil @enabled = nil end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/kafo/puppet_module.rb, line 100 def <=>(other) @configuration.app[:low_priority_modules].each do |module_name| return 1 if self.name.include?(module_name) && !other.name.include?(module_name) return -1 if !self.name.include?(module_name) && other.name.include?(module_name) if self.name.include?(module_name) && other.name.include?(module_name) return self.name.sub(/.*#{module_name}/, '') <=> other.name.sub(/.*#{module_name}/, '') end end self.name <=> other.name end
disable()
click to toggle source
# File lib/kafo/puppet_module.rb, line 57 def disable @enabled = false end
enable()
click to toggle source
# File lib/kafo/puppet_module.rb, line 61 def enable @enabled = true end
enabled?()
click to toggle source
# File lib/kafo/puppet_module.rb, line 53 def enabled? @enabled.nil? ? @enabled = @configuration.module_enabled?(self) : @enabled end
other_parameter_groups()
click to toggle source
# File lib/kafo/puppet_module.rb, line 92 def other_parameter_groups @groups.select { |g| g.formatted_name != PRIMARY_GROUP_NAME } end
params_hash()
click to toggle source
# File lib/kafo/puppet_module.rb, line 96 def params_hash Hash[params.map { |param| [param.name, param.value] }] end
parse(builder_klass = ParamBuilder)
click to toggle source
# File lib/kafo/puppet_module.rb, line 65 def parse(builder_klass = ParamBuilder) @raw_data = @parser_cache.get(identifier, manifest_path) if @parser_cache if @raw_data.nil? @parser = self.class.find_parser if @parser.nil? if @parser.nil? || @parser == :none raise ParserError.new("No Puppet module parser is installed and no cache of the file #{manifest_path} is available. Please check debug logs and install optional dependencies for the parser.") else @raw_data = @parser.parse(manifest_path) end end builder = builder_klass.new(self, @raw_data) builder.validate @params = builder.build_params @groups = builder.build_param_groups(@params) self rescue ConfigurationException => e @logger.fatal "Unable to continue because of: #{e.message}" KafoConfigure.exit(:manifest_error) end
primary_parameter_group()
click to toggle source
Private Instance Methods
class_to_name(name)
click to toggle source
# File lib/kafo/puppet_module.rb, line 183 def class_to_name(name) name.gsub('::', '/') end
default_dir_name()
click to toggle source
# File lib/kafo/puppet_module.rb, line 159 def default_dir_name identifier.split('::').first end
default_manifest_name()
click to toggle source
# File lib/kafo/puppet_module.rb, line 167 def default_manifest_name identifier.include?('::') ? identifier.split('::')[1..-1].join('/') : 'init' end
default_params_name()
click to toggle source
# File lib/kafo/puppet_module.rb, line 171 def default_params_name identifier.include?('::') ? (identifier.split('::')[1..-1] + ['params']).join('/') : 'params' end
default_params_path()
click to toggle source
# File lib/kafo/puppet_module.rb, line 163 def default_params_path "#{dir_name}/manifests/#{class_to_name(get_params_name)}.pp" end
dummy_primary_group()
click to toggle source
used when user haven't specified any primary group by name, we create a new group that holds all other groups as children, if we have no other groups (no children) we set all parameters that this module hold
# File lib/kafo/puppet_module.rb, line 117 def dummy_primary_group group = ParamGroup.new(PRIMARY_GROUP_NAME) other_parameter_groups.each { |child| group.add_child(child) } @params.each { |p| group.add_param(p) } if group.children.empty? group end
get_class_name()
click to toggle source
# File lib/kafo/puppet_module.rb, line 139 def get_class_name manifest_name == 'init' ? name : "#{dir_name}::#{manifest_name.gsub('/', '::')}" end
get_dir_name()
click to toggle source
custom module directory name
# File lib/kafo/puppet_module.rb, line 130 def get_dir_name mapping[identifier].nil? ? default_dir_name : (mapping[identifier][:dir_name] || default_dir_name) end
get_manifest_name()
click to toggle source
custom manifest filename without .pp extension
# File lib/kafo/puppet_module.rb, line 135 def get_manifest_name mapping[identifier].nil? ? default_manifest_name : (mapping[identifier][:manifest_name] || default_manifest_name) end
get_name()
click to toggle source
# File lib/kafo/puppet_module.rb, line 175 def get_name identifier.gsub('::', '_') end
get_params_class_name()
click to toggle source
# File lib/kafo/puppet_module.rb, line 151 def get_params_class_name name_to_class_name(get_params_name) end
get_params_name()
click to toggle source
# File lib/kafo/puppet_module.rb, line 147 def get_params_name mapping[identifier].nil? ? default_params_name : (mapping[identifier][:params_name] || default_params_name) end
get_params_path()
click to toggle source
# File lib/kafo/puppet_module.rb, line 143 def get_params_path mapping[identifier].nil? ? default_params_path : (mapping[identifier][:params_path] || default_params_path) end
mapping()
click to toggle source
mapping from configuration with stringified keys
# File lib/kafo/puppet_module.rb, line 125 def mapping @mapping ||= Hash[@configuration.app[:mapping].map { |k, v| [k.to_s, v] }] end
module_manifest_path()
click to toggle source
# File lib/kafo/puppet_module.rb, line 155 def module_manifest_path "#{dir_name}/manifests/#{manifest_name}.pp" end
name_to_class_name(name)
click to toggle source
# File lib/kafo/puppet_module.rb, line 179 def name_to_class_name(name) name.gsub('/', '::') end