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