Validation failed: Description has already been taken, Title has already been taken

Hey All,

Noticed this appearing in the logs for foreman - looks like its been there
from at least 1.12.1 (just updated to 1.12.2).

Not doing anything special - its just a base install using all
features(tftp/puppet/dns/dhcp etc). Its a test env, so I can update/fix as
required.

2016-09-05 09:24:41 [app] [W] Action failed
> ActiveRecord::RecordInvalid: Validation failed: Description has already
been taken, Title has already been taken
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/validations.rb:79:in
raise_record_invalid' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/validations.rb:43:insave!'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/attribute_methods/dirty.rb:29:in
save!' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/transactions.rb:291:inblock in save!'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/transactions.rb:351:in
block in with_transaction_returning_status' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in
within_new_transaction' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/transactions.rb:220:in
transaction' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/transactions.rb:348:inwith_transaction_returning_status'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/transactions.rb:291:in
save!' > /usr/share/foreman/app/services/puppet_fact_parser.rb:47:inoperatingsystem'
> /usr/share/foreman/app/models/host/base.rb:191:in block in set_non_empty_values' > /usr/share/foreman/app/models/host/base.rb:190:ineach'
> /usr/share/foreman/app/models/host/base.rb:190:in set_non_empty_values' > /usr/share/foreman/app/models/host/base.rb:183:inpopulate_fields_from_facts'
> /usr/share/foreman/app/models/host/managed.rb:468:in
populate_fields_from_facts' > /usr/share/foreman/app/models/host/base.rb:158:inimport_facts'
> /usr/share/foreman/app/controllers/api/v2/hosts_controller.rb:237:in
facts' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_controller/metal/implicit_render.rb:4:insend_action'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/abstract_controller/base.rb:198:in
process_action' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_controller/metal/rendering.rb:10:inprocess_action'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/abstract_controller/callbacks.rb:20:in
block in process_action' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:117:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:117:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:555:inblock (2 levels) in compile'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:505:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:505:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:498:in
block (2 levels) in around' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:313:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:313:in
block (2 levels) in halting' > /usr/share/foreman/app/controllers/api/v2/base_controller.rb:152:indisable_json_root'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:432:in
block in make_lambda' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:312:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:312:in
block in halting' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:497:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:497:in
block in around' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:505:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:505:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in around'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:313:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in halting'
>
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:455:inpublic_send'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:455:in
block in make_lambda' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:312:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:312:in
block in halting' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:497:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:497:in
block in around' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:505:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:505:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in around'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:313:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in halting'
> /usr/share/foreman/app/controllers/concerns/application_shared.rb:13:in
set_timezone' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:432:inblock in make_lambda'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:312:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:312:inblock in halting'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:497:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:497:inblock in around'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:505:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:505:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:498:in
block (2 levels) in around' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:313:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:313:in
block (2 levels) in halting' > /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:32:inclear_thread'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:432:in
block in make_lambda' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:312:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:312:in
block in halting' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:497:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:497:in
block in around' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:505:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:505:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in around'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:313:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in halting'
>
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:455:inpublic_send'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:455:in
block in make_lambda' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:312:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:312:in
block in halting' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:497:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:497:in
block in around' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:505:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:505:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:92:inrun_callbacks'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:778:in
_run_process_action_callbacks' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:81:inrun_callbacks'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/abstract_controller/callbacks.rb:19:in
process_action' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_controller/metal/rescue.rb:29:inprocess_action'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_controller/metal/instrumentation.rb:32:in
block in process_action' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/notifications.rb:164:inblock in instrument'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/notifications/instrumenter.rb:20:in
instrument' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/notifications.rb:164:ininstrument'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_controller/metal/instrumentation.rb:30:in
process_action' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_controller/metal/params_wrapper.rb:250:inprocess_action'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/railties/controller_runtime.rb:18:in
process_action' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/abstract_controller/base.rb:137:inprocess'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionview-4.2.5.1/lib/action_view/rendering.rb:30:in
process' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_controller/metal.rb:196:indispatch'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_controller/metal/rack_delegation.rb:13:in
dispatch' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_controller/metal.rb:237:inblock in action'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/routing/route_set.rb:74:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/routing/route_set.rb:74:indispatch'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/routing/route_set.rb:43:in
serve' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/routing/mapper.rb:49:inserve'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/journey/router.rb:43:in
block in serve' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/journey/router.rb:30:ineach'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/journey/router.rb:30:in
serve' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/routing/route_set.rb:815:incall'
>
/opt/theforeman/tfm/root/usr/share/gems/gems/apipie-rails-0.3.6/lib/apipie/static_dispatcher.rb:65:in
call' > /opt/theforeman/tfm/root/usr/share/gems/gems/apipie-rails-0.3.6/lib/apipie/extractor/recorder.rb:132:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/static.rb:116:in
call' > /opt/theforeman/tfm/root/usr/share/gems/gems/apipie-rails-0.3.6/lib/apipie/middleware/checksum_in_headers.rb:27:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/etag.rb:24:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/conditionalget.rb:38:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/head.rb:13:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/params_parser.rb:27:incall'
> /usr/share/foreman/lib/middleware/catch_json_parse_errors.rb:9:in call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/flash.rb:260:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/session/abstract/id.rb:225:in
context' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/session/abstract/id.rb:220:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/cookies.rb:560:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/query_cache.rb:36:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/callbacks.rb:29:inblock in call'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:88:in
__run_callbacks__' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:778:in_run_call_callbacks'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/callbacks.rb:81:in
run_callbacks' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/callbacks.rb:27:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/remote_ip.rb:78:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/debug_exceptions.rb:17:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/show_exceptions.rb:30:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/railties-4.2.5.1/lib/rails/rack/logger.rb:38:incall_app'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/railties-4.2.5.1/lib/rails/rack/logger.rb:22:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/request_id.rb:21:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/methodoverride.rb:22:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/runtime.rb:18:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.2.5.1/lib/active_support/cache/strategy/local_cache_middleware.rb:28:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5.1/lib/action_dispatch/middleware/static.rb:116:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/sendfile.rb:113:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/railties-4.2.5.1/lib/rails/engine.rb:518:incall'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/railties-4.2.5.1/lib/rails/application.rb:165:in
call' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/railties-4.2.5.1/lib/rails/railtie.rb:194:inpublic_send'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/railties-4.2.5.1/lib/rails/railtie.rb:194:in
method_missing' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/urlmap.rb:66:inblock in call'
>
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/urlmap.rb:50:in
each' > /opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/urlmap.rb:50:incall'
>
/usr/share/passenger/phusion_passenger/rack/thread_handler_extension.rb:74:in
process_request' > /usr/share/passenger/phusion_passenger/request_handler/thread_handler.rb:141:inaccept_and_process_next_request'
>
/usr/share/passenger/phusion_passenger/request_handler/thread_handler.rb:109:in
main_loop' > /usr/share/passenger/phusion_passenger/request_handler.rb:455:inblock
(3 levels) in start_threads'
>
/opt/theforeman/tfm/root/usr/share/gems/gems/logging-1.8.2/lib/logging/diagnostic_context.rb:323:in
call' > /opt/theforeman/tfm/root/usr/share/gems/gems/logging-1.8.2/lib/logging/diagnostic_context.rb:323:inblock in create_with_logging_context'
2016-09-05 09:24:41 [app] [I] Rendered
api/v2/errors/standard_error.json.rabl within api/v2/layouts/error_layout
(0.6ms)
2016-09-05 09:24:41 [app] [I] Completed 500 Internal Server Error in 281ms
(Views: 1.5ms | ActiveRecord: 173.1ms)

Regards
David

Hi David,

This looks like you hit Bug #14545: ActiveRecord::RecordInvalid: Validation failed: Description has already been taken, Title has already been taken - Foreman
Could you provide us with the list of operating systems currently in your
database including their descriptions and titles, as well as the results of
facter for the host that is failing to upload facts?

Thanks,
Tomer

··· On Mon, Sep 5, 2016 at 3:08 AM, David LeVene wrote:

Hey All,

Noticed this appearing in the logs for foreman - looks like its been there
from at least 1.12.1 (just updated to 1.12.2).

Not doing anything special - its just a base install using all
features(tftp/puppet/dns/dhcp etc). Its a test env, so I can update/fix as
required.

