Skip to content

Commit

Permalink
Apply meta_server-tag from default/override create parameters early i…
Browse files Browse the repository at this point in the history
…n 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 <ahmad.af.farhat@gmail.com>
  • Loading branch information
Ithanil and farhatahmad committed Jul 2, 2024
1 parent 0c54101 commit d5e1434
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
1 change: 1 addition & 0 deletions app/controllers/bigbluebutton_api_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
21 changes: 19 additions & 2 deletions app/controllers/concerns/api_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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

0 comments on commit d5e1434

Please sign in to comment.