Merge "Choose random value for HA routes' vr_id" into stable/stein
This commit is contained in:
commit
9b5e544055
|
@ -14,6 +14,7 @@
|
|||
#
|
||||
|
||||
import functools
|
||||
import random
|
||||
|
||||
import netaddr
|
||||
from neutron_lib.api.definitions import l3 as l3_apidef
|
||||
|
@ -105,6 +106,16 @@ class L3_HA_NAT_db_mixin(l3_dvr_db.L3_NAT_with_dvr_db_mixin,
|
|||
allocated_vr_ids = set(a.vr_id for a in vr_id_objs) - set([0])
|
||||
return allocated_vr_ids
|
||||
|
||||
def _get_vr_id(self, context, network_id):
|
||||
allocated_vr_ids = self._get_allocated_vr_id(context,
|
||||
network_id)
|
||||
available_vr_ids = VR_ID_RANGE - allocated_vr_ids
|
||||
|
||||
if not available_vr_ids:
|
||||
return None
|
||||
|
||||
return random.choice(list(available_vr_ids))
|
||||
|
||||
@db_api.retry_if_session_inactive()
|
||||
def _ensure_vr_id(self, context, router_db, ha_network):
|
||||
router_id = router_db.id
|
||||
|
@ -126,16 +137,12 @@ class L3_HA_NAT_db_mixin(l3_dvr_db.L3_NAT_with_dvr_db_mixin,
|
|||
return
|
||||
|
||||
old_router = self._make_router_dict(router_db)
|
||||
allocated_vr_ids = self._get_allocated_vr_id(context,
|
||||
network_id)
|
||||
available_vr_ids = VR_ID_RANGE - allocated_vr_ids
|
||||
|
||||
if not available_vr_ids:
|
||||
vr_id = self._get_vr_id(context, network_id)
|
||||
if vr_id is None:
|
||||
raise l3ha_exc.NoVRIDAvailable(router_id=router_id)
|
||||
|
||||
allocation = l3_hamode.L3HARouterVRIdAllocation(
|
||||
context, network_id=network_id,
|
||||
vr_id=available_vr_ids.pop())
|
||||
context, network_id=network_id, vr_id=vr_id)
|
||||
allocation.create()
|
||||
|
||||
router_db.extra_attributes.ha_vr_id = allocation.vr_id
|
||||
|
|
Loading…
Reference in New Issue