2016-09-05 09:24:41 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has already
been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-
4.2.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord- 4.2.5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-
4.2.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord- 4.2.5.1/lib/active_record/transactions.rb:291:inblock in save!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-
4.2.5.1/lib/active_record/transactions.rb:351:in block in with_transaction_returning_status' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord- 4.2.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-
4.2.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in
within_new_transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord- 4.2.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-
4.2.5.1/lib/active_record/transactions.rb:220:in transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord- 4.2.5.1/lib/active_record/transactions.rb:348:inwith_transaction_returning_status’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-
4.2.5.1/lib/active_record/transactions.rb:291:in save!' /usr/share/foreman/app/services/puppet_fact_parser.rb:47:inoperatingsystem’
/usr/share/foreman/app/models/host/base.rb:191:in block in set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:190:ineach’
/usr/share/foreman/app/models/host/base.rb:190:in
set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:183:inpopulate_fields_from_facts’
/usr/share/foreman/app/models/host/managed.rb:468:in
populate_fields_from_facts' /usr/share/foreman/app/models/host/base.rb:158:inimport_facts’
/usr/share/foreman/app/controllers/api/v2/hosts_controller.rb:237:in
facts' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_controller/metal/implicit_render.rb:4:insend_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/abstract_controller/base.rb:198:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_controller/metal/rendering.rb:10:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/abstract_controller/callbacks.rb:20:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:117:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:117:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:555:inblock (2 levels) in
compile’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/controllers/api/v2/base_controller.rb:152:indisable_json_root’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-
observers-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/usr/share/foreman/app/controllers/concerns/application_shared.rb:13:in
set_timezone' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:432:inblock in make_lambda’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:312:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:312:inblock in halting’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:497:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:497:inblock in around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:32:inclear_thread’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-
observers-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:92:inrun_callbacks
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:778:in _run_process_action_ callbacks' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:81:inrun_callbacks’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/abstract_controller/callbacks.rb:19:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_controller/metal/rescue.rb:29:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/action_controller/metal/instrumentation.rb:32:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/notifications.rb:164:inblock in instrument’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/notifications/instrumenter.rb:20:in
instrument' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/notifications.rb:164:ininstrument’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/action_controller/metal/instrumentation.rb:30:in
process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_controller/metal/params_wrapper.rb:250:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-
4.2.5.1/lib/active_record/railties/controller_runtime.rb:18:in
process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/abstract_controller/base.rb:137:inprocess’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionview-4.
2.5.1/lib/action_view/rendering.rb:30:in process' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_controller/metal.rb:196:indispatch’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/action_controller/metal/rack_delegation.rb:13:in dispatch' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_controller/metal.rb:237:inblock in action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/action_dispatch/routing/route_set.rb:74:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_dispatch/routing/route_set.rb:74:indispatch’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/action_dispatch/routing/route_set.rb:43:in serve' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_dispatch/routing/mapper.rb:49:inserve’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/action_dispatch/journey/router.rb:43:in block in serve' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_dispatch/journey/router.rb:30:ineach’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/action_dispatch/journey/router.rb:30:in serve' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_dispatch/routing/route_set.rb:815:incall’
/opt/theforeman/tfm/root/usr/share/gems/gems/apipie-rails-
0.3.6/lib/apipie/static_dispatcher.rb:65:in call' /opt/theforeman/tfm/root/usr/share/gems/gems/apipie-rails- 0.3.6/lib/apipie/extractor/recorder.rb:132:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/action_dispatch/middleware/static.rb:116:in call' /opt/theforeman/tfm/root/usr/share/gems/gems/apipie-rails- 0.3.6/lib/apipie/middleware/checksum_in_headers.rb:27:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/etag.rb:24:in
call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/ lib/rack/conditionalget.rb:38:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/head.rb:13:in
call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_dispatch/middleware/params_parser.rb:27:incall’
/usr/share/foreman/lib/middleware/catch_json_parse_errors.rb:9:in
call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_dispatch/middleware/flash.rb:260:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/
lib/rack/session/abstract/id.rb:225:in context' /opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/ lib/rack/session/abstract/id.rb:220:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/action_dispatch/middleware/cookies.rb:560:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord- 4.2.5.1/lib/active_record/query_cache.rb:36:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-
4.2.5.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in
call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_dispatch/middleware/callbacks.rb:29:inblock in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:88:in __run_callbacks__' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport- 4.2.5.1/lib/active_support/callbacks.rb:778:in_run_call_callbacks’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-
4.2.5.1/lib/active_support/callbacks.rb:81:in run_callbacks' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_dispatch/middleware/callbacks.rb:27:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/action_dispatch/middleware/remote_ip.rb:78:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_dispatch/middleware/debug_exceptions.rb:17:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.
2.5.1/lib/action_dispatch/middleware/show_exceptions.rb:30:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/railties-4.2. 5.1/lib/rails/rack/logger.rb:38:incall_app’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/railties-4.2.
5.1/lib/rails/rack/logger.rb:22:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4. 2.5.1/lib/action_dispatch/middleware/request_id.rb:21:incall’
/opt/rh/sclo-ror42/root/usr/

Hi Tomer,

Thanks for the guidance - I believe i've worked out the problem. The OS's
had the name of "CentOS" which is fine, but i had 2 which had the same
major and minor version listed, well one actually had "2.1511" but i
believe it was truncating after the "."

Changed that around, and added a description to each one (was blank before)
and its moved the hosts to the correct spot & fixed the issue

Would I be correct in saying that the OS gets assigned based on the "facter
os"? - which would explain why it was complaining when there was a
duplicate in the OS's

Regards
David

··· On 5 September 2016 at 16:22, Tomer Brisker wrote:

Hi David,

This looks like you hit Bug #14545: ActiveRecord::RecordInvalid: Validation failed: Description has already been taken, Title has already been taken - Foreman
Could you provide us with the list of operating systems currently in your
database including their descriptions and titles, as well as the results of
facter for the host that is failing to upload facts?

Thanks,
Tomer

On Mon, Sep 5, 2016 at 3:08 AM, David LeVene dlevene@advisns.com.au > wrote:

Hey All,

Noticed this appearing in the logs for foreman - looks like its been
there from at least 1.12.1 (just updated to 1.12.2).

Not doing anything special - its just a base install using all
features(tftp/puppet/dns/dhcp etc). Its a test env, so I can update/fix as
required.

