diff --git a/app/lib/actions/katello/repository/create.rb b/app/lib/actions/katello/repository/create.rb index a9ffd3c2813..0f051f2edc3 100644 --- a/app/lib/actions/katello/repository/create.rb +++ b/app/lib/actions/katello/repository/create.rb @@ -46,15 +46,17 @@ def plan(repository, clone = false, plan_create = false) concurrence do plan_action(::Actions::Pulp::Repos::Update, repository.product) if repository.product.sync_plan - plan_self(:repository_id => repository.id) + plan_self(:repository_id => repository.id, :clone => clone) end end end def run ::User.current = ::User.anonymous_api_admin - repository = ::Katello::Repository.find(input[:repository_id]) - ForemanTasks.async_task(Katello::Repository::MetadataGenerate, repository) + unless input[:clone] + repository = ::Katello::Repository.find(input[:repository_id]) + ForemanTasks.async_task(Katello::Repository::MetadataGenerate, repository) + end ensure ::User.current = nil end diff --git a/test/actions/katello/repository_test.rb b/test/actions/katello/repository_test.rb index 5e2ff3f13ad..a799b82e015 100644 --- a/test/actions/katello/repository_test.rb +++ b/test/actions/katello/repository_test.rb @@ -34,6 +34,28 @@ class CreateTest < TestBase end plan_action action, repository end + + it 'no clone flag means generate metadata in run phase' do + repository.expects(:save!) + action.expects(:action_subject).with(repository) + action.execution_plan.stub_planned_action(::Actions::Katello::Product::ContentCreate) do |content_create| + content_create.stubs(input: { content_id: 123 }) + end + plan = plan_action action, repository + run_action plan + plan.run.label.must_equal "Actions::Katello::Repository::MetadataGenerate" + end + + it 'clone flag disables metadata generation' do + repository.expects(:save!) + action.expects(:action_subject).with(repository) + action.execution_plan.stub_planned_action(::Actions::Katello::Product::ContentCreate) do |content_create| + content_create.stubs(input: { content_id: 123 }) + end + plan = plan_action action, repository, true + run_action plan + plan.run.must_equal nil + end end class CreateFailTest < TestBase