Description of problem: If user tries to create a CV with more than one KS repo, the completion will fail. Version-Release number of selected component (if applicable): Satellite-6.0.3-RHEL-6-20140605.0 (and the build before that, really) How reproducible: Probably pretty repro'able Steps to Reproduce: 1. Sync two kickstart repos. 2. Add both of these to a content view 3. Attempt to publish. Actual results: Something like Validation failed: Name has already been taken (ActiveRecord::RecordInvalid) /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/validations.rb:56:in `save!' /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/attribute_methods/dirty.rb:33:in `save!' /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:246:in `block in save!' /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:295:in `block in with_transaction_returning_status' /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction' /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:208:in `transaction' /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:293:in `with_transaction_returning_status' /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:246:in `save!' /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/validations.rb:41:in `create!' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/models/katello/concerns/medium_extensions.rb:53:in `find_or_create_medium' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/models/katello/concerns/medium_extensions.rb:35:in `update_media' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/katello/foreman.rb:24:in `block in update_foreman_content' /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/relation/delegation.rb:6:in `each' /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/relation/delegation.rb:6:in `each' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/katello/foreman.rb:24:in `update_foreman_content' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/actions/katello/foreman/content_update.rb:32:in `finalize' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/action.rb:445:in `block (2 levels) in execute_finalize' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:26:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:26:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware.rb:16:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/actions/middleware/remote_action.rb:29:in `block in finalize' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/actions/middleware/remote_action.rb:51:in `block (2 levels) in as_remote_user' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/katello/util/thread_session.rb:85:in `set_pulp_config' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/actions/middleware/remote_action.rb:41:in `as_pulp_user' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/actions/middleware/remote_action.rb:50:in `block in as_remote_user' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/katello/util/thread_session.rb:92:in `set_cp_config' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/actions/middleware/remote_action.rb:36:in `as_cp_user' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/actions/middleware/remote_action.rb:49:in `as_remote_user' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/actions/middleware/remote_action.rb:29:in `finalize' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:22:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:26:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware.rb:16:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/action/progress.rb:30:in `with_progress_calculation' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/action/progress.rb:22:in `finalize' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:22:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:26:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware.rb:16:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/actions/middleware/keep_locale.rb:28:in `block in finalize' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/actions/middleware/keep_locale.rb:35:in `with_locale' /opt/rh/ruby193/root/usr/share/gems/gems/katello-1.5.0/app/lib/actions/middleware/keep_locale.rb:28:in `finalize' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:22:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/world.rb:30:in `execute' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/action.rb:444:in `block in execute_finalize' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/action.rb:353:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/action.rb:353:in `block in with_error_handling' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/action.rb:353:in `catch' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/action.rb:353:in `with_error_handling' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/action.rb:443:in `execute_finalize' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/action.rb:222:in `execute' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:9:in `block (2 levels) in execute' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/execution_plan/steps/abstract.rb:141:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/execution_plan/steps/abstract.rb:141:in `with_meta_calculation' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:8:in `block in execute' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:22:in `open_action' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:7:in `execute' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/executors/parallel/sequential_manager.rb:72:in `run_step' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/executors/parallel/sequential_manager.rb:57:in `dispatch' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/executors/parallel/sequential_manager.rb:64:in `block in run_in_sequence' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/executors/parallel/sequential_manager.rb:64:in `each' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/executors/parallel/sequential_manager.rb:64:in `all?' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/executors/parallel/sequential_manager.rb:64:in `run_in_sequence' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/executors/parallel/sequential_manager.rb:53:in `dispatch' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/executors/parallel/sequential_manager.rb:28:in `block (2 levels) in finalize' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:26:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:26:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware.rb:16:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware.rb:41:in `finalize_phase' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:22:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:26:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware.rb:16:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware.rb:41:in `finalize_phase' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:22:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:26:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware.rb:16:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware.rb:41:in `finalize_phase' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/stack.rb:22:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/middleware/world.rb:30:in `execute' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/executors/parallel/sequential_manager.rb:27:in `block in finalize' /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction' /opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:208:in `transaction' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/transaction_adapters/active_record.rb:5:in `transaction' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/executors/parallel/sequential_manager.rb:24:in `finalize' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/executors/parallel/worker.rb:23:in `block in on_message' /opt/rh/ruby193/root/usr/share/gems/gems/algebrick-0.4.0/lib/algebrick.rb:859:in `block in assigns' /opt/rh/ruby193/root/usr/share/gems/gems/algebrick-0.4.0/lib/algebrick.rb:858:in `tap' /opt/rh/ruby193/root/usr/share/gems/gems/algebrick-0.4.0/lib/algebrick.rb:858:in `assigns' /opt/rh/ruby193/root/usr/share/gems/gems/algebrick-0.4.0/lib/algebrick.rb:138:in `match_value' /opt/rh/ruby193/root/usr/share/gems/gems/algebrick-0.4.0/lib/algebrick.rb:116:in `block in match' /opt/rh/ruby193/root/usr/share/gems/gems/algebrick-0.4.0/lib/algebrick.rb:115:in `each' /opt/rh/ruby193/root/usr/share/gems/gems/algebrick-0.4.0/lib/algebrick.rb:115:in `match' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/executors/parallel/worker.rb:17:in `on_message' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/micro_actor.rb:82:in `on_envelope' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/micro_actor.rb:72:in `receive' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/micro_actor.rb:99:in `block (2 levels) in run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/micro_actor.rb:99:in `loop' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/micro_actor.rb:99:in `block in run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/micro_actor.rb:99:in `catch' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/micro_actor.rb:99:in `run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.6.1/lib/dynflow/micro_actor.rb:13:in `block in initialize' /opt/rh/ruby193/root/usr/share/gems/gems/logging-1.8.1/lib/logging/diagnostic_context.rb:323:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/logging-1.8.1/lib/logging/diagnostic_context.rb:323:in `block in create_with_logging_context' Expected results: Success, I imagine. Additional info:
Created redmine issue http://projects.theforeman.org/issues/6108 from this bug
fixed in katello PR: https://github.com/Katello/katello/pull/4227
verified with sat6-snap9 [root@xxxx content]# hammer repository list --organization ACME_Corporation ---|--------------------------------------------------------|------------- ID | NAME | CONTENT TYPE ---|--------------------------------------------------------|------------- 2 | Red Hat Enterprise Linux 6 Server Kickstart x86_64 6.4 | yum 3 | Red Hat Enterprise Linux 6 Server Kickstart x86_64 6.5 | yum ---|--------------------------------------------------------|------------- [root@xxxx content]# hammer content-view list --organization ACME_Corporation ----------------|---------------------------|---------------------------|-----------|--------------- CONTENT VIEW ID | NAME | LABEL | COMPOSITE | REPOSITORY IDS ----------------|---------------------------|---------------------------|-----------|--------------- 2 | cv-rhel65-rhel64-ks | cv-rhel65-rhel64-ks | | 2, 3 1 | Default Organization View | Default_Organization_View | | ----------------|---------------------------|---------------------------|-----------|--------------- [root@xxxx content]# hammer content-view info --organization ACME_Corporation --name cv-rhel65-rhel64-ks ID: 2 Name: cv-rhel65-rhel64-ks Label: cv-rhel65-rhel64-ks Composite: Description: Organization: ACME_Corporation Repositories: 1) ID: 2 Name: Red Hat Enterprise Linux 6 Server Kickstart x86_64 6.4 Label: Red_Hat_Enterprise_Linux_6_Server_Kickstart_x86_64_6_4 2) ID: 3 Name: Red Hat Enterprise Linux 6 Server Kickstart x86_64 6.5 Label: Red_Hat_Enterprise_Linux_6_Server_Kickstart_x86_64_6_5 Puppet Modules: Environments: 1) ID: 2 Name: Dev 2) ID: 1 Name: Library Versions: 1) ID: 2 Version: 1 Published: 2014/06/13 08:42:29 Components: ------------------------------------------------------------- Installed Packages candlepin-0.9.7-1.el6_5.noarch candlepin-scl-1-5.el6_4.noarch candlepin-scl-quartz-2.1.5-5.el6_4.noarch candlepin-scl-rhino-1.7R3-1.el6_4.noarch candlepin-scl-runtime-1-5.el6_4.noarch candlepin-selinux-0.9.7-1.el6_5.noarch candlepin-tomcat6-0.9.7-1.el6_5.noarch createrepo-0.9.9-21.2.pulp.el6sat.noarch dhcp207-235.lab.eng.pnq.redhat.com-qpid-broker-1.0-1.noarch dhcp207-235.lab.eng.pnq.redhat.com-qpid-client-cert-1.0-1.noarch elasticsearch-0.90.10-4.el6sat.noarch katello-1.5.0-25.el6sat.noarch katello-ca-1.0-1.noarch katello-certs-tools-1.5.5-1.el6sat.noarch katello-installer-0.0.48-1.el6sat.noarch m2crypto-0.21.1.pulp-10.el6sat.x86_64 mod_wsgi-3.4-1.pulp.el6sat.x86_64 pulp-katello-0.3-3.el6sat.noarch pulp-nodes-common-2.4.0-0.20.beta.el6sat.noarch pulp-nodes-parent-2.4.0-0.20.beta.el6sat.noarch pulp-puppet-plugins-2.4.0-0.20.beta.el6sat.noarch pulp-puppet-tools-2.4.0-0.20.beta.el6sat.noarch pulp-rpm-plugins-2.4.0-0.20.beta.el6sat.noarch pulp-selinux-2.4.0-0.20.beta.el6sat.noarch pulp-server-2.4.0-0.20.beta.el6sat.noarch python-gofer-qpid-1.2.1-1.el6sat.noarch python-isodate-0.5.0-1.pulp.el6sat.noarch python-kombu-3.0.15-10.pulp.el6sat.noarch python-pulp-bindings-2.4.0-0.20.beta.el6sat.noarch python-pulp-common-2.4.0-0.20.beta.el6sat.noarch python-pulp-puppet-common-2.4.0-0.20.beta.el6sat.noarch python-pulp-rpm-common-2.4.0-0.20.beta.el6sat.noarch python-qpid-0.22-14.el6sat.noarch python-qpid-qmf-0.22-31.el6sat.x86_64 qpid-cpp-client-0.22-40.el6.x86_64 qpid-cpp-server-0.22-40.el6.x86_64 qpid-cpp-server-linearstore-0.22-40.el6.x86_64 qpid-proton-c-0.7-1.el6.x86_64 qpid-qmf-0.22-31.el6sat.x86_64 qpid-tools-0.22-12.el6.noarch ruby193-rubygem-katello-1.5.0-57.el6sat.noarch rubygem-hammer_cli_katello-0.0.4-6.el6sat.noarch
This was delivered with 6.0.3, which is the Satellite 6 Beta.