2016-09-05 09:24:41 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.
2.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4. 2.5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.
2.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4. 2.5.1/lib/active_record/transactions.rb:291:inblock in save!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.
2.5.1/lib/active_record/transactions.rb:351:in block in with_transaction_returning_status' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4. 2.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.
2.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in
within_new_transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4. 2.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.
2.5.1/lib/active_record/transactions.rb:220:in transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4. 2.5.1/lib/active_record/transactions.rb:348:inwith_transaction_returning_status’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.
2.5.1/lib/active_record/transactions.rb:291:in save!' /usr/share/foreman/app/services/puppet_fact_parser.rb:47:inoperatingsystem’
/usr/share/foreman/app/models/host/base.rb:191:in block in set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:190:ineach’
/usr/share/foreman/app/models/host/base.rb:190:in
set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:183:inpopulate_fields_from_facts’
/usr/share/foreman/app/models/host/managed.rb:468:in
populate_fields_from_facts' /usr/share/foreman/app/models/host/base.rb:158:inimport_facts’
/usr/share/foreman/app/controllers/api/v2/hosts_controller.rb:237:in
facts' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/action_controller/metal/implicit_render.rb:4:insend_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.
5.1/lib/abstract_controller/base.rb:198:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/action_controller/metal/rendering.rb:10:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.
5.1/lib/abstract_controller/callbacks.rb:20:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:117:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:117:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:555:inblock (2 levels) in
compile’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/controllers/api/v2/base_controller.rb:152:indisable_json_root’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/usr/share/foreman/app/controllers/concerns/application_shared.rb:13:in
set_timezone' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:432:inblock in make_lambda’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:inblock in halting’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:inblock in around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:32:inclear_thread’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:92:inrun_callbacks
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:778:in
_run_process_action_callbacks' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:81:inrun_callbacks’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.
5.1/lib/abstract_controller/callbacks.rb:19:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/action_controller/metal/rescue.rb:29:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.
5.1/lib/action_controller/metal/instrumentation.rb:32:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/notifications.rb:164:inblock in instrument’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/notifications/instrumenter.rb:20:in instrument' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/notifications.rb:164:ininstrument’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.
5.1/lib/action_controller/metal/instrumentation.rb:30:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/action_controller/metal/params_wrapper.rb:250:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.
2.5.1/lib/active_record/railties/controller_runtime.rb:18:in
process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/abstract_controller/base.rb:137:inprocess’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionview-4.2.
5.1/lib/action_view/rendering.rb:30:in process' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/action_controller/metal.rb:196:indispatch’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.
5.1/lib/action_controller/metal/rack_delegation.rb:13:in dispatch' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/action_controller/metal.rb:237:inblock in action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.
5.1/lib/action_dispatch/routing/route_set.rb:74:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/action_dispatch/routing/route_set.rb:74:indispatch’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.
5.1/lib/action_dispatch/routing/route_set.rb:43:in serve' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/action_dispatch/routing/mapper.rb:49:inserve’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.
5.1/lib/action_dispatch/journey/router.rb:43:in block in serve' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/action_dispatch/journey/router.rb:30:ineach’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.
5.1/lib/action_dispatch/journey/router.rb:30:in serve' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/action_dispatch/routing/route_set.rb:815:incall’
/opt/theforeman/tfm/root/usr/share/gems/gems/apipie-rails-0.
3.6/lib/apipie/static_dispatcher.rb:65:in call' /opt/theforeman/tfm/root/usr/share/gems/gems/apipie-rails-0. 3.6/lib/apipie/extractor/recorder.rb:132:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.
5.1/lib/action_dispatch/middleware/static.rb:116:in call' /opt/theforeman/tfm/root/usr/share/gems/gems/apipie-rails-0. 3.6/lib/apipie/middleware/checksum_in_headers.rb:27:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/etag.rb:24:in
call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/conditionalget.rb:38:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/head.rb:13:in
call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/action_dispatch/middleware/params_parser.rb:27:incall’
/usr/share/foreman/lib/middleware/catch_json_parse_errors.rb:9:in
call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2. 5.1/lib/action_dispatch/middleware/flash.rb:260:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/
rack/session/abstract/id.rb:225:in `context’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/
rack/session/abstract/id.rb:220:

Hi David,

Glad to hear this worked out.

Yes, you are correct - when a host sends its facts, the fact parser
attempts to map those facts, such as os, to existing foreman entities, and
if it doesn't find a match it will attempt to create a new one.
It would seem that at a certain point in the process, with the OSes you had
defined, it failed to find a match and attempted to create a new one, only
to fail because it already existed.

If you would be so kind as to attach the properties of the OSes in
question, as well as the relevant parts of the host's facter output, to the
issue, we would be able to attempt to reproduce this locally and fix the
root cause of this for all of our users.

Thanks,
Tomer

··· On Wed, Sep 7, 2016 at 5:25 AM, David LeVene wrote:

Hi Tomer,

Thanks for the guidance - I believe i’ve worked out the problem. The OS’s
had the name of “CentOS” which is fine, but i had 2 which had the same
major and minor version listed, well one actually had “2.1511” but i
believe it was truncating after the “.”

Changed that around, and added a description to each one (was blank
before) and its moved the hosts to the correct spot & fixed the issue

Would I be correct in saying that the OS gets assigned based on the
"facter os"? - which would explain why it was complaining when there was a
duplicate in the OS’s

Regards
David

On 5 September 2016 at 16:22, Tomer Brisker tbrisker@redhat.com wrote:

Hi David,

This looks like you hit Bug #14545: ActiveRecord::RecordInvalid: Validation failed: Description has already been taken, Title has already been taken - Foreman
Could you provide us with the list of operating systems currently in your
database including their descriptions and titles, as well as the results of
facter for the host that is failing to upload facts?

Thanks,
Tomer

On Mon, Sep 5, 2016 at 3:08 AM, David LeVene dlevene@advisns.com.au >> wrote:

Hey All,

Noticed this appearing in the logs for foreman - looks like its been
there from at least 1.12.1 (just updated to 1.12.2).

Not doing anything special - its just a base install using all
features(tftp/puppet/dns/dhcp etc). Its a test env, so I can update/fix as
required.

2016-09-05 09:24:41 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:291:inblock in save!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:351:in block in with_transaction_returning_status' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in
within_new_transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:220:in transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:348:inwith_transaction_returning_status’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:291:in save!' /usr/share/foreman/app/services/puppet_fact_parser.rb:47:inoperatingsystem’
/usr/share/foreman/app/models/host/base.rb:191:in block in set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:190:ineach’
/usr/share/foreman/app/models/host/base.rb:190:in
set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:183:inpopulate_fields_from_facts’
/usr/share/foreman/app/models/host/managed.rb:468:in
populate_fields_from_facts' /usr/share/foreman/app/models/host/base.rb:158:inimport_facts’
/usr/share/foreman/app/controllers/api/v2/hosts_controller.rb:237:in
facts' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/implicit_render.rb:4:insend_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/base.rb:198:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/rendering.rb:10:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/callbacks.rb:20:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:117:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:117:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:555:inblock (2 levels) in
compile’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/controllers/api/v2/base_controller.rb:152:indisable_json_root’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/usr/share/foreman/app/controllers/concerns/application_shared.rb:13:in
set_timezone' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:432:inblock in make_lambda’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:inblock in halting’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:inblock in around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:32:inclear_thread’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:92:inrun_callbacks
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:778:in
_run_process_action_callbacks' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:81:inrun_callbacks’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/callbacks.rb:19:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/rescue.rb:29:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/action_controller/metal/instrumentation.rb:32:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/notifications.rb:164:inblock in instrument’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/notifications/instrumenter.rb:20:in
instrument' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/notifications.rb:164:ininstrument’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/action_controller/metal/instrumentation.rb:30:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/params_wrapper.rb:250:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/railties/controller_runtime.rb:18:in
process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/abstract_controller/base.rb:137:inprocess’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionview-4.2.5
.1/lib/action_view/rendering.rb:30:in process' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal.rb:196:indispatch’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/action_controller/metal/rack_delegation.rb:13:in dispatch' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal.rb:237:inblock in action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/action_dispatch/routing/route_set.rb:74:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_dispatch/routing/route_set.rb:74:indispatch’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/action_dispatch/routing/route_set.rb:43:in serve' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_dispatch/routing/mapper.rb:49:inserve’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/action_dispatch/journey/router.rb:43:in block in serve' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_dispatch/journey/router.rb:30:ineach’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/action_dispatch/journey/router.rb:30:in serve' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_dispatch/routing/route_set.rb:815:incall’
/opt/theforeman/tfm/root/usr/share/gems/gems/apipie-rails-0.
3.6/lib/apipie/static_dispatcher.rb:65:in call' /opt/theforeman/tfm/root/usr/share/gems/gems/apipie-rails-0. 3.6/lib/apipie/extractor/recorder.rb:132:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/action_dispatch/middleware/static.rb:116:in call' /opt/theforeman/tfm/root/usr/share/gems/gems/apipie-rails-0. 3.6/lib/apipie/middleware/checksum_in_headers.rb:27:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/etag.rb:24:in
call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/conditionalget.rb:38:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/rack-1.6.2/lib/rack/head.rb:13:in
call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_dispatch/middleware/params_parser.rb:27:incall’
/usr/share/foreman/lib/middleware/catch_json_parse_errors.r

Hi Tomer,

I've just reverted to a database backup which has the issue - and here is
the information you requested

foreman=# select * from operatingsystems;
id | major | name | minor | nameindicator | created_at
> updated_at | release_name | type |
description | hosts_count | hostgroups_count | password_hash |
title

··· ----+-------+--------+--------+---------------+----------------------------+----------------------------+--------------+--------+-----------------------+-------------+------------------+---------------+----------------------- 3 | 7 | CentOS | 2 | | 2016-01-13 02:34:09.557672 > 2016-01-13 02:34:09.557672 | | Redhat > > 1 | 0 | SHA256 | CentOS 7.2 1 | 7 | CentOS | 1 | | 2015-12-07 03:23:39.087921 > 2015-12-16 06:38:11.025759 | | Redhat | CentOS Linux 7.1.1503 | 0 | 0 | SHA256 | CentOS Linux 7.1.1503 2 | 7 | CentOS | 2.1511 | | 2015-12-16 07:40:19.21053 > 2016-01-13 02:21:43.201217 | | Redhat | CentOS Linux 7.2.1511 | 6 | 0 | SHA256 | CentOS Linux 7.2.1511 (3 rows)

{“name”=>“CentOS”, “family”=>“RedHat”, “release”=>{“major”=>“7”,
“minor”=>“2”, “full”=>“7.2.1511”}, “lsb”=>{“distcodename”=>“Core”,
“distid”=>“CentOS”, “distdescription”=>“CentOS Linux release 7.2.1511
(Core) “, “release”=>”:core-4.1-amd64:core-4.1-noarch”,
“distrelease”=>“7.2.1511”, “majdistrelease”=>“7”, “minordistrelease”=>“2”}}

2016-09-09 12:05:52 [app] [I] Import facts for 'testing completed. Added:
0, Updated: 9, Deleted 0 facts
2016-09-09 12:05:53 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has already
been taken, Title has already been taken

/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/validations.rb:79:in
`raise_record_invalid’

/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/validations.rb:43:in
`save!’

/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/attribute_methods/dirty.rb:29:in
`save!’

