From 36a957010bc90c1b6441fe2eb536e445a50cb8ce Mon Sep 17 00:00:00 2001 From: Justin Sherrill Date: Tue, 9 Nov 2021 15:45:58 -0500 Subject: [PATCH] Fixes #33893 - fix smart proxy sync with blank url --- app/lib/actions/katello/capsule_content/refresh_repos.rb | 2 +- .../actions/pulp3/capsule_content/generate_metadata.rb | 9 +++++---- app/services/katello/pulp3/repository.rb | 4 ---- app/services/katello/pulp3/repository_mirror.rb | 2 +- test/actions/pulp/repository/refresh_repos_test.rb | 2 -- 5 files changed, 7 insertions(+), 12 deletions(-) diff --git a/app/lib/actions/katello/capsule_content/refresh_repos.rb b/app/lib/actions/katello/capsule_content/refresh_repos.rb index 401f5f5926e..cb94645a630 100644 --- a/app/lib/actions/katello/capsule_content/refresh_repos.rb +++ b/app/lib/actions/katello/capsule_content/refresh_repos.rb @@ -40,7 +40,7 @@ def invoke_external_task pulp_repo = repo.backend_service(smart_proxy) if !current_repos_on_capsule_ids.include?(repo.id) pulp_repo.create_mirror_entities - elsif pulp_repo.mirror_needs_updates? + else tasks += pulp_repo.refresh_mirror_entities end end diff --git a/app/lib/actions/pulp3/capsule_content/generate_metadata.rb b/app/lib/actions/pulp3/capsule_content/generate_metadata.rb index a7c9f584b1a..bb0aef42e29 100644 --- a/app/lib/actions/pulp3/capsule_content/generate_metadata.rb +++ b/app/lib/actions/pulp3/capsule_content/generate_metadata.rb @@ -17,13 +17,14 @@ def plan(repository, smart_proxy, options = {}) def invoke_external_task repository = ::Katello::Repository.find(input[:repository_id]) + backend = repository.backend_service(smart_proxy).with_mirror_adapter #yum repositories use metadata mirroring always, so we should never - # regenerate metadata on proxies - if repository.yum? + # regenerate metadata on proxies. but if there is no publication, + # it means the repo was likely empty and syncing didn't generate one + if repository.yum? && backend.publication_href.present? [] else - smart_proxy = ::SmartProxy.unscoped.find(input[:smart_proxy_id]) - repository.backend_service(smart_proxy).with_mirror_adapter.create_publication + backend.create_publication end end end diff --git a/app/services/katello/pulp3/repository.rb b/app/services/katello/pulp3/repository.rb index fe2fac68982..7ddb42abdc1 100644 --- a/app/services/katello/pulp3/repository.rb +++ b/app/services/katello/pulp3/repository.rb @@ -183,10 +183,6 @@ def refresh_mirror_entities RepositoryMirror.new(self).refresh_entities end - def mirror_needs_updates? - RepositoryMirror.new(self).needs_updates? - end - def refresh_if_needed tasks = [] tasks << update_remote #always update remote diff --git a/app/services/katello/pulp3/repository_mirror.rb b/app/services/katello/pulp3/repository_mirror.rb index f4a1c31d846..758c45d21c0 100644 --- a/app/services/katello/pulp3/repository_mirror.rb +++ b/app/services/katello/pulp3/repository_mirror.rb @@ -79,7 +79,7 @@ def version_href end def publication_href - api.publications_api.list(:repository_version => version_href).results.first.pulp_href + api.publications_api.list(:repository_version => version_href).results.first&.pulp_href end def create_version(options = {}) diff --git a/test/actions/pulp/repository/refresh_repos_test.rb b/test/actions/pulp/repository/refresh_repos_test.rb index 6dd7cd4fb6a..0d27b04e5f0 100644 --- a/test/actions/pulp/repository/refresh_repos_test.rb +++ b/test/actions/pulp/repository/refresh_repos_test.rb @@ -41,7 +41,6 @@ def setup planned_action = create_and_plan_action action_class, @smart_proxy, repository: repo # repo already exist in capsule ::Katello::Pulp::SmartProxyRepository.any_instance.expects(:current_repositories).returns([repo]) - pulp_repo.expects(:mirror_needs_updates?).returns(true) pulp_repo.expects(:refresh_mirror_entities).once.returns([]) run_action planned_action end @@ -74,7 +73,6 @@ def setup planned_action = create_and_plan_action action_class, @smart_proxy, repository: repo # repo already exist in capsule ::Katello::Pulp3::SmartProxyRepository.any_instance.expects(:current_repositories).returns([repo]) - pulp_repo.expects(:mirror_needs_updates?).returns(true) pulp_repo.expects(:refresh_mirror_entities).once.returns([]) run_action planned_action end