class ConfigureSemian::SemianConfiguration::SemianParameters

Singleton Object associated with Semian Configuration that has various specifications for Semian initialization

Constants

SEMIAN_PARAMETERS

Attributes

app_server[RW]
free_hosts[RW]
service_configs[RW]
service_name[RW]
track_exceptions[RW]

Public Class Methods

new() click to toggle source
# File lib/configure_semian/semian_configuration.rb, line 23
def initialize
  @app_server = false
  @service_configs = {}
  @free_hosts = []
  @track_exceptions = []
  @service_name = nil
end

Public Instance Methods

app_server=(value) click to toggle source

Passed true only for app server so that bulkheading is disabled in worker servers

# File lib/configure_semian/semian_configuration.rb, line 32
def app_server=value
  @app_server = value
end
choose_configs_for_given_server() click to toggle source

Overriding specifications for nonapp server

# File lib/configure_semian/semian_configuration.rb, line 68
def choose_configs_for_given_server
  if self.app_server
    self.service_configs.delete(:worker)
  else
    self.service_configs = self.service_configs[:worker] || {}
  end
end
generate_specifications() click to toggle source

initial computations

# File lib/configure_semian/semian_configuration.rb, line 47
def generate_specifications
  # Define exceptions to be tracked by Semian
  Semian::NetHTTP.exceptions |= self.track_exceptions
  # Create the complete host,path driven semian options
  semian_default = SEMIAN_PARAMETERS[:semian_default].with_indifferent_access
  semian_default[:bulkhead] = self.app_server || false
  choose_configs_for_given_server
  service_default = semian_default.merge(self.service_configs.delete(:default) || {})
  service_default.delete(:quota) if !service_default[:tickets].nil?
  self.service_configs.each do |host, specs|
    host_default = service_default.merge(specs.delete(:default) || {})
    host_default.delete(:quota) if !host_default[:tickets].nil?
    specs.each do |path, path_specs|
      self.service_configs[host][path] = host_default.merge(path_specs || {})
    end
    self.service_configs[host][:default] = host_default
  end
  self.service_configs.merge!({semian_default: semian_default, default: service_default})
end
service_configs=(value) click to toggle source

semian options alongwith the ones defined by the service

# File lib/configure_semian/semian_configuration.rb, line 37
def service_configs=value
  @service_configs = value.with_indifferent_access
end
track_exceptions=(value) click to toggle source

exceptions to be tracked defined by the service

# File lib/configure_semian/semian_configuration.rb, line 42
def track_exceptions=value
  self.track_exceptions |= value
end