/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2.5.1/lib/active_record/transactions.rb:291:in
`block in save!’

I suspect based on what I’ve seen so far, its trying to add and update the
description in id=3, but it can’t as id=2 already has the description it
wants.

I’ll leave it like this until you have enough information to proceed
forward, then i’ll fix it on my end.

Cheers
David

On 7 September 2016 at 16:09, Tomer Brisker tbrisker@redhat.com wrote:

Hi David,

Glad to hear this worked out.

Yes, you are correct - when a host sends its facts, the fact parser
attempts to map those facts, such as os, to existing foreman entities, and
if it doesn’t find a match it will attempt to create a new one.
It would seem that at a certain point in the process, with the OSes you
had defined, it failed to find a match and attempted to create a new one,
only to fail because it already existed.

If you would be so kind as to attach the properties of the OSes in
question, as well as the relevant parts of the host’s facter output, to the
issue, we would be able to attempt to reproduce this locally and fix the
root cause of this for all of our users.

Thanks,
Tomer

On Wed, Sep 7, 2016 at 5:25 AM, David LeVene dlevene@advisns.com.au > wrote:

Hi Tomer,

Thanks for the guidance - I believe i’ve worked out the problem. The OS’s
had the name of “CentOS” which is fine, but i had 2 which had the same
major and minor version listed, well one actually had “2.1511” but i
believe it was truncating after the “.”

Changed that around, and added a description to each one (was blank
before) and its moved the hosts to the correct spot & fixed the issue

Would I be correct in saying that the OS gets assigned based on the
"facter os"? - which would explain why it was complaining when there was a
duplicate in the OS’s

Regards
David

On 5 September 2016 at 16:22, Tomer Brisker tbrisker@redhat.com wrote:

Hi David,

This looks like you hit Bug #14545: ActiveRecord::RecordInvalid: Validation failed: Description has already been taken, Title has already been taken - Foreman
Could you provide us with the list of operating systems currently in
your database including their descriptions and titles, as well as the
results of facter for the host that is failing to upload facts?

Thanks,
Tomer

On Mon, Sep 5, 2016 at 3:08 AM, David LeVene dlevene@advisns.com.au >>> wrote:

Hey All,

Noticed this appearing in the logs for foreman - looks like its been
there from at least 1.12.1 (just updated to 1.12.2).

Not doing anything special - its just a base install using all
features(tftp/puppet/dns/dhcp etc). Its a test env, so I can update/fix as
required.

2016-09-05 09:24:41 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:291:inblock in save!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:351:in block in with_transaction_returning_status' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in
within_new_transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:220:in transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:348:inwith_transaction_returning_status’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:291:in save!' /usr/share/foreman/app/services/puppet_fact_parser.rb:47:inoperatingsystem’
/usr/share/foreman/app/models/host/base.rb:191:in block in set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:190:ineach’
/usr/share/foreman/app/models/host/base.rb:190:in
set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:183:inpopulate_fields_from_facts’
/usr/share/foreman/app/models/host/managed.rb:468:in
populate_fields_from_facts' /usr/share/foreman/app/models/host/base.rb:158:inimport_facts’
/usr/share/foreman/app/controllers/api/v2/hosts_controller.rb:237:in
facts' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/implicit_render.rb:4:insend_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/base.rb:198:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/rendering.rb:10:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/callbacks.rb:20:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:117:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:117:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:555:inblock (2 levels) in
compile’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/controllers/api/v2/base_controller.rb:152:indisable_json_root’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/usr/share/foreman/app/controllers/concerns/application_shared.rb:13:in
set_timezone' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:432:inblock in make_lambda’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:inblock in halting’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:inblock in around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:32:inclear_thread’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:92:inrun_callbacks
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:778:in
_run_process_action_callbacks' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:81:inrun_callbacks’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/ac

Thank you for the information David!

I have managed to reproduce the issue locally and will work to resolve it.
It would seem that indeed the cause lies with the OS that has a non-numeric
minor version (2.1511).
I will let you know once I have a pull request ready to fix the issue so
you may test it.

Have a nice week,
Tomer

··· On Fri, Sep 9, 2016 at 5:39 AM, David LeVene wrote:

Hi Tomer,

I’ve just reverted to a database backup which has the issue - and here is
the information you requested

foreman=# select * from operatingsystems;
id | major | name | minor | nameindicator | created_at

    updated_at         | release_name |  type  |

description | hosts_count | hostgroups_count | password_hash |
title
----±------±-------±-------±--------------±------------
---------------±---------------------------±-------------+
--------±----------------------±------------±------------
-----±--------------±----------------------
3 | 7 | CentOS | 2 | | 2016-01-13 02:34:09.557672

2016-01-13 02:34:09.557672 | | Redhat
> 1 | 0 | SHA256 |
CentOS 7.2
1 | 7 | CentOS | 1 | | 2015-12-07 03:23:39.087921
2015-12-16 06:38:11.025759 | | Redhat | CentOS Linux
7.1.1503 | 0 | 0 | SHA256 | CentOS Linux
7.1.1503
2 | 7 | CentOS | 2.1511 | | 2015-12-16 07:40:19.21053
2016-01-13 02:21:43.201217 | | Redhat | CentOS Linux
7.2.1511 | 6 | 0 | SHA256 | CentOS Linux
7.2.1511
(3 rows)

{“name”=>“CentOS”, “family”=>“RedHat”, “release”=>{“major”=>“7”,
“minor”=>“2”, “full”=>“7.2.1511”}, “lsb”=>{“distcodename”=>“Core”,
“distid”=>“CentOS”, “distdescription”=>“CentOS Linux release 7.2.1511
(Core) “, “release”=>”:core-4.1-amd64:core-4.1-noarch”,
“distrelease”=>“7.2.1511”, “majdistrelease”=>“7”, “minordistrelease”=>“2”}}

2016-09-09 12:05:52 [app] [I] Import facts for 'testing completed. Added:
0, Updated: 9, Deleted 0 facts
2016-09-09 12:05:53 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has already
been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-
4.2.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord- 4.2.5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-
4.2.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord- 4.2.5.1/lib/active_record/transactions.rb:291:inblock in save!’

I suspect based on what I’ve seen so far, its trying to add and update the
description in id=3, but it can’t as id=2 already has the description it
wants.

I’ll leave it like this until you have enough information to proceed
forward, then i’ll fix it on my end.

Cheers
David

On 7 September 2016 at 16:09, Tomer Brisker tbrisker@redhat.com wrote:

Hi David,

Glad to hear this worked out.

Yes, you are correct - when a host sends its facts, the fact parser
attempts to map those facts, such as os, to existing foreman entities, and
if it doesn’t find a match it will attempt to create a new one.
It would seem that at a certain point in the process, with the OSes you
had defined, it failed to find a match and attempted to create a new one,
only to fail because it already existed.

If you would be so kind as to attach the properties of the OSes in
question, as well as the relevant parts of the host’s facter output, to the
issue, we would be able to attempt to reproduce this locally and fix the
root cause of this for all of our users.

Thanks,
Tomer

On Wed, Sep 7, 2016 at 5:25 AM, David LeVene dlevene@advisns.com.au >> wrote:

Hi Tomer,

Thanks for the guidance - I believe i’ve worked out the problem. The
OS’s had the name of “CentOS” which is fine, but i had 2 which had the same
major and minor version listed, well one actually had “2.1511” but i
believe it was truncating after the “.”

Changed that around, and added a description to each one (was blank
before) and its moved the hosts to the correct spot & fixed the issue

Would I be correct in saying that the OS gets assigned based on the
"facter os"? - which would explain why it was complaining when there was a
duplicate in the OS’s

Regards
David

On 5 September 2016 at 16:22, Tomer Brisker tbrisker@redhat.com wrote:

Hi David,

This looks like you hit Bug #14545: ActiveRecord::RecordInvalid: Validation failed: Description has already been taken, Title has already been taken - Foreman
Could you provide us with the list of operating systems currently in
your database including their descriptions and titles, as well as the
results of facter for the host that is failing to upload facts?

Thanks,
Tomer

On Mon, Sep 5, 2016 at 3:08 AM, David LeVene dlevene@advisns.com.au >>>> wrote:

Hey All,

Noticed this appearing in the logs for foreman - looks like its been
there from at least 1.12.1 (just updated to 1.12.2).

Not doing anything special - its just a base install using all
features(tftp/puppet/dns/dhcp etc). Its a test env, so I can update/fix as
required.

2016-09-05 09:24:41 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:291:inblock in save!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:351:in block in with_transaction_returning_status' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in
within_new_transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:220:in transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:348:inwith_transaction_returning_status’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:291:in save!' /usr/share/foreman/app/services/puppet_fact_parser.rb:47:inoperatingsystem’
/usr/share/foreman/app/models/host/base.rb:191:in block in set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:190:ineach’
/usr/share/foreman/app/models/host/base.rb:190:in
set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:183:inpopulate_fields_from_facts’
/usr/share/foreman/app/models/host/managed.rb:468:in
populate_fields_from_facts' /usr/share/foreman/app/models/host/base.rb:158:inimport_facts’
/usr/share/foreman/app/controllers/api/v2/hosts_controller.rb:237:in
facts' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/implicit_render.rb:4:insend_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/base.rb:198:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/rendering.rb:10:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/callbacks.rb:20:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:117:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:117:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:555:inblock (2 levels) in
compile’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/controllers/api/v2/base_controller.rb:152:indisable_json_root’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/usr/share/foreman/app/controllers/concerns/application_shared.rb:13:in
set_timezone' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:432:inblock in make_lambda’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:inblock in halting’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:inblock in around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:32:inclear_thread’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:92:inrun_callbacks
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:778:in
_run_process_action_callbacks' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:81:inrun_callbacks’
/opt/rh/sclo-ror42/root/usr/share/gems

Hi Tomer,

Great that you've been able to reproduce it.

Yep - let me know when I can test it.

Regards
David

··· On 12 September 2016 at 05:07, Tomer Brisker wrote:

Thank you for the information David!

I have managed to reproduce the issue locally and will work to resolve it.
It would seem that indeed the cause lies with the OS that has a
non-numeric minor version (2.1511).
I will let you know once I have a pull request ready to fix the issue so
you may test it.

Have a nice week,
Tomer

On Fri, Sep 9, 2016 at 5:39 AM, David LeVene dlevene@advisns.com.au > wrote:

Hi Tomer,

I’ve just reverted to a database backup which has the issue - and here is
the information you requested

foreman=# select * from operatingsystems;
id | major | name | minor | nameindicator |
created_at | updated_at | release_name | type

 description      | hosts_count | hostgroups_count | password_hash
    title

----±------±-------±-------±--------------±------------
---------------±---------------------------±-------------+
--------±----------------------±------------±------------
-----±--------------±----------------------
3 | 7 | CentOS | 2 | | 2016-01-13
02:34:09.557672 | 2016-01-13 02:34:09.557672 | | Redhat

                  >           1 |                0 | SHA256        |

CentOS 7.2
1 | 7 | CentOS | 1 | | 2015-12-07
03:23:39.087921 | 2015-12-16 06:38:11.025759 | | Redhat |
CentOS Linux 7.1.1503 | 0 | 0 | SHA256 |
CentOS Linux 7.1.1503
2 | 7 | CentOS | 2.1511 | | 2015-12-16
07:40:19.21053 | 2016-01-13 02:21:43.201217 | | Redhat |
CentOS Linux 7.2.1511 | 6 | 0 | SHA256 |
CentOS Linux 7.2.1511
(3 rows)

{“name”=>“CentOS”, “family”=>“RedHat”, “release”=>{“major”=>“7”,
“minor”=>“2”, “full”=>“7.2.1511”}, “lsb”=>{“distcodename”=>“Core”,
“distid”=>“CentOS”, “distdescription”=>“CentOS Linux release 7.2.1511
(Core) “, “release”=>”:core-4.1-amd64:core-4.1-noarch”,
“distrelease”=>“7.2.1511”, “majdistrelease”=>“7”, “minordistrelease”=>“2”}}

2016-09-09 12:05:52 [app] [I] Import facts for 'testing completed. Added:
0, Updated: 9, Deleted 0 facts
2016-09-09 12:05:53 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.
2.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4. 2.5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.
2.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4. 2.5.1/lib/active_record/transactions.rb:291:inblock in save!’

I suspect based on what I’ve seen so far, its trying to add and update
the description in id=3, but it can’t as id=2 already has the description
it wants.

I’ll leave it like this until you have enough information to proceed
forward, then i’ll fix it on my end.

Cheers
David

On 7 September 2016 at 16:09, Tomer Brisker tbrisker@redhat.com wrote:

Hi David,

Glad to hear this worked out.

Yes, you are correct - when a host sends its facts, the fact parser
attempts to map those facts, such as os, to existing foreman entities, and
if it doesn’t find a match it will attempt to create a new one.
It would seem that at a certain point in the process, with the OSes you
had defined, it failed to find a match and attempted to create a new one,
only to fail because it already existed.

If you would be so kind as to attach the properties of the OSes in
question, as well as the relevant parts of the host’s facter output, to the
issue, we would be able to attempt to reproduce this locally and fix the
root cause of this for all of our users.

Thanks,
Tomer

On Wed, Sep 7, 2016 at 5:25 AM, David LeVene dlevene@advisns.com.au >>> wrote:

Hi Tomer,

Thanks for the guidance - I believe i’ve worked out the problem. The
OS’s had the name of “CentOS” which is fine, but i had 2 which had the same
major and minor version listed, well one actually had “2.1511” but i
believe it was truncating after the “.”

Changed that around, and added a description to each one (was blank
before) and its moved the hosts to the correct spot & fixed the issue

Would I be correct in saying that the OS gets assigned based on the
"facter os"? - which would explain why it was complaining when there was a
duplicate in the OS’s

Regards
David

On 5 September 2016 at 16:22, Tomer Brisker tbrisker@redhat.com >>>> wrote:

Hi David,

This looks like you hit Bug #14545: ActiveRecord::RecordInvalid: Validation failed: Description has already been taken, Title has already been taken - Foreman
Could you provide us with the list of operating systems currently in
your database including their descriptions and titles, as well as the
results of facter for the host that is failing to upload facts?

Thanks,
Tomer

On Mon, Sep 5, 2016 at 3:08 AM, David LeVene dlevene@advisns.com.au >>>>> wrote:

Hey All,

Noticed this appearing in the logs for foreman - looks like its been
there from at least 1.12.1 (just updated to 1.12.2).

Not doing anything special - its just a base install using all
features(tftp/puppet/dns/dhcp etc). Its a test env, so I can update/fix as
required.

2016-09-05 09:24:41 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:291:inblock in save!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:351:in block in with_transaction_returning_status' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in
within_new_transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:220:in transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:348:inwith_transaction_returning_status’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:291:in save!' /usr/share/foreman/app/services/puppet_fact_parser.rb:47:inoperatingsystem’
/usr/share/foreman/app/models/host/base.rb:191:in block in set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:190:ineach’
/usr/share/foreman/app/models/host/base.rb:190:in
set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:183:inpopulate_fields_from_facts’
/usr/share/foreman/app/models/host/managed.rb:468:in
populate_fields_from_facts' /usr/share/foreman/app/models/host/base.rb:158:inimport_facts’
/usr/share/foreman/app/controllers/api/v2/hosts_controller.rb:237:in
facts' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/implicit_render.rb:4:insend_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/base.rb:198:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/rendering.rb:10:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/callbacks.rb:20:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:117:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:117:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:555:inblock (2 levels) in
compile’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/controllers/api/v2/base_controller.rb:152:indisable_json_root’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/usr/share/foreman/app/controllers/concerns/application_shared.rb:13:in
set_timezone' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:432:inblock in make_lambda’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:inblock in halting’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:inblock in around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:32:inclear_thread’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
`around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/

