When upgrading our instance from 1.16.2 > 1.17.1, foreman_rake db:seed fails on 040-role.rb step with NoMethodError. I attached bookmarks, filters, roles, permissions from my database. <pre> # foreman-rake db:seed --trace /opt/theforeman/tfm/root/usr/share/gems/gems/sequel-4.20.0/lib/sequel/database/schema_generator.rb:19: warning: constant ::Fixnum is deprecated /opt/theforeman/tfm/root/usr/share/gems/gems/sequel-4.20.0/lib/sequel/database/schema_generator.rb:19: warning: constant ::Bignum is deprecated /usr/share/foreman/lib/core_extensions.rb:183: warning: already initialized constant ActiveSupport::MessageEncryptor::DEFAULT_CIPHER /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/message_encryptor.rb:22: warning: previous definition of DEFAULT_CIPHER was here ** Invoke db:seed (first_time) ** Execute db:seed ** Invoke db:abort_if_pending_migrations (first_time) ** Invoke environment (first_time) ** Execute environment The PGconn, PGresult, and PGError constants are deprecated, and will be removed as of version 1.0. You should use PG::Connection, PG::Result, and PG::Error instead, respectively. Called from /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:292:in `block in require' ** Invoke db:load_config (first_time) ** Execute db:load_config ** Execute db:abort_if_pending_migrations Seeding /usr/share/foreman/db/seeds.d/020-partition_tables_list.rb Seeding /usr/share/foreman/db/seeds.d/020-permissions_list.rb Seeding /usr/share/foreman/db/seeds.d/020-provisioning_templates_list.rb Seeding /usr/share/foreman/db/seeds.d/020-roles_list.rb Seeding /usr/share/foreman/db/seeds.d/030-auth_sources.rb Seeding /usr/share/foreman/db/seeds.d/030-permissions.rb Seeding /usr/share/foreman/db/seeds.d/035-admin.rb Seeding /usr/share/foreman/db/seeds.d/040-roles.rb rake aborted! NoMethodError: undefined method `id' for nil:NilClass /usr/share/foreman/app/models/role.rb:324:in `block in find_current_filter' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/relation/delegation.rb:39:in `each' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/relation/delegation.rb:39:in `each' /usr/share/foreman/app/models/role.rb:324:in `detect' /usr/share/foreman/app/models/role.rb:324:in `find_current_filter' /usr/share/foreman/app/models/role.rb:320:in `filter_for_permissions_remove' /usr/share/foreman/app/models/role.rb:178:in `filters_and_filterings_for_removal' /usr/share/foreman/app/models/role.rb:173:in `block in find_for_permission_removal' /usr/share/foreman/app/models/role.rb:172:in `each' /usr/share/foreman/app/models/role.rb:172:in `inject' /usr/share/foreman/app/models/role.rb:172:in `find_for_permission_removal' /usr/share/foreman/app/models/role.rb:211:in `remove_permissions!' /usr/share/foreman/lib/seed_helper.rb:92:in `block in update_role_permissions' /usr/share/foreman/app/models/role.rb:234:in `ignore_locking' /usr/share/foreman/lib/seed_helper.rb:84:in `update_role_permissions' /usr/share/foreman/lib/seed_helper.rb:63:in `create_role' /usr/share/foreman/db/seeds.d/040-roles.rb:10:in `block (4 levels) in <top (required)>' /usr/share/foreman/db/seeds.d/040-roles.rb:9:in `each' /usr/share/foreman/db/seeds.d/040-roles.rb:9:in `block (3 levels) in <top (required)>' /usr/share/foreman/app/models/concerns/authorizable.rb:115:in `skip_permission_check' /usr/share/foreman/db/seeds.d/040-roles.rb:5:in `block (2 levels) in <top (required)>' /opt/theforeman/tfm/root/usr/share/gems/gems/audited-4.4.1/lib/audited/auditor.rb:283:in `without_auditing' /usr/share/foreman/db/seeds.d/040-roles.rb:4:in `block in <top (required)>' /opt/theforeman/tfm/root/usr/share/gems/gems/audited-4.4.1/lib/audited/auditor.rb:283:in `without_auditing' /usr/share/foreman/db/seeds.d/040-roles.rb:3:in `<top (required)>' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `load' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `block in load' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:258:in `load_dependency' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `load' /usr/share/foreman/db/seeds.rb:38:in `block (2 levels) in <top (required)>' /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:93:in `as' /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:99:in `as_anonymous_admin' /usr/share/foreman/db/seeds.rb:37:in `block in <top (required)>' /usr/share/foreman/db/seeds.rb:31:in `each' /usr/share/foreman/db/seeds.rb:31:in `<top (required)>' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `load' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `block in load' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:258:in `load_dependency' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `load' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/railties-5.1.4/lib/rails/engine.rb:549:in `load_seed' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/tasks/database_tasks.rb:270:in `load_seed' /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activerecord-5.1.4/lib/active_record/railties/databases.rake:184:in `block (2 levels) in <top (required)>' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/task.rb:250:in `block in execute' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/task.rb:250:in `each' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/task.rb:250:in `execute' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/task.rb:194:in `block in invoke_with_call_chain' /opt/rh/rh-ruby24/root/usr/share/ruby/monitor.rb:214:in `mon_synchronize' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/task.rb:187:in `invoke_with_call_chain' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/task.rb:180:in `invoke' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/application.rb:152:in `invoke_task' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/application.rb:108:in `block (2 levels) in top_level' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/application.rb:108:in `each' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/application.rb:108:in `block in top_level' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/application.rb:117:in `run_with_threads' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/application.rb:102:in `top_level' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/application.rb:80:in `block in run' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/application.rb:178:in `standard_exception_handling' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/lib/rake/application.rb:77:in `run' /opt/rh/rh-ruby24/root/usr/share/gems/gems/rake-12.0.0/exe/rake:27:in `<top (required)>' /opt/rh/rh-ruby24/root/usr/bin/rake:23:in `load' /opt/rh/rh-ruby24/root/usr/bin/rake:23:in `<main>' Tasks: TOP => db:seed </pre> Removing role.rb shows it is the only one with an error: <pre> # mv /usr/share/foreman/db/seeds.d/040-roles.rb . # foreman-rake db:seed /opt/theforeman/tfm/root/usr/share/gems/gems/sequel-4.20.0/lib/sequel/database/schema_generator.rb:19: warning: constant ::Fixnum is deprecated /opt/theforeman/tfm/root/usr/share/gems/gems/sequel-4.20.0/lib/sequel/database/schema_generator.rb:19: warning: constant ::Bignum is deprecated /usr/share/foreman/lib/core_extensions.rb:183: warning: already initialized constant ActiveSupport::MessageEncryptor::DEFAULT_CIPHER /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/message_encryptor.rb:22: warning: previous definition of DEFAULT_CIPHER was here The PGconn, PGresult, and PGError constants are deprecated, and will be removed as of version 1.0. You should use PG::Connection, PG::Result, and PG::Error instead, respectively. Called from /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:292:in `block in require' Seeding /usr/share/foreman/db/seeds.d/020-partition_tables_list.rb Seeding /usr/share/foreman/db/seeds.d/020-permissions_list.rb Seeding /usr/share/foreman/db/seeds.d/020-provisioning_templates_list.rb Seeding /usr/share/foreman/db/seeds.d/020-roles_list.rb Seeding /usr/share/foreman/db/seeds.d/030-auth_sources.rb Seeding /usr/share/foreman/db/seeds.d/030-permissions.rb Seeding /usr/share/foreman/db/seeds.d/035-admin.rb Seeding /usr/share/foreman/db/seeds.d/050-taxonomies.rb Seeding /usr/share/foreman/db/seeds.d/060-architectures.rb Seeding /usr/share/foreman/db/seeds.d/070-provisioning_templates.rb Seeding /usr/share/foreman/db/seeds.d/080-partition_tables.rb Seeding /usr/share/foreman/db/seeds.d/100-installation_media.rb Seeding /usr/share/foreman/db/seeds.d/110-smart_proxy_features.rb Seeding /usr/share/foreman/db/seeds.d/130-compute_profiles.rb Seeding /usr/share/foreman/db/seeds.d/150-bookmarks.rb Seeding /usr/share/foreman/db/seeds.d/160-mail_notifications.rb Seeding /usr/share/foreman/db/seeds.d/170-notification_blueprints.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman-tasks-0.11.2/db/seeds.d/20-foreman_tasks_permissions.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_discovery-11.0.0/db/seeds.d/50_discovery_templates.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman-tasks-0.11.2/db/seeds.d/60-dynflow_proxy_feature.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_discovery-11.0.0/db/seeds.d/60_discovery_proxy_feature.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman-tasks-0.11.2/db/seeds.d/61-foreman_tasks_bookmarks.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_discovery-11.0.0/db/seeds.d/70_discovery_mail_notification.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_discovery-11.0.0/db/seeds.d/80_discovery_ui_notification.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_discovery-11.0.0/db/seeds.d/90_add_permissions_from_default_roles.rb All seed files executed </pre>
Created from redmine issue https://projects.theforeman.org/issues/24697
Upstream bug assigned to None
- If there is a permission added to the default role with no filters, it will be removed when seeding. - If there is a permission added with a specific filter, it will cause the db:seed task to fail.
Upstream bug assigned to tbrisker
Moving this bug to POST for triage into Satellite 6 since the upstream issue https://projects.theforeman.org/issues/24697 has been resolved.
@Tomer, Can I get the exact steps to repro this issue: I am quite confused about the 'default role', Is it just one role 'default role' or is it all builtin default roles(i.e manager, org admin) ? Also, either its default single role or all built-in roles, we cant modify there filters at all AFAIK. Steps would be really helpful here.
This regards the role named "Default Role", which is editable by users as it allows defining permissions that all users in the system have. To reproduce, there are two cases that need to be tested: 1. Add additional permission to default role (e.g. "view_domains") in 6.3, upgrade to 6.4 -> permission should still be present in the default role. 2. Add additional permission with filter to the default role (e.g. "view_domains" with filter "name ~ a") in 6.3, upgrade to 6.4 -> upgrade should be successful and the permission should still be present with same filter.
Verified ! @ Satellite 6.4 snap 20 Steps: 1. Added additional permissions(with filter and without filter) to default role in 6.3 2. Upgrade Satellite to 6.4 3. Verified if the default role has newly added permissions with filter and without filter. Observation: 1. The satellite upgrade to 6.4 is successful, especially the rake db:seed part is successfully completed. Upgrade Step: db_seed... /usr/share/foreman/lib/foreman.rb:8: warning: already initialized constant Foreman::UUID_REGEXP /usr/share/foreman/lib/foreman.rb:8: warning: previous definition of UUID_REGEXP was here /usr/share/foreman/lib/core_extensions.rb:182: warning: already initialized constant ActiveSupport::MessageEncryptor::DEFAULT_CIPHER /opt/theforeman/tfm-ror51/root/usr/share/gems/gems/activesupport-5.1.6/lib/active_support/message_encryptor.rb:22: warning: previous definition of DEFAULT_CIPHER was here Seeding /usr/share/foreman/db/seeds.d/020-partition_tables_list.rb Seeding /usr/share/foreman/db/seeds.d/020-permissions_list.rb Seeding /usr/share/foreman/db/seeds.d/020-provisioning_templates_list.rb Seeding /usr/share/foreman/db/seeds.d/020-roles_list.rb Seeding /usr/share/foreman/db/seeds.d/030-auth_sources.rb Seeding /usr/share/foreman/db/seeds.d/030-permissions.rb Seeding /usr/share/foreman/db/seeds.d/035-admin.rb Seeding /usr/share/foreman/db/seeds.d/040-roles.rb Seeding /usr/share/foreman/db/seeds.d/050-taxonomies.rb Seeding /usr/share/foreman/db/seeds.d/060-architectures.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_theme_satellite-2.0.1.9/db/seeds.d/069-provisioning_templates_defaults.rb Seeding /usr/share/foreman/db/seeds.d/070-provisioning_templates.rb Seeding /usr/share/foreman/db/seeds.d/080-partition_tables.rb Seeding /usr/share/foreman/db/seeds.d/100-installation_media.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.7.0.22/db/seeds.d/101-locations.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.7.0.22/db/seeds.d/102-organizations.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.7.0.22/db/seeds.d/104-proxy.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.7.0.22/db/seeds.d/106-mail_notifications.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.7.0.22/db/seeds.d/107-enable_dynflow.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.7.0.22/db/seeds.d/108-subcription-bookmarks.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.7.0.22/db/seeds.d/109-katello-notification-blueprints.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.7.0.22/db/seeds.d/110-content-view-autopublish.rb Seeding /usr/share/foreman/db/seeds.d/110-smart_proxy_features.rb Seeding /usr/share/foreman/db/seeds.d/130-compute_profiles.rb Seeding /usr/share/foreman/db/seeds.d/150-bookmarks.rb Seeding /usr/share/foreman/db/seeds.d/160-mail_notifications.rb Seeding /usr/share/foreman/db/seeds.d/170-notification_blueprints.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman-tasks-0.13.4/db/seeds.d/20-foreman_tasks_permissions.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/redhat_access-2.1.6/db/seeds.d/200-update-insights-roles.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/redhat_access-2.1.6/db/seeds.d/201-add-insights-email-notifications.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_bootdisk-12.0.0/db/seeds.d/50-bootdisk_templates.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_remote_execution-1.5.5/db/seeds.d/50-notification_blueprints.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_discovery-12.0.2/db/seeds.d/50_discovery_templates.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman-tasks-0.13.4/db/seeds.d/60-dynflow_proxy_feature.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_remote_execution-1.5.5/db/seeds.d/60-ssh_proxy_feature.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_discovery-12.0.2/db/seeds.d/60_discovery_proxy_feature.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman-tasks-0.13.4/db/seeds.d/61-foreman_tasks_bookmarks.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-2.2.5/db/seeds.d/62_ansible_proxy_feature.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_remote_execution-1.5.5/db/seeds.d/70-job_templates.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_discovery-12.0.2/db/seeds.d/70_discovery_mail_notification.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.7.0.22/db/seeds.d/75-job_templates.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_openscap-0.10.2/db/seeds.d/75-job_templates.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-2.2.5/db/seeds.d/75_job_templates.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_discovery-12.0.2/db/seeds.d/80_discovery_ui_notification.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_theme_satellite-2.0.1.9/db/seeds.d/850-global_parameters.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_remote_execution-1.5.5/db/seeds.d/90-bookmarks.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_discovery-12.0.2/db/seeds.d/90_add_permissions_from_default_roles.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_ansible-2.2.5/db/seeds.d/90_notification_blueprints.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_openscap-0.10.2/db/seeds.d/openscap_feature.rb Seeding /opt/theforeman/tfm/root/usr/share/gems/gems/foreman_openscap-0.10.2/db/seeds.d/openscap_policy_notification.rb All seed files executed foreman-rake db:seed finished successfully! 2. Post upgrade, the additional permissions in default role with and without filter are intact.
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-2018:2927