Improvements in ovs/linuxbridge iface config and hosts file setup.
Also, I had to change the linuxbridge configuration around. I'd been using statically-configured linux bridges, and I'd assumed I could tell Neutron to use them. Unfortunately, this is sort of true, but not enough; from the comments: NB: We can only control the name of the external br-ex bridge, because only the Neutron linuxbridge driver accepts both a map of physical networks to physical interfaces; and physical network to bridge names. Nova assumes that the bridge it must plug a device into is named according to the physical network uuid. Thus, for the linuxbridge case, we only setup bridge_mappings for br-ex... modulo a flag. Hopefully in the future they will see the sense in allowing static bridge configurations. So for now, only br-ex is static; the others are dynamic. What a pain for debugging! Stupid. More importantly, this commit also takes integrates correctly with the new Emulab clientside improvements that let the user customize interface config and /etc/hosts file generation. To handle hosts, we create a static manifest file that tells Emulab to call an rc.hostnames pre-hook. This hook basically grabs our latest special openstack hosts entries, and ensures they make it into /etc/hosts.head, so that genhostsfile prepends our special names. To handle interfaces, we further customize /etc/network/interfaces so that Emulab's rc.ifconfig only tries to configure interfaces we haven't handled. Thus, if the clientside of the disk image the scripts are operating on includes the new clientside hookable support, we no longer move rc.ifconfig and rc.hostnames out of our way --- we let them run, secure in the knowledge that our customizations won't get trampled. (All this improvement was necessary so that blockstores and event system stuff would work.)
Showing with 214 additions and 38 deletions