Hi David,

The fix is ready for testing in
https://github.com/theforeman/foreman/pull/3836

Thanks
Tomer

··· On Tue, Sep 13, 2016 at 3:11 AM, David LeVene wrote:

Hi Tomer,

Great that you’ve been able to reproduce it.

Yep - let me know when I can test it.

Regards
David

On 12 September 2016 at 05:07, Tomer Brisker tbrisker@redhat.com wrote:

Thank you for the information David!

I have managed to reproduce the issue locally and will work to resolve
it.
It would seem that indeed the cause lies with the OS that has a
non-numeric minor version (2.1511).
I will let you know once I have a pull request ready to fix the issue so
you may test it.

Have a nice week,
Tomer

On Fri, Sep 9, 2016 at 5:39 AM, David LeVene dlevene@advisns.com.au >> wrote:

Hi Tomer,

I’ve just reverted to a database backup which has the issue - and here
is the information you requested

foreman=# select * from operatingsystems;
id | major | name | minor | nameindicator |
created_at | updated_at | release_name | type

 description      | hosts_count | hostgroups_count | password_hash
    title

----±------±-------±-------±--------------±------------
---------------±---------------------------±-------------+
--------±----------------------±------------±------------
-----±--------------±----------------------
3 | 7 | CentOS | 2 | | 2016-01-13
02:34:09.557672 | 2016-01-13 02:34:09.557672 | | Redhat

                  >           1 |                0 | SHA256        |

CentOS 7.2
1 | 7 | CentOS | 1 | | 2015-12-07
03:23:39.087921 | 2015-12-16 06:38:11.025759 | | Redhat |
CentOS Linux 7.1.1503 | 0 | 0 | SHA256 |
CentOS Linux 7.1.1503
2 | 7 | CentOS | 2.1511 | | 2015-12-16
07:40:19.21053 | 2016-01-13 02:21:43.201217 | | Redhat |
CentOS Linux 7.2.1511 | 6 | 0 | SHA256 |
CentOS Linux 7.2.1511
(3 rows)

{“name”=>“CentOS”, “family”=>“RedHat”, “release”=>{“major”=>“7”,
“minor”=>“2”, “full”=>“7.2.1511”}, “lsb”=>{“distcodename”=>“Core”,
“distid”=>“CentOS”, “distdescription”=>“CentOS Linux release 7.2.1511
(Core) “, “release”=>”:core-4.1-amd64:core-4.1-noarch”,
“distrelease”=>“7.2.1511”, “majdistrelease”=>“7”, “minordistrelease”=>“2”}}

2016-09-09 12:05:52 [app] [I] Import facts for 'testing completed.
Added: 0, Updated: 9, Deleted 0 facts
2016-09-09 12:05:53 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/validations.rb:43:in save!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:291:in block in save!’

I suspect based on what I’ve seen so far, its trying to add and update
the description in id=3, but it can’t as id=2 already has the description
it wants.

I’ll leave it like this until you have enough information to proceed
forward, then i’ll fix it on my end.

Cheers
David

On 7 September 2016 at 16:09, Tomer Brisker tbrisker@redhat.com wrote:

Hi David,

Glad to hear this worked out.

Yes, you are correct - when a host sends its facts, the fact parser
attempts to map those facts, such as os, to existing foreman entities, and
if it doesn’t find a match it will attempt to create a new one.
It would seem that at a certain point in the process, with the OSes you
had defined, it failed to find a match and attempted to create a new one,
only to fail because it already existed.

If you would be so kind as to attach the properties of the OSes in
question, as well as the relevant parts of the host’s facter output, to the
issue, we would be able to attempt to reproduce this locally and fix the
root cause of this for all of our users.

Thanks,
Tomer

On Wed, Sep 7, 2016 at 5:25 AM, David LeVene dlevene@advisns.com.au >>>> wrote:

Hi Tomer,

Thanks for the guidance - I believe i’ve worked out the problem. The
OS’s had the name of “CentOS” which is fine, but i had 2 which had the same
major and minor version listed, well one actually had “2.1511” but i
believe it was truncating after the “.”

Changed that around, and added a description to each one (was blank
before) and its moved the hosts to the correct spot & fixed the issue

Would I be correct in saying that the OS gets assigned based on the
“facter os”? - which would explain why it was complaining when there was a
duplicate in the OS’s

