diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-25 09:09:46 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-25 09:09:46 +0300 |
commit | 0712a75cc03cb881dc40ae53a50d059822354ad8 (patch) | |
tree | cc1b93f252553755b8ee9762540458d652f0f411 | |
parent | 4d3b1c506f6dc753c67bc5ad00d838dd79616b95 (diff) |
Add latest changes from gitlab-org/gitlab@master
-rw-r--r-- | app/models/ci/runner.rb | 12 | ||||
-rw-r--r-- | app/models/clusters/applications/runner.rb | 2 | ||||
-rw-r--r-- | lib/sidebars/groups/menus/packages_registries_menu.rb | 2 | ||||
-rw-r--r-- | spec/factories/ci/runner_namespaces.rb | 9 | ||||
-rw-r--r-- | spec/factories/ci/runners.rb | 9 | ||||
-rw-r--r-- | spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb | 23 | ||||
-rw-r--r-- | spec/models/ci/runner_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/clusters/applications/runner_spec.rb | 2 |
8 files changed, 41 insertions, 20 deletions
diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb index e86c5ad9d38..a1219cb2bd5 100644 --- a/app/models/ci/runner.rb +++ b/app/models/ci/runner.rb @@ -439,10 +439,8 @@ module Ci end def no_groups - ::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/338659') do - if groups.any? - errors.add(:runner, 'cannot have groups assigned') - end + if runner_namespaces.any? + errors.add(:runner, 'cannot have groups assigned') end end @@ -453,10 +451,8 @@ module Ci end def exactly_one_group - ::Gitlab::Database.allow_cross_joins_across_databases(url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/338659') do - unless groups.one? - errors.add(:runner, 'needs to be assigned to exactly one group') - end + unless runner_namespaces.one? + errors.add(:runner, 'needs to be assigned to exactly one group') end end diff --git a/app/models/clusters/applications/runner.rb b/app/models/clusters/applications/runner.rb index 7cef92ce81a..25ae0b30486 100644 --- a/app/models/clusters/applications/runner.rb +++ b/app/models/clusters/applications/runner.rb @@ -70,7 +70,7 @@ module Clusters } if cluster.group_type? - attributes[:groups] = [group] + attributes[:runner_namespaces] = [::Ci::RunnerNamespace.new(namespace: group)] elsif cluster.project_type? attributes[:runner_projects] = [::Ci::RunnerProject.new(project: project)] end diff --git a/lib/sidebars/groups/menus/packages_registries_menu.rb b/lib/sidebars/groups/menus/packages_registries_menu.rb index e81e9355e7e..46fcec9f7b8 100644 --- a/lib/sidebars/groups/menus/packages_registries_menu.rb +++ b/lib/sidebars/groups/menus/packages_registries_menu.rb @@ -52,7 +52,7 @@ module Sidebars end def dependency_proxy_menu_item - unless context.group.dependency_proxy_feature_available? + unless can?(context.current_user, :read_dependency_proxy, context.group) return ::Sidebars::NilMenuItem.new(item_id: :dependency_proxy) end diff --git a/spec/factories/ci/runner_namespaces.rb b/spec/factories/ci/runner_namespaces.rb index a5060d196ca..e3cebed789b 100644 --- a/spec/factories/ci/runner_namespaces.rb +++ b/spec/factories/ci/runner_namespaces.rb @@ -2,7 +2,14 @@ FactoryBot.define do factory :ci_runner_namespace, class: 'Ci::RunnerNamespace' do - runner factory: [:ci_runner, :group] group + + after(:build) do |runner_namespace, evaluator| + unless runner_namespace.runner.present? + runner_namespace.runner = build( + :ci_runner, :group, runner_namespaces: [runner_namespace] + ) + end + end end end diff --git a/spec/factories/ci/runners.rb b/spec/factories/ci/runners.rb index d0853df4e4b..6665b7b76a0 100644 --- a/spec/factories/ci/runners.rb +++ b/spec/factories/ci/runners.rb @@ -11,6 +11,7 @@ FactoryBot.define do runner_type { :instance_type } transient do + groups { [] } projects { [] } end @@ -18,6 +19,10 @@ FactoryBot.define do evaluator.projects.each do |proj| runner.runner_projects << build(:ci_runner_project, project: proj) end + + evaluator.groups.each do |group| + runner.runner_namespaces << build(:ci_runner_namespace, namespace: group) + end end trait :online do @@ -32,7 +37,9 @@ FactoryBot.define do runner_type { :group_type } after(:build) do |runner, evaluator| - runner.groups << build(:group) if runner.groups.empty? + if runner.runner_namespaces.empty? + runner.runner_namespaces << build(:ci_runner_namespace) + end end end diff --git a/spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb b/spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb index 5ebd67462f8..e954d7a44ba 100644 --- a/spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb +++ b/spec/lib/sidebars/groups/menus/packages_registries_menu_spec.rb @@ -137,16 +137,27 @@ RSpec.describe Sidebars::Groups::Menus::PackagesRegistriesMenu do stub_config(dependency_proxy: { enabled: dependency_enabled }) end - context 'when config dependency_proxy is enabled' do - let(:dependency_enabled) { true } + context 'when user can read dependency proxy' do + context 'when config dependency_proxy is enabled' do + let(:dependency_enabled) { true } - it 'the menu item is added to list of menu items' do - is_expected.not_to be_nil + it 'the menu item is added to list of menu items' do + is_expected.not_to be_nil + end + end + + context 'when config dependency_proxy is not enabled' do + let(:dependency_enabled) { false } + + it 'the menu item is not added to list of menu items' do + is_expected.to be_nil + end end end - context 'when config dependency_proxy is not enabled' do - let(:dependency_enabled) { false } + context 'when user cannot read dependency proxy' do + let(:user) { nil } + let(:dependency_enabled) { true } it 'the menu item is not added to list of menu items' do is_expected.to be_nil diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb index 826332268c5..c44f57ee137 100644 --- a/spec/models/ci/runner_spec.rb +++ b/spec/models/ci/runner_spec.rb @@ -44,7 +44,7 @@ RSpec.describe Ci::Runner do let(:runner) { create(:ci_runner, :group, groups: [group]) } it 'disallows assigning group if already assigned to a group' do - runner.groups << build(:group) + runner.runner_namespaces << build(:ci_runner_namespace) expect(runner).not_to be_valid expect(runner.errors.full_messages).to include('Runner needs to be assigned to exactly one group') diff --git a/spec/models/clusters/applications/runner_spec.rb b/spec/models/clusters/applications/runner_spec.rb index 788430d53d3..d0257f6c2b6 100644 --- a/spec/models/clusters/applications/runner_spec.rb +++ b/spec/models/clusters/applications/runner_spec.rb @@ -112,7 +112,7 @@ RSpec.describe Clusters::Applications::Runner do subject expect(runner).to be_group_type - expect(runner.groups).to eq [group] + expect(runner.runner_namespaces.pluck(:namespace_id)).to match_array [group.id] end end |