Refactor #7456
closedExtract primary interface from host
Description
Extract MAC, IP, domain and subnet out of host object to the separate interface object. Related to this - properly detect primary interface among facts, never use ipaddress and macaddress facts. We should add primary and provisioning flags to interfaces.
Primary - this gives the host it's identity, and the DNS record for
this interface is how the host is referred to / displayed in the UI.
There must always be a primary, so that a host has a name (except for
unamanged, wher the host.name is the fqdn as usual)
Provisioning - the interface used for writing tftp files based it's
mac, and configured as the primary during kickstart so it can reach
Foreman. Defaults to the Primary interface above if not set.
Some more details:
This is because we often hear of people having separate provisioning
networks, with hosts moved to the correct vlans/subnets after build.
As such, you want to see "foo.example.com" in Foreman, not
"foo.provisioning.example.com".
Few ideas that we agreed on
* primary interface should always be managed (flag added recently)
* same applies to provisioning interface
* we can easily support moving of provisioning flag between interfaces
* we don't want to enable primary interface flag to be moved (at least for now - we do it for now for hosts, so depending on complexity)
* while flags on interface seems as simple solution for now, we should think
about subnet roles so by assigning a subnet with role "provisioning", we'd
know the default value for provisioning flag, this brings several things to
consider, like multiple provisioning subnets