Regards
David

On 5 September 2016 at 16:22, Tomer Brisker tbrisker@redhat.com >>>>> wrote:

Hi David,

This looks like you hit http://projects.theforeman.org/issues/14545
Could you provide us with the list of operating systems currently in
your database including their descriptions and titles, as well as the
results of facter for the host that is failing to upload facts?

Thanks,
Tomer

On Mon, Sep 5, 2016 at 3:08 AM, David LeVene dlevene@advisns.com.au >>>>>> wrote:

Hey All,

Noticed this appearing in the logs for foreman - looks like its been
there from at least 1.12.1 (just updated to 1.12.2).

Not doing anything special - its just a base install using all
features(tftp/puppet/dns/dhcp etc). Its a test env, so I can update/fix as
required.

2016-09-05 09:24:41 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/validations.rb:43:in save!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:291:in block in save!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:351:in block in with_transaction_returning_status' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in block in transaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in
within_new_transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in transaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:220:in transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:348:in with_transaction_returning_status’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:291:in save!' /usr/share/foreman/app/services/puppet_fact_parser.rb:47:in operatingsystem’
/usr/share/foreman/app/models/host/base.rb:191:in block in set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:190:in each’
/usr/share/foreman/app/models/host/base.rb:190:in
set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:183:in populate_fields_from_facts’
/usr/share/foreman/app/models/host/managed.rb:468:in
populate_fields_from_facts' /usr/share/foreman/app/models/host/base.rb:158:in import_facts’
/usr/share/foreman/app/controllers/api/v2/hosts_controller.rb:237:in
facts' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/implicit_render.rb:4:in send_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/base.rb:198:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/rendering.rb:10:in process_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/callbacks.rb:20:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:117:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:117:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:555:in block (2 levels) in
compile’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/controllers/api/v2/base_controller.rb:152:in disable_json_root’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:in public_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in
halting’
/usr/share/foreman/app/controllers/concerns/application_shared.rb:13:in
set_timezone' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:in block in halting’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:in block in around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/models/concerns/foreman/thread_session.rb:32:in clear_thread’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:in call’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:in public_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in `block in make_lambda’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-

Hi Tomer,

Thanks, It works as expected - but what I did notice is that with this
change when I've got the Operating systems defined as noted in a previous
post, a host was moved from CentOS 7.2 -> CentOS 7.2.1511. What happens
when users Patch a host and it goes to the next CentOS version of 7.3.xxxx?
I presume it will create a new host with that major/minor version.

If users have something similar configured, this patch may move hosts to a
different OS without their knowledge - This host was the original foreman
host, so I suspect it checked in and configured its self before I manually
created the other OS's, hence it was working and not reporting errors

Results of same host after updating the code:

2016-09-14 11:13:34 [app] [I] Processing by Api::V2::HostsController#facts
as JSON
2016-09-14 11:13:34 [app] [I] Parameters: {"facts"=>"[FILTERED]",
"name"=>"testing-dlevene", "certname"=>"testing-dlevene", "apiv"=>"v2",
:host=>{"name"=>"testing-dlevene",
"certname"=>"testing-dlevene"}}
2016-09-14 11:13:34 [app] [I] Import facts for 'testing-dlevene' completed.
Added: 0, Updated: 6, Deleted 0 facts
2016-09-14 11:13:34 [app] [I] Completed 201 Created in 434ms (Views: 5.5ms
> ActiveRecord: 109.2ms)

Let me know if there is any further testing you require on my end.

Regards
David

··· On 13 September 2016 at 18:32, Tomer Brisker wrote:

Hi David,

The fix is ready for testing in https://github.com/
theforeman/foreman/pull/3836

Thanks
Tomer

On Tue, Sep 13, 2016 at 3:11 AM, David LeVene dlevene@advisns.com.au > wrote:

Hi Tomer,

Great that you’ve been able to reproduce it.

Yep - let me know when I can test it.

Regards
David

On 12 September 2016 at 05:07, Tomer Brisker tbrisker@redhat.com wrote:

Thank you for the information David!

I have managed to reproduce the issue locally and will work to resolve
it.
It would seem that indeed the cause lies with the OS that has a
non-numeric minor version (2.1511).
I will let you know once I have a pull request ready to fix the issue so
you may test it.

Have a nice week,
Tomer

On Fri, Sep 9, 2016 at 5:39 AM, David LeVene dlevene@advisns.com.au >>> wrote:

Hi Tomer,

I’ve just reverted to a database backup which has the issue - and here
is the information you requested

foreman=# select * from operatingsystems;
id | major | name | minor | nameindicator |
created_at | updated_at | release_name | type

 description      | hosts_count | hostgroups_count | password_hash
    title

----±------±-------±-------±--------------±------------
---------------±---------------------------±-------------+
--------±----------------------±------------±------------
-----±--------------±----------------------
3 | 7 | CentOS | 2 | | 2016-01-13
02:34:09.557672 | 2016-01-13 02:34:09.557672 | | Redhat

                  >           1 |                0 | SHA256        |

CentOS 7.2
1 | 7 | CentOS | 1 | | 2015-12-07
03:23:39.087921 | 2015-12-16 06:38:11.025759 | | Redhat |
CentOS Linux 7.1.1503 | 0 | 0 | SHA256 |
CentOS Linux 7.1.1503
2 | 7 | CentOS | 2.1511 | | 2015-12-16
07:40:19.21053 | 2016-01-13 02:21:43.201217 | | Redhat |
CentOS Linux 7.2.1511 | 6 | 0 | SHA256 |
CentOS Linux 7.2.1511
(3 rows)

{“name”=>“CentOS”, “family”=>“RedHat”, “release”=>{“major”=>“7”,
“minor”=>“2”, “full”=>“7.2.1511”}, “lsb”=>{“distcodename”=>“Core”,
“distid”=>“CentOS”, “distdescription”=>“CentOS Linux release 7.2.1511
(Core) “, “release”=>”:core-4.1-amd64:core-4.1-noarch”,
“distrelease”=>“7.2.1511”, “majdistrelease”=>“7”, “minordistrelease”=>“2”}}

2016-09-09 12:05:52 [app] [I] Import facts for 'testing completed.
Added: 0, Updated: 9, Deleted 0 facts
2016-09-09 12:05:53 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:291:inblock in save!’

I suspect based on what I’ve seen so far, its trying to add and update
the description in id=3, but it can’t as id=2 already has the description
it wants.

I’ll leave it like this until you have enough information to proceed
forward, then i’ll fix it on my end.

Cheers
David

On 7 September 2016 at 16:09, Tomer Brisker tbrisker@redhat.com >>>> wrote:

Hi David,

Glad to hear this worked out.

Yes, you are correct - when a host sends its facts, the fact parser
attempts to map those facts, such as os, to existing foreman entities, and
if it doesn’t find a match it will attempt to create a new one.
It would seem that at a certain point in the process, with the OSes
you had defined, it failed to find a match and attempted to create a new
one, only to fail because it already existed.

If you would be so kind as to attach the properties of the OSes in
question, as well as the relevant parts of the host’s facter output, to the
issue, we would be able to attempt to reproduce this locally and fix the
root cause of this for all of our users.

Thanks,
Tomer

On Wed, Sep 7, 2016 at 5:25 AM, David LeVene dlevene@advisns.com.au >>>>> wrote:

Hi Tomer,

Thanks for the guidance - I believe i’ve worked out the problem. The
OS’s had the name of “CentOS” which is fine, but i had 2 which had the same
major and minor version listed, well one actually had “2.1511” but i
believe it was truncating after the “.”

Changed that around, and added a description to each one (was blank
before) and its moved the hosts to the correct spot & fixed the issue

Would I be correct in saying that the OS gets assigned based on the
"facter os"? - which would explain why it was complaining when there was a
duplicate in the OS’s

Regards
David

On 5 September 2016 at 16:22, Tomer Brisker tbrisker@redhat.com >>>>>> wrote:

Hi David,

This looks like you hit Bug #14545: ActiveRecord::RecordInvalid: Validation failed: Description has already been taken, Title has already been taken - Foreman
Could you provide us with the list of operating systems currently in
your database including their descriptions and titles, as well as the
results of facter for the host that is failing to upload facts?

Thanks,
Tomer

On Mon, Sep 5, 2016 at 3:08 AM, David LeVene <dlevene@advisns.com.au >>>>>>> > wrote:

Hey All,

Noticed this appearing in the logs for foreman - looks like its
been there from at least 1.12.1 (just updated to 1.12.2).

Not doing anything special - its just a base install using all
features(tftp/puppet/dns/dhcp etc). Its a test env, so I can update/fix as
required.

