class ConsulLoader::Loader

Attributes

parser[RW]

Public Class Methods

new(parser) click to toggle source
# File lib/consul_loader/loader.rb, line 6
def initialize parser
  self.parser = parser
end

Public Instance Methods

load_config(location, server) click to toggle source
# File lib/consul_loader/loader.rb, line 10
def load_config location, server
  if File.directory? location
    load_folder location, server
  elsif load_file_and_upload location, server
  else
    raise Errno::ENOENT
  end
end

Private Instance Methods

check_and_send_value(key, value, server) click to toggle source
# File lib/consul_loader/loader.rb, line 44
def check_and_send_value key, value, server
  send_data = true

  begin
    response = RestClient.get "#{server}/v1/kv#{key}"
    decoder = ConsulLoader::ResponseDecoder.new
    existing_value = decoder.decode_value response.body
    if value.to_s == existing_value.to_s
      send_data = false
    end
  rescue
    send_data = true
  end

  if send_data
    puts "Updating key: #{key} with value: #{value}"
    RestClient.put "#{server}/v1/kv#{key}", value.to_s
  end
end
load_file_and_upload(filename, server) click to toggle source
# File lib/consul_loader/loader.rb, line 26
def load_file_and_upload filename, server
  yaml = YAML.load_file(filename)
  self.parser.process_yaml("", yaml).each {|k|
    upload_config k, server
  }
end
load_folder(folder, server) click to toggle source
# File lib/consul_loader/loader.rb, line 20
def load_folder folder, server
  Dir.glob("#{folder}/*.yaml").each do |x|
    load_file_and_upload x, server
  end
end
upload_config(c, server) click to toggle source
# File lib/consul_loader/loader.rb, line 33
def upload_config c, server
  case c[:v]
  when Array
    value = c[:v].to_json
  when String, Fixnum, TrueClass
    value = c[:v]
  end

  check_and_send_value c[:k], value, server
end