Bug #25524
closedallow matching prerelease versions in requires_foreman_plugin
Description
Katello nightly does not start with tfm-rubygem-foreman_scc_manager plugin
- yum install tfm-rubygem-foreman_scc_manager
- systemctl restart httpd
load UI:
Web application could not be started
ERF72-4785 [Foreman::PluginRequirementError]: foreman_scc_manager plugin requires the katello plugin >= 3.7.0 but current is 3.10.0.pre.master (Foreman::PluginRequirementError)
/usr/share/foreman/app/registries/foreman/plugin.rb:193:in `requires_foreman_plugin'
/opt/theforeman/tfm/root/usr/share/gems/gems/foreman_scc_manager-1.4.0/lib/foreman_scc_manager/engine.rb:22:in `block (2 levels) in <class:Engine>'
/usr/share/foreman/app/registries/foreman/plugin.rb:74:in `instance_eval'
/usr/share/foreman/app/registries/foreman/plugin.rb:74:in `register'
/opt/theforeman/tfm/root/usr/share/gems/gems/foreman_scc_manager-1.4.0/lib/foreman_scc_manager/engine.rb:20:in `block in <class:Engine>'
...
When I changed
/opt/theforeman/tfm/root/usr/share/gems/gems/foreman_scc_manager-1.4.0/lib/foreman_scc_manager/engine.rb
to
requires_foreman_plugin 'katello', '>= 3.10.0.pre.master'
A class was passed to `:class_name` but we are expecting a string. (ArgumentError)
/opt/theforeman/tfm-ror52/root/usr/share/gems/gems/activerecord-5.2.1/lib/active_record/reflection.rb:436:in `initialize'
/opt/theforeman/tfm-ror52/root/usr/share/gems/gems/activerecord-5.2.1/lib/active_record/reflection.rb:31:in `new'
/opt/theforeman/tfm-ror52/root/usr/share/gems/gems/activerecord-5.2.1/lib/active_record/reflection.rb:31:in `create'
/opt/theforeman/tfm-ror52/root/usr/share/gems/gems/activerecord-5.2.1/lib/active_record/associations/builder/association.rb:45:in `create_reflection'
/opt/theforeman/tfm-ror52/root/usr/share/gems/gems/activerecord-5.2.1/lib/active_record/associations/builder/association.rb:31:in `build'
...
package versions:
katello-3.10.0-6.el7.noarch
foreman-1.21.0-0.201811201830git6bbaa990.4.develop.el7.noarch
tfm-rubygem-foreman_scc_manager-1.4.0-3.fm1_20.el7.noarch
Updated by John Mitsch about 6 years ago
- Status changed from New to Need more information
Do you know if the foreman_scc_plugin works with standalone foreman?
Updated by Ales Dujicek about 6 years ago
- Status changed from Need more information to New
That plugin is in katello repository, should it work without katello?
Anyway, it doesn't.
Web application could not be started
undefined method `actions' for nil:NilClass (NoMethodError)
/opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.10.0.pre.master/lib/katello/permissions/organization_permissions.rb:3:in `<top (required)>'
/opt/rh/rh-ruby25/root/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:59:in `require'
/opt/rh/rh-ruby25/root/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:59:in `require'
/opt/theforeman/tfm/root/usr/share/gems/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
/opt/theforeman/tfm-ror52/root/usr/share/gems/gems/activesupport-5.2.1/lib/active_support/dependencies.rb:287:in `block in require'
/opt/theforeman/tfm-ror52/root/usr/share/gems/gems/activesupport-5.2.1/lib/active_support/dependencies.rb:253:in `load_dependency'
/opt/theforeman/tfm-ror52/root/usr/share/gems/gems/activesupport-5.2.1/lib/active_support/dependencies.rb:287:in `require'
/opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.10.0.pre.master/lib/katello/permissions.rb:2:in `block in <top (required)>'
/opt/theforeman/tfm/root/usr/share/gems/gems/katello-3.10.0.pre.master/lib/katello/permissions.rb:1:in `each'
...
Updated by Christine Fouant about 6 years ago
- Assignee set to Chris Duryee
- Target version set to Katello Backlog
- Triaged changed from No to Yes
Updated by Chris Duryee about 6 years ago
It looks like the version matcher doesn't like the ".pre.master" at the end of the string:
irb(main):007:0> Gem::Dependency.new('', ' >= 3.7.0').match?('', '3.10.0') => true irb(main):008:0> Gem::Dependency.new('', ' >= 3.7.0').match?('', '3.10.0.pre.master') => false
Updated by Chris Duryee about 6 years ago
I think if foreman supported setting the "prerelease" attribute when matching versions, this would work. For example:
irb(main):005:0> matcher = Gem::Dependency.new('', ' >= 3.7.0') => <Gem::Dependency type=:runtime name="" requirements=">= 3.7.0"> irb(main):006:0> matcher.prerelease = true => true irb(main):007:0> matcher.match?('', '3.10.0.pre.master') => true irb(main):008:0> matcher.prerelease = false => false irb(main):009:0> matcher.match?('', '3.10.0.pre.master') => false
Updated by Chris Duryee about 6 years ago
- Project changed from Katello to Foreman
- Subject changed from foreman_scc_manager to allow matching prerelease versions in requires_foreman_plugin
- Target version deleted (
Katello Backlog)
Updated by Chris Duryee about 6 years ago
- Assignee deleted (
Chris Duryee) - Triaged changed from Yes to No
Updated by Chris Duryee about 6 years ago
- Category set to Plugin integration
- Assignee set to Chris Duryee
Updated by Chris Duryee about 6 years ago
- Found in Releases 1.21.0 added
- Found in Releases deleted (
Katello 3.10.0)
Updated by The Foreman Bot about 6 years ago
- Status changed from New to Ready For Testing
- Pull request https://github.com/theforeman/foreman/pull/6313 added
Updated by Chris Duryee about 6 years ago
- Status changed from Ready For Testing to Closed
Applied in changeset f531bb90c4dc80735a00e96c33c430432126ee7f.