From: Ondrej Lichtner olichtne@redhat.com
Hi,
what follows is a very large patch set with a lot of stuff happening in it. Normally I would have split it up into at least 2 logical parts, but unfortunately most of the changes introduced in the patch set is dependent on each other. The reasoning behind all of the code should be nicely explained in the commit messages, if you have any additional questions don't hesitate to ask.
One thing that I want to explain is the creation of a whole new concept of the Controller Device Database, mirroring the one on the Slave so that I could work on testing OvS vxlans. For now the implementation is just that and nothing more. At the moment this makes the Controller look very ugly seeing as there's both an Interface object and a Device object representing the same NIC but with different information.
In the future I want to merge these two classes, mostly by replacing the current Interface objects with the new Device objects extended with setters and other features required for proper configuration. This however is a large restructuring of the code and it would either depend or heavily conflict with the implementation of python recipes which is why I chose to just do a very quick and ugly implementation of a parallel concept that I can use for now while we wait to merge in the Python recipes implementation.
Ondrej Lichtner (20): NetConfigDevice: use link_up in Vxlan and Vlan devices NetUtils: remove FIXME from scan_netdevs NetUtils: add address information to the interface scan InterfaceManager: handle RTM_{NEW, DEL}ADDR nl_messages InterfaceManager: fix rescan_devices method InterfaceManager: extend Device::if_data method NetTestSlave: remake get_devices and add get_device Machine: construct a Device database reflecting InterfaceManager state Task: add DeviceAPI as extension of Machine device database InterfaceManager: add if_deleted update messages InterfaceManager: add Device objects to tmp_mapping sooner InterfaceManager: rescan devices before checking if name used InterfaceManager: make assign_name_generic publicly accessible NetConfigCommon: add function get_slave_options NetConfigDevice: extend NetConfigDeviceOvsBridge RecipeParser, schema-recipe: extend OvS bridge XML configuration PerfRepoUtils: add perfrepo_baseline_to_dict function Netperf: allow bind option in client RecipeCommon: add ModuleWrap regression_tests: add phase3, starting with vxlan
lnst/Common/NetUtils.py | 20 +- lnst/Controller/Machine.py | 148 +++++++++++- lnst/Controller/NetTestController.py | 3 + lnst/Controller/PerfRepoUtils.py | 16 ++ lnst/Controller/RecipeParser.py | 123 ++++++++-- lnst/Controller/Task.py | 58 ++++- lnst/Controller/Wizard.py | 14 +- lnst/RecipeCommon/ModuleWrap.py | 179 +++++++++++++++ lnst/Slave/InterfaceManager.py | 150 ++++++++++--- lnst/Slave/NetConfigCommon.py | 7 + lnst/Slave/NetConfigDevice.py | 107 ++++++++- lnst/Slave/NetTestSlave.py | 13 +- .../regression_tests/phase3/2_virt_ovs_vxlan.py | 247 +++++++++++++++++++++ .../regression_tests/phase3/2_virt_ovs_vxlan.xml | 138 ++++++++++++ .../regression_tests/phase3/novirt_ovs_vxlan.py | 201 +++++++++++++++++ .../regression_tests/phase3/novirt_ovs_vxlan.xml | 86 +++++++ .../regression_tests/phase3/vxlan_multicast.xml | 66 ++++++ recipes/regression_tests/phase3/vxlan_remote.xml | 67 ++++++ recipes/regression_tests/phase3/vxlan_test.py | 247 +++++++++++++++++++++ schema-recipe.rng | 76 +++++-- test_modules/Netperf.py | 5 + 21 files changed, 1875 insertions(+), 96 deletions(-) create mode 100644 lnst/RecipeCommon/ModuleWrap.py create mode 100644 recipes/regression_tests/phase3/2_virt_ovs_vxlan.py create mode 100644 recipes/regression_tests/phase3/2_virt_ovs_vxlan.xml create mode 100644 recipes/regression_tests/phase3/novirt_ovs_vxlan.py create mode 100644 recipes/regression_tests/phase3/novirt_ovs_vxlan.xml create mode 100644 recipes/regression_tests/phase3/vxlan_multicast.xml create mode 100644 recipes/regression_tests/phase3/vxlan_remote.xml create mode 100644 recipes/regression_tests/phase3/vxlan_test.py