os-vif 4.0.0__tar.gz → 4.2.0__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.
Potentially problematic release.
This version of os-vif might be problematic. Click here for more details.
- os_vif-4.2.0/.pre-commit-config.yaml +22 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/.zuul.yaml +8 -40
- {os_vif-4.0.0 → os_vif-4.2.0}/AUTHORS +2 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/ChangeLog +18 -0
- os_vif-4.2.0/PKG-INFO +65 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/internal/ip/linux/test_impl_pyroute2.py +26 -17
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/test_os_vif.py +14 -8
- os_vif-4.2.0/os_vif.egg-info/PKG-INFO +65 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif.egg-info/SOURCES.txt +4 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif.egg-info/entry_points.txt +0 -1
- os_vif-4.2.0/os_vif.egg-info/pbr.json +1 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif.egg-info/requires.txt +4 -6
- os_vif-4.2.0/pyproject.toml +3 -0
- os_vif-4.2.0/releasenotes/notes/deprecate-linuxbridge-support-d278d4bbdff8e8bc.yaml +7 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/fix-stevedore-entrypoints-8002ec7a5166c977.yaml +1 -1
- os_vif-4.2.0/releasenotes/source/2025.1.rst +6 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/index.rst +1 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/tox.ini +6 -2
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_linux_bridge/linux_bridge.py +9 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/ovs.py +12 -7
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/ovsdb/ovsdb_lib.py +22 -1
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/tests/functional/test_plugin.py +97 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/tests/unit/ovsdb/test_ovsdb_lib.py +12 -2
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/tests/unit/test_plugin.py +4 -1
- os_vif-4.0.0/PKG-INFO +0 -53
- os_vif-4.0.0/os_vif.egg-info/PKG-INFO +0 -53
- os_vif-4.0.0/os_vif.egg-info/pbr.json +0 -1
- {os_vif-4.0.0 → os_vif-4.2.0}/.coveragerc +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/.mailmap +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/.stestr.conf +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/CONTRIBUTING.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/HACKING.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/LICENSE +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/README.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/bindep.txt +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/doc/requirements.txt +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/doc/source/conf.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/doc/source/contributor/contributing.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/doc/source/index.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/doc/source/reference/glossary.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/doc/source/user/host-info.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/doc/source/user/plugins/linux-bridge.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/doc/source/user/plugins/noop.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/doc/source/user/plugins/ovs.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/doc/source/user/usage.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/doc/source/user/vif-types.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/exception.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/i18n.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/internal/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/internal/ip/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/internal/ip/api.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/internal/ip/ip_command.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/internal/ip/linux/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/internal/ip/linux/impl_pyroute2.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/objects/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/objects/base.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/objects/fields.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/objects/fixed_ip.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/objects/host_info.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/objects/instance_info.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/objects/network.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/objects/route.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/objects/subnet.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/objects/vif.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/opts.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/plugin.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/functional/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/functional/base.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/functional/internal/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/functional/internal/command/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/functional/internal/command/ip/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/functional/internal/command/ip/test_impl_pyroute2.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/functional/privsep.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/base.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/internal/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/internal/ip/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/internal/ip/linux/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/internal/ip/test_api.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/test_base.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/test_exception.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/test_host_info.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/test_objects.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/tests/unit/test_vif.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/utils.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif/version.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif.egg-info/dependency_links.txt +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif.egg-info/not-zip-safe +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/os_vif.egg-info/top_level.txt +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/playbooks/openstack-tox-functional-ovs-with-sudo/Debian.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/playbooks/openstack-tox-functional-ovs-with-sudo/Gentoo.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/playbooks/openstack-tox-functional-ovs-with-sudo/RedHat.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/playbooks/openstack-tox-functional-ovs-with-sudo/Suse.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/playbooks/openstack-tox-functional-ovs-with-sudo/pre.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/OVSVif-hybrid-unplug-f37bf57bc8e913de.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/add-abstract-ovsdb-api-8f04df58d4ed5b73.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/add-fast-path-vhostuser-support-fe87e558326909b6.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/add-no-op-plugin-763a6703e7328a24.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/add-ovs-representor-portprofile-5f8290e5a40bf0a4.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/add-ovs-vhostuser-support-2ba8de51c1f3a244.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/add-ovsdb-native-322fffb49c91503d.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/always-plug-vifs-for-ovs-1d033fc49a9c6c4e.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/brctl-removal-a5b0e69b865afa57.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/bug-1892132-812e6d5ce0588ebb.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/contextlib-and-nested-with-statements-2747a9ebb9a5bfd7.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/default-qos-policy-for-ovs-26f8806046a59c82.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/default-to-native-ovsdb-driver-112fb5adf6e19a30.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/deprecate-windows-support-49f5ca1b1a1f4d66.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/do-not-force-mac-ageing-c6e8d750130c5740.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/drop-py36-support-0e9b07073f6ad73f.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/drop-python2-support-7a4bc7d31253c1e5.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/ensure-ovs-bridge-a0c1b51f469c92d0.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/extend-vhostuser-object-fada14a1457d4e56.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/fix-broken-dataplane-on-nova-restart-with-isolate_vif-71617a41741b33e8.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/fix-ovs-plugin-describe-049750609559f1ba.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/fix-vif-openvswitch-fa0d19be9dd668e1.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/generic-datapath-offloads-41cabb6842b41533.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/initial-release-2c71d6bbf55f763b.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/oslo-config-opts-entrypoints-e83f907b686d774a.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/per-port-bridge-c6a50179a0256de3.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/port-profile-info-linux-bridge-4800f5a0b7328615.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/port-profile-info-ovs-63b46a3eafc11de2.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/prevent-lb-reply-arp-6459133bfb056069.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/remove-py38-e0701b3363079bbf.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/remove-windows-23df1c587d505d72.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/remove_iptools_implementation-2eb866573a680e61.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/revert-always-plug-port-for-ovs-hybrid-plug-false-dc015985cbc5443b.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/vhost-user-mtu-support-cbc7d02a6665fab1.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/vhost-user-reconnect-fa4cbb731b787f71.yaml +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/2023.1.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/2023.2.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/2024.1.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/2024.2.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/_static/.placeholder +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/_templates/.placeholder +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/conf.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/newton.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/ocata.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/pike.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/queens.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/rocky.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/stein.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/train.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/unreleased.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/ussuri.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/victoria.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/wallaby.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/xena.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/yoga.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/source/zed.rst +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/requirements.txt +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/setup.cfg +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/setup.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/test-requirements.txt +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_linux_bridge/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_linux_bridge/constants.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_linux_bridge/iptables.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_linux_bridge/linux_net.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_linux_bridge/privsep.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_linux_bridge/tests/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_linux_bridge/tests/unit/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_linux_bridge/tests/unit/test_linux_net.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_linux_bridge/tests/unit/test_plugin.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_noop/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_noop/noop.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_noop/tests/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_noop/tests/unit/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_noop/tests/unit/test_plugin.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/constants.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/exception.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/linux_net.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/ovsdb/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/ovsdb/api.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/ovsdb/impl_idl.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/ovsdb/impl_vsctl.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/privsep.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/tests/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/tests/functional/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/tests/functional/base.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/tests/functional/ovsdb/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/tests/functional/ovsdb/test_ovsdb_lib.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/tests/unit/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/tests/unit/ovsdb/__init__.py +0 -0
- {os_vif-4.0.0 → os_vif-4.2.0}/vif_plug_ovs/tests/unit/test_linux_net.py +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
repos:
|
|
3
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
4
|
+
rev: v5.0.0
|
|
5
|
+
hooks:
|
|
6
|
+
- id: trailing-whitespace
|
|
7
|
+
- id: mixed-line-ending
|
|
8
|
+
args: ['--fix', 'lf']
|
|
9
|
+
exclude: '.*\.(svg)$'
|
|
10
|
+
- id: check-byte-order-marker
|
|
11
|
+
- id: check-executables-have-shebangs
|
|
12
|
+
- id: check-merge-conflict
|
|
13
|
+
- id: debug-statements
|
|
14
|
+
- id: check-yaml
|
|
15
|
+
files: .*\.(yaml|yml)$
|
|
16
|
+
exclude: '^zuul.d/.*$'
|
|
17
|
+
- repo: https://opendev.org/openstack/hacking
|
|
18
|
+
rev: 7.0.0
|
|
19
|
+
hooks:
|
|
20
|
+
- id: hacking
|
|
21
|
+
additional_dependencies: []
|
|
22
|
+
exclude: '^(doc|releasenotes)/.*$'
|
|
@@ -120,44 +120,14 @@
|
|
|
120
120
|
os_vif_ovs:
|
|
121
121
|
per_port_bridge: true
|
|
122
122
|
|
|
123
|
+
# TODO(gmann): As per the 2025.1 testing runtime, we need to run at least
|
|
124
|
+
# one job on Focal. This job can be removed in the nexy cycle (2025.2)
|
|
123
125
|
- job:
|
|
124
|
-
name: os-vif-
|
|
125
|
-
parent: os-vif-tempest-base
|
|
126
|
+
name: os-vif-ovn-ubuntu-jammy
|
|
126
127
|
description: |
|
|
127
|
-
os-vif
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
# Disable OVN services
|
|
131
|
-
br-ex-tcpdump: false
|
|
132
|
-
br-int-flows: false
|
|
133
|
-
ovn-controller: false
|
|
134
|
-
ovn-northd: false
|
|
135
|
-
ovs-vswitchd: false
|
|
136
|
-
ovsdb-server: false
|
|
137
|
-
q-ovn-metadata-agent: false
|
|
138
|
-
# Neutron services
|
|
139
|
-
q-agt: true
|
|
140
|
-
q-dhcp: true
|
|
141
|
-
q-l3: true
|
|
142
|
-
q-meta: true
|
|
143
|
-
q-metering: true
|
|
144
|
-
devstack_localrc:
|
|
145
|
-
Q_AGENT: linuxbridge
|
|
146
|
-
Q_ML2_PLUGIN_MECHANISM_DRIVERS: linuxbridge
|
|
147
|
-
Q_ML2_TENANT_NETWORK_TYPE: vxlan
|
|
148
|
-
devstack_local_conf:
|
|
149
|
-
post-config:
|
|
150
|
-
"/$NEUTRON_CORE_PLUGIN_CONF":
|
|
151
|
-
experimental:
|
|
152
|
-
linuxbridge: true
|
|
153
|
-
ml2:
|
|
154
|
-
type_drivers: flat,vlan,local,vxlan
|
|
155
|
-
ml2_type_vlan:
|
|
156
|
-
network_vlan_ranges: foo:1:10
|
|
157
|
-
agent:
|
|
158
|
-
tunnel_types: vxlan
|
|
159
|
-
securitygroup:
|
|
160
|
-
firewall_driver: iptables
|
|
128
|
+
os-vif ovn job (tests hybrid-plug=false) testing on Ubuntu Focal(20.04)
|
|
129
|
+
parent: os-vif-ovn
|
|
130
|
+
nodeset: openstack-single-node-jammy
|
|
161
131
|
|
|
162
132
|
- project:
|
|
163
133
|
templates:
|
|
@@ -168,15 +138,13 @@
|
|
|
168
138
|
- openstack-cover-jobs
|
|
169
139
|
check:
|
|
170
140
|
jobs:
|
|
171
|
-
- kuryr-kubernetes-tempest:
|
|
172
|
-
voting: false
|
|
173
141
|
- openstack-tox-functional-ovs-with-sudo
|
|
174
142
|
- os-vif-ovn
|
|
143
|
+
- os-vif-ovn-ubuntu-jammy
|
|
175
144
|
- os-vif-ovs-iptables
|
|
176
|
-
- os-vif-linuxbridge
|
|
177
145
|
gate:
|
|
178
146
|
jobs:
|
|
179
147
|
- openstack-tox-functional-ovs-with-sudo
|
|
180
148
|
- os-vif-ovn
|
|
149
|
+
- os-vif-ovn-ubuntu-jammy
|
|
181
150
|
- os-vif-ovs-iptables
|
|
182
|
-
- os-vif-linuxbridge
|
|
@@ -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>
|
|
@@ -68,6 +69,7 @@ YAMAMOTO Takashi <yamamoto@midokura.com>
|
|
|
68
69
|
ZhijunWei <wzj334965317@outlook.com>
|
|
69
70
|
blue55 <yllan@fiberhome.com>
|
|
70
71
|
caoyuan <cao.yuan@99cloud.net>
|
|
72
|
+
elajkat <lajos.katona@est.tech>
|
|
71
73
|
ericxiett <eric_xiett@163.com>
|
|
72
74
|
gecong1973 <ge.cong@zte.com.cn>
|
|
73
75
|
jacky06 <zhang.min@99cloud.net>
|
|
@@ -1,12 +1,30 @@
|
|
|
1
1
|
CHANGES
|
|
2
2
|
=======
|
|
3
3
|
|
|
4
|
+
4.2.0
|
|
5
|
+
-----
|
|
6
|
+
|
|
7
|
+
* OVS Trunk: Add bridge\_name to external\_ids
|
|
8
|
+
* add pyproject.toml to support pip 23.1
|
|
9
|
+
* Adapt unit tests to pyroute2 0.9.1
|
|
10
|
+
* Update master for stable/2025.1
|
|
11
|
+
|
|
12
|
+
4.1.0
|
|
13
|
+
-----
|
|
14
|
+
|
|
15
|
+
* Update gate jobs as per the 2025.1 cycle testing runtime
|
|
16
|
+
* Deprecate linux bridge plugin
|
|
17
|
+
* Drop kuryr-kubernetes-tempest
|
|
18
|
+
* Remove os-vif-linuxbridge
|
|
19
|
+
* Do not add taps in trunk bridges to the dead vlan
|
|
20
|
+
|
|
4
21
|
4.0.0
|
|
5
22
|
-----
|
|
6
23
|
|
|
7
24
|
* Clean up Windows support
|
|
8
25
|
* address test stablity under load
|
|
9
26
|
* reno: Update master for unmaintained/2023.1
|
|
27
|
+
* Integrate pre-commit
|
|
10
28
|
* Remove Python 3.8 support
|
|
11
29
|
* Update master for stable/2024.2
|
|
12
30
|
|
os_vif-4.2.0/PKG-INFO
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: os_vif
|
|
3
|
+
Version: 4.2.0
|
|
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.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
21
|
+
Requires-Python: >=3.9
|
|
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
|
+
|
|
37
|
+
========================
|
|
38
|
+
Team and repository tags
|
|
39
|
+
========================
|
|
40
|
+
|
|
41
|
+
.. image:: https://governance.openstack.org/tc/badges/os-vif.svg
|
|
42
|
+
:target: https://governance.openstack.org/tc/reference/tags/index.html
|
|
43
|
+
|
|
44
|
+
.. Change things from this point on
|
|
45
|
+
|
|
46
|
+
======
|
|
47
|
+
os-vif
|
|
48
|
+
======
|
|
49
|
+
|
|
50
|
+
.. image:: https://img.shields.io/pypi/v/os-vif.svg
|
|
51
|
+
:target: https://pypi.org/project/os-vif/
|
|
52
|
+
:alt: Latest Version
|
|
53
|
+
|
|
54
|
+
.. image:: https://img.shields.io/pypi/dm/os-vif.svg
|
|
55
|
+
:target: https://pypi.org/project/os-vif/
|
|
56
|
+
:alt: Downloads
|
|
57
|
+
|
|
58
|
+
A library for plugging and unplugging virtual interfaces in OpenStack.
|
|
59
|
+
|
|
60
|
+
* License: Apache License, Version 2.0
|
|
61
|
+
* Documentation: https://docs.openstack.org/os-vif/latest/
|
|
62
|
+
* Source: https://opendev.org/openstack/os-vif
|
|
63
|
+
* Bugs: https://bugs.launchpad.net/os-vif
|
|
64
|
+
* Release Notes: https://docs.openstack.org/releasenotes/os-vif
|
|
65
|
+
|
|
@@ -38,12 +38,14 @@ class TestIpCommand(base.TestCase):
|
|
|
38
38
|
def setUp(self):
|
|
39
39
|
super(TestIpCommand, self).setUp()
|
|
40
40
|
self.ip = impl_pyroute2.PyRoute2()
|
|
41
|
-
self.ip_link_p = mock.patch.object(iproute.IPRoute, 'link'
|
|
41
|
+
self.ip_link_p = mock.patch.object(iproute.IPRoute, 'link',
|
|
42
|
+
create=True)
|
|
42
43
|
self.ip_link = self.ip_link_p.start()
|
|
43
44
|
|
|
44
45
|
def test_set(self):
|
|
45
|
-
with mock.patch.object(
|
|
46
|
-
|
|
46
|
+
with mock.patch.object(
|
|
47
|
+
iproute.IPRoute, 'link_lookup', return_value=[1],
|
|
48
|
+
create=True) as mock_link_lookup:
|
|
47
49
|
self.ip_link.return_value = [{'flags': 0x4000}]
|
|
48
50
|
self.ip.set(self.DEVICE, state=self.UP, mtu=self.MTU,
|
|
49
51
|
address=self.MAC, promisc=True)
|
|
@@ -57,8 +59,9 @@ class TestIpCommand(base.TestCase):
|
|
|
57
59
|
self.ip_link.assert_has_calls(calls)
|
|
58
60
|
|
|
59
61
|
def test_set_exit_code(self):
|
|
60
|
-
with mock.patch.object(
|
|
61
|
-
|
|
62
|
+
with mock.patch.object(
|
|
63
|
+
iproute.IPRoute, 'link_lookup', return_value=[1],
|
|
64
|
+
create=True) as mock_link_lookup:
|
|
62
65
|
self.ip_link.side_effect = ipexc.NetlinkError(self.ERROR_CODE,
|
|
63
66
|
msg="Error message")
|
|
64
67
|
|
|
@@ -70,8 +73,9 @@ class TestIpCommand(base.TestCase):
|
|
|
70
73
|
check_exit_code=[self.OTHER_ERROR_CODE])
|
|
71
74
|
|
|
72
75
|
def test_set_no_interface_found(self):
|
|
73
|
-
with mock.patch.object(
|
|
74
|
-
|
|
76
|
+
with mock.patch.object(
|
|
77
|
+
iproute.IPRoute, 'link_lookup', return_value=[],
|
|
78
|
+
create=True) as mock_link_lookup:
|
|
75
79
|
self.assertRaises(exception.NetworkInterfaceNotFound, self.ip.set,
|
|
76
80
|
self.DEVICE)
|
|
77
81
|
mock_link_lookup.assert_called_once_with(ifname=self.DEVICE)
|
|
@@ -83,8 +87,9 @@ class TestIpCommand(base.TestCase):
|
|
|
83
87
|
'add', ifname=self.DEVICE, kind=self.TYPE_VETH, peer='peer')
|
|
84
88
|
|
|
85
89
|
def test_add_vlan(self):
|
|
86
|
-
with mock.patch.object(
|
|
87
|
-
|
|
90
|
+
with mock.patch.object(
|
|
91
|
+
iproute.IPRoute, 'link_lookup', return_value=[1],
|
|
92
|
+
create=True) as mock_link_lookup:
|
|
88
93
|
self.ip.add(self.DEVICE, self.TYPE_VLAN, link=self.LINK,
|
|
89
94
|
vlan_id=self.VLAN_ID)
|
|
90
95
|
mock_link_lookup.assert_called_once_with(ifname=self.LINK)
|
|
@@ -114,8 +119,9 @@ class TestIpCommand(base.TestCase):
|
|
|
114
119
|
self.ip_link.assert_called_once_with('add', **args)
|
|
115
120
|
|
|
116
121
|
def test_add_vlan_no_interface_found(self):
|
|
117
|
-
with mock.patch.object(
|
|
118
|
-
|
|
122
|
+
with mock.patch.object(
|
|
123
|
+
iproute.IPRoute, 'link_lookup', return_value=[],
|
|
124
|
+
create=True) as mock_link_lookup:
|
|
119
125
|
self.assertRaises(exception.NetworkInterfaceNotFound, self.ip.add,
|
|
120
126
|
self.DEVICE, self.TYPE_VLAN, link=self.LINK)
|
|
121
127
|
mock_link_lookup.assert_called_once_with(ifname=self.LINK)
|
|
@@ -141,22 +147,25 @@ class TestIpCommand(base.TestCase):
|
|
|
141
147
|
check_exit_code=[self.OTHER_ERROR_CODE])
|
|
142
148
|
|
|
143
149
|
def test_delete(self):
|
|
144
|
-
with mock.patch.object(
|
|
145
|
-
|
|
150
|
+
with mock.patch.object(
|
|
151
|
+
iproute.IPRoute, 'link_lookup', return_value=[1],
|
|
152
|
+
create=True) as mock_link_lookup:
|
|
146
153
|
self.ip.delete(self.DEVICE)
|
|
147
154
|
mock_link_lookup.assert_called_once_with(ifname=self.DEVICE)
|
|
148
155
|
self.ip_link.assert_called_once_with('del', index=1)
|
|
149
156
|
|
|
150
157
|
def test_delete_no_interface_found(self):
|
|
151
|
-
with mock.patch.object(
|
|
152
|
-
|
|
158
|
+
with mock.patch.object(
|
|
159
|
+
iproute.IPRoute, 'link_lookup', return_value=[],
|
|
160
|
+
create=True) as mock_link_lookup:
|
|
153
161
|
self.assertRaises(exception.NetworkInterfaceNotFound,
|
|
154
162
|
self.ip.delete, self.DEVICE)
|
|
155
163
|
mock_link_lookup.assert_called_once_with(ifname=self.DEVICE)
|
|
156
164
|
|
|
157
165
|
def test_delete_exit_code(self):
|
|
158
|
-
with mock.patch.object(
|
|
159
|
-
|
|
166
|
+
with mock.patch.object(
|
|
167
|
+
iproute.IPRoute, 'link_lookup', return_value=[1],
|
|
168
|
+
create=True) as mock_link_lookup:
|
|
160
169
|
self.ip_link.side_effect = ipexc.NetlinkError(self.ERROR_CODE,
|
|
161
170
|
msg="Error message")
|
|
162
171
|
|
|
@@ -105,10 +105,13 @@ class TestOSVIF(base.TestCase):
|
|
|
105
105
|
entry_point="os-vif",
|
|
106
106
|
plugin=DemoPlugin,
|
|
107
107
|
obj=None)
|
|
108
|
-
with mock.patch(
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
with mock.patch(
|
|
109
|
+
'stevedore.extension.ExtensionManager.names',
|
|
110
|
+
return_value=['foobar'],
|
|
111
|
+
), mock.patch(
|
|
112
|
+
'stevedore.extension.ExtensionManager.__getitem__',
|
|
113
|
+
return_value=plg,
|
|
114
|
+
):
|
|
112
115
|
os_vif.initialize()
|
|
113
116
|
info = objects.instance_info.InstanceInfo()
|
|
114
117
|
vif = objects.vif.VIFBridge(
|
|
@@ -123,10 +126,13 @@ class TestOSVIF(base.TestCase):
|
|
|
123
126
|
entry_point="os-vif",
|
|
124
127
|
plugin=DemoPlugin,
|
|
125
128
|
obj=None)
|
|
126
|
-
with mock.patch(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
129
|
+
with mock.patch(
|
|
130
|
+
'stevedore.extension.ExtensionManager.names',
|
|
131
|
+
return_value=['foobar']
|
|
132
|
+
), mock.patch(
|
|
133
|
+
'stevedore.extension.ExtensionManager.__getitem__',
|
|
134
|
+
return_value=plg,
|
|
135
|
+
):
|
|
130
136
|
os_vif.initialize()
|
|
131
137
|
info = objects.instance_info.InstanceInfo()
|
|
132
138
|
vif = objects.vif.VIFBridge(
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: os_vif
|
|
3
|
+
Version: 4.2.0
|
|
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.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
21
|
+
Requires-Python: >=3.9
|
|
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
|
+
|
|
37
|
+
========================
|
|
38
|
+
Team and repository tags
|
|
39
|
+
========================
|
|
40
|
+
|
|
41
|
+
.. image:: https://governance.openstack.org/tc/badges/os-vif.svg
|
|
42
|
+
:target: https://governance.openstack.org/tc/reference/tags/index.html
|
|
43
|
+
|
|
44
|
+
.. Change things from this point on
|
|
45
|
+
|
|
46
|
+
======
|
|
47
|
+
os-vif
|
|
48
|
+
======
|
|
49
|
+
|
|
50
|
+
.. image:: https://img.shields.io/pypi/v/os-vif.svg
|
|
51
|
+
:target: https://pypi.org/project/os-vif/
|
|
52
|
+
:alt: Latest Version
|
|
53
|
+
|
|
54
|
+
.. image:: https://img.shields.io/pypi/dm/os-vif.svg
|
|
55
|
+
:target: https://pypi.org/project/os-vif/
|
|
56
|
+
:alt: Downloads
|
|
57
|
+
|
|
58
|
+
A library for plugging and unplugging virtual interfaces in OpenStack.
|
|
59
|
+
|
|
60
|
+
* License: Apache License, Version 2.0
|
|
61
|
+
* Documentation: https://docs.openstack.org/os-vif/latest/
|
|
62
|
+
* Source: https://opendev.org/openstack/os-vif
|
|
63
|
+
* Bugs: https://bugs.launchpad.net/os-vif
|
|
64
|
+
* Release Notes: https://docs.openstack.org/releasenotes/os-vif
|
|
65
|
+
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
.coveragerc
|
|
2
2
|
.mailmap
|
|
3
|
+
.pre-commit-config.yaml
|
|
3
4
|
.stestr.conf
|
|
4
5
|
.zuul.yaml
|
|
5
6
|
AUTHORS
|
|
@@ -9,6 +10,7 @@ HACKING.rst
|
|
|
9
10
|
LICENSE
|
|
10
11
|
README.rst
|
|
11
12
|
bindep.txt
|
|
13
|
+
pyproject.toml
|
|
12
14
|
requirements.txt
|
|
13
15
|
setup.cfg
|
|
14
16
|
setup.py
|
|
@@ -95,6 +97,7 @@ releasenotes/notes/bug-1892132-812e6d5ce0588ebb.yaml
|
|
|
95
97
|
releasenotes/notes/contextlib-and-nested-with-statements-2747a9ebb9a5bfd7.yaml
|
|
96
98
|
releasenotes/notes/default-qos-policy-for-ovs-26f8806046a59c82.yaml
|
|
97
99
|
releasenotes/notes/default-to-native-ovsdb-driver-112fb5adf6e19a30.yaml
|
|
100
|
+
releasenotes/notes/deprecate-linuxbridge-support-d278d4bbdff8e8bc.yaml
|
|
98
101
|
releasenotes/notes/deprecate-windows-support-49f5ca1b1a1f4d66.yaml
|
|
99
102
|
releasenotes/notes/do-not-force-mac-ageing-c6e8d750130c5740.yaml
|
|
100
103
|
releasenotes/notes/drop-py36-support-0e9b07073f6ad73f.yaml
|
|
@@ -122,6 +125,7 @@ releasenotes/source/2023.1.rst
|
|
|
122
125
|
releasenotes/source/2023.2.rst
|
|
123
126
|
releasenotes/source/2024.1.rst
|
|
124
127
|
releasenotes/source/2024.2.rst
|
|
128
|
+
releasenotes/source/2025.1.rst
|
|
125
129
|
releasenotes/source/conf.py
|
|
126
130
|
releasenotes/source/index.rst
|
|
127
131
|
releasenotes/source/newton.rst
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"git_version": "6b078f4", "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
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>=3.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
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
deprecations:
|
|
3
|
+
- |
|
|
4
|
+
The LinuxBridge mechanism driver has been removed in neutron. os-vif has a
|
|
5
|
+
policy of only shipping plugins for in-tree neutron ml2 drivers. As a result
|
|
6
|
+
the linux_bridge os-vif plugin is now deprecated and will be removed in
|
|
7
|
+
a future openstack release.
|
{os_vif-4.0.0 → os_vif-4.2.0}/releasenotes/notes/fix-stevedore-entrypoints-8002ec7a5166c977.yaml
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
fixes:
|
|
3
|
-
- os-vif plugins were previously incorrectly registered
|
|
3
|
+
- os-vif plugins were previously incorrectly registered
|
|
4
4
|
in both the setup.py and setup.cfg. All plugin registration
|
|
5
5
|
have been removed form the setup.py as they were not used
|
|
6
6
|
and may have blocked registration of out of tree plugins.
|
|
@@ -57,9 +57,13 @@ commands =
|
|
|
57
57
|
coverage report
|
|
58
58
|
|
|
59
59
|
[testenv:pep8]
|
|
60
|
+
description =
|
|
61
|
+
Run style checks.
|
|
62
|
+
skip_install = true
|
|
60
63
|
deps =
|
|
61
|
-
|
|
62
|
-
commands =
|
|
64
|
+
pre-commit
|
|
65
|
+
commands =
|
|
66
|
+
pre-commit run --all-files --show-diff-on-failure
|
|
63
67
|
|
|
64
68
|
[flake8]
|
|
65
69
|
# E123, E125 skipped as they are invalid PEP-8.
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
# License for the specific language governing permissions and limitations
|
|
18
18
|
# under the License.
|
|
19
19
|
|
|
20
|
+
import debtcollector.removals
|
|
20
21
|
from os_vif import objects
|
|
21
22
|
from os_vif import plugin
|
|
22
23
|
from oslo_config import cfg
|
|
@@ -94,6 +95,10 @@ class LinuxBridgePlugin(plugin.PluginBase):
|
|
|
94
95
|
supported_port_profiles=[]),
|
|
95
96
|
])
|
|
96
97
|
|
|
98
|
+
@debtcollector.removals.remove(
|
|
99
|
+
message="LinuxBridgePlugin is deprecated and will be removed in "
|
|
100
|
+
"a future release",
|
|
101
|
+
category=DeprecationWarning)
|
|
97
102
|
def plug(self, vif, instance_info):
|
|
98
103
|
"""Ensure that the bridge exists, and add VIF to it."""
|
|
99
104
|
network = vif.network
|
|
@@ -111,6 +116,10 @@ class LinuxBridgePlugin(plugin.PluginBase):
|
|
|
111
116
|
linux_net.ensure_bridge(bridge_name, iface,
|
|
112
117
|
filtering=install_filters, mtu=mtu)
|
|
113
118
|
|
|
119
|
+
@debtcollector.removals.remove(
|
|
120
|
+
message="LinuxBridgePlugin is deprecated and will be removed in "
|
|
121
|
+
"a future release",
|
|
122
|
+
category=DeprecationWarning)
|
|
114
123
|
def unplug(self, vif, instance_info):
|
|
115
124
|
# Nothing required to unplug a port for a VIF using standard
|
|
116
125
|
# Linux bridge device...
|
|
@@ -34,6 +34,10 @@ from vif_plug_ovs.ovsdb import ovsdb_lib
|
|
|
34
34
|
LOG = logging.getLogger(__name__)
|
|
35
35
|
|
|
36
36
|
|
|
37
|
+
def is_trunk_bridge(bridge_name):
|
|
38
|
+
return bridge_name.startswith(constants.TRUNK_BR_PREFIX)
|
|
39
|
+
|
|
40
|
+
|
|
37
41
|
class OvsPlugin(plugin.PluginBase):
|
|
38
42
|
"""An OVS plugin that can setup VIFs in many ways
|
|
39
43
|
|
|
@@ -202,8 +206,12 @@ class OvsPlugin(plugin.PluginBase):
|
|
|
202
206
|
# bound the interface in the vif binding details so isolation
|
|
203
207
|
# can be enabled automatically in the future.
|
|
204
208
|
bridge = kwargs.pop('bridge', vif.network.bridge)
|
|
205
|
-
|
|
209
|
+
# See bug #2069543.
|
|
210
|
+
if (self._isolate_vif(vif_name, bridge) and
|
|
211
|
+
not is_trunk_bridge(bridge)):
|
|
206
212
|
kwargs['tag'] = constants.DEAD_VLAN
|
|
213
|
+
kwargs['vlan_mode'] = 'trunk'
|
|
214
|
+
kwargs['trunks'] = constants.DEAD_VLAN
|
|
207
215
|
qos_type = self._get_qos_type(vif)
|
|
208
216
|
if qos_type is not None:
|
|
209
217
|
# NOTE(sean-k-mooney): If the port is not already created
|
|
@@ -303,8 +311,8 @@ class OvsPlugin(plugin.PluginBase):
|
|
|
303
311
|
instance_id = instance_info.uuid
|
|
304
312
|
LOG.debug(
|
|
305
313
|
'creating patch port pair \n'
|
|
306
|
-
f'{port_bridge_name}:({port_bridge_patch}) -> '
|
|
307
|
-
f'{int_bridge_name}:({int_bridge_patch})'
|
|
314
|
+
f'{port_bridge_name}: ({port_bridge_patch}) -> '
|
|
315
|
+
f'{int_bridge_name}: ({int_bridge_patch})'
|
|
308
316
|
)
|
|
309
317
|
self.ovsdb.create_patch_port_pair(
|
|
310
318
|
port_bridge_name, port_bridge_patch, int_bridge_name,
|
|
@@ -384,11 +392,8 @@ class OvsPlugin(plugin.PluginBase):
|
|
|
384
392
|
vif=vif,
|
|
385
393
|
err="This vif type is not supported by this plugin")
|
|
386
394
|
|
|
387
|
-
def _is_trunk_bridge(self, bridge_name):
|
|
388
|
-
return bridge_name.startswith(constants.TRUNK_BR_PREFIX)
|
|
389
|
-
|
|
390
395
|
def _delete_bridge_if_trunk(self, vif):
|
|
391
|
-
if
|
|
396
|
+
if is_trunk_bridge(vif.network.bridge):
|
|
392
397
|
self.ovsdb.delete_ovs_bridge(vif.network.bridge)
|
|
393
398
|
|
|
394
399
|
def _unplug_vhostuser(self, vif, instance_info):
|
|
@@ -16,6 +16,7 @@ from oslo_log import log as logging
|
|
|
16
16
|
|
|
17
17
|
from vif_plug_ovs import constants
|
|
18
18
|
from vif_plug_ovs import linux_net
|
|
19
|
+
from vif_plug_ovs import ovs
|
|
19
20
|
from vif_plug_ovs.ovsdb import api as ovsdb_api
|
|
20
21
|
|
|
21
22
|
|
|
@@ -139,7 +140,7 @@ class BaseOVS(object):
|
|
|
139
140
|
self, bridge, dev, iface_id, mac, instance_id,
|
|
140
141
|
mtu=None, interface_type=None, vhost_server_path=None,
|
|
141
142
|
tag=None, pf_pci=None, vf_num=None, set_ids=True, datapath_type=None,
|
|
142
|
-
qos_type=None
|
|
143
|
+
qos_type=None, vlan_mode=None, trunks=None
|
|
143
144
|
):
|
|
144
145
|
"""Create OVS port
|
|
145
146
|
|
|
@@ -167,6 +168,21 @@ class BaseOVS(object):
|
|
|
167
168
|
'iface-status': 'active',
|
|
168
169
|
'attached-mac': mac,
|
|
169
170
|
'vm-uuid': instance_id}
|
|
171
|
+
|
|
172
|
+
# Note(lajoskatona): Neutron fills external_ids for trunk, see:
|
|
173
|
+
# https://opendev.org/openstack/neutron/src/commit/
|
|
174
|
+
# 1bc4b526e9c743423069ab4cf6ef3883d5e48217/neutron/services/trunk/
|
|
175
|
+
# drivers/openvswitch/agent/ovsdb_handler.py#L418
|
|
176
|
+
# The following keys are added there: bridge_name, trunk_id and
|
|
177
|
+
# subport_ids. These values are used during the cleanup after the
|
|
178
|
+
# deletion of the trunk. It can happen that Neutron can't fill these
|
|
179
|
+
# fields.
|
|
180
|
+
# In os-vif when the plug happens we can use the same transaction to
|
|
181
|
+
# add bridge_name to external_ids in case of it is a trunk.
|
|
182
|
+
# By this Neutron can do the cleanup of trunk related interfaces.
|
|
183
|
+
if ovs.is_trunk_bridge(bridge):
|
|
184
|
+
external_ids['bridge_name'] = bridge
|
|
185
|
+
|
|
170
186
|
col_values = [('external_ids', external_ids)] if set_ids else []
|
|
171
187
|
if interface_type:
|
|
172
188
|
col_values.append(('type', interface_type))
|
|
@@ -204,6 +220,11 @@ class BaseOVS(object):
|
|
|
204
220
|
txn.add(self.ovsdb.add_port(bridge, dev))
|
|
205
221
|
if tag:
|
|
206
222
|
txn.add(self.ovsdb.db_set('Port', dev, ('tag', tag)))
|
|
223
|
+
if vlan_mode:
|
|
224
|
+
txn.add(self.ovsdb.db_set('Port', dev,
|
|
225
|
+
('vlan_mode', vlan_mode)))
|
|
226
|
+
if trunks:
|
|
227
|
+
txn.add(self.ovsdb.db_set('Port', dev, ('trunks', trunks)))
|
|
207
228
|
if qid:
|
|
208
229
|
txn.add(self.ovsdb.db_set('Port', dev, ('qos', qid)))
|
|
209
230
|
if col_values:
|