os-vif 4.0.0__py3-none-any.whl → 4.1.0__py3-none-any.whl

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.

@@ -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(
@@ -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,10 @@
1
1
  Metadata-Version: 2.1
2
- Name: os-vif
3
- Version: 4.0.0
2
+ Name: os_vif
3
+ Version: 4.1.0
4
4
  Summary: A library for plugging and unplugging virtual interfaces in OpenStack.
5
5
  Home-page: https://docs.openstack.org/os-vif/latest/
6
6
  Author: OpenStack
7
7
  Author-email: openstack-discuss@lists.openstack.org
8
- License: UNKNOWN
9
- Platform: UNKNOWN
10
8
  Classifier: Environment :: OpenStack
11
9
  Classifier: Intended Audience :: Information Technology
12
10
  Classifier: Intended Audience :: System Administrators
@@ -21,19 +19,21 @@ Classifier: Programming Language :: Python :: 3.11
21
19
  Classifier: Programming Language :: Python :: 3.12
22
20
  Classifier: Programming Language :: Python :: Implementation :: CPython
23
21
  Requires-Python: >=3.9
24
- Requires-Dist: debtcollector (>=1.19.0)
25
- Requires-Dist: oslo.concurrency (>=3.20.0)
26
- Requires-Dist: oslo.config (>=5.1.0)
27
- Requires-Dist: oslo.i18n (>=3.15.3)
28
- Requires-Dist: oslo.log (>=3.30.0)
29
- Requires-Dist: oslo.privsep (>=1.23.0)
30
- Requires-Dist: oslo.serialization (>=2.20.0)
31
- Requires-Dist: oslo.utils (>=2.0.0)
32
- Requires-Dist: oslo.versionedobjects (>=1.28.0)
33
- Requires-Dist: ovsdbapp (>=0.12.1)
34
- Requires-Dist: pbr (>=3.0.0)
35
- Requires-Dist: stevedore (>=1.20.0)
36
- Requires-Dist: pyroute2 (>=0.5.2) ; (sys_platform!='win32')
22
+ License-File: LICENSE
23
+ License-File: AUTHORS
24
+ Requires-Dist: pbr >=3.0.0
25
+ Requires-Dist: oslo.concurrency >=3.20.0
26
+ Requires-Dist: oslo.config >=5.1.0
27
+ Requires-Dist: oslo.log >=3.30.0
28
+ Requires-Dist: oslo.i18n >=3.15.3
29
+ Requires-Dist: oslo.privsep >=1.23.0
30
+ Requires-Dist: oslo.serialization >=2.20.0
31
+ Requires-Dist: oslo.utils >=2.0.0
32
+ Requires-Dist: oslo.versionedobjects >=1.28.0
33
+ Requires-Dist: ovsdbapp >=0.12.1
34
+ Requires-Dist: stevedore >=1.20.0
35
+ Requires-Dist: debtcollector >=1.19.0
36
+ Requires-Dist: pyroute2 >=0.5.2 ; (sys_platform!='win32')
37
37
 
38
38
  ========================
39
39
  Team and repository tags
@@ -64,5 +64,3 @@ A library for plugging and unplugging virtual interfaces in OpenStack.
64
64
  * Bugs: https://bugs.launchpad.net/os-vif
65
65
  * Release Notes: https://docs.openstack.org/releasenotes/os-vif
66
66
 
67
-
68
-
@@ -35,7 +35,7 @@ os_vif/tests/unit/test_base.py,sha256=iqgweFRWprY98mkGL3HIbV9D8DuX_tUPH8uRiDflwD
35
35
  os_vif/tests/unit/test_exception.py,sha256=UDVJSR3CKU3rc5kmN14ilL9Fj0cgnwQbGoP4weo2P4w,1335
36
36
  os_vif/tests/unit/test_host_info.py,sha256=2PYHg4pY-YwUuSg9MyDKJbJhKVGRT6ujJATkzzIPx18,7576
37
37
  os_vif/tests/unit/test_objects.py,sha256=WflvhMvvCauXexj04tCw47HvsysHX4Q7fsgJKrPNaI8,3709
38
- os_vif/tests/unit/test_os_vif.py,sha256=ixMy3_RolD3K4ebWynRt7JLI63m_fb3XIO7qrXGCq60,6609
38
+ os_vif/tests/unit/test_os_vif.py,sha256=b0h65Wa9tvxw-e7c707SoJQjfGzEALSFZUPkTtr_GkY,6612
39
39
  os_vif/tests/unit/test_vif.py,sha256=mhg2PZ3iVEPzffO5I0VT1wIUP3c-h7MAqrZgCuZdjxE,18000
40
40
  os_vif/tests/unit/internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
41
  os_vif/tests/unit/internal/ip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -45,7 +45,7 @@ os_vif/tests/unit/internal/ip/linux/test_impl_pyroute2.py,sha256=MbsDkFkVSmx3mqt
45
45
  vif_plug_linux_bridge/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  vif_plug_linux_bridge/constants.py,sha256=NC8n4uOMFCYrhq0sM1ZeGBKo-Gs4OMR60cYP47wMRCk,602
47
47
  vif_plug_linux_bridge/iptables.py,sha256=q4LmAMMzg-r9IgDNTu3jCLjNDM8b0JbGo-qmiA2B-JE,20641
48
- vif_plug_linux_bridge/linux_bridge.py,sha256=YMa_T8MfZBHmq0yQuA-fIYogZ-yRPKDzzBYGIfgUGO4,4949
48
+ vif_plug_linux_bridge/linux_bridge.py,sha256=oNf-HuLuaixlOyAL2CgZeZ3OHSknUh-zMhmPDI6XOBc,5345
49
49
  vif_plug_linux_bridge/linux_net.py,sha256=0SuMKqMSNHRnSMs3XNVjBF0MPzhUuQIti159QkL8k1U,9481
50
50
  vif_plug_linux_bridge/privsep.py,sha256=dHAVOrY7kC3hrfDy7OAyt17XG2TpZHwgMr0Pmgx1XYM,884
51
51
  vif_plug_linux_bridge/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -61,29 +61,29 @@ vif_plug_ovs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  vif_plug_ovs/constants.py,sha256=vQKnYSeBMjV2RGQPGxk96D8FtgpvJIZEX_yZzUlsGg8,892
62
62
  vif_plug_ovs/exception.py,sha256=ZiECZVvjCFTVXhuii3uhJn4lZvozKRxziedZB3R9JNo,1328
63
63
  vif_plug_ovs/linux_net.py,sha256=HvhfSXjeAlU2l9iZNiN8CFr-GL9psS8Hk8_KAaktH6I,13922
64
- vif_plug_ovs/ovs.py,sha256=VfZtPMnBXIBZ7dDPfS5d9RGZFb7mkwPPptjFX_iO2YM,22767
64
+ vif_plug_ovs/ovs.py,sha256=tN-JxK7VoIAdlradnk6kKCChenu_LLQWMKjJ_u834QY,22946
65
65
  vif_plug_ovs/privsep.py,sha256=nPQUkYgjbSjaHMuu40fZArRnf8RBiR73l4YpDF1K1yQ,1100
66
66
  vif_plug_ovs/ovsdb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
67
  vif_plug_ovs/ovsdb/api.py,sha256=_jHR8xokDAPI8sw3IEWuT3hObJuskqVzeVMDaWRbIq0,1293
68
68
  vif_plug_ovs/ovsdb/impl_idl.py,sha256=DR1aHN8riBpZyNePwpvT9PRYbf9vLk4lRJ9VHRVq_to,3028
69
69
  vif_plug_ovs/ovsdb/impl_vsctl.py,sha256=MSf8JMrMqrwt5vH8KTsThjdnsttJEYJikIcJ12CTz8c,14437
70
- vif_plug_ovs/ovsdb/ovsdb_lib.py,sha256=ePYap6ZzxgJQRNmViFBKXy8WH0qWGCbd8FTaSSB_BYA,10227
70
+ vif_plug_ovs/ovsdb/ovsdb_lib.py,sha256=SJuEnl26wGOLzEXNdgVhrKue2FTPgCpLiVLNak34Buw,10505
71
71
  vif_plug_ovs/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
72
  vif_plug_ovs/tests/functional/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
73
  vif_plug_ovs/tests/functional/base.py,sha256=GZKyA9UR9BaEgZ0tv6xyMTQnz9FpKedV2do1ePMB-rw,2059
74
- vif_plug_ovs/tests/functional/test_plugin.py,sha256=40gbf5bvxgauHf3U3oT9xeIOcZ3r8-fFRyHOrhWbZVo,6648
74
+ vif_plug_ovs/tests/functional/test_plugin.py,sha256=JzRiEIUonC4STcV9GWiwyaJybgOVxMSHyLmqACBf8Ck,8264
75
75
  vif_plug_ovs/tests/functional/ovsdb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
76
  vif_plug_ovs/tests/functional/ovsdb/test_ovsdb_lib.py,sha256=tXSTmjYWOmqLXYQ42_3Sv8XNNktlDxPDalJRr8KRwCU,13775
77
77
  vif_plug_ovs/tests/unit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
78
  vif_plug_ovs/tests/unit/test_linux_net.py,sha256=B3buNpn9EKZQPio5rNrIma_E5MUL9vBspdg5EqZ3RHk,17532
79
- vif_plug_ovs/tests/unit/test_plugin.py,sha256=93IhauJ-LscWMOJ0yCHBXAM47zVi-0oOOrMaln_dflU,30731
79
+ vif_plug_ovs/tests/unit/test_plugin.py,sha256=YfJXJirOWbZB2l2VHTiJPCMZlgBCyRXDAFgzEj6pQeY,30827
80
80
  vif_plug_ovs/tests/unit/ovsdb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
81
  vif_plug_ovs/tests/unit/ovsdb/test_ovsdb_lib.py,sha256=-Z50UgEgg2awEgPb_r_iqQBsyYTKlSadi3S9laGFfjg,10270
82
- os_vif-4.0.0.dist-info/AUTHORS,sha256=60BktTkASWCf8_6tpYaV0vj_2qxp9yPMKsPhZv0PM6c,3250
83
- os_vif-4.0.0.dist-info/LICENSE,sha256=XfKg2H1sVi8OoRxoisUlMqoo10TKvHmU_wU39ks7MyA,10143
84
- os_vif-4.0.0.dist-info/METADATA,sha256=qKa6NbHg0SplQTLycmCwnOeQjrtoP43XHnxx7EjaIiI,2357
85
- os_vif-4.0.0.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
86
- os_vif-4.0.0.dist-info/entry_points.txt,sha256=UhIaj_WPv49yG316SjjDuMlSqGvym-_TVYEn5JKlEaQ,207
87
- os_vif-4.0.0.dist-info/pbr.json,sha256=5Hmya6COSIJXwp-Fb4_ZtNvHUG8ylqw2qkLwyvfPuWU,46
88
- os_vif-4.0.0.dist-info/top_level.txt,sha256=ULBxtkTk3bkfzCSYJjifWehfjJdMODVzC6SX5l_CNKo,56
89
- os_vif-4.0.0.dist-info/RECORD,,
82
+ os_vif-4.1.0.dist-info/AUTHORS,sha256=Jl9BVjDjzq5vO3_b0rnuUWx-P4wsTnfH8iLVMFZrUH8,3290
83
+ os_vif-4.1.0.dist-info/LICENSE,sha256=XfKg2H1sVi8OoRxoisUlMqoo10TKvHmU_wU39ks7MyA,10143
84
+ os_vif-4.1.0.dist-info/METADATA,sha256=rDAbv57FXl1MAJQmQsJsLw5cK6bAEOHMwVCtVxEfOfI,2338
85
+ os_vif-4.1.0.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
86
+ os_vif-4.1.0.dist-info/entry_points.txt,sha256=BU9WplZnF_bjwT4SQP5n1mKu2f0R5xXBOznXP1GygHM,206
87
+ os_vif-4.1.0.dist-info/pbr.json,sha256=Yy5hVFB_dwDLDjOBUX039V8KA8i0TiV456Q_kkEfqDM,46
88
+ os_vif-4.1.0.dist-info/top_level.txt,sha256=ULBxtkTk3bkfzCSYJjifWehfjJdMODVzC6SX5l_CNKo,56
89
+ os_vif-4.1.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.34.2)
2
+ Generator: setuptools (75.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -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}
@@ -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...
vif_plug_ovs/ovs.py CHANGED
@@ -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')
@@ -1 +0,0 @@
1
- {"git_version": "7152159", "is_release": true}