class Kongfigure::Synchronizers::Base
Attributes
parent_resource[R]
remote_resources[R]
resources[R]
Public Class Methods
new(http_client, resources, parent_resource=nil)
click to toggle source
# File lib/kongfigure/synchronizers/base.rb, line 8 def initialize(http_client, resources, parent_resource=nil) @http_client = http_client @parent_resource = parent_resource @resources = resources @remote_resources = load_all_remote_resources end
Public Instance Methods
cleanup(remote_resource)
click to toggle source
# File lib/kongfigure/synchronizers/base.rb, line 54 def cleanup(remote_resource) puts "#{parent_resource.nil? ? '' : ' *'}#{'---'.colorize(:red)} #{remote_resource.display_name}" path = if parent_resource "#{parent_resource.api_name}/#{parent_resource.identifier}/#{resource_api_name}/#{remote_resource.identifier}" else "#{resource_api_name}/#{remote_resource.identifier}" end @http_client.delete(path) end
create(resource)
click to toggle source
# File lib/kongfigure/synchronizers/base.rb, line 64 def create(resource) puts "#{parent_resource.nil? ? '' : ' *'}#{'+++'.colorize(:green)} #{resource.display_name}" path = if parent_resource "#{parent_resource.api_name}/#{parent_resource.identifier}/#{resource_api_name}" else "#{resource_api_name}" end @http_client.post(path, resource.api_attributes.to_json) end
find(identifier)
click to toggle source
# File lib/kongfigure/synchronizers/base.rb, line 15 def find(identifier) module_name = Kongfigure::Resources.const_get(self.class.to_s.split("::").last) module_name.build(@http_client.get("#{resource_api_name}/#{identifier}")) rescue Kongfigure::Errors::ResourceNotFound nil end
synchronize(resource)
click to toggle source
# File lib/kongfigure/synchronizers/base.rb, line 40 def synchronize(resource) synchronize_resource(resource) synchronize_plugins(resource) end
synchronize_all()
click to toggle source
# File lib/kongfigure/synchronizers/base.rb, line 45 def synchronize_all @resources.each do |resource| synchronize(resource) end @remote_resources.each do |remote_resource| cleanup(remote_resource) if remote_resource.has_to_be_deleted? end end
synchronize_plugins(resource)
click to toggle source
# File lib/kongfigure/synchronizers/base.rb, line 35 def synchronize_plugins(resource) plugins_synchronizer = Kongfigure::Synchronizers::Plugin.new(@http_client, resource.plugins, resource) plugins_synchronizer.synchronize_all end
synchronize_resource(resource)
click to toggle source
# File lib/kongfigure/synchronizers/base.rb, line 22 def synchronize_resource(resource) remote_resource = find_related_remote_resource(resource) if remote_resource.nil? create(resource) elsif resource == remote_resource unchanged(resource) remote_resource.mark_as_unchanged else update(resource, remote_resource) remote_resource.mark_as_updated end end
unchanged(resource)
click to toggle source
# File lib/kongfigure/synchronizers/base.rb, line 74 def unchanged(resource) puts "#{parent_resource.nil? ? '' : ' *'}#{'==='.colorize(:blue)} #{resource.display_name}" end
update(resource, remote_resource)
click to toggle source
# File lib/kongfigure/synchronizers/base.rb, line 78 def update(resource, remote_resource) puts "#{'uuu'.colorize(:yellow)} #{resource.display_name}" path = if parent_resource "#{parent_resource.api_name}/#{parent_resource.identifier}/#{resource_api_name}/#{remote_resource.identifier}" else "#{resource_api_name}/#{remote_resource.identifier}" end @http_client.put(path, resource.api_attributes.to_json) end
Private Instance Methods
load_all_remote_resources()
click to toggle source
# File lib/kongfigure/synchronizers/base.rb, line 89 def load_all_remote_resources if parent_resource.nil? @http_client.get("#{resource_api_name}")["data"].map do |hash_resource| resource_module.build(hash_resource) end else @http_client.get("#{parent_resource.api_name}/#{parent_resource.identifier}/#{resource_api_name}")["data"].map do |hash_resource| resource_module.build(hash_resource) end end end