os-vif 4.0.0__tar.gz → 4.1.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.
Files changed (185) hide show
  1. os_vif-4.1.0/.pre-commit-config.yaml +22 -0
  2. {os_vif-4.0.0 → os_vif-4.1.0}/.zuul.yaml +8 -40
  3. {os_vif-4.0.0 → os_vif-4.1.0}/AUTHORS +1 -0
  4. {os_vif-4.0.0 → os_vif-4.1.0}/ChangeLog +10 -0
  5. os_vif-4.1.0/PKG-INFO +65 -0
  6. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/test_os_vif.py +14 -8
  7. os_vif-4.1.0/os_vif.egg-info/PKG-INFO +65 -0
  8. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif.egg-info/SOURCES.txt +2 -0
  9. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif.egg-info/entry_points.txt +0 -1
  10. os_vif-4.1.0/os_vif.egg-info/pbr.json +1 -0
  11. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif.egg-info/requires.txt +4 -6
  12. os_vif-4.1.0/releasenotes/notes/deprecate-linuxbridge-support-d278d4bbdff8e8bc.yaml +7 -0
  13. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/fix-stevedore-entrypoints-8002ec7a5166c977.yaml +1 -1
  14. {os_vif-4.0.0 → os_vif-4.1.0}/tox.ini +6 -2
  15. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_linux_bridge/linux_bridge.py +9 -0
  16. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/ovs.py +7 -3
  17. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/ovsdb/ovsdb_lib.py +6 -1
  18. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/tests/functional/test_plugin.py +35 -0
  19. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/tests/unit/test_plugin.py +4 -1
  20. os_vif-4.0.0/PKG-INFO +0 -53
  21. os_vif-4.0.0/os_vif.egg-info/PKG-INFO +0 -53
  22. os_vif-4.0.0/os_vif.egg-info/pbr.json +0 -1
  23. {os_vif-4.0.0 → os_vif-4.1.0}/.coveragerc +0 -0
  24. {os_vif-4.0.0 → os_vif-4.1.0}/.mailmap +0 -0
  25. {os_vif-4.0.0 → os_vif-4.1.0}/.stestr.conf +0 -0
  26. {os_vif-4.0.0 → os_vif-4.1.0}/CONTRIBUTING.rst +0 -0
  27. {os_vif-4.0.0 → os_vif-4.1.0}/HACKING.rst +0 -0
  28. {os_vif-4.0.0 → os_vif-4.1.0}/LICENSE +0 -0
  29. {os_vif-4.0.0 → os_vif-4.1.0}/README.rst +0 -0
  30. {os_vif-4.0.0 → os_vif-4.1.0}/bindep.txt +0 -0
  31. {os_vif-4.0.0 → os_vif-4.1.0}/doc/requirements.txt +0 -0
  32. {os_vif-4.0.0 → os_vif-4.1.0}/doc/source/conf.py +0 -0
  33. {os_vif-4.0.0 → os_vif-4.1.0}/doc/source/contributor/contributing.rst +0 -0
  34. {os_vif-4.0.0 → os_vif-4.1.0}/doc/source/index.rst +0 -0
  35. {os_vif-4.0.0 → os_vif-4.1.0}/doc/source/reference/glossary.rst +0 -0
  36. {os_vif-4.0.0 → os_vif-4.1.0}/doc/source/user/host-info.rst +0 -0
  37. {os_vif-4.0.0 → os_vif-4.1.0}/doc/source/user/plugins/linux-bridge.rst +0 -0
  38. {os_vif-4.0.0 → os_vif-4.1.0}/doc/source/user/plugins/noop.rst +0 -0
  39. {os_vif-4.0.0 → os_vif-4.1.0}/doc/source/user/plugins/ovs.rst +0 -0
  40. {os_vif-4.0.0 → os_vif-4.1.0}/doc/source/user/usage.rst +0 -0
  41. {os_vif-4.0.0 → os_vif-4.1.0}/doc/source/user/vif-types.rst +0 -0
  42. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/__init__.py +0 -0
  43. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/exception.py +0 -0
  44. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/i18n.py +0 -0
  45. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/internal/__init__.py +0 -0
  46. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/internal/ip/__init__.py +0 -0
  47. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/internal/ip/api.py +0 -0
  48. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/internal/ip/ip_command.py +0 -0
  49. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/internal/ip/linux/__init__.py +0 -0
  50. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/internal/ip/linux/impl_pyroute2.py +0 -0
  51. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/objects/__init__.py +0 -0
  52. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/objects/base.py +0 -0
  53. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/objects/fields.py +0 -0
  54. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/objects/fixed_ip.py +0 -0
  55. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/objects/host_info.py +0 -0
  56. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/objects/instance_info.py +0 -0
  57. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/objects/network.py +0 -0
  58. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/objects/route.py +0 -0
  59. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/objects/subnet.py +0 -0
  60. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/objects/vif.py +0 -0
  61. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/opts.py +0 -0
  62. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/plugin.py +0 -0
  63. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/__init__.py +0 -0
  64. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/functional/__init__.py +0 -0
  65. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/functional/base.py +0 -0
  66. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/functional/internal/__init__.py +0 -0
  67. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/functional/internal/command/__init__.py +0 -0
  68. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/functional/internal/command/ip/__init__.py +0 -0
  69. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/functional/internal/command/ip/test_impl_pyroute2.py +0 -0
  70. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/functional/privsep.py +0 -0
  71. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/__init__.py +0 -0
  72. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/base.py +0 -0
  73. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/internal/__init__.py +0 -0
  74. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/internal/ip/__init__.py +0 -0
  75. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/internal/ip/linux/__init__.py +0 -0
  76. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/internal/ip/linux/test_impl_pyroute2.py +0 -0
  77. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/internal/ip/test_api.py +0 -0
  78. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/test_base.py +0 -0
  79. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/test_exception.py +0 -0
  80. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/test_host_info.py +0 -0
  81. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/test_objects.py +0 -0
  82. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/tests/unit/test_vif.py +0 -0
  83. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/utils.py +0 -0
  84. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif/version.py +0 -0
  85. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif.egg-info/dependency_links.txt +0 -0
  86. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif.egg-info/not-zip-safe +0 -0
  87. {os_vif-4.0.0 → os_vif-4.1.0}/os_vif.egg-info/top_level.txt +0 -0
  88. {os_vif-4.0.0 → os_vif-4.1.0}/playbooks/openstack-tox-functional-ovs-with-sudo/Debian.yaml +0 -0
  89. {os_vif-4.0.0 → os_vif-4.1.0}/playbooks/openstack-tox-functional-ovs-with-sudo/Gentoo.yaml +0 -0
  90. {os_vif-4.0.0 → os_vif-4.1.0}/playbooks/openstack-tox-functional-ovs-with-sudo/RedHat.yaml +0 -0
  91. {os_vif-4.0.0 → os_vif-4.1.0}/playbooks/openstack-tox-functional-ovs-with-sudo/Suse.yaml +0 -0
  92. {os_vif-4.0.0 → os_vif-4.1.0}/playbooks/openstack-tox-functional-ovs-with-sudo/pre.yaml +0 -0
  93. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/OVSVif-hybrid-unplug-f37bf57bc8e913de.yaml +0 -0
  94. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/add-abstract-ovsdb-api-8f04df58d4ed5b73.yaml +0 -0
  95. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/add-fast-path-vhostuser-support-fe87e558326909b6.yaml +0 -0
  96. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/add-no-op-plugin-763a6703e7328a24.yaml +0 -0
  97. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/add-ovs-representor-portprofile-5f8290e5a40bf0a4.yaml +0 -0
  98. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/add-ovs-vhostuser-support-2ba8de51c1f3a244.yaml +0 -0
  99. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/add-ovsdb-native-322fffb49c91503d.yaml +0 -0
  100. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/always-plug-vifs-for-ovs-1d033fc49a9c6c4e.yaml +0 -0
  101. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/brctl-removal-a5b0e69b865afa57.yaml +0 -0
  102. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/bug-1892132-812e6d5ce0588ebb.yaml +0 -0
  103. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/contextlib-and-nested-with-statements-2747a9ebb9a5bfd7.yaml +0 -0
  104. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/default-qos-policy-for-ovs-26f8806046a59c82.yaml +0 -0
  105. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/default-to-native-ovsdb-driver-112fb5adf6e19a30.yaml +0 -0
  106. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/deprecate-windows-support-49f5ca1b1a1f4d66.yaml +0 -0
  107. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/do-not-force-mac-ageing-c6e8d750130c5740.yaml +0 -0
  108. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/drop-py36-support-0e9b07073f6ad73f.yaml +0 -0
  109. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/drop-python2-support-7a4bc7d31253c1e5.yaml +0 -0
  110. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/ensure-ovs-bridge-a0c1b51f469c92d0.yaml +0 -0
  111. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/extend-vhostuser-object-fada14a1457d4e56.yaml +0 -0
  112. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/fix-broken-dataplane-on-nova-restart-with-isolate_vif-71617a41741b33e8.yaml +0 -0
  113. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/fix-ovs-plugin-describe-049750609559f1ba.yaml +0 -0
  114. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/fix-vif-openvswitch-fa0d19be9dd668e1.yaml +0 -0
  115. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/generic-datapath-offloads-41cabb6842b41533.yaml +0 -0
  116. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/initial-release-2c71d6bbf55f763b.yaml +0 -0
  117. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/oslo-config-opts-entrypoints-e83f907b686d774a.yaml +0 -0
  118. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/per-port-bridge-c6a50179a0256de3.yaml +0 -0
  119. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/port-profile-info-linux-bridge-4800f5a0b7328615.yaml +0 -0
  120. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/port-profile-info-ovs-63b46a3eafc11de2.yaml +0 -0
  121. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/prevent-lb-reply-arp-6459133bfb056069.yaml +0 -0
  122. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/remove-py38-e0701b3363079bbf.yaml +0 -0
  123. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/remove-windows-23df1c587d505d72.yaml +0 -0
  124. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/remove_iptools_implementation-2eb866573a680e61.yaml +0 -0
  125. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/revert-always-plug-port-for-ovs-hybrid-plug-false-dc015985cbc5443b.yaml +0 -0
  126. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/vhost-user-mtu-support-cbc7d02a6665fab1.yaml +0 -0
  127. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/notes/vhost-user-reconnect-fa4cbb731b787f71.yaml +0 -0
  128. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/2023.1.rst +0 -0
  129. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/2023.2.rst +0 -0
  130. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/2024.1.rst +0 -0
  131. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/2024.2.rst +0 -0
  132. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/_static/.placeholder +0 -0
  133. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/_templates/.placeholder +0 -0
  134. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/conf.py +0 -0
  135. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/index.rst +0 -0
  136. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/newton.rst +0 -0
  137. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/ocata.rst +0 -0
  138. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/pike.rst +0 -0
  139. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/queens.rst +0 -0
  140. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/rocky.rst +0 -0
  141. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/stein.rst +0 -0
  142. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/train.rst +0 -0
  143. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/unreleased.rst +0 -0
  144. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/ussuri.rst +0 -0
  145. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/victoria.rst +0 -0
  146. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/wallaby.rst +0 -0
  147. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/xena.rst +0 -0
  148. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/yoga.rst +0 -0
  149. {os_vif-4.0.0 → os_vif-4.1.0}/releasenotes/source/zed.rst +0 -0
  150. {os_vif-4.0.0 → os_vif-4.1.0}/requirements.txt +0 -0
  151. {os_vif-4.0.0 → os_vif-4.1.0}/setup.cfg +0 -0
  152. {os_vif-4.0.0 → os_vif-4.1.0}/setup.py +0 -0
  153. {os_vif-4.0.0 → os_vif-4.1.0}/test-requirements.txt +0 -0
  154. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_linux_bridge/__init__.py +0 -0
  155. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_linux_bridge/constants.py +0 -0
  156. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_linux_bridge/iptables.py +0 -0
  157. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_linux_bridge/linux_net.py +0 -0
  158. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_linux_bridge/privsep.py +0 -0
  159. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_linux_bridge/tests/__init__.py +0 -0
  160. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_linux_bridge/tests/unit/__init__.py +0 -0
  161. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_linux_bridge/tests/unit/test_linux_net.py +0 -0
  162. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_linux_bridge/tests/unit/test_plugin.py +0 -0
  163. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_noop/__init__.py +0 -0
  164. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_noop/noop.py +0 -0
  165. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_noop/tests/__init__.py +0 -0
  166. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_noop/tests/unit/__init__.py +0 -0
  167. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_noop/tests/unit/test_plugin.py +0 -0
  168. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/__init__.py +0 -0
  169. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/constants.py +0 -0
  170. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/exception.py +0 -0
  171. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/linux_net.py +0 -0
  172. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/ovsdb/__init__.py +0 -0
  173. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/ovsdb/api.py +0 -0
  174. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/ovsdb/impl_idl.py +0 -0
  175. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/ovsdb/impl_vsctl.py +0 -0
  176. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/privsep.py +0 -0
  177. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/tests/__init__.py +0 -0
  178. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/tests/functional/__init__.py +0 -0
  179. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/tests/functional/base.py +0 -0
  180. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/tests/functional/ovsdb/__init__.py +0 -0
  181. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/tests/functional/ovsdb/test_ovsdb_lib.py +0 -0
  182. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/tests/unit/__init__.py +0 -0
  183. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/tests/unit/ovsdb/__init__.py +0 -0
  184. {os_vif-4.0.0 → os_vif-4.1.0}/vif_plug_ovs/tests/unit/ovsdb/test_ovsdb_lib.py +0 -0
  185. {os_vif-4.0.0 → os_vif-4.1.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-linuxbridge
125
- parent: os-vif-tempest-base
126
+ name: os-vif-ovn-ubuntu-jammy
126
127
  description: |
127
- os-vif linux bridge job derived from neutron-tempest-linuxbridge
128
- vars:
129
- devstack_services:
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>
@@ -1,12 +1,22 @@
1
1
  CHANGES
2
2
  =======
3
3
 
4
+ 4.1.0
5
+ -----
6
+
7
+ * Update gate jobs as per the 2025.1 cycle testing runtime
8
+ * Deprecate linux bridge plugin
9
+ * Drop kuryr-kubernetes-tempest
10
+ * Remove os-vif-linuxbridge
11
+ * Do not add taps in trunk bridges to the dead vlan
12
+
4
13
  4.0.0
5
14
  -----
6
15
 
7
16
  * Clean up Windows support
8
17
  * address test stablity under load
9
18
  * reno: Update master for unmaintained/2023.1
19
+ * Integrate pre-commit
10
20
  * Remove Python 3.8 support
11
21
  * Update master for stable/2024.2
12
22
 
os_vif-4.1.0/PKG-INFO ADDED
@@ -0,0 +1,65 @@
1
+ Metadata-Version: 2.1
2
+ Name: os_vif
3
+ Version: 4.1.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
+
@@ -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('stevedore.extension.ExtensionManager.names',
109
- return_value=['foobar']),\
110
- mock.patch('stevedore.extension.ExtensionManager.__getitem__',
111
- return_value=plg):
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('stevedore.extension.ExtensionManager.names',
127
- return_value=['foobar']),\
128
- mock.patch('stevedore.extension.ExtensionManager.__getitem__',
129
- return_value=plg):
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.1.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
@@ -95,6 +96,7 @@ releasenotes/notes/bug-1892132-812e6d5ce0588ebb.yaml
95
96
  releasenotes/notes/contextlib-and-nested-with-statements-2747a9ebb9a5bfd7.yaml
96
97
  releasenotes/notes/default-qos-policy-for-ovs-26f8806046a59c82.yaml
97
98
  releasenotes/notes/default-to-native-ovsdb-driver-112fb5adf6e19a30.yaml
99
+ releasenotes/notes/deprecate-linuxbridge-support-d278d4bbdff8e8bc.yaml
98
100
  releasenotes/notes/deprecate-windows-support-49f5ca1b1a1f4d66.yaml
99
101
  releasenotes/notes/do-not-force-mac-ageing-c6e8d750130c5740.yaml
100
102
  releasenotes/notes/drop-py36-support-0e9b07073f6ad73f.yaml
@@ -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": "acdd974", "is_release": true}
@@ -1,15 +1,13 @@
1
- debtcollector>=1.19.0
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.
@@ -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
- hacking>=3.0.1,<3.1.0
62
- commands = flake8
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...
@@ -202,8 +202,12 @@ class OvsPlugin(plugin.PluginBase):
202
202
  # bound the interface in the vif binding details so isolation
203
203
  # can be enabled automatically in the future.
204
204
  bridge = kwargs.pop('bridge', vif.network.bridge)
205
- if self._isolate_vif(vif_name, bridge):
205
+ # See bug #2069543.
206
+ if (self._isolate_vif(vif_name, bridge) and
207
+ not self._is_trunk_bridge(bridge)):
206
208
  kwargs['tag'] = constants.DEAD_VLAN
209
+ kwargs['vlan_mode'] = 'trunk'
210
+ kwargs['trunks'] = constants.DEAD_VLAN
207
211
  qos_type = self._get_qos_type(vif)
208
212
  if qos_type is not None:
209
213
  # NOTE(sean-k-mooney): If the port is not already created
@@ -303,8 +307,8 @@ class OvsPlugin(plugin.PluginBase):
303
307
  instance_id = instance_info.uuid
304
308
  LOG.debug(
305
309
  'creating patch port pair \n'
306
- f'{port_bridge_name}:({port_bridge_patch}) -> '
307
- f'{int_bridge_name}:({int_bridge_patch})'
310
+ f'{port_bridge_name}: ({port_bridge_patch}) -> '
311
+ f'{int_bridge_name}: ({int_bridge_patch})'
308
312
  )
309
313
  self.ovsdb.create_patch_port_pair(
310
314
  port_bridge_name, port_bridge_patch, int_bridge_name,
@@ -139,7 +139,7 @@ class BaseOVS(object):
139
139
  self, bridge, dev, iface_id, mac, instance_id,
140
140
  mtu=None, interface_type=None, vhost_server_path=None,
141
141
  tag=None, pf_pci=None, vf_num=None, set_ids=True, datapath_type=None,
142
- qos_type=None
142
+ qos_type=None, vlan_mode=None, trunks=None
143
143
  ):
144
144
  """Create OVS port
145
145
 
@@ -204,6 +204,11 @@ class BaseOVS(object):
204
204
  txn.add(self.ovsdb.add_port(bridge, dev))
205
205
  if tag:
206
206
  txn.add(self.ovsdb.db_set('Port', dev, ('tag', tag)))
207
+ if vlan_mode:
208
+ txn.add(self.ovsdb.db_set('Port', dev,
209
+ ('vlan_mode', vlan_mode)))
210
+ if trunks:
211
+ txn.add(self.ovsdb.db_set('Port', dev, ('trunks', trunks)))
207
212
  if qid:
208
213
  txn.add(self.ovsdb.db_set('Port', dev, ('qos', qid)))
209
214
  if col_values:
@@ -12,6 +12,7 @@
12
12
 
13
13
  import testscenarios
14
14
  import time
15
+ from unittest import mock
15
16
 
16
17
  from oslo_concurrency import processutils
17
18
  from oslo_config import cfg
@@ -183,3 +184,37 @@ class TestOVSPlugin(testscenarios.WithScenarios,
183
184
  self._check_parameter(
184
185
  'QoS', str(qos_uuid), 'type', None
185
186
  )
187
+
188
+ def test_plug_br_int_isolate_vif_dead_vlan(self):
189
+ with mock.patch.object(self.plugin.config, 'isolate_vif', True):
190
+ network = objects.network.Network(
191
+ id='5449523c-3a08-11ef-86d6-17149687aa4d',
192
+ bridge='br-5449523c',
193
+ subnets=self.subnets,
194
+ vlan=99)
195
+ vif = objects.vif.VIFOpenVSwitch(
196
+ id='85cb9bc6-3a08-11ef-b2d4-9b7c38edd677',
197
+ address='ca:fe:de:ad:be:ef',
198
+ network=network,
199
+ port_profile=self.profile_ovs_system,
200
+ vif_name="port-85cb9bc6")
201
+ self.plugin.plug(vif, self.instance)
202
+ self.addCleanup(self._del_bridge, 'br-5449523c')
203
+ self._check_parameter('Port', vif.vif_name, 'tag', 4095)
204
+
205
+ def test_plug_trunk_bridge_ignores_isolate_vif(self):
206
+ with mock.patch.object(self.plugin.config, 'isolate_vif', True):
207
+ network = objects.network.Network(
208
+ id='ef98b384-3a0f-11ef-9009-47345fca266f',
209
+ bridge='tbr-ef98b384',
210
+ subnets=self.subnets,
211
+ vlan=99)
212
+ vif = objects.vif.VIFOpenVSwitch(
213
+ id='631f52bc-3a07-11ef-a006-1319ef9d6edd',
214
+ address='ca:fe:de:ad:be:ef',
215
+ network=network,
216
+ port_profile=self.profile_ovs_system,
217
+ vif_name='port-631f52bc')
218
+ self.plugin.plug(vif, self.instance)
219
+ self.addCleanup(self._del_bridge, 'tbr-ef98b384')
220
+ self._check_parameter('Port', vif.vif_name, 'tag', [])
@@ -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')
os_vif-4.0.0/PKG-INFO DELETED
@@ -1,53 +0,0 @@
1
- Metadata-Version: 1.2
2
- Name: os_vif
3
- Version: 4.0.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
- License: UNKNOWN
9
- Description: ========================
10
- Team and repository tags
11
- ========================
12
-
13
- .. image:: https://governance.openstack.org/tc/badges/os-vif.svg
14
- :target: https://governance.openstack.org/tc/reference/tags/index.html
15
-
16
- .. Change things from this point on
17
-
18
- ======
19
- os-vif
20
- ======
21
-
22
- .. image:: https://img.shields.io/pypi/v/os-vif.svg
23
- :target: https://pypi.org/project/os-vif/
24
- :alt: Latest Version
25
-
26
- .. image:: https://img.shields.io/pypi/dm/os-vif.svg
27
- :target: https://pypi.org/project/os-vif/
28
- :alt: Downloads
29
-
30
- A library for plugging and unplugging virtual interfaces in OpenStack.
31
-
32
- * License: Apache License, Version 2.0
33
- * Documentation: https://docs.openstack.org/os-vif/latest/
34
- * Source: https://opendev.org/openstack/os-vif
35
- * Bugs: https://bugs.launchpad.net/os-vif
36
- * Release Notes: https://docs.openstack.org/releasenotes/os-vif
37
-
38
-
39
- Platform: UNKNOWN
40
- Classifier: Environment :: OpenStack
41
- Classifier: Intended Audience :: Information Technology
42
- Classifier: Intended Audience :: System Administrators
43
- Classifier: License :: OSI Approved :: Apache Software License
44
- Classifier: Operating System :: POSIX :: Linux
45
- Classifier: Programming Language :: Python
46
- Classifier: Programming Language :: Python :: 3
47
- Classifier: Programming Language :: Python :: 3 :: Only
48
- Classifier: Programming Language :: Python :: 3.9
49
- Classifier: Programming Language :: Python :: 3.10
50
- Classifier: Programming Language :: Python :: 3.11
51
- Classifier: Programming Language :: Python :: 3.12
52
- Classifier: Programming Language :: Python :: Implementation :: CPython
53
- Requires-Python: >=3.9
@@ -1,53 +0,0 @@
1
- Metadata-Version: 1.2
2
- Name: os-vif
3
- Version: 4.0.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
- License: UNKNOWN
9
- Description: ========================
10
- Team and repository tags
11
- ========================
12
-
13
- .. image:: https://governance.openstack.org/tc/badges/os-vif.svg
14
- :target: https://governance.openstack.org/tc/reference/tags/index.html
15
-
16
- .. Change things from this point on
17
-
18
- ======
19
- os-vif
20
- ======
21
-
22
- .. image:: https://img.shields.io/pypi/v/os-vif.svg
23
- :target: https://pypi.org/project/os-vif/
24
- :alt: Latest Version
25
-
26
- .. image:: https://img.shields.io/pypi/dm/os-vif.svg
27
- :target: https://pypi.org/project/os-vif/
28
- :alt: Downloads
29
-
30
- A library for plugging and unplugging virtual interfaces in OpenStack.
31
-
32
- * License: Apache License, Version 2.0
33
- * Documentation: https://docs.openstack.org/os-vif/latest/
34
- * Source: https://opendev.org/openstack/os-vif
35
- * Bugs: https://bugs.launchpad.net/os-vif
36
- * Release Notes: https://docs.openstack.org/releasenotes/os-vif
37
-
38
-
39
- Platform: UNKNOWN
40
- Classifier: Environment :: OpenStack
41
- Classifier: Intended Audience :: Information Technology
42
- Classifier: Intended Audience :: System Administrators
43
- Classifier: License :: OSI Approved :: Apache Software License
44
- Classifier: Operating System :: POSIX :: Linux
45
- Classifier: Programming Language :: Python
46
- Classifier: Programming Language :: Python :: 3
47
- Classifier: Programming Language :: Python :: 3 :: Only
48
- Classifier: Programming Language :: Python :: 3.9
49
- Classifier: Programming Language :: Python :: 3.10
50
- Classifier: Programming Language :: Python :: 3.11
51
- Classifier: Programming Language :: Python :: 3.12
52
- Classifier: Programming Language :: Python :: Implementation :: CPython
53
- Requires-Python: >=3.9
@@ -1 +0,0 @@
1
- {"git_version": "7152159", "is_release": true}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes