Bug #35885
closedBug 2155392 - Host config report page raises "undefined method `[]' for nil:NilClass" error
Description
Clone from bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2155392
Description of problem:
Host config report page raises "undefined method `[]' for nil:NilClass" error if an ansible task reported multiple results per module action. For example, copy multiple files using loop.
-----------------------
[I|app|ae69c14e] Processing by ConfigReportsController#show as HTML
[I|app|ae69c14e] Parameters: {"id"=>"18694"}
[I|app|ae69c14e] Rendering config_reports/show.html.erb within layouts/application
[I|app|ae69c14e] Rendered /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-7.0.4.1/app/views/foreman_ansible/config_reports/_ansible.html.erb (Duration: 12.4ms | Allocations: 7413)
[I|app|ae69c14e] Rendered config_reports/show.html.erb within layouts/application (Duration: 34.6ms | Allocations: 15873)
[W|app|ae69c14e] undefined method `[]' for nil:NilClass
[I|app|ae69c14e] Backtrace for 'undefined method `[]' for nil:NilClass' error (ActionView::Template::Error): undefined method `[]' for nil:NilClass
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-7.0.4.1/app/helpers/foreman_ansible/ansible_reports_helper.rb:47:in `ansible_module_message'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-7.0.4.1/app/views/foreman_ansible/config_reports/_ansible.html.erb:24:in `block in _8af412795d3bd4ecb65c84004fd343a7'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/relation/delegation.rb:88:in `each'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/relation/delegation.rb:88:in `each'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-7.0.4.1/app/views/foreman_ansible/config_reports/_ansible.html.erb:18:in `_8af412795d3bd4ecb65c84004fd343a7'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/actionview-6.0.4.7/lib/action_view/base.rb:274:in `_run'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/actionview-6.0.4.7/lib/action_view/template.rb:185:in `block in render'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/notifications.rb:182:in `instrument'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/actionview-6.0.4.7/lib/action_view/template.rb:385:in `instrument_render_template'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/actionview-6.0.4.7/lib/action_view/template.rb:183:in `render'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/deface-1.5.3/lib/deface/action_view_extensions.rb:43:in `render'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/actionview-6.0.4.7/lib/action_view/renderer/partial_renderer.rb:357:in `block in render_partial'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/actionview-6.0.4.7/lib/action_view/renderer/abstract_renderer.rb:88:in `block in instrument'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/notifications.rb:180:in `block in instrument'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
ae69c14e | /opt/theforeman/tfm/root/usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/notifications.rb:180:in `instrument'
-----------------------
How reproducible:
Easy
Steps to Reproduce:
1. Create a custom role which copy multiple files
mkdir /etc/ansible/roles/copy_ssh_keys/
mkdir /etc/ansible/roles/copy_ssh_keys/tasks
- Create this file
main.yml
---
- name: Copy ssh keys
copy:
src: "/var/lib/foreman-proxy/ssh/{{ item }}"
dest: "/root/.ssh"
owner: root
group: root
mode: 0400
with_items:
- id_rsa_foreman_proxy
- id_rsa_foreman_proxy.pub
2. Import the 'copy_ssh_keys' role to the Satellite and add it to a host
3. Trigger host ansible role job and wait until the job is finished successfully
4. Inspect the config report of this host job in Web UI -> Config Reports -> hostname
Actual results:
undefined method `[]' for nil:NilClass
Expected results:
Can show report without error.