From d5e143456a4b9a8ad9a8f85c945b01103536e6d1 Mon Sep 17 00:00:00 2001 From: Jan Kessler Date: Tue, 2 Jul 2024 17:16:30 +0200 Subject: [PATCH] Apply meta_server-tag from default/override create parameters early in create (#1066) * apply meta_server-tag in default/override create parameters early in the create call, to actually achieve the effect on server selection * change order in apply_config_server_tag to mimic the order of precedence of defaults/override as in add_additional_params * simplify the implementation of order of precedence for meta_server-tag overrides/defaults --------- Co-authored-by: Ahmad Farhat --- .../bigbluebutton_api_controller.rb | 1 + app/controllers/concerns/api_helper.rb | 21 +++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/controllers/bigbluebutton_api_controller.rb b/app/controllers/bigbluebutton_api_controller.rb index 88d0b802..56f68654 100644 --- a/app/controllers/bigbluebutton_api_controller.rb +++ b/app/controllers/bigbluebutton_api_controller.rb @@ -166,6 +166,7 @@ def get_meetings_disabled def create params.require(:meetingID) + apply_config_server_tag(params) begin # Check if meeting is already running meeting = Meeting.find(params[:meetingID], @tenant&.id) diff --git a/app/controllers/concerns/api_helper.rb b/app/controllers/concerns/api_helper.rb index 2db996f0..e948704d 100644 --- a/app/controllers/concerns/api_helper.rb +++ b/app/controllers/concerns/api_helper.rb @@ -218,15 +218,18 @@ def add_additional_params(action, bbb_params) else [{}, {}] end + # Server tag is handled separately in create call + default.delete(:'meta_server-tag') + override.delete(:'meta_server-tag') final_params = default&.merge(final_params) case action when 'create' # Merge with the default (bbb_params takes precedence) - final_params = Rails.configuration.x.default_create_params.merge(final_params) + final_params = Rails.configuration.x.default_create_params.except(:'meta_server-tag').merge(final_params) # Merge with the override (override takes precedence) - final_params.merge!(Rails.configuration.x.override_create_params) + final_params.merge!(Rails.configuration.x.override_create_params.except(:'meta_server-tag')) when 'join' # Merge with the default (bbb_params takes precedence) final_params = Rails.configuration.x.default_join_params.merge(final_params) @@ -238,4 +241,18 @@ def add_additional_params(action, bbb_params) final_params end + + # early handling of server tag in default/override create settings + def apply_config_server_tag(params) + default = Rails.configuration.x.default_create_params + override = Rails.configuration.x.override_create_params + default_tenant, override_tenant = TenantSetting.defaults_and_overrides(@tenant&.id) + + params[:'meta_server-tag'] = + override_tenant[:'meta_server-tag'].presence || + override[:'meta_server-tag'].presence || + params[:'meta_server-tag'].presence || + default_tenant[:'meta_server-tag'].presence || + default[:'meta_server-tag'].presence + end end