2016-09-05 09:24:41 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:291:inblock in save!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:351:in block in with_transaction_returning_status' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in
within_new_transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:220:in transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:348:inwith_transaction_returning_status’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:291:in save!' /usr/share/foreman/app/services/puppet_fact_parser.rb:47:inoperatingsystem’
/usr/share/foreman/app/models/host/base.rb:191:in block in set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:190:ineach’
/usr/share/foreman/app/models/host/base.rb:190:in
set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:183:inpopulate_fields_from_facts’
/usr/share/foreman/app/models/host/managed.rb:468:in
populate_fields_from_facts' /usr/share/foreman/app/models/host/base.rb:158:inimport_facts’
/usr/share/foreman/app/controllers/api/v2/hosts_controller.rb:237:in
facts' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/implicit_render.rb:4:insend_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/base.rb:198:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/rendering.rb:10:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/callbacks.rb:20:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:117:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:117:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:555:inblock (2 levels) in
compile’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/controllers/api/v2/base_controller.rb:152:indisable_json_root’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/usr/share/foreman/app/controllers/concerns/application_shared.rb:13:in
set_timezone' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:432:inblock in make_lambda’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:inblock in halting’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:inblock in around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in `call’
/opt/rh/sclo-ro

Hi David,

Glad to hear this fixed the issue.

When a host reports facts that don't match its current settings, such as a
different OS, that host will be updated with the new values.
This is expected behaviour -
https://theforeman.org/manuals/1.13/index.html#creating-hosts-in-foreman-with-facts
The 7.2 OS was most likely created by the incorrect fact parsing ignoring
the second part of the minor version.

Thanks for your help!
Tomer

··· On Wed, Sep 14, 2016 at 5:01 AM, David LeVene wrote:

Hi Tomer,

Thanks, It works as expected - but what I did notice is that with this
change when I’ve got the Operating systems defined as noted in a previous
post, a host was moved from CentOS 7.2 -> CentOS 7.2.1511. What happens
when users Patch a host and it goes to the next CentOS version of 7.3.xxxx?
I presume it will create a new host with that major/minor version.

If users have something similar configured, this patch may move hosts to a
different OS without their knowledge - This host was the original foreman
host, so I suspect it checked in and configured its self before I manually
created the other OS’s, hence it was working and not reporting errors

Results of same host after updating the code:

2016-09-14 11:13:34 [app] [I] Processing by Api::V2::HostsController#facts
as JSON
2016-09-14 11:13:34 [app] [I] Parameters: {“facts”=>"[FILTERED]",
“name”=>“testing-dlevene”, “certname”=>“testing-dlevene”, “apiv”=>“v2”,
:host=>{“name”=>“testing-dlevene”,
“certname”=>“testing-dlevene”}}
2016-09-14 11:13:34 [app] [I] Import facts for 'testing-dlevene’
completed. Added: 0, Updated: 6, Deleted 0 facts
2016-09-14 11:13:34 [app] [I] Completed 201 Created in 434ms (Views: 5.5ms

ActiveRecord: 109.2ms)

Let me know if there is any further testing you require on my end.

Regards
David

On 13 September 2016 at 18:32, Tomer Brisker tbrisker@redhat.com wrote:

Hi David,

The fix is ready for testing in https://github.com/theforem
an/foreman/pull/3836

Thanks
Tomer

On Tue, Sep 13, 2016 at 3:11 AM, David LeVene dlevene@advisns.com.au >> wrote:

Hi Tomer,

Great that you’ve been able to reproduce it.

Yep - let me know when I can test it.

Regards
David

On 12 September 2016 at 05:07, Tomer Brisker tbrisker@redhat.com >>> wrote:

Thank you for the information David!

I have managed to reproduce the issue locally and will work to resolve
it.
It would seem that indeed the cause lies with the OS that has a
non-numeric minor version (2.1511).
I will let you know once I have a pull request ready to fix the issue
so you may test it.

Have a nice week,
Tomer

On Fri, Sep 9, 2016 at 5:39 AM, David LeVene dlevene@advisns.com.au >>>> wrote:

Hi Tomer,

I’ve just reverted to a database backup which has the issue - and here
is the information you requested

foreman=# select * from operatingsystems;
id | major | name | minor | nameindicator |
created_at | updated_at | release_name | type

 description      | hosts_count | hostgroups_count | password_hash
    title

----±------±-------±-------±--------------±------------
---------------±---------------------------±-------------+
--------±----------------------±------------±------------
-----±--------------±----------------------
3 | 7 | CentOS | 2 | | 2016-01-13
02:34:09.557672 | 2016-01-13 02:34:09.557672 | | Redhat

                  >           1 |                0 | SHA256        |

CentOS 7.2
1 | 7 | CentOS | 1 | | 2015-12-07
03:23:39.087921 | 2015-12-16 06:38:11.025759 | | Redhat |
CentOS Linux 7.1.1503 | 0 | 0 | SHA256 |
CentOS Linux 7.1.1503
2 | 7 | CentOS | 2.1511 | | 2015-12-16
07:40:19.21053 | 2016-01-13 02:21:43.201217 | | Redhat |
CentOS Linux 7.2.1511 | 6 | 0 | SHA256 |
CentOS Linux 7.2.1511
(3 rows)

{“name”=>“CentOS”, “family”=>“RedHat”, “release”=>{“major”=>“7”,
“minor”=>“2”, “full”=>“7.2.1511”}, “lsb”=>{“distcodename”=>“Core”,
“distid”=>“CentOS”, “distdescription”=>“CentOS Linux release 7.2.1511
(Core) “, “release”=>”:core-4.1-amd64:core-4.1-noarch”,
“distrelease”=>“7.2.1511”, “majdistrelease”=>“7”, “minordistrelease”=>“2”}}

2016-09-09 12:05:52 [app] [I] Import facts for 'testing completed.
Added: 0, Updated: 9, Deleted 0 facts
2016-09-09 12:05:53 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:291:inblock in save!’

I suspect based on what I’ve seen so far, its trying to add and update
the description in id=3, but it can’t as id=2 already has the description
it wants.

I’ll leave it like this until you have enough information to proceed
forward, then i’ll fix it on my end.

Cheers
David

On 7 September 2016 at 16:09, Tomer Brisker tbrisker@redhat.com >>>>> wrote:

Hi David,

Glad to hear this worked out.

Yes, you are correct - when a host sends its facts, the fact parser
attempts to map those facts, such as os, to existing foreman entities, and
if it doesn’t find a match it will attempt to create a new one.
It would seem that at a certain point in the process, with the OSes
you had defined, it failed to find a match and attempted to create a new
one, only to fail because it already existed.

If you would be so kind as to attach the properties of the OSes in
question, as well as the relevant parts of the host’s facter output, to the
issue, we would be able to attempt to reproduce this locally and fix the
root cause of this for all of our users.

Thanks,
Tomer

On Wed, Sep 7, 2016 at 5:25 AM, David LeVene dlevene@advisns.com.au >>>>>> wrote:

Hi Tomer,

Thanks for the guidance - I believe i’ve worked out the problem. The
OS’s had the name of “CentOS” which is fine, but i had 2 which had the same
major and minor version listed, well one actually had “2.1511” but i
believe it was truncating after the “.”

Changed that around, and added a description to each one (was blank
before) and its moved the hosts to the correct spot & fixed the issue

Would I be correct in saying that the OS gets assigned based on the
"facter os"? - which would explain why it was complaining when there was a
duplicate in the OS’s

Regards
David

On 5 September 2016 at 16:22, Tomer Brisker tbrisker@redhat.com >>>>>>> wrote:

Hi David,

This looks like you hit Bug #14545: ActiveRecord::RecordInvalid: Validation failed: Description has already been taken, Title has already been taken - Foreman
Could you provide us with the list of operating systems currently
in your database including their descriptions and titles, as well as the
results of facter for the host that is failing to upload facts?

Thanks,
Tomer

On Mon, Sep 5, 2016 at 3:08 AM, David LeVene < >>>>>>>> dlevene@advisns.com.au> wrote:

Hey All,

Noticed this appearing in the logs for foreman - looks like its
been there from at least 1.12.1 (just updated to 1.12.2).

Not doing anything special - its just a base install using all
features(tftp/puppet/dns/dhcp etc). Its a test env, so I can update/fix as
required.

2016-09-05 09:24:41 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:291:inblock in save!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:351:in block in with_transaction_returning_status' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in
within_new_transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:220:in transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:348:inwith_transaction_returning_status’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:291:in save!' /usr/share/foreman/app/services/puppet_fact_parser.rb:47:inoperatingsystem’
/usr/share/foreman/app/models/host/base.rb:191:in block in set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:190:ineach’
/usr/share/foreman/app/models/host/base.rb:190:in
set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:183:inpopulate_fields_from_facts’
/usr/share/foreman/app/models/host/managed.rb:468:in
populate_fields_from_facts' /usr/share/foreman/app/models/host/base.rb:158:inimport_facts’
/usr/share/foreman/app/controllers/api/v2/hosts_controller.rb:237:in
facts' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/implicit_render.rb:4:insend_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/base.rb:198:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/rendering.rb:10:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/callbacks.rb:20:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:117:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:117:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:555:inblock (2 levels) in
compile’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/controllers/api/v2/base_controller.rb:152:indisable_json_root’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels) in
around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels) in
halting’
/usr/share/foreman/app/controllers/concerns/application_shared.rb:13:in
set_timezone' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:432:inblock in
make_lambda’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:inblock in halting’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:inblock in

Hi Tomer,

Thanks for the info. Glad I could help fix a bug for a great product.

Keep up the fantastic work.

Cheers
David

··· On 14 Sep 2016 4:25 pm, "Tomer Brisker" wrote:

Hi David,

Glad to hear this fixed the issue.

