Created attachment 986301 [details] Failed sync Description of problem: I started receiving errors for my Red Hat product synchronizations, showing the following error: Actions::Katello::Repository::ErrataMail - NoMethodError: undefined method `deliver' for nil:NilClass Turns out that my user was subscribed to all the available mail notifications but my system was not configured to send emails. I believe we have a usability issue here because if we're required to configure our systems to properly handle sending out emails (which makes sense), then the web ui should make that clear. Perhaps we should also not fail the sync process because of this, and alert the user somehow to finish configuring the mail server? Bonus points for letting me provide the mail server (smtp) information via the installer! Version-Release number of selected component (if applicable): * candlepin-0.9.38-1.el7.noarch * candlepin-common-1.0.18-1.el7.noarch * candlepin-guice-3.0-2_redhat_1.el7.noarch * candlepin-scl-1-5.el7.noarch * candlepin-scl-quartz-2.1.5-6.el7.noarch * candlepin-scl-rhino-1.7R3-3.el7.noarch * candlepin-scl-runtime-1-5.el7.noarch * candlepin-selinux-0.9.38-1.el7.noarch * candlepin-tomcat-0.9.38-1.el7.noarch * elasticsearch-0.90.10-6.el7sat.noarch * foreman-1.7.2.1-1.el7sat.noarch * foreman-compute-1.7.2.1-1.el7sat.noarch * foreman-gce-1.7.2.1-1.el7sat.noarch * foreman-libvirt-1.7.2.1-1.el7sat.noarch * foreman-ovirt-1.7.2.1-1.el7sat.noarch * foreman-postgresql-1.7.2.1-1.el7sat.noarch * foreman-proxy-1.7.2.1-1.el7sat.noarch * foreman-selinux-1.7.2.2-1.el7sat.noarch * foreman-vmware-1.7.2.1-1.el7sat.noarch * katello-2.2.0.2-1.el7sat.noarch * katello-certs-tools-2.2.1-1.el7sat.noarch * katello-common-2.2.0.2-1.el7sat.noarch * katello-default-ca-1.0-1.noarch * katello-installer-2.2.0.3-1.el7sat.noarch * katello-installer-base-2.2.0.3-1.el7sat.noarch * katello-server-ca-1.0-1.noarch * openldap-2.4.39-6.el7.x86_64 * pulp-docker-plugins-0.2.1-0.2.beta.el7.noarch * pulp-katello-0.3-4.el7sat.noarch * pulp-nodes-common-2.5.0-0.7.beta.el7.noarch * pulp-nodes-parent-2.5.0-0.7.beta.el7.noarch * pulp-puppet-plugins-2.5.0-0.7.beta.el7sat.noarch * pulp-puppet-tools-2.5.0-0.7.beta.el7sat.noarch * pulp-rpm-plugins-2.5.0-0.7.beta.el7.noarch * pulp-selinux-2.5.0-0.7.beta.el7.noarch * pulp-server-2.5.0-0.7.beta.el7.noarch * python-ldap-2.4.15-2.el7.x86_64 * ruby193-rubygem-ldap_fluff-0.3.2-1.el7.noarch * ruby193-rubygem-net-ldap-0.3.1-3.el7sat.noarch * ruby193-rubygem-runcible-1.3.0-1.el7.noarch * rubygem-hammer_cli-0.1.4.3-1.el7sat.noarch * rubygem-hammer_cli_foreman-0.1.4.3-1.el7sat.noarch * rubygem-hammer_cli_foreman_bootdisk-0.1.2.4-1.el7.noarch * rubygem-hammer_cli_foreman_tasks-0.0.3.1-1.el7.noarch * rubygem-hammer_cli_gutterball-0.0.1.1-1.el7sat.noarch * rubygem-hammer_cli_import-0.10.6-1.el7sat.noarch * rubygem-hammer_cli_katello-0.0.7.1-1.el7sat.noarch How reproducible: Steps to Reproduce: 1. Install latest code 2. Select your user account and subscribe to all Mail Preferences options 3. Synchronize real Red Hat content, something that would trigger the email notifications (perhaps something with errata?) Actual results: The sync process will fail (see attached screenshot) Expected results: Additional info:
Created attachment 986302 [details] Sync process error /opt/rh/ruby193/root/usr/share/gems/gems/katello-2.2.0/app/lib/actions/katello/repository/errata_mail.rb:24:in `run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/action.rb:443:in `block (3 levels) in execute_run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/middleware/stack.rb:26:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/middleware/stack.rb:26:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/middleware.rb:16:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/action/progress.rb:30:in `with_progress_calculation' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/action/progress.rb:16:in `run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/middleware/stack.rb:22:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/middleware/stack.rb:26:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/middleware.rb:16:in `pass' /opt/rh/ruby193/root/usr/share/gems/gems/katello-2.2.0/app/lib/actions/middleware/keep_locale.rb:23:in `block in run' /opt/rh/ruby193/root/usr/share/gems/gems/katello-2.2.0/app/lib/actions/middleware/keep_locale.rb:34:in `with_locale' /opt/rh/ruby193/root/usr/share/gems/gems/katello-2.2.0/app/lib/actions/middleware/keep_locale.rb:23:in `run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/middleware/stack.rb:22:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/middleware/world.rb:30:in `execute' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/action.rb:442:in `block (2 levels) in execute_run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/action.rb:441:in `catch' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/action.rb:441:in `block in execute_run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/action.rb:365:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/action.rb:365:in `block in with_error_handling' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/action.rb:365:in `catch' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/action.rb:365:in `with_error_handling' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/action.rb:436:in `execute_run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/action.rb:230:in `execute' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/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.7.3/lib/dynflow/execution_plan/steps/abstract.rb:152:in `call' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/execution_plan/steps/abstract.rb:152:in `with_meta_calculation' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:8:in `block in execute' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:22:in `open_action' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:7:in `execute' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/executors/parallel/worker.rb:20: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.7.3/lib/dynflow/executors/parallel/worker.rb:17:in `on_message' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/micro_actor.rb:82:in `on_envelope' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/micro_actor.rb:72:in `receive' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/micro_actor.rb:99:in `block (2 levels) in run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/micro_actor.rb:99:in `loop' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/micro_actor.rb:99:in `block in run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/micro_actor.rb:99:in `catch' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/lib/dynflow/micro_actor.rb:99:in `run' /opt/rh/ruby193/root/usr/share/gems/gems/dynflow-0.7.3/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'
Created attachment 986303 [details] Mail Preference
The specific error your seeing here was caused by my incomplete branding change for Satellite, however I take the point to make config of email easier.
Branding issue being addressed in BZ1161809. Leaving this one for addressing installability.
+1 to fixing this. I encountered this bug while attempting to sync several repositories and make that content available to hosts via a content view. Unfortunately, both the act of syncing content and the act of publishing a content view failed due to this bug. Even after disabling email alerts, I am unable to publish brand new content views.
Syncing docker repositories also fails with the exception: NoMethodError: undefined method `deliver' for nil:NilClass With that said, this bug is affecting docker repositories synchronization too.
Verified on Satellite-6.1.0-RHEL-6-20150303.0
This bug is slated to be released with Satellite 6.1.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2015:1592