class Longleaf::ServiceMappingManager
Manager which loads and provides access to location to service mappings
Public Class Methods
new(config)
click to toggle source
@param config [Hash] has representation of the application configuration
# File lib/longleaf/services/service_mapping_manager.rb, line 10 def initialize(config) raise ArgumentError.new("Configuration must be provided") if config.nil? || config.empty? mappings_config = config[AF::SERVICE_MAPPINGS] raise ArgumentError.new("Service mappings configuration must be provided") if mappings_config.nil? @loc_to_services = Hash.new mappings_config.each do |mapping| locations = mapping[AF::LOCATIONS] services = mapping[AF::SERVICES] locations = [locations] if locations.is_a?(String) services = [services] if services.is_a?(String) locations.each do |loc_name| @loc_to_services[loc_name] = Array.new unless @loc_to_services.key?(loc_name) service_set = @loc_to_services[loc_name] if services.is_a?(String) service_set.push(services) else service_set.concat(services) end end end @loc_to_services.each { |loc, services| services.uniq! } @loc_to_services.freeze end
Public Instance Methods
list_services(loc_name)
click to toggle source
Gets a list of service names associated with the given location @param loc_name [String] name of the location to lookup @return [Array] a list of service names associated with the location
# File lib/longleaf/services/service_mapping_manager.rb, line 44 def list_services(loc_name) @loc_to_services[loc_name] || [] end