os-vif 3.5.0__tar.gz → 3.7.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {os_vif-3.5.0 → os_vif-3.7.1}/AUTHORS +2 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/ChangeLog +24 -0
- os_vif-3.7.1/PKG-INFO +74 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/doc/requirements.txt +1 -1
- os_vif-3.7.1/os_vif.egg-info/PKG-INFO +74 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif.egg-info/SOURCES.txt +1 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif.egg-info/entry_points.txt +0 -1
- os_vif-3.7.1/os_vif.egg-info/pbr.json +1 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif.egg-info/requires.txt +5 -7
- os_vif-3.7.1/releasenotes/source/2024.1.rst +6 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/index.rst +1 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/victoria.rst +1 -1
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/wallaby.rst +1 -1
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/xena.rst +1 -1
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/zed.rst +1 -1
- {os_vif-3.5.0 → os_vif-3.7.1}/requirements.txt +2 -2
- {os_vif-3.5.0 → os_vif-3.7.1}/setup.cfg +1 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/test-requirements.txt +1 -1
- {os_vif-3.5.0 → os_vif-3.7.1}/tox.ini +2 -7
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/ovs.py +10 -5
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/ovsdb/ovsdb_lib.py +22 -1
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/tests/functional/test_plugin.py +97 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/tests/unit/ovsdb/test_ovsdb_lib.py +12 -2
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/tests/unit/test_plugin.py +4 -1
- os_vif-3.5.0/PKG-INFO +0 -52
- os_vif-3.5.0/os_vif.egg-info/PKG-INFO +0 -52
- os_vif-3.5.0/os_vif.egg-info/pbr.json +0 -1
- {os_vif-3.5.0 → os_vif-3.7.1}/.coveragerc +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/.mailmap +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/.stestr.conf +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/.zuul.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/CONTRIBUTING.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/HACKING.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/LICENSE +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/README.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/bindep.txt +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/doc/source/conf.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/doc/source/contributor/contributing.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/doc/source/index.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/doc/source/reference/glossary.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/doc/source/user/host-info.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/doc/source/user/plugins/linux-bridge.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/doc/source/user/plugins/noop.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/doc/source/user/plugins/ovs.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/doc/source/user/usage.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/doc/source/user/vif-types.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/exception.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/i18n.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/internal/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/internal/ip/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/internal/ip/api.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/internal/ip/ip_command.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/internal/ip/linux/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/internal/ip/linux/impl_pyroute2.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/internal/ip/windows/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/internal/ip/windows/impl_netifaces.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/objects/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/objects/base.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/objects/fields.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/objects/fixed_ip.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/objects/host_info.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/objects/instance_info.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/objects/network.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/objects/route.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/objects/subnet.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/objects/vif.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/opts.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/plugin.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/functional/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/functional/base.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/functional/internal/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/functional/internal/command/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/functional/internal/command/ip/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/functional/internal/command/ip/test_impl_pyroute2.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/functional/privsep.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/base.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/ip/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/ip/linux/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/ip/linux/test_impl_pyroute2.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/ip/test_api.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/ip/windows/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/ip/windows/test_impl_netifaces.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/test_base.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/test_exception.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/test_host_info.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/test_objects.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/test_os_vif.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/tests/unit/test_vif.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/utils.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif/version.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif.egg-info/dependency_links.txt +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif.egg-info/not-zip-safe +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/os_vif.egg-info/top_level.txt +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/playbooks/openstack-tox-functional-ovs-with-sudo/Debian.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/playbooks/openstack-tox-functional-ovs-with-sudo/Gentoo.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/playbooks/openstack-tox-functional-ovs-with-sudo/RedHat.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/playbooks/openstack-tox-functional-ovs-with-sudo/Suse.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/playbooks/openstack-tox-functional-ovs-with-sudo/pre.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/OVSVif-hybrid-unplug-f37bf57bc8e913de.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/add-abstract-ovsdb-api-8f04df58d4ed5b73.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/add-fast-path-vhostuser-support-fe87e558326909b6.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/add-no-op-plugin-763a6703e7328a24.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/add-ovs-representor-portprofile-5f8290e5a40bf0a4.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/add-ovs-vhostuser-support-2ba8de51c1f3a244.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/add-ovsdb-native-322fffb49c91503d.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/always-plug-vifs-for-ovs-1d033fc49a9c6c4e.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/brctl-removal-a5b0e69b865afa57.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/bug-1892132-812e6d5ce0588ebb.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/contextlib-and-nested-with-statements-2747a9ebb9a5bfd7.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/default-qos-policy-for-ovs-26f8806046a59c82.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/default-to-native-ovsdb-driver-112fb5adf6e19a30.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/deprecate-windows-support-49f5ca1b1a1f4d66.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/do-not-force-mac-ageing-c6e8d750130c5740.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/drop-py36-support-0e9b07073f6ad73f.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/drop-python2-support-7a4bc7d31253c1e5.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/ensure-ovs-bridge-a0c1b51f469c92d0.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/extend-vhostuser-object-fada14a1457d4e56.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/fix-broken-dataplane-on-nova-restart-with-isolate_vif-71617a41741b33e8.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/fix-ovs-plugin-describe-049750609559f1ba.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/fix-stevedore-entrypoints-8002ec7a5166c977.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/fix-vif-openvswitch-fa0d19be9dd668e1.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/generic-datapath-offloads-41cabb6842b41533.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/initial-release-2c71d6bbf55f763b.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/oslo-config-opts-entrypoints-e83f907b686d774a.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/per-port-bridge-c6a50179a0256de3.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/port-profile-info-linux-bridge-4800f5a0b7328615.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/port-profile-info-ovs-63b46a3eafc11de2.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/prevent-lb-reply-arp-6459133bfb056069.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/remove_iptools_implementation-2eb866573a680e61.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/revert-always-plug-port-for-ovs-hybrid-plug-false-dc015985cbc5443b.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/vhost-user-mtu-support-cbc7d02a6665fab1.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/notes/vhost-user-reconnect-fa4cbb731b787f71.yaml +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/2023.1.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/2023.2.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/_static/.placeholder +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/_templates/.placeholder +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/conf.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/newton.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/ocata.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/pike.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/queens.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/rocky.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/stein.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/train.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/unreleased.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/ussuri.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/releasenotes/source/yoga.rst +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/setup.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_linux_bridge/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_linux_bridge/constants.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_linux_bridge/iptables.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_linux_bridge/linux_bridge.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_linux_bridge/linux_net.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_linux_bridge/privsep.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_linux_bridge/tests/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_linux_bridge/tests/unit/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_linux_bridge/tests/unit/test_linux_net.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_linux_bridge/tests/unit/test_plugin.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_noop/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_noop/noop.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_noop/tests/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_noop/tests/unit/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_noop/tests/unit/test_plugin.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/constants.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/exception.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/linux_net.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/ovsdb/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/ovsdb/api.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/ovsdb/impl_idl.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/ovsdb/impl_vsctl.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/privsep.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/tests/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/tests/functional/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/tests/functional/base.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/tests/functional/ovsdb/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/tests/functional/ovsdb/test_ovsdb_lib.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/tests/unit/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/tests/unit/ovsdb/__init__.py +0 -0
- {os_vif-3.5.0 → os_vif-3.7.1}/vif_plug_ovs/tests/unit/test_linux_net.py +0 -0
|
@@ -2,6 +2,7 @@ Adrian Chiris <adrianc@mellanox.com>
|
|
|
2
2
|
Alin Balutoiu <abalutoiu@cloudbasesolutions.com>
|
|
3
3
|
Andreas Jaeger <aj@suse.com>
|
|
4
4
|
Balazs Gibizer <gibi@redhat.com>
|
|
5
|
+
Bence Romsics <bence.romsics@gmail.com>
|
|
5
6
|
Brian Haley <brian.haley@hpe.com>
|
|
6
7
|
Cao Xuan Hoang <hoangcx@vn.fujitsu.com>
|
|
7
8
|
Carlos Goncalves <cgoncalves@redhat.com>
|
|
@@ -67,6 +68,7 @@ YAMAMOTO Takashi <yamamoto@midokura.com>
|
|
|
67
68
|
ZhijunWei <wzj334965317@outlook.com>
|
|
68
69
|
blue55 <yllan@fiberhome.com>
|
|
69
70
|
caoyuan <cao.yuan@99cloud.net>
|
|
71
|
+
elajkat <lajos.katona@est.tech>
|
|
70
72
|
ericxiett <eric_xiett@163.com>
|
|
71
73
|
gecong1973 <ge.cong@zte.com.cn>
|
|
72
74
|
jacky06 <zhang.min@99cloud.net>
|
|
@@ -1,12 +1,36 @@
|
|
|
1
1
|
CHANGES
|
|
2
2
|
=======
|
|
3
3
|
|
|
4
|
+
3.7.1
|
|
5
|
+
-----
|
|
6
|
+
|
|
7
|
+
* OVS Trunk: Add bridge\_name to external\_ids
|
|
8
|
+
* Do not add taps in trunk bridges to the dead vlan
|
|
9
|
+
* Update TOX\_CONSTRAINTS\_FILE for stable/2024.2
|
|
10
|
+
* Update .gitreview for stable/2024.2
|
|
11
|
+
|
|
12
|
+
3.7.0
|
|
13
|
+
-----
|
|
14
|
+
|
|
15
|
+
* Remove old excludes
|
|
16
|
+
|
|
17
|
+
3.6.0
|
|
18
|
+
-----
|
|
19
|
+
|
|
20
|
+
* reno: Update master for unmaintained/zed
|
|
21
|
+
* Update master for stable/2024.1
|
|
22
|
+
* reno: Update master for unmaintained/xena
|
|
23
|
+
* reno: Update master for unmaintained/wallaby
|
|
24
|
+
* reno: Update master for unmaintained/victoria
|
|
25
|
+
|
|
4
26
|
3.5.0
|
|
5
27
|
-----
|
|
6
28
|
|
|
7
29
|
* Drop wrong stacklevel
|
|
8
30
|
* Fix missing or unnecessary dependencies
|
|
9
31
|
* reno: Update master for unmaintained/yoga
|
|
32
|
+
* tox: Drop envdir
|
|
33
|
+
* Update python classifier in setup.cfg
|
|
10
34
|
|
|
11
35
|
3.4.0
|
|
12
36
|
-----
|
os_vif-3.7.1/PKG-INFO
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: os_vif
|
|
3
|
+
Version: 3.7.1
|
|
4
|
+
Summary: A library for plugging and unplugging virtual interfaces in OpenStack.
|
|
5
|
+
Home-page: https://docs.openstack.org/os-vif/latest/
|
|
6
|
+
Author: OpenStack
|
|
7
|
+
Author-email: openstack-discuss@lists.openstack.org
|
|
8
|
+
Classifier: Environment :: OpenStack
|
|
9
|
+
Classifier: Intended Audience :: Information Technology
|
|
10
|
+
Classifier: Intended Audience :: System Administrators
|
|
11
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
12
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
21
|
+
Requires-Python: >=3.8
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: pbr>=3.0.0
|
|
24
|
+
Requires-Dist: oslo.concurrency>=3.20.0
|
|
25
|
+
Requires-Dist: oslo.config>=5.1.0
|
|
26
|
+
Requires-Dist: oslo.log>=3.30.0
|
|
27
|
+
Requires-Dist: oslo.i18n>=3.15.3
|
|
28
|
+
Requires-Dist: oslo.privsep>=1.23.0
|
|
29
|
+
Requires-Dist: oslo.serialization>=2.20.0
|
|
30
|
+
Requires-Dist: oslo.utils>=2.0.0
|
|
31
|
+
Requires-Dist: oslo.versionedobjects>=1.28.0
|
|
32
|
+
Requires-Dist: ovsdbapp>=0.12.1
|
|
33
|
+
Requires-Dist: pyroute2>=0.5.2
|
|
34
|
+
Requires-Dist: stevedore>=1.20.0
|
|
35
|
+
Requires-Dist: debtcollector>=1.19.0
|
|
36
|
+
Dynamic: author
|
|
37
|
+
Dynamic: author-email
|
|
38
|
+
Dynamic: classifier
|
|
39
|
+
Dynamic: description
|
|
40
|
+
Dynamic: home-page
|
|
41
|
+
Dynamic: license-file
|
|
42
|
+
Dynamic: requires-dist
|
|
43
|
+
Dynamic: requires-python
|
|
44
|
+
Dynamic: summary
|
|
45
|
+
|
|
46
|
+
========================
|
|
47
|
+
Team and repository tags
|
|
48
|
+
========================
|
|
49
|
+
|
|
50
|
+
.. image:: https://governance.openstack.org/tc/badges/os-vif.svg
|
|
51
|
+
:target: https://governance.openstack.org/tc/reference/tags/index.html
|
|
52
|
+
|
|
53
|
+
.. Change things from this point on
|
|
54
|
+
|
|
55
|
+
======
|
|
56
|
+
os-vif
|
|
57
|
+
======
|
|
58
|
+
|
|
59
|
+
.. image:: https://img.shields.io/pypi/v/os-vif.svg
|
|
60
|
+
:target: https://pypi.org/project/os-vif/
|
|
61
|
+
:alt: Latest Version
|
|
62
|
+
|
|
63
|
+
.. image:: https://img.shields.io/pypi/dm/os-vif.svg
|
|
64
|
+
:target: https://pypi.org/project/os-vif/
|
|
65
|
+
:alt: Downloads
|
|
66
|
+
|
|
67
|
+
A library for plugging and unplugging virtual interfaces in OpenStack.
|
|
68
|
+
|
|
69
|
+
* License: Apache License, Version 2.0
|
|
70
|
+
* Documentation: https://docs.openstack.org/os-vif/latest/
|
|
71
|
+
* Source: https://opendev.org/openstack/os-vif
|
|
72
|
+
* Bugs: https://bugs.launchpad.net/os-vif
|
|
73
|
+
* Release Notes: https://docs.openstack.org/releasenotes/os-vif
|
|
74
|
+
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: os_vif
|
|
3
|
+
Version: 3.7.1
|
|
4
|
+
Summary: A library for plugging and unplugging virtual interfaces in OpenStack.
|
|
5
|
+
Home-page: https://docs.openstack.org/os-vif/latest/
|
|
6
|
+
Author: OpenStack
|
|
7
|
+
Author-email: openstack-discuss@lists.openstack.org
|
|
8
|
+
Classifier: Environment :: OpenStack
|
|
9
|
+
Classifier: Intended Audience :: Information Technology
|
|
10
|
+
Classifier: Intended Audience :: System Administrators
|
|
11
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
12
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
21
|
+
Requires-Python: >=3.8
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: pbr>=3.0.0
|
|
24
|
+
Requires-Dist: oslo.concurrency>=3.20.0
|
|
25
|
+
Requires-Dist: oslo.config>=5.1.0
|
|
26
|
+
Requires-Dist: oslo.log>=3.30.0
|
|
27
|
+
Requires-Dist: oslo.i18n>=3.15.3
|
|
28
|
+
Requires-Dist: oslo.privsep>=1.23.0
|
|
29
|
+
Requires-Dist: oslo.serialization>=2.20.0
|
|
30
|
+
Requires-Dist: oslo.utils>=2.0.0
|
|
31
|
+
Requires-Dist: oslo.versionedobjects>=1.28.0
|
|
32
|
+
Requires-Dist: ovsdbapp>=0.12.1
|
|
33
|
+
Requires-Dist: pyroute2>=0.5.2
|
|
34
|
+
Requires-Dist: stevedore>=1.20.0
|
|
35
|
+
Requires-Dist: debtcollector>=1.19.0
|
|
36
|
+
Dynamic: author
|
|
37
|
+
Dynamic: author-email
|
|
38
|
+
Dynamic: classifier
|
|
39
|
+
Dynamic: description
|
|
40
|
+
Dynamic: home-page
|
|
41
|
+
Dynamic: license-file
|
|
42
|
+
Dynamic: requires-dist
|
|
43
|
+
Dynamic: requires-python
|
|
44
|
+
Dynamic: summary
|
|
45
|
+
|
|
46
|
+
========================
|
|
47
|
+
Team and repository tags
|
|
48
|
+
========================
|
|
49
|
+
|
|
50
|
+
.. image:: https://governance.openstack.org/tc/badges/os-vif.svg
|
|
51
|
+
:target: https://governance.openstack.org/tc/reference/tags/index.html
|
|
52
|
+
|
|
53
|
+
.. Change things from this point on
|
|
54
|
+
|
|
55
|
+
======
|
|
56
|
+
os-vif
|
|
57
|
+
======
|
|
58
|
+
|
|
59
|
+
.. image:: https://img.shields.io/pypi/v/os-vif.svg
|
|
60
|
+
:target: https://pypi.org/project/os-vif/
|
|
61
|
+
:alt: Latest Version
|
|
62
|
+
|
|
63
|
+
.. image:: https://img.shields.io/pypi/dm/os-vif.svg
|
|
64
|
+
:target: https://pypi.org/project/os-vif/
|
|
65
|
+
:alt: Downloads
|
|
66
|
+
|
|
67
|
+
A library for plugging and unplugging virtual interfaces in OpenStack.
|
|
68
|
+
|
|
69
|
+
* License: Apache License, Version 2.0
|
|
70
|
+
* Documentation: https://docs.openstack.org/os-vif/latest/
|
|
71
|
+
* Source: https://opendev.org/openstack/os-vif
|
|
72
|
+
* Bugs: https://bugs.launchpad.net/os-vif
|
|
73
|
+
* Release Notes: https://docs.openstack.org/releasenotes/os-vif
|
|
74
|
+
|
|
@@ -122,6 +122,7 @@ releasenotes/notes/vhost-user-mtu-support-cbc7d02a6665fab1.yaml
|
|
|
122
122
|
releasenotes/notes/vhost-user-reconnect-fa4cbb731b787f71.yaml
|
|
123
123
|
releasenotes/source/2023.1.rst
|
|
124
124
|
releasenotes/source/2023.2.rst
|
|
125
|
+
releasenotes/source/2024.1.rst
|
|
125
126
|
releasenotes/source/conf.py
|
|
126
127
|
releasenotes/source/index.rst
|
|
127
128
|
releasenotes/source/newton.rst
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"git_version": "a19f532", "is_release": true}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
pbr>=3.0.0
|
|
2
2
|
oslo.concurrency>=3.20.0
|
|
3
3
|
oslo.config>=5.1.0
|
|
4
|
-
oslo.i18n>=3.15.3
|
|
5
4
|
oslo.log>=3.30.0
|
|
5
|
+
oslo.i18n>=3.15.3
|
|
6
6
|
oslo.privsep>=1.23.0
|
|
7
|
-
oslo.serialization
|
|
7
|
+
oslo.serialization>=2.20.0
|
|
8
8
|
oslo.utils>=2.0.0
|
|
9
9
|
oslo.versionedobjects>=1.28.0
|
|
10
10
|
ovsdbapp>=0.12.1
|
|
11
|
-
pbr!=2.1.0,>=2.0.0
|
|
12
|
-
stevedore>=1.20.0
|
|
13
|
-
|
|
14
|
-
[:(sys_platform!='win32')]
|
|
15
11
|
pyroute2>=0.5.2
|
|
12
|
+
stevedore>=1.20.0
|
|
13
|
+
debtcollector>=1.19.0
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Requirements lower bounds listed here are our best effort to keep them up to
|
|
2
2
|
# date but we do not test them so no guarantee of having them all correct. If
|
|
3
3
|
# you find any incorrect lower bounds, let us know or propose a fix.
|
|
4
|
-
pbr
|
|
4
|
+
pbr>=3.0.0 # Apache-2.0
|
|
5
5
|
oslo.concurrency>=3.20.0 # Apache-2.0
|
|
6
6
|
oslo.config>=5.1.0 # Apache-2.0
|
|
7
7
|
oslo.log>=3.30.0 # Apache-2.0
|
|
8
8
|
oslo.i18n>=3.15.3 # Apache-2.0
|
|
9
9
|
oslo.privsep>=1.23.0 # Apache-2.0
|
|
10
|
-
oslo.serialization
|
|
10
|
+
oslo.serialization>=2.20.0 # Apache-2.0
|
|
11
11
|
oslo.utils>=2.0.0 # Apache-2.0
|
|
12
12
|
oslo.versionedobjects>=1.28.0 # Apache-2.0
|
|
13
13
|
ovsdbapp>=0.12.1 # Apache-2.0
|
|
@@ -6,13 +6,12 @@ envlist = py3,pep8,docs,releasenotes,cover
|
|
|
6
6
|
usedevelop = True
|
|
7
7
|
setenv =
|
|
8
8
|
deps =
|
|
9
|
-
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/
|
|
9
|
+
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2024.2}
|
|
10
10
|
-r{toxinidir}/requirements.txt
|
|
11
11
|
-r{toxinidir}/test-requirements.txt
|
|
12
12
|
commands = stestr run --exclude-regex ".tests.functional" {posargs}
|
|
13
13
|
|
|
14
14
|
[testenv:functional]
|
|
15
|
-
envdir = {toxworkdir}/shared
|
|
16
15
|
setenv =
|
|
17
16
|
{[testenv]setenv}
|
|
18
17
|
commands =
|
|
@@ -20,12 +19,11 @@ commands =
|
|
|
20
19
|
|
|
21
20
|
[testenv:docs]
|
|
22
21
|
deps =
|
|
23
|
-
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/
|
|
22
|
+
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2024.2}
|
|
24
23
|
-r{toxinidir}/doc/requirements.txt
|
|
25
24
|
commands = sphinx-build -W -b html doc/source doc/build/html
|
|
26
25
|
|
|
27
26
|
[testenv:pdf-docs]
|
|
28
|
-
envdir = {toxworkdir}/docs
|
|
29
27
|
deps = {[testenv:docs]deps}
|
|
30
28
|
allowlist_externals =
|
|
31
29
|
rm
|
|
@@ -36,7 +34,6 @@ commands =
|
|
|
36
34
|
make -C doc/build/pdf
|
|
37
35
|
|
|
38
36
|
[testenv:releasenotes]
|
|
39
|
-
envdir = {toxworkdir}/docs
|
|
40
37
|
deps = {[testenv:docs]deps}
|
|
41
38
|
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
|
42
39
|
|
|
@@ -47,7 +44,6 @@ deps =
|
|
|
47
44
|
-r{toxinidir}/doc/requirements.txt
|
|
48
45
|
|
|
49
46
|
[testenv:cover]
|
|
50
|
-
envdir = {toxworkdir}/shared
|
|
51
47
|
setenv =
|
|
52
48
|
{[testenv]setenv}
|
|
53
49
|
PYTHON=coverage run --source os_vif,vif_plug_linux_bridge,vif_plug_ovs,vif_plug_noop --parallel-mode
|
|
@@ -59,7 +55,6 @@ commands =
|
|
|
59
55
|
coverage report
|
|
60
56
|
|
|
61
57
|
[testenv:pep8]
|
|
62
|
-
envdir = {toxworkdir}/shared
|
|
63
58
|
deps =
|
|
64
59
|
hacking>=3.0.1,<3.1.0
|
|
65
60
|
commands = flake8
|
|
@@ -37,6 +37,10 @@ from vif_plug_ovs.ovsdb import ovsdb_lib
|
|
|
37
37
|
LOG = logging.getLogger(__name__)
|
|
38
38
|
|
|
39
39
|
|
|
40
|
+
def is_trunk_bridge(bridge_name):
|
|
41
|
+
return bridge_name.startswith(constants.TRUNK_BR_PREFIX)
|
|
42
|
+
|
|
43
|
+
|
|
40
44
|
class OvsPlugin(plugin.PluginBase):
|
|
41
45
|
"""An OVS plugin that can setup VIFs in many ways
|
|
42
46
|
|
|
@@ -208,8 +212,12 @@ class OvsPlugin(plugin.PluginBase):
|
|
|
208
212
|
# bound the interface in the vif binding details so isolation
|
|
209
213
|
# can be enabled automatically in the future.
|
|
210
214
|
bridge = kwargs.pop('bridge', vif.network.bridge)
|
|
211
|
-
|
|
215
|
+
# See bug #2069543.
|
|
216
|
+
if (self._isolate_vif(vif_name, bridge) and
|
|
217
|
+
not is_trunk_bridge(bridge)):
|
|
212
218
|
kwargs['tag'] = constants.DEAD_VLAN
|
|
219
|
+
kwargs['vlan_mode'] = 'trunk'
|
|
220
|
+
kwargs['trunks'] = constants.DEAD_VLAN
|
|
213
221
|
qos_type = self._get_qos_type(vif)
|
|
214
222
|
if qos_type is not None:
|
|
215
223
|
# NOTE(sean-k-mooney): If the port is not already created
|
|
@@ -406,11 +414,8 @@ class OvsPlugin(plugin.PluginBase):
|
|
|
406
414
|
vif=vif,
|
|
407
415
|
err="This vif type is not supported by this plugin")
|
|
408
416
|
|
|
409
|
-
def _is_trunk_bridge(self, bridge_name):
|
|
410
|
-
return bridge_name.startswith(constants.TRUNK_BR_PREFIX)
|
|
411
|
-
|
|
412
417
|
def _delete_bridge_if_trunk(self, vif):
|
|
413
|
-
if
|
|
418
|
+
if is_trunk_bridge(vif.network.bridge):
|
|
414
419
|
self.ovsdb.delete_ovs_bridge(vif.network.bridge)
|
|
415
420
|
|
|
416
421
|
def _unplug_vhostuser(self, vif, instance_info):
|
|
@@ -17,6 +17,7 @@ from oslo_log import log as logging
|
|
|
17
17
|
|
|
18
18
|
from vif_plug_ovs import constants
|
|
19
19
|
from vif_plug_ovs import linux_net
|
|
20
|
+
from vif_plug_ovs import ovs
|
|
20
21
|
from vif_plug_ovs.ovsdb import api as ovsdb_api
|
|
21
22
|
|
|
22
23
|
|
|
@@ -145,7 +146,7 @@ class BaseOVS(object):
|
|
|
145
146
|
self, bridge, dev, iface_id, mac, instance_id,
|
|
146
147
|
mtu=None, interface_type=None, vhost_server_path=None,
|
|
147
148
|
tag=None, pf_pci=None, vf_num=None, set_ids=True, datapath_type=None,
|
|
148
|
-
qos_type=None
|
|
149
|
+
qos_type=None, vlan_mode=None, trunks=None
|
|
149
150
|
):
|
|
150
151
|
"""Create OVS port
|
|
151
152
|
|
|
@@ -173,6 +174,21 @@ class BaseOVS(object):
|
|
|
173
174
|
'iface-status': 'active',
|
|
174
175
|
'attached-mac': mac,
|
|
175
176
|
'vm-uuid': instance_id}
|
|
177
|
+
|
|
178
|
+
# Note(lajoskatona): Neutron fills external_ids for trunk, see:
|
|
179
|
+
# https://opendev.org/openstack/neutron/src/commit/
|
|
180
|
+
# 1bc4b526e9c743423069ab4cf6ef3883d5e48217/neutron/services/trunk/
|
|
181
|
+
# drivers/openvswitch/agent/ovsdb_handler.py#L418
|
|
182
|
+
# The following keys are added there: bridge_name, trunk_id and
|
|
183
|
+
# subport_ids. These values are used during the cleanup after the
|
|
184
|
+
# deletion of the trunk. It can happen that Neutron can't fill these
|
|
185
|
+
# fields.
|
|
186
|
+
# In os-vif when the plug happens we can use the same transaction to
|
|
187
|
+
# add bridge_name to external_ids in case of it is a trunk.
|
|
188
|
+
# By this Neutron can do the cleanup of trunk related interfaces.
|
|
189
|
+
if ovs.is_trunk_bridge(bridge):
|
|
190
|
+
external_ids['bridge_name'] = bridge
|
|
191
|
+
|
|
176
192
|
col_values = [('external_ids', external_ids)] if set_ids else []
|
|
177
193
|
if interface_type:
|
|
178
194
|
col_values.append(('type', interface_type))
|
|
@@ -210,6 +226,11 @@ class BaseOVS(object):
|
|
|
210
226
|
txn.add(self.ovsdb.add_port(bridge, dev))
|
|
211
227
|
if tag:
|
|
212
228
|
txn.add(self.ovsdb.db_set('Port', dev, ('tag', tag)))
|
|
229
|
+
if vlan_mode:
|
|
230
|
+
txn.add(self.ovsdb.db_set('Port', dev,
|
|
231
|
+
('vlan_mode', vlan_mode)))
|
|
232
|
+
if trunks:
|
|
233
|
+
txn.add(self.ovsdb.db_set('Port', dev, ('trunks', trunks)))
|
|
213
234
|
if qid:
|
|
214
235
|
txn.add(self.ovsdb.db_set('Port', dev, ('qos', qid)))
|
|
215
236
|
if col_values:
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
|
|
13
13
|
import testscenarios
|
|
14
14
|
import time
|
|
15
|
+
from unittest import mock
|
|
16
|
+
import uuid
|
|
15
17
|
|
|
16
18
|
from oslo_concurrency import processutils
|
|
17
19
|
from oslo_config import cfg
|
|
@@ -183,3 +185,98 @@ class TestOVSPlugin(testscenarios.WithScenarios,
|
|
|
183
185
|
self._check_parameter(
|
|
184
186
|
'QoS', str(qos_uuid), 'type', None
|
|
185
187
|
)
|
|
188
|
+
|
|
189
|
+
def test_plug_br_int_isolate_vif_dead_vlan(self):
|
|
190
|
+
with mock.patch.object(self.plugin.config, 'isolate_vif', True):
|
|
191
|
+
network = objects.network.Network(
|
|
192
|
+
id='5449523c-3a08-11ef-86d6-17149687aa4d',
|
|
193
|
+
bridge='br-5449523c',
|
|
194
|
+
subnets=self.subnets,
|
|
195
|
+
vlan=99)
|
|
196
|
+
vif = objects.vif.VIFOpenVSwitch(
|
|
197
|
+
id='85cb9bc6-3a08-11ef-b2d4-9b7c38edd677',
|
|
198
|
+
address='ca:fe:de:ad:be:ef',
|
|
199
|
+
network=network,
|
|
200
|
+
port_profile=self.profile_ovs_system,
|
|
201
|
+
vif_name="port-85cb9bc6")
|
|
202
|
+
self.plugin.plug(vif, self.instance)
|
|
203
|
+
self.addCleanup(self._del_bridge, 'br-5449523c')
|
|
204
|
+
self._check_parameter('Port', vif.vif_name, 'tag', 4095)
|
|
205
|
+
|
|
206
|
+
def test_plug_trunk_bridge_ignores_isolate_vif(self):
|
|
207
|
+
with mock.patch.object(self.plugin.config, 'isolate_vif', True):
|
|
208
|
+
network = objects.network.Network(
|
|
209
|
+
id='ef98b384-3a0f-11ef-9009-47345fca266f',
|
|
210
|
+
bridge='tbr-ef98b384',
|
|
211
|
+
subnets=self.subnets,
|
|
212
|
+
vlan=99)
|
|
213
|
+
vif = objects.vif.VIFOpenVSwitch(
|
|
214
|
+
id='631f52bc-3a07-11ef-a006-1319ef9d6edd',
|
|
215
|
+
address='ca:fe:de:ad:be:ef',
|
|
216
|
+
network=network,
|
|
217
|
+
port_profile=self.profile_ovs_system,
|
|
218
|
+
vif_name='port-631f52bc')
|
|
219
|
+
self.plugin.plug(vif, self.instance)
|
|
220
|
+
self.addCleanup(self._del_bridge, 'tbr-ef98b384')
|
|
221
|
+
self._check_parameter('Port', vif.vif_name, 'tag', [])
|
|
222
|
+
|
|
223
|
+
def test_plug_trunk_bridge_fills_bridge_name(self):
|
|
224
|
+
mac = 'ca:fe:de:ad:be:ef'
|
|
225
|
+
iface_id = str(uuid.uuid4())
|
|
226
|
+
vif_name = 'port-%s' % iface_id[:8]
|
|
227
|
+
trunk_id = str(uuid.uuid4())
|
|
228
|
+
bridge_name = 'tbr-%s' % trunk_id[:8]
|
|
229
|
+
|
|
230
|
+
network = objects.network.Network(
|
|
231
|
+
id=trunk_id,
|
|
232
|
+
bridge=bridge_name,
|
|
233
|
+
subnets=self.subnets,
|
|
234
|
+
vlan=99)
|
|
235
|
+
vif = objects.vif.VIFOpenVSwitch(
|
|
236
|
+
id=iface_id,
|
|
237
|
+
address=mac,
|
|
238
|
+
network=network,
|
|
239
|
+
port_profile=self.profile_ovs_system,
|
|
240
|
+
vif_name=vif_name)
|
|
241
|
+
self.plugin.plug(vif, self.instance)
|
|
242
|
+
self.addCleanup(self._del_bridge, bridge_name)
|
|
243
|
+
expected_external_ids = {
|
|
244
|
+
'attached-mac': mac,
|
|
245
|
+
'bridge_name': bridge_name,
|
|
246
|
+
'iface-id': self.profile_ovs.interface_id,
|
|
247
|
+
'iface-status': 'active',
|
|
248
|
+
'vm-uuid': self.instance.uuid,
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
self._check_parameter('Interface', vif.vif_name,
|
|
252
|
+
'external_ids', expected_external_ids)
|
|
253
|
+
|
|
254
|
+
def test_plug_non_trunk_leave_bridge_name_empty(self):
|
|
255
|
+
mac = 'ca:fe:de:ad:be:ef'
|
|
256
|
+
iface_id = str(uuid.uuid4())
|
|
257
|
+
vif_name = 'port-%s' % iface_id[:8]
|
|
258
|
+
bridge_name = 'br-something'
|
|
259
|
+
|
|
260
|
+
network = objects.network.Network(
|
|
261
|
+
id=str(uuid.uuid4()),
|
|
262
|
+
bridge=bridge_name,
|
|
263
|
+
subnets=self.subnets,
|
|
264
|
+
vlan=99)
|
|
265
|
+
vif = objects.vif.VIFOpenVSwitch(
|
|
266
|
+
id=iface_id,
|
|
267
|
+
address=mac,
|
|
268
|
+
network=network,
|
|
269
|
+
port_profile=self.profile_ovs_system,
|
|
270
|
+
vif_name=vif_name)
|
|
271
|
+
self.plugin.plug(vif, self.instance)
|
|
272
|
+
self.addCleanup(self._del_bridge, bridge_name)
|
|
273
|
+
# bridge_name is filled only in case of trunk plug
|
|
274
|
+
expected_external_ids = {
|
|
275
|
+
'attached-mac': mac,
|
|
276
|
+
'iface-id': self.profile_ovs.interface_id,
|
|
277
|
+
'iface-status': 'active',
|
|
278
|
+
'vm-uuid': self.instance.uuid,
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
self._check_parameter('Interface', vif.vif_name,
|
|
282
|
+
'external_ids', expected_external_ids)
|
|
@@ -99,19 +99,22 @@ class BaseOVSTest(testtools.TestCase):
|
|
|
99
99
|
)
|
|
100
100
|
mock_set_mtu_request.assert_not_called()
|
|
101
101
|
|
|
102
|
-
def
|
|
102
|
+
def _test_create_ovs_vif_port(self, bridge_name='bridge',
|
|
103
|
+
check_br_name=False):
|
|
103
104
|
iface_id = 'iface_id'
|
|
104
105
|
mac = 'ca:fe:ca:fe:ca:fe'
|
|
105
106
|
instance_id = uuidutils.generate_uuid()
|
|
106
107
|
interface_type = constants.OVS_VHOSTUSER_INTERFACE_TYPE
|
|
107
108
|
vhost_server_path = '/fake/path'
|
|
108
109
|
device = 'device'
|
|
109
|
-
bridge =
|
|
110
|
+
bridge = bridge_name
|
|
110
111
|
mtu = 1500
|
|
111
112
|
external_ids = {'iface-id': iface_id,
|
|
112
113
|
'iface-status': 'active',
|
|
113
114
|
'attached-mac': mac,
|
|
114
115
|
'vm-uuid': instance_id}
|
|
116
|
+
if check_br_name:
|
|
117
|
+
external_ids['bridge_name'] = bridge_name
|
|
115
118
|
values = [('external_ids', external_ids),
|
|
116
119
|
('type', interface_type),
|
|
117
120
|
('options', {'vhost-server-path': vhost_server_path})
|
|
@@ -138,6 +141,13 @@ class BaseOVSTest(testtools.TestCase):
|
|
|
138
141
|
]
|
|
139
142
|
)
|
|
140
143
|
|
|
144
|
+
def test_create_ovs_vif_port(self):
|
|
145
|
+
self._test_create_ovs_vif_port()
|
|
146
|
+
|
|
147
|
+
def test_create_ovs_vif_port_for_trunk(self):
|
|
148
|
+
self._test_create_ovs_vif_port(bridge_name='tbr-12345',
|
|
149
|
+
check_br_name=True)
|
|
150
|
+
|
|
141
151
|
def test_create_ovs_vif_port_type_dpdk(self):
|
|
142
152
|
iface_id = 'iface_id'
|
|
143
153
|
mac = 'ca:fe:ca:fe:ca:fe'
|
|
@@ -219,7 +219,10 @@ class PluginTest(testtools.TestCase):
|
|
|
219
219
|
self.vif_ovs.address, self.instance.uuid,
|
|
220
220
|
mtu=plugin.config.network_device_mtu,
|
|
221
221
|
interface_type=constants.OVS_VHOSTUSER_INTERFACE_TYPE,
|
|
222
|
-
tag=constants.DEAD_VLAN
|
|
222
|
+
tag=constants.DEAD_VLAN,
|
|
223
|
+
vlan_mode='trunk',
|
|
224
|
+
trunks=constants.DEAD_VLAN
|
|
225
|
+
)
|
|
223
226
|
|
|
224
227
|
@mock.patch.object(ovsdb_lib.BaseOVS, 'create_ovs_vif_port')
|
|
225
228
|
@mock.patch.object(ovsdb_lib.BaseOVS, 'port_exists')
|