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['guest'] = @supervisor_settings['guest']
  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('guest', 'core_version')
  check_site_sxl_types
end

#ip_to_site_settings(ip) ⇒ Object



37
38
39
# File 'lib/rsmp/node/supervisor/modules/configuration.rb', line 37

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

#site_id_to_site_setting(site_id) ⇒ Object

Raises:



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

def site_id_to_site_setting(site_id)
  return {} unless @supervisor_settings['sites']

  @supervisor_settings['sites'].each_pair do |id, settings|
    return settings if id == 'guest' || id == site_id
  end
  raise HandshakeError, "site id #{site_id} unknown"
end