Bug #37071
openFetchPxeFiles fails when syncing Fedora ELN
Description
Repo: https://odcs.fedoraproject.org/composes/production/latest-Fedora-ELN/compose/BaseOS/x86_64/os/
Error: ActiveRecord::RecordInvalid Validation failed: Major version is not a number --- - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activerecord-6.1.7.6/lib/active_record/validations.rb:80:in `raise_validation_error'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activerecord-6.1.7.6/lib/active_record/validations.rb:53:in `save!'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activerecord-6.1.7.6/lib/active_record/transactions.rb:302:in `block in save!'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activerecord-6.1.7.6/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activerecord-6.1.7.6/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activerecord-6.1.7.6/lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activesupport-6.1.7.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activerecord-6.1.7.6/lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activerecord-6.1.7.6/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activerecord-6.1.7.6/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activerecord-6.1.7.6/lib/active_record/transactions.rb:302:in `save!'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activerecord-6.1.7.6/lib/active_record/suppressor.rb:48:in `save!'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activerecord-6.1.7.6/lib/active_record/persistence.rb:55:in `create!'" - "/home/vagrant/katello/app/models/katello/concerns/redhat_extensions.rb:20:in `block in find_or_create_operating_system'" - "/home/vagrant/katello/app/models/katello/concerns/redhat_extensions.rb:26:in `rescue in find_or_create_operating_system'" - "/home/vagrant/katello/app/models/katello/concerns/redhat_extensions.rb:23:in `find_or_create_operating_system'" - "/home/vagrant/katello/app/services/katello/pxe_files_downloader.rb:11:in `download_files'" - "/home/vagrant/katello/app/lib/actions/katello/repository/fetch_pxe_files.rb:21:in `run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/action.rb:589:in `block (3 levels) in execute_run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:27:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware.rb:19:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/rails_executor_wrap.rb:14:in `block in run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/activesupport-6.1.7.6/lib/active_support/execution_wrapper.rb:91:in `wrap'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/rails_executor_wrap.rb:13:in `run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:23:in `call'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:27:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware.rb:19:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/action/progress.rb:31:in `with_progress_calculation'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/action/progress.rb:17:in `run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:23:in `call'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:27:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware.rb:19:in `pass'" - "/home/vagrant/katello/app/lib/actions/middleware/keep_locale.rb:11:in `block in run'" - "/home/vagrant/katello/app/lib/actions/middleware/keep_locale.rb:22:in `with_locale'" - "/home/vagrant/katello/app/lib/actions/middleware/keep_locale.rb:11:in `run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:23:in `call'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:27:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware.rb:19:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/load_setting_values.rb:20:in `run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:23:in `call'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:27:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware.rb:19:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/keep_current_request_id.rb:15:in `block in run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/keep_current_request_id.rb:52:in `restore_current_request_id'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/keep_current_request_id.rb:15:in `run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:23:in `call'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:27:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware.rb:19:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/keep_current_timezone.rb:15:in `block in run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/keep_current_timezone.rb:44:in `restore_curent_timezone'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/keep_current_timezone.rb:15:in `run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:23:in `call'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:27:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware.rb:19:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/keep_current_taxonomies.rb:15:in `block in run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/keep_current_taxonomies.rb:45:in `restore_current_taxonomies'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/keep_current_taxonomies.rb:15:in `run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:23:in `call'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:27:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware.rb:19:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware.rb:32:in `run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:23:in `call'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:27:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware.rb:19:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/keep_current_user.rb:15:in `block in run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/keep_current_user.rb:54:in `restore_curent_user'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/foreman-tasks-9.0.1/app/lib/actions/middleware/keep_current_user.rb:15:in `run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/stack.rb:23:in `call'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/middleware/world.rb:31:in `execute'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/action.rb:588:in `block (2 levels) in execute_run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/action.rb:587:in `catch'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/action.rb:587:in `block in execute_run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/action.rb:490:in `block in with_error_handling'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/action.rb:490:in `catch'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/action.rb:490:in `with_error_handling'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/action.rb:582:in `execute_run'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/action.rb:303:in `execute'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:18:in `block (2 levels) in execute'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/execution_plan/steps/abstract.rb:167:in `with_meta_calculation'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:17:in `block in execute'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:32:in `open_action'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:16:in `execute'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/director.rb:69:in `execute'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/executors/parallel/worker.rb:15:in `block in on_message'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/executors.rb:18:in `run_user_code'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/executors/parallel/worker.rb:14:in `on_message'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/context.rb:46:in `on_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/executes_context.rb:7:in `on_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/abstract.rb:25:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/actor.rb:122:in `on_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/abstract.rb:25:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/awaits.rb:15:in `on_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/abstract.rb:25:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/sets_results.rb:14:in `on_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/dynflow-1.8.2/lib/dynflow/actor.rb:56:in `on_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/abstract.rb:25:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/buffer.rb:38:in `process_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/buffer.rb:31:in `process_envelopes?'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/buffer.rb:20:in `on_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/abstract.rb:25:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/termination.rb:55:in `on_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/abstract.rb:25:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/removes_child.rb:10:in `on_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/abstract.rb:25:in `pass'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/behaviour/sets_results.rb:14:in `on_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/core.rb:162:in `process_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/core.rb:96:in `block in on_envelope'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/core.rb:119:in `block (2 levels) in schedule_execution'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:47:in `block in synchronize'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:47:in `synchronize'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb:47:in `synchronize'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-edge-0.6.0/lib/concurrent-ruby-edge/concurrent/actor/core.rb:116:in `block in schedule_execution'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb:18:in `call'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb:96:in `work'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb:77:in `block in call_job'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:352:in `run_task'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:343:in `block (3 levels) in create_worker'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:334:in `loop'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:334:in `block (2 levels) in create_worker'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:333:in `catch'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:333:in `block in create_worker'" - "/home/vagrant/foreman/.vendor/ruby/2.7.0/gems/logging-2.3.1/lib/logging/diagnostic_context.rb:474:in `block in create_with_logging_context'"
Updated by Lukas Zapletal 9 months ago
I think what is also missing is OperatingSystem entry, it was not created. This is caused because version major/minor fields in DB must be numbers, but for Fedora ELN it is likely a string or something.
Updated by Lukas Zapletal 9 months ago
When testing this, maybe also test Fedora Rawhide this could be also helpful. But I think in that case version is set to N+1 so it will work.
Updated by Ian Ballou 7 months ago
@Leos Stejskal or @Nofar Alfassi , Foreman operating systems force a numerical value https://github.com/theforeman/foreman/blob/6c77d09b44456bc1770f0264f41c1238557c64fa/app/models/operatingsystem.rb#L25C21-L25C39
Would it be reasonable to start allowing strings? It seems Fedora ELN doesn't have an actual number for its version.
The other option I see would be to spoof a number, but that seems hacky.
Updated by Ian Ballou 7 months ago
- Status changed from New to Need more information
Updated by Quinn James 7 months ago
- Target version deleted (
Katello 4.12.0) - Triaged changed from Yes to No
Removing target version for 4.12 RC/GA re-triage
Updated by Ewoud Kohl van Wijngaarden 7 months ago
Fedora ELN doesn't have a version at all, like Arch Linux and Gentoo because they're rolling. Perhaps Foreman should make the operating system's version field optional. It will be a major change because a lot of code has been built with the assumption, but one with multiple real world examples.
The alternative is to make ELN (or Rawhide) the version, but changing numeric to a pure string will also mean checking all the same code paths. It's still a good thing, because you can encode Ubuntu's 24.04 as the major version that it is instead of splitting it up to 22 and 4 while discarding the true minor version.