Related-Bug: #2017871 Change-Id: Iba24a034edf03da0a6e8c03264d5d1134cf45e56
2.8 KiB
OVN agent
The OVN agent is a service that could be executed in any node running the ovn-controller service. This agent provides additional functionalities not provided by OVN; for example, a metadata proxy between the virtual machines and the Nova metadata service. This agent will replace the need of the OVN metadata agent.
OVN and OVS database connectivity
The OVN agent can access the local OVS database where the service is running. It also has access to the Northbound and Southbound OVN databases. The connection strings to these databases are defined in the agent configuration file:
[ovn]
ovn_nb_connection = tcp:192.168.10.100:6641
ovn_sb_connection = tcp:192.168.10.100:6642
[ovs]
ovsdb_connection = tcp:127.0.0.1:6640
Plugable extensions
The OVN agent provides functionalities via extensions. When the agent
is started, the OVNAgentExtensionManager
instance loads the
configured extensions. The extensions are defined in the stevedore entry
points, under the section "neutron.agent.ovn.extensions". The extensions
are defined in the agent configuration file in the "extensions"
parameter:
[DEFAULT]
extensions = metadata
Each extension will inherit from OVNAgentExtension
,
which provides the API for an OVN agent extension. The extensions are
loaded in two steps:
- Initialization: this phase involves the call of
OVNAgentExtension.consume_api
andOVNAgentExtension.initialize
(in this order). The first one assigns the extension API to the instance. In this case, the OVN agent has a specific instanceOVNAgentExtensionAPI
that gives to the extensions the needed access to OVS and OVN databases, using the same IDL instance. The second one is not currently used in the base class; it could be used, for example as in the metadata extension, to spawn the process monitor. - Start: in this phase, the OVN and OVS database connections are
established and can be accessed. The extension manager will call each
extension
OVNAgentExtension.start
method.
Each extension should define a set of OVS, OVN Northbound and OVN Southbound tables to monitor, and a set of events related to these databases. The OVN agent will create the corresponding IDL connections using the conjunction of these tables and events.
Event-driven service
The OVN agent is a oslo_service.service.Service
type
class, that is launched when the script is executed. Once initialized,
the service is waiting for new events that will trigger actions. As
mentioned in the previous section, each extension will subscribe to a
set of events from the OVN and OVS databases; these events will trigger
a set of actions executed on the OVN agent.