Skip to content

Commit 7f8242a

Browse files
authored
Merge pull request #65 from stackhpc/upstream/yoga-2023-09-11
Synchronise yoga with upstream
2 parents 3dbb211 + de424f5 commit 7f8242a

File tree

3 files changed

+32
-55
lines changed

3 files changed

+32
-55
lines changed

neutron/services/trunk/drivers/ovn/trunk_driver.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
from neutron_lib.callbacks import events
1515
from neutron_lib.callbacks import registry
1616
from neutron_lib.callbacks import resources
17-
from neutron_lib import constants as n_const
1817
from neutron_lib import context as n_context
1918
from neutron_lib.db import api as db_api
2019
from neutron_lib import exceptions as n_exc
@@ -52,11 +51,7 @@ def _set_sub_ports(self, parent_port, subports):
5251
context = n_context.get_admin_context()
5352
db_parent_port = port_obj.Port.get_object(context, id=parent_port)
5453
parent_port_status = db_parent_port.status
55-
try:
56-
parent_port_bindings = [pb for pb in db_parent_port.bindings
57-
if pb.status == n_const.ACTIVE][-1]
58-
except IndexError:
59-
parent_port_bindings = None
54+
parent_port_bindings = db_parent_port.bindings[0]
6055
for subport in subports:
6156
with db_api.CONTEXT_WRITER.using(context), (
6257
txn(check_error=True)) as ovn_txn:
@@ -90,10 +85,8 @@ def _set_binding_profile(self, context, subport, parent_port,
9085
db_port.id, db_port, ovn_const.TYPE_PORTS)
9186
ovn_txn.add(check_rev_cmd)
9287
parent_binding_host = ''
93-
if parent_port_bindings and parent_port_bindings.host:
94-
migrating_to = parent_port_bindings.profile.get(
95-
ovn_const.MIGRATING_ATTR)
96-
parent_binding_host = migrating_to or parent_port_bindings.host
88+
if parent_port_bindings.host:
89+
parent_binding_host = parent_port_bindings.host
9790
try:
9891
# NOTE(flaviof): We expect binding's host to be set. Otherwise,
9992
# sub-port will not transition from DOWN to ACTIVE.

neutron/tests/functional/privileged/agent/linux/test_tc_lib.py

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def setUp(self):
3333
self.addCleanup(self._remove_ns, self.namespace)
3434
self.device = 'int_dummy'
3535
priv_ip_lib.create_interface(self.device, self.namespace, 'dummy')
36+
priv_ip_lib.set_link_attribute(self.device, self.namespace, state='up')
3637

3738
def _remove_ns(self, namespace):
3839
priv_ip_lib.remove_netns(namespace)
@@ -52,7 +53,8 @@ def test_add_tc_qdisc_htb(self):
5253
namespace=self.namespace)
5354
qdiscs = priv_tc_lib.list_tc_qdiscs(self.device,
5455
namespace=self.namespace)
55-
self.assertEqual(0, len(qdiscs))
56+
self.assertEqual(1, len(qdiscs))
57+
self.assertEqual('noqueue', tc_lib._get_attr(qdiscs[0], 'TCA_KIND'))
5658

5759
def test_add_tc_qdisc_htb_no_handle(self):
5860
priv_tc_lib.add_tc_qdisc(
@@ -69,7 +71,8 @@ def test_add_tc_qdisc_htb_no_handle(self):
6971
namespace=self.namespace)
7072
qdiscs = priv_tc_lib.list_tc_qdiscs(self.device,
7173
namespace=self.namespace)
72-
self.assertEqual(0, len(qdiscs))
74+
self.assertEqual(1, len(qdiscs))
75+
self.assertEqual('noqueue', tc_lib._get_attr(qdiscs[0], 'TCA_KIND'))
7376

