Nova multi-nic

Registered by Trey Morris

Once the hypervisors xenapi/libvirt are prepared to handle multiple nics and prepared to receive network_info from compute instead of looking it up themselves, the nova multi-nic feature can be put in place. Primary changes include:
1) removing mac_address column from the instances table and creating a mac_addresses table. This is for storing which instances own which mac addresses as well as which network each mac is for.
2) generation of mac addresses is moved to the network manager
3) allocation of mac addresses is handled by the network manager
4) network manager provides functionality for generating/storing mac address and IPs, and returning this information
5) compute calls allocation functionality, receives back a list of (network object, IP/mac_addr info dict) tuples
6) compute passes this list to the virt driver as a part of the spawn process.
7) assuming the virt layers are already set up to handle receiving network info and being able to handle multiple networks, mac_addresses and IPs as a apart of the xs_multi_nic and libvirt_multi_nic blueprints

Blueprint information

Status:
Complete
Approver:
Vish Ishaya
Priority:
Essential
Drafter:
Trey Morris
Direction:
Approved
Assignee:
Trey Morris
Definition:
Approved
Series goal:
Accepted for diablo
Implementation:
Implemented
Milestone target:
milestone icon 2011.3
Started by
Vish Ishaya
Completed by
Thierry Carrez

Related branches

Sprints

Whiteboard

First appeared in diablo-3

I'm wondering about the other table being called nics or something along that line. I'm thinking we may want more data on the nic than just a mac address. For example, network_id for the network it needs to plug in to or information for QoS, etc.

Also, is there a wiki page for the spec?

Etherpad: https://blueprints.launchpad.net/nova/+spec/instance-transport

--Vish

Plan for mac_address table was to have instance_id, mac_address, and network_id in a row. I'm perfectly happy with changing the table name to nics/vnics/vifs or whatever is more descriptive. Any other rows can be added later.

--trey

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.