os-vif 3.2.0__py3-none-any.whl → 3.4.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.

os_vif/internal/ip/api.py CHANGED
@@ -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, stacklevel=3)
18
21
  from os_vif.internal.ip.windows.impl_netifaces import \
19
22
  Netifaces as ip_lib_class
20
23
  else:
@@ -53,11 +53,13 @@ Spencer Yu <yushb@gohighsec.com>
53
53
  Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
54
54
  Stephen Finucane <sfinucan@redhat.com>
55
55
  Swapnil Kulkarni (coolsvap) <me@coolsvap.net>
56
+ Takashi Kajinami <kajinamit@oss.nttdata.com>
56
57
  Takashi NATSUME <natsume.takashi@lab.ntt.co.jp>
57
58
  Takashi Natsume <takanattie@gmail.com>
58
59
  Thomas Bechtold <tbechtold@suse.com>
59
60
  Tony Breeds <tony@bakeyournoodle.com>
60
61
  Tony Xu <hhktony@gmail.com>
62
+ Vasyl Saienko <vsaienko@mirantis.com>
61
63
  Vieri <15050873171@163.com>
62
64
  Vu Cong Tuan <tuanvc@vn.fujitsu.com>
63
65
  XinxinShen <shenxinxin@inspur.com>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: os-vif
3
- Version: 3.2.0
3
+ Version: 3.4.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 +7,7 @@ os_vif/utils.py,sha256=bmJRam0laHAVLIHpQufzLASu_VTEqsGTuJYmoYfqOco,713
7
7
  os_vif/version.py,sha256=ilQe2xTxPDxlzJYWbq8KdHeashflTfC1OZewgFPKPRI,713
8
8
  os_vif/internal/__init__.py,sha256=VGE1e9o-7RkuTzNhZl4Wivz1tojriLYypVBObhSZfSk,967
9
9
  os_vif/internal/ip/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- os_vif/internal/ip/api.py,sha256=fz51BFW-JL2vrkD8VxxzGZXDi56VikoTXxB1YuWHrsE,888
10
+ os_vif/internal/ip/api.py,sha256=Y5vbHnc5mvfy4a3t1ZbnDuSyn0eYBCaj0SMUZTYmjPM,1024
11
11
  os_vif/internal/ip/ip_command.py,sha256=agySNBD4GHp87uo6HbtIg4JwtOMhfuRZN5X7ytPir5k,2787
12
12
  os_vif/internal/ip/linux/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  os_vif/internal/ip/linux/impl_pyroute2.py,sha256=ddQ9d7fzBJEYmE1wJhMfpmHftTBFdJ2C94dCNGRsB0A,5511
@@ -65,7 +65,7 @@ vif_plug_ovs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
65
  vif_plug_ovs/constants.py,sha256=P1ngaAA2MioPrSr58JtiDA8rxkl3thttgOvabEyZGIM,944
66
66
  vif_plug_ovs/exception.py,sha256=ZiECZVvjCFTVXhuii3uhJn4lZvozKRxziedZB3R9JNo,1328
67
67
  vif_plug_ovs/linux_net.py,sha256=nr2dNOECVZtiHSIQHFb5iRVyh7cfLPiIm4VEg3frgDE,14289
68
- vif_plug_ovs/ovs.py,sha256=gUpOqhGqmWRfcDWFfctGwP3nJqNKmQqij7HRGNBSdaY,23740
68
+ vif_plug_ovs/ovs.py,sha256=hAkt-8CbpYuGcfUjb3NKjm41J5MniAQupVl6IsB5p7Q,24166
69
69
  vif_plug_ovs/privsep.py,sha256=nPQUkYgjbSjaHMuu40fZArRnf8RBiR73l4YpDF1K1yQ,1100
70
70
  vif_plug_ovs/ovsdb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
71
  vif_plug_ovs/ovsdb/api.py,sha256=_jHR8xokDAPI8sw3IEWuT3hObJuskqVzeVMDaWRbIq0,1293
@@ -80,14 +80,14 @@ vif_plug_ovs/tests/functional/ovsdb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
80
80
  vif_plug_ovs/tests/functional/ovsdb/test_ovsdb_lib.py,sha256=oB06rO9KgezJ5fe4kxsKANkC6b7sqKkzSyO2_M-Q8gw,13513
81
81
  vif_plug_ovs/tests/unit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
82
  vif_plug_ovs/tests/unit/test_linux_net.py,sha256=B3buNpn9EKZQPio5rNrIma_E5MUL9vBspdg5EqZ3RHk,17532