7477
def test_add_tc_qdisc_tbf(self):
7578
burst = 192000
@@ -95,23 +98,26 @@ def test_add_tc_qdisc_tbf(self):
9598
namespace=self.namespace)
9699
qdiscs = priv_tc_lib.list_tc_qdiscs(self.device,
97100
namespace=self.namespace)
98-
self.assertEqual(0, len(qdiscs))
101+
self.assertEqual(1, len(qdiscs))
102+
self.assertEqual('noqueue', tc_lib._get_attr(qdiscs[0], 'TCA_KIND'))
99103

100104
def test_add_tc_qdisc_ingress(self):
101105
priv_tc_lib.add_tc_qdisc(self.device, kind='ingress',
102106
namespace=self.namespace)
103107
qdiscs = priv_tc_lib.list_tc_qdiscs(self.device,
104108
namespace=self.namespace)
105-
self.assertEqual(1, len(qdiscs))
106-
self.assertEqual('ingress', tc_lib._get_attr(qdiscs[0], 'TCA_KIND'))
107-
self.assertEqual(rtnl.TC_H_INGRESS, qdiscs[0]['parent'])
108-
self.assertEqual(0xffff0000, qdiscs[0]['handle'])
109+
self.assertEqual(2, len(qdiscs))
110+
self.assertEqual('noqueue', tc_lib._get_attr(qdiscs[0], 'TCA_KIND'))
111+
self.assertEqual('ingress', tc_lib._get_attr(qdiscs[1], 'TCA_KIND'))
112+
self.assertEqual(rtnl.TC_H_INGRESS, qdiscs[1]['parent'])
113+
self.assertEqual(0xffff0000, qdiscs[1]['handle'])
109114

110115
priv_tc_lib.delete_tc_qdisc(self.device, kind='ingress',
111116
namespace=self.namespace)
112117
qdiscs = priv_tc_lib.list_tc_qdiscs(self.device,
113118
namespace=self.namespace)
114-
self.assertEqual(0, len(qdiscs))
119+
self.assertEqual(1, len(qdiscs))
120+
self.assertEqual('noqueue', tc_lib._get_attr(qdiscs[0], 'TCA_KIND'))
115121

