os-vif 3.2.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.
Files changed (186) hide show
  1. os_vif-3.7.1/.coveragerc +4 -0
  2. {os_vif-3.2.0 → os_vif-3.7.1}/AUTHORS +4 -0
  3. {os_vif-3.2.0 → os_vif-3.7.1}/ChangeLog +43 -0
  4. os_vif-3.7.1/PKG-INFO +74 -0
  5. {os_vif-3.2.0 → os_vif-3.7.1}/doc/requirements.txt +1 -1
  6. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/internal/ip/api.py +3 -0
  7. os_vif-3.7.1/os_vif.egg-info/PKG-INFO +74 -0
  8. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif.egg-info/SOURCES.txt +4 -0
  9. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif.egg-info/entry_points.txt +0 -1
  10. os_vif-3.7.1/os_vif.egg-info/pbr.json +1 -0
  11. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif.egg-info/requires.txt +6 -7
  12. os_vif-3.7.1/releasenotes/notes/deprecate-windows-support-49f5ca1b1a1f4d66.yaml +4 -0
  13. os_vif-3.7.1/releasenotes/notes/fix-broken-dataplane-on-nova-restart-with-isolate_vif-71617a41741b33e8.yaml +7 -0
  14. os_vif-3.7.1/releasenotes/source/2023.2.rst +6 -0
  15. os_vif-3.7.1/releasenotes/source/2024.1.rst +6 -0
  16. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/index.rst +2 -0
  17. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/victoria.rst +1 -1
  18. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/wallaby.rst +1 -1
  19. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/xena.rst +1 -1
  20. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/yoga.rst +1 -1
  21. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/zed.rst +1 -1
  22. {os_vif-3.2.0 → os_vif-3.7.1}/requirements.txt +3 -7
  23. {os_vif-3.2.0 → os_vif-3.7.1}/setup.cfg +1 -0
  24. {os_vif-3.2.0 → os_vif-3.7.1}/setup.py +0 -8
  25. os_vif-3.7.1/test-requirements.txt +5 -0
  26. {os_vif-3.2.0 → os_vif-3.7.1}/tox.ini +2 -7
  27. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/ovs.py +21 -7
  28. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/ovsdb/ovsdb_lib.py +22 -1
  29. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/tests/functional/test_plugin.py +97 -0
  30. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/tests/unit/ovsdb/test_ovsdb_lib.py +12 -2
  31. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/tests/unit/test_plugin.py +42 -2
  32. os_vif-3.2.0/.coveragerc +0 -4
  33. os_vif-3.2.0/PKG-INFO +0 -52
  34. os_vif-3.2.0/os_vif.egg-info/PKG-INFO +0 -52
  35. os_vif-3.2.0/os_vif.egg-info/pbr.json +0 -1
  36. os_vif-3.2.0/test-requirements.txt +0 -9
  37. {os_vif-3.2.0 → os_vif-3.7.1}/.mailmap +0 -0
  38. {os_vif-3.2.0 → os_vif-3.7.1}/.stestr.conf +0 -0
  39. {os_vif-3.2.0 → os_vif-3.7.1}/.zuul.yaml +0 -0
  40. {os_vif-3.2.0 → os_vif-3.7.1}/CONTRIBUTING.rst +0 -0
  41. {os_vif-3.2.0 → os_vif-3.7.1}/HACKING.rst +0 -0
  42. {os_vif-3.2.0 → os_vif-3.7.1}/LICENSE +0 -0
  43. {os_vif-3.2.0 → os_vif-3.7.1}/README.rst +0 -0
  44. {os_vif-3.2.0 → os_vif-3.7.1}/bindep.txt +0 -0
  45. {os_vif-3.2.0 → os_vif-3.7.1}/doc/source/conf.py +0 -0
  46. {os_vif-3.2.0 → os_vif-3.7.1}/doc/source/contributor/contributing.rst +0 -0
  47. {os_vif-3.2.0 → os_vif-3.7.1}/doc/source/index.rst +0 -0
  48. {os_vif-3.2.0 → os_vif-3.7.1}/doc/source/reference/glossary.rst +0 -0
  49. {os_vif-3.2.0 → os_vif-3.7.1}/doc/source/user/host-info.rst +0 -0
  50. {os_vif-3.2.0 → os_vif-3.7.1}/doc/source/user/plugins/linux-bridge.rst +0 -0
  51. {os_vif-3.2.0 → os_vif-3.7.1}/doc/source/user/plugins/noop.rst +0 -0
  52. {os_vif-3.2.0 → os_vif-3.7.1}/doc/source/user/plugins/ovs.rst +0 -0
  53. {os_vif-3.2.0 → os_vif-3.7.1}/doc/source/user/usage.rst +0 -0
  54. {os_vif-3.2.0 → os_vif-3.7.1}/doc/source/user/vif-types.rst +0 -0
  55. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/__init__.py +0 -0
  56. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/exception.py +0 -0
  57. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/i18n.py +0 -0
  58. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/internal/__init__.py +0 -0
  59. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/internal/ip/__init__.py +0 -0
  60. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/internal/ip/ip_command.py +0 -0
  61. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/internal/ip/linux/__init__.py +0 -0
  62. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/internal/ip/linux/impl_pyroute2.py +0 -0
  63. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/internal/ip/windows/__init__.py +0 -0
  64. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/internal/ip/windows/impl_netifaces.py +0 -0
  65. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/objects/__init__.py +0 -0
  66. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/objects/base.py +0 -0
  67. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/objects/fields.py +0 -0
  68. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/objects/fixed_ip.py +0 -0
  69. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/objects/host_info.py +0 -0
  70. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/objects/instance_info.py +0 -0
  71. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/objects/network.py +0 -0
  72. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/objects/route.py +0 -0
  73. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/objects/subnet.py +0 -0
  74. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/objects/vif.py +0 -0
  75. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/opts.py +0 -0
  76. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/plugin.py +0 -0
  77. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/__init__.py +0 -0
  78. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/functional/__init__.py +0 -0
  79. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/functional/base.py +0 -0
  80. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/functional/internal/__init__.py +0 -0
  81. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/functional/internal/command/__init__.py +0 -0
  82. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/functional/internal/command/ip/__init__.py +0 -0
  83. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/functional/internal/command/ip/test_impl_pyroute2.py +0 -0
  84. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/functional/privsep.py +0 -0
  85. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/__init__.py +0 -0
  86. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/base.py +0 -0
  87. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/__init__.py +0 -0
  88. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/ip/__init__.py +0 -0
  89. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/ip/linux/__init__.py +0 -0
  90. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/ip/linux/test_impl_pyroute2.py +0 -0
  91. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/ip/test_api.py +0 -0
  92. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/ip/windows/__init__.py +0 -0
  93. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/internal/ip/windows/test_impl_netifaces.py +0 -0
  94. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/test_base.py +0 -0
  95. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/test_exception.py +0 -0
  96. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/test_host_info.py +0 -0
  97. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/test_objects.py +0 -0
  98. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/test_os_vif.py +0 -0
  99. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/tests/unit/test_vif.py +0 -0
  100. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/utils.py +0 -0
  101. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif/version.py +0 -0
  102. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif.egg-info/dependency_links.txt +0 -0
  103. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif.egg-info/not-zip-safe +0 -0
  104. {os_vif-3.2.0 → os_vif-3.7.1}/os_vif.egg-info/top_level.txt +0 -0
  105. {os_vif-3.2.0 → os_vif-3.7.1}/playbooks/openstack-tox-functional-ovs-with-sudo/Debian.yaml +0 -0
  106. {os_vif-3.2.0 → os_vif-3.7.1}/playbooks/openstack-tox-functional-ovs-with-sudo/Gentoo.yaml +0 -0
  107. {os_vif-3.2.0 → os_vif-3.7.1}/playbooks/openstack-tox-functional-ovs-with-sudo/RedHat.yaml +0 -0
  108. {os_vif-3.2.0 → os_vif-3.7.1}/playbooks/openstack-tox-functional-ovs-with-sudo/Suse.yaml +0 -0
  109. {os_vif-3.2.0 → os_vif-3.7.1}/playbooks/openstack-tox-functional-ovs-with-sudo/pre.yaml +0 -0
  110. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/OVSVif-hybrid-unplug-f37bf57bc8e913de.yaml +0 -0
  111. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/add-abstract-ovsdb-api-8f04df58d4ed5b73.yaml +0 -0
  112. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/add-fast-path-vhostuser-support-fe87e558326909b6.yaml +0 -0
  113. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/add-no-op-plugin-763a6703e7328a24.yaml +0 -0
  114. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/add-ovs-representor-portprofile-5f8290e5a40bf0a4.yaml +0 -0
  115. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/add-ovs-vhostuser-support-2ba8de51c1f3a244.yaml +0 -0
  116. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/add-ovsdb-native-322fffb49c91503d.yaml +0 -0
  117. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/always-plug-vifs-for-ovs-1d033fc49a9c6c4e.yaml +0 -0
  118. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/brctl-removal-a5b0e69b865afa57.yaml +0 -0
  119. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/bug-1892132-812e6d5ce0588ebb.yaml +0 -0
  120. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/contextlib-and-nested-with-statements-2747a9ebb9a5bfd7.yaml +0 -0
  121. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/default-qos-policy-for-ovs-26f8806046a59c82.yaml +0 -0
  122. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/default-to-native-ovsdb-driver-112fb5adf6e19a30.yaml +0 -0
  123. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/do-not-force-mac-ageing-c6e8d750130c5740.yaml +0 -0
  124. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/drop-py36-support-0e9b07073f6ad73f.yaml +0 -0
  125. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/drop-python2-support-7a4bc7d31253c1e5.yaml +0 -0
  126. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/ensure-ovs-bridge-a0c1b51f469c92d0.yaml +0 -0
  127. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/extend-vhostuser-object-fada14a1457d4e56.yaml +0 -0
  128. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/fix-ovs-plugin-describe-049750609559f1ba.yaml +0 -0
  129. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/fix-stevedore-entrypoints-8002ec7a5166c977.yaml +0 -0
  130. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/fix-vif-openvswitch-fa0d19be9dd668e1.yaml +0 -0
  131. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/generic-datapath-offloads-41cabb6842b41533.yaml +0 -0
  132. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/initial-release-2c71d6bbf55f763b.yaml +0 -0
  133. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/oslo-config-opts-entrypoints-e83f907b686d774a.yaml +0 -0
  134. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/per-port-bridge-c6a50179a0256de3.yaml +0 -0
  135. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/port-profile-info-linux-bridge-4800f5a0b7328615.yaml +0 -0
  136. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/port-profile-info-ovs-63b46a3eafc11de2.yaml +0 -0
  137. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/prevent-lb-reply-arp-6459133bfb056069.yaml +0 -0
  138. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/remove_iptools_implementation-2eb866573a680e61.yaml +0 -0
  139. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/revert-always-plug-port-for-ovs-hybrid-plug-false-dc015985cbc5443b.yaml +0 -0
  140. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/vhost-user-mtu-support-cbc7d02a6665fab1.yaml +0 -0
  141. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/notes/vhost-user-reconnect-fa4cbb731b787f71.yaml +0 -0
  142. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/2023.1.rst +0 -0
  143. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/_static/.placeholder +0 -0
  144. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/_templates/.placeholder +0 -0
  145. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/conf.py +0 -0
  146. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/newton.rst +0 -0
  147. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/ocata.rst +0 -0
  148. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/pike.rst +0 -0
  149. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/queens.rst +0 -0
  150. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/rocky.rst +0 -0
  151. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/stein.rst +0 -0
  152. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/train.rst +0 -0
  153. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/unreleased.rst +0 -0
  154. {os_vif-3.2.0 → os_vif-3.7.1}/releasenotes/source/ussuri.rst +0 -0
  155. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_linux_bridge/__init__.py +0 -0
  156. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_linux_bridge/constants.py +0 -0
  157. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_linux_bridge/iptables.py +0 -0
  158. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_linux_bridge/linux_bridge.py +0 -0
  159. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_linux_bridge/linux_net.py +0 -0
  160. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_linux_bridge/privsep.py +0 -0
  161. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_linux_bridge/tests/__init__.py +0 -0
  162. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_linux_bridge/tests/unit/__init__.py +0 -0
  163. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_linux_bridge/tests/unit/test_linux_net.py +0 -0
  164. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_linux_bridge/tests/unit/test_plugin.py +0 -0
  165. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_noop/__init__.py +0 -0
  166. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_noop/noop.py +0 -0
  167. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_noop/tests/__init__.py +0 -0
  168. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_noop/tests/unit/__init__.py +0 -0
  169. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_noop/tests/unit/test_plugin.py +0 -0
  170. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/__init__.py +0 -0
  171. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/constants.py +0 -0
  172. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/exception.py +0 -0
  173. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/linux_net.py +0 -0
  174. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/ovsdb/__init__.py +0 -0
  175. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/ovsdb/api.py +0 -0
  176. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/ovsdb/impl_idl.py +0 -0
  177. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/ovsdb/impl_vsctl.py +0 -0
  178. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/privsep.py +0 -0
  179. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/tests/__init__.py +0 -0
  180. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/tests/functional/__init__.py +0 -0
  181. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/tests/functional/base.py +0 -0
  182. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/tests/functional/ovsdb/__init__.py +0 -0
  183. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/tests/functional/ovsdb/test_ovsdb_lib.py +0 -0
  184. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/tests/unit/__init__.py +0 -0
  185. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/tests/unit/ovsdb/__init__.py +0 -0
  186. {os_vif-3.2.0 → os_vif-3.7.1}/vif_plug_ovs/tests/unit/test_linux_net.py +0 -0