83
- vif_plug_ovs/tests/unit/test_plugin.py,sha256=6Nk8Dsv-DlmhXofSnb_f8Qs6SCDGzMRu4SEUShxwWaw,31199
83
+ vif_plug_ovs/tests/unit/test_plugin.py,sha256=-RmB-IGzaFaFmg-sNLupFd0sHwdRQ6IoGpgWFNdmv8k,33303
84
84
  vif_plug_ovs/tests/unit/ovsdb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
85
  vif_plug_ovs/tests/unit/ovsdb/test_ovsdb_lib.py,sha256=rNPmkH_xkGCrRDeUV_xQEAJ6A7sOH-sEGXvPYju1zwk,10705
86
- os_vif-3.2.0.dist-info/AUTHORS,sha256=pqvtQTCtkonuLkD0R1k5wJdehEO19mDpXtHaSQh-Axs,3132
87
- os_vif-3.2.0.dist-info/LICENSE,sha256=XfKg2H1sVi8OoRxoisUlMqoo10TKvHmU_wU39ks7MyA,10143
88
- os_vif-3.2.0.dist-info/METADATA,sha256=7a_Hm63QMuaPZXD1GdhMafB_7tfNxVpINHuPfIj7YTQ,2266
89
- os_vif-3.2.0.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
90
- os_vif-3.2.0.dist-info/entry_points.txt,sha256=UhIaj_WPv49yG316SjjDuMlSqGvym-_TVYEn5JKlEaQ,207
91
- os_vif-3.2.0.dist-info/pbr.json,sha256=yPKC04UCFJTK52u4xAajBv7s59GkiBMmvEbGu6qAjW0,46
92
- os_vif-3.2.0.dist-info/top_level.txt,sha256=ULBxtkTk3bkfzCSYJjifWehfjJdMODVzC6SX5l_CNKo,56
93
- os_vif-3.2.0.dist-info/RECORD,,
86
+ os_vif-3.4.0.dist-info/AUTHORS,sha256=kZdfNnkbapBsRD4W-nOGD5iPcwn83A2tZvVbRJxItcA,3215
87
+ os_vif-3.4.0.dist-info/LICENSE,sha256=XfKg2H1sVi8OoRxoisUlMqoo10TKvHmU_wU39ks7MyA,10143
88
+ os_vif-3.4.0.dist-info/METADATA,sha256=MFiEAjbSqJsuU7uDxen2GrLpVWrQTLh0dhgi0uq4_oA,2266
89
+ os_vif-3.4.0.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
90
+ os_vif-3.4.0.dist-info/entry_points.txt,sha256=UhIaj_WPv49yG316SjjDuMlSqGvym-_TVYEn5JKlEaQ,207
91
+ os_vif-3.4.0.dist-info/pbr.json,sha256=FyCNHsu9j3w5kGMlF_yaUlDqbkdo3ERqpGeuG9cihY4,46
92
+ os_vif-3.4.0.dist-info/top_level.txt,sha256=ULBxtkTk3bkfzCSYJjifWehfjJdMODVzC6SX5l_CNKo,56
93
+ os_vif-3.4.0.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ {"git_version": "a10ac95", "is_release": true}
vif_plug_ovs/ovs.py CHANGED
@@ -186,6 +186,13 @@ class OvsPlugin(plugin.PluginBase):
186
186
 
187
187
  return True
188
188
 
189
+ def _isolate_vif(self, vif_name, bridge):
190
+ # NOTE(vsaienko): don't break traffic if port already exists,
191
+ # we assume it is called when nova-compute is initialized and
192
+ # since port is present it should be bound already.
193
+ return (self.config.isolate_vif and
194
+ not self.ovsdb.port_exists(vif_name, bridge))
195
+
189
196
  def _create_vif_port(self, vif, vif_name, instance_info, **kwargs):
190
197
  mtu = self._get_mtu(vif)
191
198
  # NOTE(sean-k-mooney): As part of a partial fix to bug #1734320
@@ -200,7 +207,8 @@ class OvsPlugin(plugin.PluginBase):
200
207
  # TODO(sean-k-mooney): Extend neutron to record what ml2 driver
201
208
  # bound the interface in the vif binding details so isolation
202
209
  # can be enabled automatically in the future.
203
- if self.config.isolate_vif:
210
+ bridge = kwargs.pop('bridge', vif.network.bridge)
211
+ if self._isolate_vif(vif_name, bridge):
204
212
  kwargs['tag'] = constants.DEAD_VLAN
205
213
  qos_type = self._get_qos_type(vif)
206
214
  if qos_type is not None:
@@ -215,7 +223,6 @@ class OvsPlugin(plugin.PluginBase):
215
223
  # for more details.
216
224
  if not self.ovsdb.port_exists(vif_name, vif.network.bridge):
217
225
  kwargs['qos_type'] = qos_type
