class Sensu::Translator::Runner

Public Class Methods

new() click to toggle source
# File lib/sensu/translator.rb, line 15
def initialize
  @options = CLI.read
end

Public Instance Methods

create_go_output_files!(go_resources) click to toggle source
# File lib/sensu/translator.rb, line 40
def create_go_output_files!(go_resources)
  output_dir = @options[:output_dir]
  Sensu::Settings::CATEGORIES.each do |category|
    category_dir = File.join(output_dir, category.to_s)
    FileUtils.mkdir_p(category_dir)
  end
  go_resources.each do |go_resource|
    category = "#{go_resource[:type].downcase}s"
    file_name = "#{go_resource[:metadata][:name]}.json"
    output_file = File.join(output_dir, category, file_name)
    content = Sensu::JSON.dump(go_resource, :pretty => true)
    File.open(output_file, "w") do |file|
      file.write(content)
    end
  end
end
load_v1_settings() click to toggle source
# File lib/sensu/translator.rb, line 19
def load_v1_settings
  settings = Sensu::Settings.load(@options)
  unless settings.errors.empty?
    puts "Sensu 1.x configuration is invalid!"
    puts Sensu::JSON.dump({:errors => settings.errors}, :pretty => true)
    exit 2
  end
  settings.to_hash
end
run() click to toggle source
# File lib/sensu/translator.rb, line 57
def run
  v1_settings = load_v1_settings
  go_resources = translate(v1_settings)
  create_go_output_files!(go_resources)
  puts "DONE!"
end
translate(v1_settings) click to toggle source
# File lib/sensu/translator.rb, line 29
def translate(v1_settings)
  go_resources = []
  Sensu::Settings::CATEGORIES.each do |category|
    method_name = "translate_#{category.to_s.chop}"
    v1_settings[category].each do |name, object|
      go_resources << send(method_name, object, @options[:namespace], name)
    end
  end
  go_resources.compact
end