Commit fe535661 authored by Adam Hegyi's avatar Adam Hegyi

Merge branch 'allowlist_various_callsites' into 'master'

Allowlist various callsites for cross-database queries

See merge request gitlab-org/gitlab!70927
parents da868609 e5f50a66
...@@ -10,8 +10,10 @@ class Groups::RunnersController < Groups::ApplicationController ...@@ -10,8 +10,10 @@ class Groups::RunnersController < Groups::ApplicationController
feature_category :runner feature_category :runner
def index def index
finder = Ci::RunnersFinder.new(current_user: current_user, params: { group: @group }) ::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/336433') do
@group_runners_limited_count = finder.execute.except(:limit, :offset).page.total_count_with_limit(:all, limit: 1000) finder = Ci::RunnersFinder.new(current_user: current_user, params: { group: @group })
@group_runners_limited_count = finder.execute.except(:limit, :offset).page.total_count_with_limit(:all, limit: 1000)
end
end end
def runner_list_group_view_vue_ui_enabled def runner_list_group_view_vue_ui_enabled
...@@ -61,9 +63,11 @@ class Groups::RunnersController < Groups::ApplicationController ...@@ -61,9 +63,11 @@ class Groups::RunnersController < Groups::ApplicationController
private private
def runner def runner
@runner ||= Ci::RunnersFinder.new(current_user: current_user, params: { group: @group }).execute ::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/336433') do
.except(:limit, :offset) @runner ||= Ci::RunnersFinder.new(current_user: current_user, params: { group: @group }).execute
.find(params[:id]) .except(:limit, :offset)
.find(params[:id])
end
end end
def runner_params def runner_params
......
...@@ -23,6 +23,11 @@ module Groups ...@@ -23,6 +23,11 @@ module Groups
@group_runners = runners_finder.execute.page(params[:page]).per(NUMBER_OF_RUNNERS_PER_PAGE) @group_runners = runners_finder.execute.page(params[:page]).per(NUMBER_OF_RUNNERS_PER_PAGE)
@sort = runners_finder.sort_key @sort = runners_finder.sort_key
# Allow sql generated by the two relations above, @all_group_runners and @group_runners
::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/336433') do
render
end
end end
def update def update
......
...@@ -192,15 +192,17 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo ...@@ -192,15 +192,17 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
Gitlab::PollingInterval.set_header(response, interval: 10_000) Gitlab::PollingInterval.set_header(response, interval: 10_000)
render json: { ::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/336891') do
pipelines: PipelineSerializer render json: {
.new(project: @project, current_user: @current_user) pipelines: PipelineSerializer
.with_pagination(request, response) .new(project: @project, current_user: @current_user)
.represent(@pipelines), .with_pagination(request, response)
count: { .represent(@pipelines),
all: @pipelines.count count: {
all: @pipelines.count
}
} }
} end
end end
def sast_reports def sast_reports
......
...@@ -25,6 +25,11 @@ module Projects ...@@ -25,6 +25,11 @@ module Projects
@project.triggers, current_user: current_user, project: @project @project.triggers, current_user: current_user, project: @project
).to_json ).to_json
end end
# @assignable_runners is using ci_owned_runners
::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/336436') do
render
end
end end
def update def update
......
...@@ -280,7 +280,9 @@ module Ci ...@@ -280,7 +280,9 @@ module Ci
end end
def belongs_to_more_than_one_project? def belongs_to_more_than_one_project?
self.projects.limit(2).count(:all) > 1 ::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/338659') do
self.projects.limit(2).count(:all) > 1
end
end end
def assigned_to_group? def assigned_to_group?
...@@ -309,7 +311,9 @@ module Ci ...@@ -309,7 +311,9 @@ module Ci
end end
def only_for?(project) def only_for?(project)
projects == [project] ::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/338659') do
projects == [project]
end
end end
def short_sha def short_sha
...@@ -444,14 +448,18 @@ module Ci ...@@ -444,14 +448,18 @@ module Ci
end end
def any_project def any_project
unless projects.any? ::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/338659') do
errors.add(:runner, 'needs to be assigned to at least one project') unless projects.any?
errors.add(:runner, 'needs to be assigned to at least one project')
end
end end
end end
def exactly_one_group def exactly_one_group
unless groups.one? ::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/338659') do
errors.add(:runner, 'needs to be assigned to exactly one group') unless groups.one?
errors.add(:runner, 'needs to be assigned to exactly one group')
end
end end
end end
......
...@@ -67,7 +67,6 @@ ...@@ -67,7 +67,6 @@
- "./spec/features/projects/pipelines/pipeline_spec.rb" - "./spec/features/projects/pipelines/pipeline_spec.rb"
- "./spec/features/projects/pipelines/pipelines_spec.rb" - "./spec/features/projects/pipelines/pipelines_spec.rb"
- "./spec/features/projects/settings/pipelines_settings_spec.rb" - "./spec/features/projects/settings/pipelines_settings_spec.rb"
- "./spec/features/runners_spec.rb"
- "./spec/features/security/project/internal_access_spec.rb" - "./spec/features/security/project/internal_access_spec.rb"
- "./spec/features/security/project/private_access_spec.rb" - "./spec/features/security/project/private_access_spec.rb"
- "./spec/features/security/project/public_access_spec.rb" - "./spec/features/security/project/public_access_spec.rb"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment