Bug #16750
*_selected methods expect params[:host] to exist
Description
Due to the strong params changes, the methods we override in routes.rb (architecture_selected, os_selected, medium_selected) do not longer work.
The reason is that these *_selected methods expect params[:host] to exist. Other methods like 'taxonomy_scope' also expect params[:host] to exist.
However, 'discovered_hosts/edit' sends params[:discovered_host], which is not understood by the HostController.
The discovery plugin should realize that these params will not be understood by HostController and change them appropriately.
This blocks discovery provisioning without choosing a hostgroup.
Related issues
Associated revisions
History
#1
Updated by Daniel Lobato Garcia over 6 years ago
The error that throws is
NoMethodError: undefined method `has_key?' for nil:NilClass
app/controllers/concerns/foreman/controller/parameters/keep_param.rb:11:in `block in keep_param'
That's coming from app/controller/s/concern/foreman/controller/parameters/host.rb , which calls `host_params` with `top_level_hash = 'host'`. Then `keep_param` tries to access 'params['host']` and fails.
#2
Updated by The Foreman Bot over 6 years ago
- Status changed from New to Ready For Testing
- Pull request https://github.com/theforeman/foreman_discovery/pull/304 added
#3
Updated by Lukas Zapletal over 6 years ago
- Target version set to Discovery Plugin 7.0.1
Just in time for .1 thanks! :-)
#4
Updated by Lukas Zapletal over 6 years ago
- Bugzilla link set to 1397367
#5
Updated by Anonymous over 6 years ago
- Status changed from Ready For Testing to Closed
- % Done changed from 0 to 100
Applied in changeset foreman_discovery|abde986ee2db977d80e011252b9f8cca9c3df69d.
#6
Updated by Lukas Zapletal over 5 years ago
- Related to Bug #13322: Impossible to select OS and media on discovered hosts added
Fixes #16750 - *_selected methods expect params[:host]
Due to the strong params changes, the methods we override in routes.rb
(architecture_selected, os_selected, medium_selected) do not longer
work.
The reason is that these *_selected methods expect params[:host] to
exist. Other methods like 'taxonomy_scope' also expect params[:host] to
exist.
However, 'discovered_hosts/edit' sends params[:discovered_host], which
is not understood by the HostController.
The discovery plugin should realize that these params will not be
understood by HostController and change them appropriately.
This patch merely checks the URL and if it matches 'discovered_hosts' in
some place, it will also set params[:host].