Bug #22676
closedFact importing with location set resets Domain even if domain isn't set or updated if domain isn't in the selected location
Description
Recently in katello we started noticing an issue where domain_id was being set to nil on interface during subscription-manager registration. To reproduce:
1. Have a host check in via puppet (domain is created with no org or location)
2. Register the same host with subscription-manager using an activation key.
sub-man register does a fact import using the Rhsm Fact Importer and Parser. This does NOT attempt to set a domain. Even though it doens't set the domain, it does provide other interface attributes which causes an update on the existing interfaces. Anytime an interface is updated this code gets called:
https://github.com/theforeman/foreman/blob/develop/app/models/nic/interface.rb#L108-L110
This line " if domain.nil? && name.include?('.') && changed_attributes['domain_id'].blank?" tries to detect if a domain is or is not set for the host. However since its calling 'domain.nil?' it requires that the current taxonomies be able to resolve the domain. Since location.current is set, and the domain is not in that location, domain always return nil.