Handle edges with different number of tunnels
Edge appliances with different number of tunnels per vnic might exit within the system. That could happen due to a change in the config file after the system has been running for a while and edge appliances already exist. The router interface allocation logic should support this edge case. Change-Id: I47b72072a44ad40225714295aabcc5b7198eb71f
This commit is contained in:
parent
b70b6019a3
commit
32930d0440
@ -212,11 +212,18 @@ def clean_edge_vnic_binding(session, edge_id):
|
|||||||
def allocate_edge_vnic(session, edge_id, network_id):
|
def allocate_edge_vnic(session, edge_id, network_id):
|
||||||
"""Allocate an available edge vnic to network."""
|
"""Allocate an available edge vnic to network."""
|
||||||
|
|
||||||
|
# get vnic count of specific edge
|
||||||
|
bindings = (session.query(nsxv_models.NsxvEdgeVnicBinding).
|
||||||
|
filter_by(edge_id=edge_id,
|
||||||
|
vnic_index=1).all())
|
||||||
|
|
||||||
|
vnic_tunnels_per_index = len(bindings)
|
||||||
|
|
||||||
with session.begin(subtransactions=True):
|
with session.begin(subtransactions=True):
|
||||||
bindings = (session.query(nsxv_models.NsxvEdgeVnicBinding).
|
bindings = (session.query(nsxv_models.NsxvEdgeVnicBinding).
|
||||||
filter_by(edge_id=edge_id, network_id=None).all())
|
filter_by(edge_id=edge_id, network_id=None).all())
|
||||||
for binding in bindings:
|
for binding in bindings:
|
||||||
if binding['tunnel_index'] % constants.MAX_TUNNEL_NUM == 1:
|
if binding['tunnel_index'] % vnic_tunnels_per_index == 1:
|
||||||
binding['network_id'] = network_id
|
binding['network_id'] = network_id
|
||||||
session.add(binding)
|
session.add(binding)
|
||||||
return binding
|
return binding
|
||||||
|
Loading…
Reference in New Issue
Block a user