@@ -0,0 +1,4 @@
1
+ [run]
2
+ branch = True
3
+ source = os_vif
4
+ omit = os_vif/tests/*
@@ -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>
@@ -53,11 +54,13 @@ Spencer Yu <yushb@gohighsec.com>
53
54
  Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
54
55
  Stephen Finucane <sfinucan@redhat.com>
55
56
  Swapnil Kulkarni (coolsvap) <me@coolsvap.net>
57
+ Takashi Kajinami <kajinamit@oss.nttdata.com>
56
58
  Takashi NATSUME <natsume.takashi@lab.ntt.co.jp>
57
59
  Takashi Natsume <takanattie@gmail.com>
58
60
  Thomas Bechtold <tbechtold@suse.com>
59
61
  Tony Breeds <tony@bakeyournoodle.com>
60
62
  Tony Xu <hhktony@gmail.com>
63
+ Vasyl Saienko <vsaienko@mirantis.com>
61
64
  Vieri <15050873171@163.com>
62
65
  Vu Cong Tuan <tuanvc@vn.fujitsu.com>
63
66
  XinxinShen <shenxinxin@inspur.com>
@@ -65,6 +68,7 @@ YAMAMOTO Takashi <yamamoto@midokura.com>
65
68
  ZhijunWei <wzj334965317@outlook.com>
66
69
  blue55 <yllan@fiberhome.com>
67
70
  caoyuan <cao.yuan@99cloud.net>
71
+ elajkat <lajos.katona@est.tech>
68
72
  ericxiett <eric_xiett@163.com>
69
73
  gecong1973 <ge.cong@zte.com.cn>
70
74
  jacky06 <zhang.min@99cloud.net>
@@ -1,6 +1,49 @@
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
+
26
+ 3.5.0
27
+ -----
28
+
29
+ * Drop wrong stacklevel
30
+ * Fix missing or unnecessary dependencies
31
+ * reno: Update master for unmaintained/yoga
32
+ * tox: Drop envdir
33
+ * Update python classifier in setup.cfg
34
+
35
+ 3.4.0
36
+ -----
37
+
38
+ * coveragerc: Remove non-existent path
39
+ * Deprecate Windows support
40
+
41
+ 3.3.0
42
+ -----
43
+
44
+ * Update master for stable/2023.2
45
+ * Don't break traffic if port already exists
46
+
4
47
  3.2.0
5
48
  -----
6
49
 
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
+
@@ -1,3 +1,3 @@
1
- sphinx>=2.0.0,!=2.1.0 # BSD
1
+ sphinx>=2.1.1 # BSD
2
2
  openstackdocstheme>=2.2.1 # Apache-2.0
3
3
  reno>=3.1.0 # Apache-2.0
@@ -11,10 +11,13 @@
11
11
  # under the License.
12
12
 
13
13
  import os
14
+ import warnings
14
15
 
15
16
  from oslo_log import log as logging
16
17
 
17
18
  if os.name == 'nt':
19
+ warnings.warn('Support for Windows OS is deprecated.',
20
+ category=DeprecationWarning)
18
21
  from os_vif.internal.ip.windows.impl_netifaces import \
19
22
  Netifaces as ip_lib_class
20
23
  else:
@@ -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
+
@@ -99,11 +99,13 @@ releasenotes/notes/bug-1892132-812e6d5ce0588ebb.yaml
99
99
  releasenotes/notes/contextlib-and-nested-with-statements-2747a9ebb9a5bfd7.yaml
100
100
  releasenotes/notes/default-qos-policy-for-ovs-26f8806046a59c82.yaml
101
101
  releasenotes/notes/default-to-native-ovsdb-driver-112fb5adf6e19a30.yaml
102
+ releasenotes/notes/deprecate-windows-support-49f5ca1b1a1f4d66.yaml
102
103
  releasenotes/notes/do-not-force-mac-ageing-c6e8d750130c5740.yaml
103
104
  releasenotes/notes/drop-py36-support-0e9b07073f6ad73f.yaml
104
105
  releasenotes/notes/drop-python2-support-7a4bc7d31253c1e5.yaml
105
106
  releasenotes/notes/ensure-ovs-bridge-a0c1b51f469c92d0.yaml
106
107
  releasenotes/notes/extend-vhostuser-object-fada14a1457d4e56.yaml
108
+ releasenotes/notes/fix-broken-dataplane-on-nova-restart-with-isolate_vif-71617a41741b33e8.yaml
107
109
  releasenotes/notes/fix-ovs-plugin-describe-049750609559f1ba.yaml
108
110
  releasenotes/notes/fix-stevedore-entrypoints-8002ec7a5166c977.yaml
109
111
  releasenotes/notes/fix-vif-openvswitch-fa0d19be9dd668e1.yaml
@@ -119,6 +121,8 @@ releasenotes/notes/revert-always-plug-port-for-ovs-hybrid-plug-false-dc015985cbc
119
121
  releasenotes/notes/vhost-user-mtu-support-cbc7d02a6665fab1.yaml
120
122
  releasenotes/notes/vhost-user-reconnect-fa4cbb731b787f71.yaml
121
123
  releasenotes/source/2023.1.rst
124
+ releasenotes/source/2023.2.rst
125
+ releasenotes/source/2024.1.rst
122
126
  releasenotes/source/conf.py
123
127
  releasenotes/source/index.rst
124
128
  releasenotes/source/newton.rst
@@ -5,4 +5,3 @@ ovs = vif_plug_ovs.ovs:OvsPlugin
5
5
 
6
6
  [oslo.config.opts]
7
7
  os_vif = os_vif.opts:list_plugins_opts
8
-
@@ -0,0 +1 @@
1
+ {"git_version": "a19f532", "is_release": true}
@@ -1,14 +1,13 @@
1
- debtcollector>=1.19.0
2
- netaddr>=0.7.18
1
+ pbr>=3.0.0
3
2
  oslo.concurrency>=3.20.0
4
3
  oslo.config>=5.1.0
5
- oslo.i18n>=3.15.3
6
4
  oslo.log>=3.30.0
5
+ oslo.i18n>=3.15.3
7
6
  oslo.privsep>=1.23.0
7
+ oslo.serialization>=2.20.0
8
+ oslo.utils>=2.0.0
8
9
  oslo.versionedobjects>=1.28.0
9
10
  ovsdbapp>=0.12.1
10
- pbr!=2.1.0,>=2.0.0
11
- stevedore>=1.20.0
12
-
13
- [:(sys_platform!='win32')]
14
11
  pyroute2>=0.5.2
12
+ stevedore>=1.20.0
13
+ debtcollector>=1.19.0
@@ -0,0 +1,4 @@
1
+ ---
2
+ features:
3
+ - |
4
+ Support for Windows operating systems has been deprecated.
@@ -0,0 +1,7 @@
1
+ ---
2
+ fixes:
3
+ - |
4
+ An issue when after nova-compute service restart configured with
5
+ `isolate_vif=True` instances lost connectivity unless neutron
6
+ rebinds ports. Which is normally happening by agent restart or port
7
+ update.
@@ -0,0 +1,6 @@
1
+ ===========================
2
+ 2023.2 Series Release Notes
3
+ ===========================
4
+
5
+ .. release-notes::
6
+ :branch: stable/2023.2
@@ -0,0 +1,6 @@
1
+ ===========================
2
+ 2024.1 Series Release Notes
3
+ ===========================
4
+
5
+ .. release-notes::
6
+ :branch: stable/2024.1
@@ -6,6 +6,8 @@ Release Notes
6
6
  :maxdepth: 1
7
7
 
8
8
  unreleased
9
+ 2024.1
10
+ 2023.2
9
11
  2023.1
10
12
  zed
11
13
  yoga
@@ -3,4 +3,4 @@ Victoria Series Release Notes
3
3
  =============================
4
4
 
5
5
  .. release-notes::
6
- :branch: stable/victoria
6
+ :branch: unmaintained/victoria
@@ -3,4 +3,4 @@ Wallaby Series Release Notes
3
3
  ============================
4
4
 
5
5
  .. release-notes::
6
- :branch: stable/wallaby
6
+ :branch: unmaintained/wallaby
@@ -3,4 +3,4 @@ Xena Series Release Notes
3
3
  =========================
4
4
 
5
5
  .. release-notes::
6
- :branch: stable/xena
6
+ :branch: unmaintained/xena
@@ -3,4 +3,4 @@ Yoga Series Release Notes
3
3
  =========================
4
4
 
5
5
  .. release-notes::
6
- :branch: stable/yoga
6
+ :branch: unmaintained/yoga
@@ -3,4 +3,4 @@ Zed Series Release Notes
3
3
  ========================
4
4
 
5
5
  .. release-notes::
6
- :branch: stable/zed
6
+ :branch: unmaintained/zed
@@ -1,18 +1,14 @@
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
-
5
- # The order of packages is significant, because pip processes them in the order
6
- # of appearance. Changing the order has an impact on the overall integration
7
- # process, which may cause wedges in the gate later.
8
-
9
- pbr!=2.1.0,>=2.0.0 # Apache-2.0
10
- netaddr>=0.7.18 # BSD
4
+ pbr>=3.0.0 # Apache-2.0
11
5
  oslo.concurrency>=3.20.0 # Apache-2.0
12
6
  oslo.config>=5.1.0 # Apache-2.0
13
7
  oslo.log>=3.30.0 # Apache-2.0
14
8
  oslo.i18n>=3.15.3 # Apache-2.0
15
9
  oslo.privsep>=1.23.0 # Apache-2.0
10
+ oslo.serialization>=2.20.0 # Apache-2.0
11
+ oslo.utils>=2.0.0 # Apache-2.0
16
12
  oslo.versionedobjects>=1.28.0 # Apache-2.0
17
13
  ovsdbapp>=0.12.1 # Apache-2.0
18
14
  pyroute2>=0.5.2;sys_platform!='win32' # Apache-2.0 (+ dual licensed GPL2)
@@ -18,6 +18,7 @@ classifier =
18
18
  Programming Language :: Python :: 3.8
19
19
  Programming Language :: Python :: 3.9
20
20
  Programming Language :: Python :: 3.10
21
+ Programming Language :: Python :: 3.11
21
22
  Programming Language :: Python :: Implementation :: CPython
22
23
 
23
24
  [files]
@@ -13,16 +13,8 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- # THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
17
16
  import setuptools
18
17
 
19
- # In python < 2.7.4, a lazy loading of package `pbr` will break
20
- # setuptools if some other modules registered functions in `atexit`.
21
- # solution from: http://bugs.python.org/issue15881#msg170215
22
- try:
23
- import multiprocessing # noqa
24
- except ImportError:
25
- pass
26
18
 
27
19
  setuptools.setup(
28
20
  setup_requires=['pbr>=2.0.0'],
@@ -0,0 +1,5 @@
1
+ coverage>=4.4.1 # Apache-2.0
2
+ oslotest>=1.10.0 # Apache-2.0
3
+ ovs>=2.9.2
4
+ stestr>=3.1.0 # Apache-2.0
5
+ testscenarios>=0.4 # Apache-2.0/BSD
@@ -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/master}
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/master}
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
 
@@ -186,6 +190,13 @@ class OvsPlugin(plugin.PluginBase):
186
190
 
187
191
  return True
188
192
 
193
+ def _isolate_vif(self, vif_name, bridge):
194
+ # NOTE(vsaienko): don't break traffic if port already exists,
195
+ # we assume it is called when nova-compute is initialized and
196
+ # since port is present it should be bound already.
197
+ return (self.config.isolate_vif and
198
+ not self.ovsdb.port_exists(vif_name, bridge))
199
+
189
200
  def _create_vif_port(self, vif, vif_name, instance_info, **kwargs):
190
201
  mtu = self._get_mtu(vif)
191
202
  # NOTE(sean-k-mooney): As part of a partial fix to bug #1734320
@@ -200,8 +211,13 @@ class OvsPlugin(plugin.PluginBase):
200
211
  # TODO(sean-k-mooney): Extend neutron to record what ml2 driver
201
212
  # bound the interface in the vif binding details so isolation
202
213
  # can be enabled automatically in the future.
203
- if self.config.isolate_vif:
214
+ bridge = kwargs.pop('bridge', vif.network.bridge)
215
+ # See bug #2069543.
216
+ if (self._isolate_vif(vif_name, bridge) and
217
+ not is_trunk_bridge(bridge)):
204
218
  kwargs['tag'] = constants.DEAD_VLAN
219
+ kwargs['vlan_mode'] = 'trunk'
220
+ kwargs['trunks'] = constants.DEAD_VLAN
205
221
  qos_type = self._get_qos_type(vif)
206
222
  if qos_type is not None:
207
223
  # NOTE(sean-k-mooney): If the port is not already created
@@ -215,7 +231,6 @@ class OvsPlugin(plugin.PluginBase):
215
231
  # for more details.
216
232
  if not self.ovsdb.port_exists(vif_name, vif.network.bridge):
217
233
  kwargs['qos_type'] = qos_type
218
- bridge = kwargs.pop('bridge', vif.network.bridge)
219
234
  self.ovsdb.create_ovs_vif_port(
220
235
  bridge,
221
236
  vif_name,
@@ -302,7 +317,9 @@ class OvsPlugin(plugin.PluginBase):
302
317
  vif, vif.vif_name, instance_info, bridge=port_bridge_name,
303
318
  set_ids=False
304
319
  )
305
- tag = constants.DEAD_VLAN if self.config.isolate_vif else None
320
+ tag = (constants.DEAD_VLAN
321
+ if self._isolate_vif(int_bridge_patch, int_bridge_name)
322
+ else None)
306
323
  iface_id = vif.id
307
324
  mac = vif.address
308
325
  instance_id = instance_info.uuid
@@ -397,11 +414,8 @@ class OvsPlugin(plugin.PluginBase):
397
414
  vif=vif,
398
415
  err="This vif type is not supported by this plugin")
399
416
 
400
- def _is_trunk_bridge(self, bridge_name):
401
- return bridge_name.startswith(constants.TRUNK_BR_PREFIX)
402
-
403
417
  def _delete_bridge_if_trunk(self, vif):
404
- if self._is_trunk_bridge(vif.network.bridge):
418
+ if is_trunk_bridge(vif.network.bridge):
405
419
  self.ovsdb.delete_ovs_bridge(vif.network.bridge)
406
420
 
407
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: