Extract primary interface from host
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
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
Fixes #7456 - Extract primary interface from hostContributions from:
- Tomas Strachota (tstrachota) <email@example.com>
- Marek Hulán (ares) <firstname.lastname@example.org>
- Gregory Sutcliffe (GregSutcliffe) <email@example.com>
All host must have at least one primary interface and one provision (can
be the same interface). Primary interface gives host a name so even
unamanaged host have primary interface (we skip validations of other
attributes for unamanged hosts though).
Host still have name attribute which is a cache of primary interface name.
Therefore we can use the host name in SQL queries, as a friendly_id etc.
- realm moved to the primary tab
- fqdn in nics table
- flags in nics table
- checkboxes for provision and primary flags
- modal resize fix
- original fields for primary NIC removed
- skipping validation for new resources
- warnings before switching flags and table update
- host name and primary interface name connected
- host domain name in the page title
- nics on host show page
- clearing modal window on cancel
- fixed domain validation in NIC::Base
- ip suggestion for all interfaces
- flags switchable from the overview table
- use icons instead of text for primary/provision on NICs overview tab
- attempt to fix sending NIC template
- fix fqdn algorithm
- ip addres in the overview table
- fix for class name collision
- better behavior of host name <-> primary name sync
- fix for subnet combobox values
- fix for modal poping up on form submission
- network partial for CRs moved from VM tab to modal
- fix ip suggestion race for ipam=db