218
- bridge = kwargs.pop('bridge', vif.network.bridge)
219
226
  self.ovsdb.create_ovs_vif_port(
220
227
  bridge,
221
228
  vif_name,
@@ -302,7 +309,9 @@ class OvsPlugin(plugin.PluginBase):
302
309
  vif, vif.vif_name, instance_info, bridge=port_bridge_name,
303
310
  set_ids=False
304
311
  )
305
- tag = constants.DEAD_VLAN if self.config.isolate_vif else None
312
+ tag = (constants.DEAD_VLAN
313
+ if self._isolate_vif(int_bridge_patch, int_bridge_name)
314
+ else None)
306
315
  iface_id = vif.id
307
316
  mac = vif.address
308
317
  instance_id = instance_info.uuid
@@ -187,8 +187,28 @@ class PluginTest(testtools.TestCase):
187
187
  interface_type=constants.OVS_VHOSTUSER_INTERFACE_TYPE)
188
188
 
189
189
  @mock.patch.object(ovsdb_lib.BaseOVS, 'create_ovs_vif_port')
190
- def test_create_vif_port_isolate(self, mock_create_ovs_vif_port):
190
+ @mock.patch.object(ovsdb_lib.BaseOVS, 'port_exists')
191
+ def test_create_vif_port_isolate_port_no_isolate_vif_no_port(
192
+ self, mock_port_exists, mock_create_ovs_vif_port):
191
193
  plugin = ovs.OvsPlugin.load(constants.PLUGIN_NAME)
194
+ mock_port_exists.return_value = False
195
+ with mock.patch.object(plugin.config, 'isolate_vif', False):
196
+ plugin._create_vif_port(
197
+ self.vif_ovs, mock.sentinel.vif_name, self.instance,
198
+ interface_type=constants.OVS_VHOSTUSER_INTERFACE_TYPE)
199
+ mock_create_ovs_vif_port.assert_called_once_with(
200
+ self.vif_ovs.network.bridge, mock.sentinel.vif_name,
201
+ self.vif_ovs.port_profile.interface_id,
202
+ self.vif_ovs.address, self.instance.uuid,
203
+ mtu=plugin.config.network_device_mtu,
204
+ interface_type=constants.OVS_VHOSTUSER_INTERFACE_TYPE)
205
+
206
+ @mock.patch.object(ovsdb_lib.BaseOVS, 'create_ovs_vif_port')
207
+ @mock.patch.object(ovsdb_lib.BaseOVS, 'port_exists')
208
+ def test_create_vif_port_isolate_port_isolate_vif_no_port(
209
+ self, mock_port_exists, mock_create_ovs_vif_port):
210
+ plugin = ovs.OvsPlugin.load(constants.PLUGIN_NAME)
211
+ mock_port_exists.return_value = False
192
212
  with mock.patch.object(plugin.config, 'isolate_vif', True):
193
213
  plugin._create_vif_port(
194
214
  self.vif_ovs, mock.sentinel.vif_name, self.instance,
@@ -201,6 +221,23 @@ class PluginTest(testtools.TestCase):
201
221
  interface_type=constants.OVS_VHOSTUSER_INTERFACE_TYPE,
202
222
  tag=constants.DEAD_VLAN)
203
223
 
224
+ @mock.patch.object(ovsdb_lib.BaseOVS, 'create_ovs_vif_port')
225
+ @mock.patch.object(ovsdb_lib.BaseOVS, 'port_exists')
226
+ def test_create_vif_port_isolate_port_isolate_vif_port_exists(
227
+ self, mock_port_exists, mock_create_ovs_vif_port):
228
+ plugin = ovs.OvsPlugin.load(constants.PLUGIN_NAME)
229
+ mock_port_exists.return_value = True
230
+ with mock.patch.object(plugin.config, 'isolate_vif', True):
231
+ plugin._create_vif_port(
232
+ self.vif_ovs, mock.sentinel.vif_name, self.instance,
233
+ interface_type=constants.OVS_VHOSTUSER_INTERFACE_TYPE)
234
+ mock_create_ovs_vif_port.assert_called_once_with(
235
+ self.vif_ovs.network.bridge, mock.sentinel.vif_name,
236
+ self.vif_ovs.port_profile.interface_id,
237
+ self.vif_ovs.address, self.instance.uuid,
238
+ mtu=plugin.config.network_device_mtu,
239
+ interface_type=constants.OVS_VHOSTUSER_INTERFACE_TYPE)
240
+
204
241
  @mock.patch.object(ovs, 'sys')
205
242
  @mock.patch.object(ovs.OvsPlugin, '_plug_vif_generic')
206
243
  def test_plug_ovs_port_bridge_false(self, plug_vif_generic, mock_sys):
@@ -1 +0,0 @@
1
- {"git_version": "da742a8", "is_release": true}
File without changes