116122
def test_delete_tc_qdisc_no_device(self):
117123
self.assertRaises(
@@ -138,14 +144,16 @@ def test_delete_tc_qdisc_ingress_twice(self):
138144
namespace=self.namespace)
139145
qdiscs = priv_tc_lib.list_tc_qdiscs(self.device,
140146
namespace=self.namespace)
141-
self.assertEqual(1, len(qdiscs))
142-
self.assertEqual('ingress', tc_lib._get_attr(qdiscs[0], 'TCA_KIND'))
147+
self.assertEqual(2, len(qdiscs))
148+
self.assertEqual('noqueue', tc_lib._get_attr(qdiscs[0], 'TCA_KIND'))
149+
self.assertEqual('ingress', tc_lib._get_attr(qdiscs[1], 'TCA_KIND'))
143150
self.assertIsNone(
144151
priv_tc_lib.delete_tc_qdisc(self.device, kind='ingress',
145152
namespace=self.namespace))
146153
qdiscs = priv_tc_lib.list_tc_qdiscs(self.device,
147154
namespace=self.namespace)
148-
self.assertEqual(0, len(qdiscs))
155+
self.assertEqual(1, len(qdiscs))
156+
self.assertEqual('noqueue', tc_lib._get_attr(qdiscs[0], 'TCA_KIND'))
149157
self.assertEqual(
150158
errno.EINVAL,
151159
priv_tc_lib.delete_tc_qdisc(self.device, kind='ingress',
@@ -167,6 +175,7 @@ def setUp(self):
167175
self.addCleanup(self._remove_ns, self.namespace)
168176
self.device = 'int_dummy'
169177
priv_ip_lib.create_interface('int_dummy', self.namespace, 'dummy')
178+
priv_ip_lib.set_link_attribute(self.device, self.namespace, state='up')
170179

171180
def _remove_ns(self, namespace):
172181
priv_ip_lib.remove_netns(namespace)
@@ -248,6 +257,7 @@ def setUp(self):
248257
self.addCleanup(self._remove_ns, self.namespace)
249258
self.device = 'int_dummy'
250259
priv_ip_lib.create_interface('int_dummy', self.namespace, 'dummy')
260+
priv_ip_lib.set_link_attribute(self.device, self.namespace, state='up')
251261

252262
def _remove_ns(self, namespace):
253263
priv_ip_lib.remove_netns(namespace)
@@ -274,9 +284,8 @@ def test_add_tc_filter_match32(self):
274284
self.assertEqual(value, filter_keys[index])
275285

276286
def test_add_tc_filter_policy(self):
277-
priv_tc_lib.add_tc_qdisc(
278-
self.device, parent=rtnl.TC_H_ROOT, kind='ingress',
279-
namespace=self.namespace)
287+
priv_tc_lib.add_tc_qdisc(self.device, kind='ingress',
288+
namespace=self.namespace)
280289

281290
# NOTE(ralonsoh):
282291
# - rate: 320000 bytes/sec (pyroute2 units) = 2560 kbits/sec (OS units)

neutron/tests/functional/services/trunk/drivers/ovn/test_trunk_driver.py

Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -97,23 +97,13 @@ def _verify_trunk_info(self, trunk, has_items, host=''):
9797
if trunk.get('status'):
9898
self.assertEqual(trunk_consts.TRUNK_ACTIVE_STATUS, trunk['status'])
9999

100-
def _bind_port(self, port_id, host_source, host_dest=None):
100+
def _bind_port(self, port_id, host):
101101
with db_api.CONTEXT_WRITER.using(self.context):
102-
for pb in port_obj.PortBinding.get_objects(self.context,
103-
port_id=port_id):
104-
pb.delete()
105-
profile = {}
106-
if host_dest:
107-
# When "host_dest" there are 2 port bindings, as in a live
108-
# migration; the second one (destination host) is inactive.
109-
profile[ovn_const.MIGRATING_ATTR] = host_dest
110-
port_obj.PortBinding(
111-
self.context, port_id=port_id, host=host_dest,
112-
vif_type=portbindings.VIF_TYPE_OVS,
113-
status=n_consts.INACTIVE).create()
114-
port_obj.PortBinding(
115-
self.context, port_id=port_id, host=host_source,
116-
profile=profile, vif_type=portbindings.VIF_TYPE_OVS).create()
102+
pb = port_obj.PortBinding.get_object(self.context,
103+
port_id=port_id, host='')
104+
pb.delete()
105+
port_obj.PortBinding(self.context, port_id=port_id, host=host,
106+
vif_type=portbindings.VIF_TYPE_OVS).create()
117107

118108
def test_trunk_create(self):
119109
with self.trunk() as trunk:
@@ -158,21 +148,6 @@ def test_subport_add(self):
158148
self._verify_trunk_info(new_trunk, has_items=True,
159149
host='host1')
160150

161-
def test_subport_add_live_migration_multiple_port_binding(self):
162-
with self.subport() as subport:
163-
with self.trunk() as trunk:
164-
self.trunk_plugin.add_subports(self.context, trunk['id'],
165-
{'sub_ports': [subport]})
166-
new_trunk = self.trunk_plugin.get_trunk(self.context,
167-
trunk['id'])
168-
self._verify_trunk_info(new_trunk, has_items=True)
169-
# Bind parent port. That will trigger the binding of the
170-
# trunk subports too, using the same host ID.
171-
self._bind_port(trunk['port_id'], 'host1', host_dest='host2')
172-
self.mech_driver.set_port_status_up(trunk['port_id'])
173-
self._verify_trunk_info(new_trunk, has_items=True,
174-
host='host2')
175-
176151
def test_subport_delete(self):
177152
with self.subport() as subport:
178153
with self.trunk([subport]) as trunk:

0 commit comments

Comments
 (0)