When a host reports facts that don’t match its current settings, such as a
different OS, that host will be updated with the new values.
This is expected behaviour - https://theforeman.org/
manuals/1.13/index.html#creating-hosts-in-foreman-with-facts
The 7.2 OS was most likely created by the incorrect fact parsing ignoring
the second part of the minor version.

Thanks for your help!
Tomer

On Wed, Sep 14, 2016 at 5:01 AM, David LeVene dlevene@advisns.com.au > wrote:

Hi Tomer,

Thanks, It works as expected - but what I did notice is that with this
change when I’ve got the Operating systems defined as noted in a previous
post, a host was moved from CentOS 7.2 -> CentOS 7.2.1511. What happens
when users Patch a host and it goes to the next CentOS version of 7.3.xxxx?
I presume it will create a new host with that major/minor version.

If users have something similar configured, this patch may move hosts to
a different OS without their knowledge - This host was the original foreman
host, so I suspect it checked in and configured its self before I manually
created the other OS’s, hence it was working and not reporting errors

Results of same host after updating the code:

2016-09-14 11:13:34 [app] [I] Processing by
Api::V2::HostsController#facts as JSON
2016-09-14 11:13:34 [app] [I] Parameters: {“facts”=>"[FILTERED]",
“name”=>“testing-dlevene”, “certname”=>“testing-dlevene”, “apiv”=>“v2”,
:host=>{“name”=>“testing-dlevene”,
“certname”=>“testing-dlevene”}}
2016-09-14 11:13:34 [app] [I] Import facts for 'testing-dlevene’
completed. Added: 0, Updated: 6, Deleted 0 facts
2016-09-14 11:13:34 [app] [I] Completed 201 Created in 434ms (Views:
5.5ms | ActiveRecord: 109.2ms)

Let me know if there is any further testing you require on my end.

Regards
David

On 13 September 2016 at 18:32, Tomer Brisker tbrisker@redhat.com wrote:

Hi David,

The fix is ready for testing in https://github.com/theforem
an/foreman/pull/3836

Thanks
Tomer

On Tue, Sep 13, 2016 at 3:11 AM, David LeVene dlevene@advisns.com.au >>> wrote:

Hi Tomer,

Great that you’ve been able to reproduce it.

Yep - let me know when I can test it.

Regards
David

On 12 September 2016 at 05:07, Tomer Brisker tbrisker@redhat.com >>>> wrote:

Thank you for the information David!

I have managed to reproduce the issue locally and will work to resolve
it.
It would seem that indeed the cause lies with the OS that has a
non-numeric minor version (2.1511).
I will let you know once I have a pull request ready to fix the issue
so you may test it.

Have a nice week,
Tomer

On Fri, Sep 9, 2016 at 5:39 AM, David LeVene dlevene@advisns.com.au >>>>> wrote:

Hi Tomer,

I’ve just reverted to a database backup which has the issue - and
here is the information you requested

foreman=# select * from operatingsystems;
id | major | name | minor | nameindicator |
created_at | updated_at | release_name | type

 description      | hosts_count | hostgroups_count | password_hash
    title

----±------±-------±-------±--------------±------------
---------------±---------------------------±-------------+
--------±----------------------±------------±------------
-----±--------------±----------------------
3 | 7 | CentOS | 2 | | 2016-01-13
02:34:09.557672 | 2016-01-13 02:34:09.557672 | | Redhat

                  >           1 |                0 | SHA256        |

CentOS 7.2
1 | 7 | CentOS | 1 | | 2015-12-07
03:23:39.087921 | 2015-12-16 06:38:11.025759 | | Redhat |
CentOS Linux 7.1.1503 | 0 | 0 | SHA256 |
CentOS Linux 7.1.1503
2 | 7 | CentOS | 2.1511 | | 2015-12-16
07:40:19.21053 | 2016-01-13 02:21:43.201217 | | Redhat |
CentOS Linux 7.2.1511 | 6 | 0 | SHA256 |
CentOS Linux 7.2.1511
(3 rows)

{“name”=>“CentOS”, “family”=>“RedHat”, “release”=>{“major”=>“7”,
“minor”=>“2”, “full”=>“7.2.1511”}, “lsb”=>{“distcodename”=>“Core”,
“distid”=>“CentOS”, “distdescription”=>“CentOS Linux release 7.2.1511
(Core) “, “release”=>”:core-4.1-amd64:core-4.1-noarch”,
“distrelease”=>“7.2.1511”, “majdistrelease”=>“7”, “minordistrelease”=>“2”}}

2016-09-09 12:05:52 [app] [I] Import facts for 'testing completed.
Added: 0, Updated: 9, Deleted 0 facts
2016-09-09 12:05:53 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description has
already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/validations.rb:79:in raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:291:inblock in save!’

I suspect based on what I’ve seen so far, its trying to add and
update the description in id=3, but it can’t as id=2 already has the
description it wants.

I’ll leave it like this until you have enough information to proceed
forward, then i’ll fix it on my end.

Cheers
David

On 7 September 2016 at 16:09, Tomer Brisker tbrisker@redhat.com >>>>>> wrote:

Hi David,

Glad to hear this worked out.

Yes, you are correct - when a host sends its facts, the fact parser
attempts to map those facts, such as os, to existing foreman entities, and
if it doesn’t find a match it will attempt to create a new one.
It would seem that at a certain point in the process, with the OSes
you had defined, it failed to find a match and attempted to create a new
one, only to fail because it already existed.

If you would be so kind as to attach the properties of the OSes in
question, as well as the relevant parts of the host’s facter output, to the
issue, we would be able to attempt to reproduce this locally and fix the
root cause of this for all of our users.

Thanks,
Tomer

On Wed, Sep 7, 2016 at 5:25 AM, David LeVene <dlevene@advisns.com.au >>>>>>> > wrote:

Hi Tomer,

Thanks for the guidance - I believe i’ve worked out the problem.
The OS’s had the name of “CentOS” which is fine, but i had 2 which had the
same major and minor version listed, well one actually had “2.1511” but i
believe it was truncating after the “.”

Changed that around, and added a description to each one (was blank
before) and its moved the hosts to the correct spot & fixed the issue

Would I be correct in saying that the OS gets assigned based on the
"facter os"? - which would explain why it was complaining when there was a
duplicate in the OS’s

Regards
David

On 5 September 2016 at 16:22, Tomer Brisker tbrisker@redhat.com >>>>>>>> wrote:

Hi David,

This looks like you hit http://projects.theforeman
.org/issues/14545
Could you provide us with the list of operating systems currently
in your database including their descriptions and titles, as well as the
results of facter for the host that is failing to upload facts?

Thanks,
Tomer

On Mon, Sep 5, 2016 at 3:08 AM, David LeVene < >>>>>>>>> dlevene@advisns.com.au> wrote:

Hey All,

Noticed this appearing in the logs for foreman - looks like its
been there from at least 1.12.1 (just updated to 1.12.2).

Not doing anything special - its just a base install using all
features(tftp/puppet/dns/dhcp etc). Its a test env, so I can update/fix as
required.

2016-09-05 09:24:41 [app] [W] Action failed

ActiveRecord::RecordInvalid: Validation failed: Description
has already been taken, Title has already been taken
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/validations.rb:79:in
raise_record_invalid' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/validations.rb:43:insave!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/attribute_methods/dirty.rb:29:in save!' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:291:inblock in save!’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:351:in block in with_transaction_returning_status' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in
within_new_transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:220:in transaction' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2 .5.1/lib/active_record/transactions.rb:348:inwith_transaction_returning_status’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activerecord-4.2
.5.1/lib/active_record/transactions.rb:291:in save!' /usr/share/foreman/app/services/puppet_fact_parser.rb:47:inoperatingsystem’
/usr/share/foreman/app/models/host/base.rb:191:in block in set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:190:ineach’
/usr/share/foreman/app/models/host/base.rb:190:in
set_non_empty_values' /usr/share/foreman/app/models/host/base.rb:183:inpopulate_fields_from_facts’
/usr/share/foreman/app/models/host/managed.rb:468:in
populate_fields_from_facts' /usr/share/foreman/app/models/host/base.rb:158:inimport_facts’
/usr/share/foreman/app/controllers/api/v2/hosts_controller.rb:237:in
facts' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/implicit_render.rb:4:insend_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/base.rb:198:in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5 .1/lib/action_controller/metal/rendering.rb:10:inprocess_action’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/actionpack-4.2.5
.1/lib/abstract_controller/callbacks.rb:20:in block in process_action' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:117:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:117:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:555:inblock (2 levels)
in compile’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:498:in block (2 levels) in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in block (2 levels) in halting' /usr/share/foreman/app/controllers/api/v2/base_controller.rb:152:indisable_json_root’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:432:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in block in around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:505:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:505:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:498:inblock (2 levels)
in around’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:313:in call' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:313:inblock (2 levels)
in halting’
/opt/theforeman/tfm/root/usr/share/gems/gems/rails-observers
-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in
around' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:455:inpublic_send’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:455:in block in make_lambda' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:312:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:312:in block in halting' /opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4. 2.5.1/lib/active_support/callbacks.rb:497:incall’
/opt/rh/sclo-ror42/root/usr/share/gems/gems/activesupport-4.
2.5.1/lib/active_support/callbacks.rb:497:in `block in around’