Module: RSMP::SiteSxlSelection
- Included in:
- SiteProxy
- Defined in:
- lib/rsmp/proxy/site/sxl_selection.rb
Overview
Selects the SXL versions accepted by a supervisor-side site proxy.
Instance Method Summary collapse
- #check_sxl_version(message) ⇒ Object
- #rejected_sxl(requested, code, reason) ⇒ Object
- #select_legacy_sxl(message) ⇒ Object
- #select_sxl(requested) ⇒ Object
- #select_sxls(message) ⇒ Object
Instance Method Details
#check_sxl_version(message) ⇒ Object
4 5 6 7 8 9 10 11 12 |
# File 'lib/rsmp/proxy/site/sxl_selection.rb', line 4 def check_sxl_version() if core_3_3? select_sxls else select_legacy_sxl end rescue RSMP::Schema::UnknownSchemaError => e dont_acknowledge , "Rejected #{.type} message,", e.to_s end |
#rejected_sxl(requested, code, reason) ⇒ Object
45 46 47 48 49 50 51 52 |
# File 'lib/rsmp/proxy/site/sxl_selection.rb', line 45 def rejected_sxl(requested, code, reason) { 'name' => requested['name'], 'version' => requested['version'], 'rejected' => code, 'reason' => reason }.compact end |
#select_legacy_sxl(message) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/rsmp/proxy/site/sxl_selection.rb', line 14 def select_legacy_sxl() primary = configured_sxls.first unless primary reason = 'Legacy Version message received, but no SXL is configured' dont_acknowledge , "Rejected #{.type} message,", reason raise HandshakeError, reason end sanitized_version = RSMP::Schema.sanitize_version(.attribute('SXL')) RSMP::Schema.find_schema! primary['name'], sanitized_version @accepted_sxls = [{ 'name' => primary['name'], 'version' => .attribute('SXL') }] @rejected_sxls = [] end |
#select_sxl(requested) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/rsmp/proxy/site/sxl_selection.rb', line 33 def select_sxl(requested) configured = configured_sxls.find { |item| item['name'] == requested['name'] } return rejected_sxl(requested, 1, 'SXL not supported') unless configured if configured['version'].to_s == requested['version'].to_s RSMP::Schema.find_schema! requested['name'], requested['version'], lenient: true requested.slice('name', 'version', 'prefix') else rejected_sxl(requested, 2, "Supervisor only supports #{configured['version']}") end end |
#select_sxls(message) ⇒ Object
28 29 30 31 |
# File 'lib/rsmp/proxy/site/sxl_selection.rb', line 28 def select_sxls() selected_sxls = .sxls.map { |requested| select_sxl(requested) } @accepted_sxls, @rejected_sxls = selected_sxls.partition { |item| item['rejected'].nil? } end |