Most of them are outdated, but provide historical design context.
They are not user documentation and should not be treated as such.
Documentation is available here.
getRoute should return name of a device assigned to given IP address.
- Name: Petr Horacek (phoracek)
- Email: email@example.com
During deployment of a new host, Engine needs to know which of the host’s interfaces is used to connect to Engine. Currently, this is exposed by the `lastClientIface` element of `getVdsCaps` verb. However, this approach is problematic, as we plant to remove the requirement of direct Engine-Vdsm TCP connection, without which, Vdsm cannot compute this element.
Instead, it is suggested that Vdsm would expose the output of `ip route get
Overview: Currently, the engine stores a host’s “Active NIC”, and uses it to decide on which interface it should set up the management network as part of the “Install Host” flow. This “Active NIC” is reported by VDSM as part of
getVdsCaps (in the
lastClientIface entry). With the introduction of the
getRoute verb, the engine could use it for VDSM versions compatible with cluster >= 3.6 instead of the mentioned entry in
Details:This can be done by wrapping
getRoute in its own VdsCommand class (e.g.
GetRouteVdsCommand), and run that as part of
CollectVdsNetworkDataAfterInstallationVDSCommand.executeVdsBrokerCommand() if the host’s reported versions are compatible - then call
VDS.setActiveNic() with the result. Similarly, the code setting the active NIC in
VdsBrokerObjectBuilder.updateNetworkData() may be made dependent on older VDSM versions (this is likely optional - it might just be stored as null and overwritten later according to the result of
getRoute), and removed when that API is officially deprecated.
To implement this new verb we could use
netinfo.getRouteDeviceTo(ip_address) function, which uses
ipwrapper to do route handling.