...
The Networking Plugin has the ability to create, delete, query and update virtual networks. This will implement API's like CreateVL, DeleteVL, QueryVL and UpdateVL. Networking plugin on initialization will call discovery function to find out about the type of networking plugin available. It'll load the required plugin and call init functions of the appropriate plugin.
CreateVL:
Input: Name of the Virtual Network, Subnet IP, Gateway IP
Output: Success/Failure
- Check in the database if a virtual network with same name already exists. If so return error.
- Get the networking artifact.
- Figure out the networking plugin to call
- Call the appropriate plugin to initialize virtual network.
- If success returned then add the Virtual network to the database
- Return success
Create VL for OVN:
Input: Name of the Virtual Network, Subnet IP, Gateway IP
Output: Success/Failure
- Figure out if the virtual network already exists. Use the ovn-nbctl call to figure that out. If already exist skip next step.
- Create Logical switch with name as provided in input and other-config:subnet=<Subnet-IP> set to the subnet required for the virtual network and external-ids:gateway_ip=<Gateway-IP> set to the gateway IP for the virtual network.
- Check if the virtual network is attached to the distributed router if not attach virtual network to the distributed router.
- Return success if initialization is successful
Ovn-kubernetes design and changes for multiple interface support
...