Module: RSMP::Supervisor::Modules::Configuration

Included in:
RSMP::Supervisor
Defined in:
lib/rsmp/node/supervisor/modules/configuration.rb

Overview

Handles supervisor configuration and site settings

Instance Method Summary collapse

Instance Method Details

#check_site_sxl_typesObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/rsmp/node/supervisor/modules/configuration.rb', line 13

def check_site_sxl_types
  sites = @supervisor_settings['sites'].clone || {}
  sites['default'] = @supervisor_settings['default']
  sites.each do |site_id, settings|
    raise RSMP::ConfigurationError, "Configuration for site '#{site_id}' is empty" unless settings

    sxl = settings['sxl']
    raise RSMP::ConfigurationError, "Configuration error for site '#{site_id}': No SXL specified" unless sxl

    RSMP::Schema.find_schemas! sxl if sxl
  rescue RSMP::Schema::UnknownSchemaError => e
    raise RSMP::ConfigurationError, "Configuration error for site '#{site_id}': #{e}"
  end
end

#handle_supervisor_settings(supervisor_settings) ⇒ Object



6
7
8
9
10
11
# File 'lib/rsmp/node/supervisor/modules/configuration.rb', line 6

def handle_supervisor_settings(supervisor_settings)
  options = RSMP::Supervisor::Options.new(supervisor_settings || {})
  @supervisor_settings = options.to_h
  @core_version = @supervisor_settings.dig('default', 'core_version')
  check_site_sxl_types
end

#ip_to_site_settings(ip) ⇒ Object



39
40
41
# File 'lib/rsmp/node/supervisor/modules/configuration.rb', line 39

def ip_to_site_settings(ip)
  @supervisor_settings['sites'][ip] || @supervisor_settings['sites']['default']
end

#site_id_to_site_setting(site_id) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/rsmp/node/supervisor/modules/configuration.rb', line 28

def site_id_to_site_setting(site_id)
  base = @supervisor_settings['default'] || {}

  return base unless @supervisor_settings['sites']

  site_specific = @supervisor_settings['sites'][site_id] || @supervisor_settings['sites']['default']
  return base unless site_specific

  base.deep_merge(site_specific)
end