epcim
3/20/2017 - 5:32 PM

reclass_tree.rb

#!/usr/bin/env ruby

require 'yaml'

def parse_yaml(cl, align = '')
  puts align + cl
  reclass_dir = '/srv/salt/reclass'
  yaml_file = if cl =~ /\.yml$/
                cl
              elsif File.exist?(reclass_dir + '/classes/' + cl.tr('.', '/') + '/init.yml')
                reclass_dir + '/classes/' + cl.tr('.', '/') + '/init.yml'
              else
                reclass_dir + '/classes/' + cl.tr('.', '/') + '.yml'
              end

  data = YAML.load_file(yaml_file)
  if data.key?('classes')
    align = align + '  '
    data['classes'].each do |nested_class|
      parse_yaml(nested_class, align = align)
    end
  end
end

parse_yaml(ARGV[0])