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
- #check_site_sxls ⇒ Object
- #denormalize_site_sxls(settings) ⇒ Object
- #denormalize_supervisor_sxls(settings) ⇒ Object
- #handle_supervisor_settings(supervisor_settings) ⇒ Object
- #ip_to_site_settings(ip) ⇒ Object
- #site_id_to_site_setting(site_id) ⇒ Object
Instance Method Details
#check_site_sxls ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/rsmp/node/supervisor/modules/configuration.rb', line 32 def check_site_sxls 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 sxls = settings['sxls'] raise RSMP::ConfigurationError, "Configuration error for site '#{site_id}': No SXLs specified" unless sxls sxls.each do |sxl| name = sxl['name'] if name.to_s == 'core' raise RSMP::ConfigurationError, "Configuration error for site '#{site_id}': SXL name cannot be core" end RSMP::Schema.find_schema! name, sxl['version'], lenient: true end rescue RSMP::Schema::UnknownSchemaError => e raise RSMP::ConfigurationError, "Configuration error for site '#{site_id}': #{e}" end end |
#denormalize_site_sxls(settings) ⇒ Object
23 24 25 26 27 28 29 30 |
# File 'lib/rsmp/node/supervisor/modules/configuration.rb', line 23 def denormalize_site_sxls(settings) sxls = settings['sxls'] return settings unless sxls.is_a?(Array) settings.merge( 'sxls' => sxls.to_h { |sxl| [sxl['name'], sxl['version']] } ) end |
#denormalize_supervisor_sxls(settings) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/rsmp/node/supervisor/modules/configuration.rb', line 14 def denormalize_supervisor_sxls(settings) settings = settings.merge('default' => denormalize_site_sxls(settings['default'])) if settings['default'] return settings unless settings['sites'] settings.merge( 'sites' => settings['sites'].transform_values { |site_settings| denormalize_site_sxls(site_settings) } ) end |
#handle_supervisor_settings(supervisor_settings) ⇒ Object
6 7 8 9 10 11 12 |
# File 'lib/rsmp/node/supervisor/modules/configuration.rb', line 6 def handle_supervisor_settings(supervisor_settings) supervisor_settings = denormalize_supervisor_sxls(supervisor_settings || {}) = RSMP::Supervisor::Options.new(supervisor_settings || {}) @supervisor_settings = .to_h @core_version = @supervisor_settings.dig('default', 'core_version') check_site_sxls end |
#ip_to_site_settings(ip) ⇒ Object
66 67 68 |
# File 'lib/rsmp/node/supervisor/modules/configuration.rb', line 66 def ip_to_site_settings(ip) @supervisor_settings['sites'][ip] || @supervisor_settings['sites']['default'] end |
#site_id_to_site_setting(site_id) ⇒ Object
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/rsmp/node/supervisor/modules/configuration.rb', line 55 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 |