NSXv: ensure that locking is done with flag 'external=True'

All opertaions that are menat to be atomic should be done across
multiple API workers. This patch ensure that this is done globally.

In general the plugin can and should run with multiple API workers.

Change-Id: Ifdd4aa7b4254d4a35783d9749085405c17b038ce
This commit is contained in:
Gary Kotton 2015-09-06 02:19:31 -07:00
parent d8eeda9baf
commit e95db00149
6 changed files with 65 additions and 97 deletions

View File

@ -36,6 +36,8 @@ class LockManager:
if cfg.CONF.nsxv.locking_coordinator_url:
return LockManager._get_lock_distributed(name)
else:
# Ensure that external=True
kwargs['external'] = True
return LockManager._get_lock_local(name, **kwargs)
@staticmethod

View File

@ -470,8 +470,7 @@ class NsxVPluginV2(agents_db.AgentDbMixin,
def _add_member_to_security_group(self, sg_id, vnic_id):
with locking.LockManager.get_lock(
str(sg_id), lock_file_prefix='neutron-security-ops',
external=True):
str(sg_id), lock_file_prefix='neutron-security-ops'):
try:
self.nsx_v.vcns.add_member_to_security_group(
sg_id, vnic_id)
@ -497,8 +496,7 @@ class NsxVPluginV2(agents_db.AgentDbMixin,
def _remove_member_from_security_group(self, sg_id, vnic_id):
with locking.LockManager.get_lock(
str(sg_id), lock_file_prefix='neutron-security-ops',
external=True):
str(sg_id), lock_file_prefix='neutron-security-ops'):
try:
h, c = self.nsx_v.vcns.remove_member_from_security_group(
sg_id, vnic_id)
@ -1078,7 +1076,7 @@ class NsxVPluginV2(agents_db.AgentDbMixin,
raise n_exc.InvalidInput(error_message=err_msg)
with locking.LockManager.get_lock(
'nsx-edge-pool', lock_file_prefix='edge-bind-', external=True):
'nsx-edge-pool', lock_file_prefix='edge-bind-'):
s = super(NsxVPluginV2, self).create_subnet(context, subnet)
if s['enable_dhcp']:
try:
@ -1223,8 +1221,8 @@ class NsxVPluginV2(agents_db.AgentDbMixin,
edge_id = self._get_edge_id_by_rtr_id(context, resource_id)
if edge_id:
with locking.LockManager.get_lock(
str(edge_id), lock_file_prefix='nsxv-dhcp-config-',
external=True):
str(edge_id),
lock_file_prefix='nsxv-dhcp-config-'):
if self.metadata_proxy_handler:
LOG.debug('Update metadata for resource %s',
resource_id)

View File

@ -69,7 +69,7 @@ class RouterExclusiveDriver(router_driver.RouterBaseDriver):
def update_routes(self, context, router_id, nexthop):
with locking.LockManager.get_lock(
self._get_router_edge_id(context, router_id), external=True):
self._get_router_edge_id(context, router_id)):
self.plugin._update_routes(context, router_id, nexthop)
def _update_router_gw_info(self, context, router_id, info,
@ -91,7 +91,7 @@ class RouterExclusiveDriver(router_driver.RouterBaseDriver):
context, router))
edge_id = self._get_router_edge_id(context, router_id)
with locking.LockManager.get_lock(edge_id, external=True):
with locking.LockManager.get_lock(edge_id):
if new_ext_net_id != org_ext_net_id and orgnexthop:
# network changed, so need to remove default gateway before
# vnic can be configured
@ -130,7 +130,7 @@ class RouterExclusiveDriver(router_driver.RouterBaseDriver):
address_groups = self.plugin._get_address_groups(
context, router_id, network_id)
with locking.LockManager.get_lock(
self._get_router_edge_id(context, router_id), external=True):
self._get_router_edge_id(context, router_id)):
edge_utils.update_internal_interface(
self.nsx_v, context, router_id, network_id, address_groups,
router_db['admin_state_up'])
@ -166,7 +166,7 @@ class RouterExclusiveDriver(router_driver.RouterBaseDriver):
network_id = subnet['network_id']
with locking.LockManager.get_lock(
self._get_router_edge_id(context, router_id), external=True):
self._get_router_edge_id(context, router_id)):
if router_db.gw_port and router_db.enable_snat:
# First update nat rules
self.plugin._update_nat_rules(context, router_db)
@ -189,7 +189,7 @@ class RouterExclusiveDriver(router_driver.RouterBaseDriver):
def _update_edge_router(self, context, router_id):
router = self.plugin._get_router(context.elevated(), router_id)
with locking.LockManager.get_lock(
self._get_router_edge_id(context, router_id), external=True):
self._get_router_edge_id(context, router_id)):
self.plugin._update_external_interface(context, router)
self.plugin._update_nat_rules(context, router)
self.plugin._update_subnets_and_dnat_firewall(context, router)

View File

@ -53,8 +53,7 @@ class RouterSharedDriver(router_driver.RouterBaseDriver):
context, router_id, router)
else:
with locking.LockManager.get_lock(
str(edge_id), lock_file_prefix=NSXV_ROUTER_RECONFIG,
external=True):
str(edge_id), lock_file_prefix=NSXV_ROUTER_RECONFIG):
gw_info = self.plugin._extract_external_gw(
context, router, is_extract=True)
super(nsx_v.NsxVPluginV2, self.plugin).update_router(
@ -214,7 +213,7 @@ class RouterSharedDriver(router_driver.RouterBaseDriver):
router_id)
with locking.LockManager.get_lock(
str(new_edge_id),
lock_file_prefix=NSXV_ROUTER_RECONFIG, external=True):
lock_file_prefix=NSXV_ROUTER_RECONFIG):
self._add_router_services_on_available_edge(context,
router_id)
else:
@ -455,8 +454,7 @@ class RouterSharedDriver(router_driver.RouterBaseDriver):
return optional_router_ids, conflict_router_ids
def _bind_router_on_available_edge(self, context, router_id, admin_state):
with locking.LockManager.get_lock("router", lock_file_prefix="bind-",
external=True):
with locking.LockManager.get_lock("router", lock_file_prefix="bind-"):
conflict_network_ids, conflict_router_ids, intf_num = (
self._get_conflict_network_and_router_ids_by_intf(context,
router_id))
@ -478,8 +476,7 @@ class RouterSharedDriver(router_driver.RouterBaseDriver):
edge_id = edge_utils.get_router_edge_id(context, router_id)
with locking.LockManager.get_lock(
str(edge_id),
lock_file_prefix=NSXV_ROUTER_RECONFIG,
external=True):
lock_file_prefix=NSXV_ROUTER_RECONFIG):
# add all internal interfaces of the router on edge
intf_net_ids = (
self.plugin._get_internal_network_ids_by_router(context,
@ -540,8 +537,7 @@ class RouterSharedDriver(router_driver.RouterBaseDriver):
is_migrated = False
with locking.LockManager.get_lock(
str(edge_id),
lock_file_prefix=NSXV_ROUTER_RECONFIG,
external=True):
lock_file_prefix=NSXV_ROUTER_RECONFIG):
router_ids = self.edge_manager.get_routers_on_same_edge(
context, router_id)
org_ext_net_id = (router.gw_port_id and
@ -620,8 +616,7 @@ class RouterSharedDriver(router_driver.RouterBaseDriver):
edge_id = edge_utils.get_router_edge_id(context, router_id)
with locking.LockManager.get_lock(
str(edge_id),
lock_file_prefix=NSXV_ROUTER_RECONFIG,
external=True):
lock_file_prefix=NSXV_ROUTER_RECONFIG):
self._add_router_services_on_available_edge(context,
router_id)
@ -633,8 +628,7 @@ class RouterSharedDriver(router_driver.RouterBaseDriver):
is_migrated = False
with locking.LockManager.get_lock(
str(edge_id),
lock_file_prefix=NSXV_ROUTER_RECONFIG,
external=True):
lock_file_prefix=NSXV_ROUTER_RECONFIG):
router_ids = self.edge_manager.get_routers_on_same_edge(
context, router_id)
info = super(nsx_v.NsxVPluginV2,
@ -694,8 +688,7 @@ class RouterSharedDriver(router_driver.RouterBaseDriver):
edge_id = edge_utils.get_router_edge_id(context, router_id)
with locking.LockManager.get_lock(
str(edge_id),
lock_file_prefix=NSXV_ROUTER_RECONFIG,
external=True):
lock_file_prefix=NSXV_ROUTER_RECONFIG):
self._add_router_services_on_available_edge(context,
router_id)
else:
@ -707,8 +700,7 @@ class RouterSharedDriver(router_driver.RouterBaseDriver):
edge_id = edge_utils.get_router_edge_id(context, router_id)
with locking.LockManager.get_lock(
str(edge_id),
lock_file_prefix=NSXV_ROUTER_RECONFIG,
external=True):
lock_file_prefix=NSXV_ROUTER_RECONFIG):
self._add_router_services_on_available_edge(context,
router_id)
return info
@ -717,8 +709,7 @@ class RouterSharedDriver(router_driver.RouterBaseDriver):
edge_id = edge_utils.get_router_edge_id(context, router_id)
with locking.LockManager.get_lock(
str(edge_id),
lock_file_prefix=NSXV_ROUTER_RECONFIG,
external=True):
lock_file_prefix=NSXV_ROUTER_RECONFIG):
info = super(
nsx_v.NsxVPluginV2, self.plugin).remove_router_interface(
context, router_id, interface_info)
@ -750,8 +741,7 @@ class RouterSharedDriver(router_driver.RouterBaseDriver):
edge_id = edge_utils.get_router_edge_id(context, router_id)
with locking.LockManager.get_lock(
str(edge_id),
lock_file_prefix=NSXV_ROUTER_RECONFIG,
external=True):
lock_file_prefix=NSXV_ROUTER_RECONFIG):
router_ids = self.edge_manager.get_routers_on_same_edge(
context, router_id)
if router_ids:

View File

@ -277,8 +277,7 @@ class EdgeLbDriver(object):
if not self._fw_section_id:
# Avoid concurrent creation of section by multiple neutron
# instances
with locking.LockManager.get_lock('lbaas-section-creation',
external=True):
with locking.LockManager.get_lock('lbaas-section-creation'):
fw_section_id = self.vcns.get_section_id(LBAAS_FW_SECTION_NAME)
if not fw_section_id:
section = et.Element('section')
@ -310,7 +309,7 @@ class EdgeLbDriver(object):
return rtr_bindings['edge_id']
def _vip_as_secondary_ip(self, edge_id, vip, handler):
with locking.LockManager.get_lock(edge_id, external=True):
with locking.LockManager.get_lock(edge_id):
r = self.vcns.get_interfaces(edge_id)[1]
vnics = r.get('vnics', [])
for vnic in vnics:
@ -377,7 +376,7 @@ class EdgeLbDriver(object):
edge_ips = self._get_edge_ips(edge_id)
plugin = self._get_lb_plugin()
with locking.LockManager.get_lock('lbaas-fw-section', external=True):
with locking.LockManager.get_lock('lbaas-fw-section'):
members = plugin.get_members(
context,
filters={'pool_id': [pool_id]},
@ -435,14 +434,14 @@ class EdgeLbDriver(object):
'enabled': True,
'name': vip_id}]}
with locking.LockManager.get_lock(edge_id, external=True):
with locking.LockManager.get_lock(edge_id):
h = self.vcns.add_firewall_rule(edge_id, fw_rule)[0]
fw_rule_id = extract_resource_id(h['location'])
return fw_rule_id
def _del_vip_fw_rule(self, edge_id, vip_fw_rule_id):
with locking.LockManager.get_lock(edge_id, external=True):
with locking.LockManager.get_lock(edge_id):
self.vcns.delete_firewall_rule(edge_id, vip_fw_rule_id)
def create_pool(self, context, pool):
@ -457,7 +456,7 @@ class EdgeLbDriver(object):
edge_pool = convert_lbaas_pool(pool)
try:
with locking.LockManager.get_lock(edge_id, external=True):
with locking.LockManager.get_lock(edge_id):
h = self.vcns.create_pool(edge_id, edge_pool)[0]
edge_pool_id = extract_resource_id(h['location'])
self._lb_driver.create_pool_successful(
@ -472,8 +471,7 @@ class EdgeLbDriver(object):
LOG.debug('Updating pool %s to %s', old_pool, pool)
edge_pool = convert_lbaas_pool(pool)
try:
with locking.LockManager.get_lock(pool_mapping['edge_id'],
external=True):
with locking.LockManager.get_lock(pool_mapping['edge_id']):
self.vcns.update_pool(pool_mapping['edge_id'],
pool_mapping['edge_pool_id'],
edge_pool)
@ -489,8 +487,7 @@ class EdgeLbDriver(object):
if pool_mapping:
try:
with locking.LockManager.get_lock(pool_mapping['edge_id'],
external=True):
with locking.LockManager.get_lock(pool_mapping['edge_id']):
self.vcns.delete_pool(pool_mapping['edge_id'],
pool_mapping['edge_pool_id'])
except nsxv_exc.VcnsApiException:
@ -517,7 +514,7 @@ class EdgeLbDriver(object):
app_profile_id = None
try:
with locking.LockManager.get_lock(edge_id, external=True):
with locking.LockManager.get_lock(edge_id):
h = (self.vcns.create_app_profile(edge_id, app_profile))[0]
app_profile_id = extract_resource_id(h['location'])
except nsxv_exc.VcnsApiException:
@ -529,7 +526,7 @@ class EdgeLbDriver(object):
edge_vip = convert_lbaas_vip(vip, app_profile_id, pool_mapping)
try:
self._add_vip_as_secondary_ip(edge_id, vip['address'])
with locking.LockManager.get_lock(edge_id, external=True):
with locking.LockManager.get_lock(edge_id):
h = self.vcns.create_vip(edge_id, edge_vip)[0]
edge_vip_id = extract_resource_id(h['location'])
edge_fw_rule_id = self._add_vip_fw_rule(edge_id, vip['id'],
@ -542,7 +539,7 @@ class EdgeLbDriver(object):
with excutils.save_and_reraise_exception():
self._lb_driver.vip_failed(context, vip)
LOG.error(_LE('Failed to create vip on Edge: %s'), edge_id)
with locking.LockManager.get_lock(edge_id, external=True):
with locking.LockManager.get_lock(edge_id):
self.vcns.delete_app_profile(edge_id, app_profile_id)
def update_vip(self, context, old_vip, vip, pool_mapping, vip_mapping):
@ -555,7 +552,7 @@ class EdgeLbDriver(object):
vip['name'], vip.get('session_persistence') or {},
vip.get('protocol'))
try:
with locking.LockManager.get_lock(edge_id, external=True):
with locking.LockManager.get_lock(edge_id):
self.vcns.update_app_profile(edge_id, app_profile_id,
app_profile)
except nsxv_exc.VcnsApiException:
@ -566,7 +563,7 @@ class EdgeLbDriver(object):
edge_vip = convert_lbaas_vip(vip, app_profile_id, pool_mapping)
try:
with locking.LockManager.get_lock(edge_id, external=True):
with locking.LockManager.get_lock(edge_id):
self.vcns.update_vip(edge_id, edge_vip_id, edge_vip)
self._lb_driver.vip_successful(context, vip)
except nsxv_exc.VcnsApiException:
@ -585,7 +582,7 @@ class EdgeLbDriver(object):
app_profile_id = vip_mapping['edge_app_profile_id']
try:
with locking.LockManager.get_lock(edge_id, external=True):
with locking.LockManager.get_lock(edge_id):
self.vcns.delete_vip(edge_id, edge_vse_id)
self._del_vip_as_secondary_ip(edge_id, vip['address'])
self._del_vip_fw_rule(edge_id, vip_mapping['edge_fw_rule_id'])
@ -598,7 +595,7 @@ class EdgeLbDriver(object):
_LE('Failed to delete vip on edge: %s'), edge_id)
try:
with locking.LockManager.get_lock(edge_id, external=True):
with locking.LockManager.get_lock(edge_id):
self.vcns.delete_app_profile(edge_id, app_profile_id)
except nsxv_exc.ResourceNotFound:
LOG.error(_LE('app profile not found on edge: %s'), edge_id)
@ -614,8 +611,7 @@ class EdgeLbDriver(object):
def create_member(self, context, member, pool_mapping):
LOG.debug('Creating member %s', member)
with locking.LockManager.get_lock(pool_mapping['edge_id'],
external=True):
with locking.LockManager.get_lock(pool_mapping['edge_id']):
edge_pool = self.vcns.get_pool(pool_mapping['edge_id'],
pool_mapping['edge_pool_id'])[1]
edge_member = convert_lbaas_member(member)
@ -646,8 +642,7 @@ class EdgeLbDriver(object):
def update_member(self, context, old_member, member, pool_mapping):
LOG.debug('Updating member %s to %s', old_member, member)
with locking.LockManager.get_lock(pool_mapping['edge_id'],
external=True):
with locking.LockManager.get_lock(pool_mapping['edge_id']):
edge_pool = self.vcns.get_pool(pool_mapping['edge_id'],
pool_mapping['edge_pool_id'])[1]
@ -672,8 +667,7 @@ class EdgeLbDriver(object):
LOG.debug('Deleting member %s', member)
if pool_mapping:
with locking.LockManager.get_lock(pool_mapping['edge_id'],
external=True):
with locking.LockManager.get_lock(pool_mapping['edge_id']):
edge_pool = self.vcns.get_pool(
pool_mapping['edge_id'],
pool_mapping['edge_pool_id'])[1]
@ -705,8 +699,7 @@ class EdgeLbDriver(object):
LOG.debug('Create HM %s', health_monitor)
edge_mon_id = None
with locking.LockManager.get_lock(pool_mapping['edge_id'],
external=True):
with locking.LockManager.get_lock(pool_mapping['edge_id']):
# 1st, we find if we already have a pool with the same monitor, on
# the same Edge appliance.
# If there is no pool on this Edge which is already associated with
@ -762,8 +755,7 @@ class EdgeLbDriver(object):
edge_monitor = convert_lbaas_monitor(health_monitor)
try:
with locking.LockManager.get_lock(mon_mapping['edge_id'],
external=True):
with locking.LockManager.get_lock(mon_mapping['edge_id']):
self.vcns.update_health_monitor(
mon_mapping['edge_id'],
mon_mapping['edge_monitor_id'],
@ -790,8 +782,7 @@ class EdgeLbDriver(object):
if not mon_mapping:
return
with locking.LockManager.get_lock(pool_mapping['edge_id'],
external=True):
with locking.LockManager.get_lock(pool_mapping['edge_id']):
edge_pool = self.vcns.get_pool(edge_id,
pool_mapping['edge_pool_id'])[1]
edge_pool['monitorId'].remove(mon_mapping['edge_monitor_id'])

View File

@ -498,7 +498,7 @@ class EdgeManager(object):
return
with locking.LockManager.get_lock(
'nsx-edge-request', lock_file_prefix='get-', external=True):
'nsx-edge-request', lock_file_prefix='get-'):
self._clean_all_error_edge_bindings(context)
available_router_binding = self._get_available_router_binding(
context, appliance_size=appliance_size, edge_type=edge_type)
@ -585,7 +585,7 @@ class EdgeManager(object):
return
with locking.LockManager.get_lock(
'nsx-edge-request', lock_file_prefix='get-', external=True):
'nsx-edge-request', lock_file_prefix='get-'):
self._clean_all_error_edge_bindings(context)
backup_router_bindings = self._get_backup_edge_bindings(
context, appliance_size=binding['appliance_size'],
@ -661,8 +661,7 @@ class EdgeManager(object):
return
with locking.LockManager.get_lock(
str(edge_binding['edge_id']),
lock_file_prefix='nsxv-dhcp-config-',
external=True):
lock_file_prefix='nsxv-dhcp-config-'):
self.update_dhcp_service_config(context, edge_binding['edge_id'])
def update_dhcp_service_config(self, context, edge_id):
@ -786,7 +785,7 @@ class EdgeManager(object):
def allocate_new_dhcp_edge(self, context, network_id, resource_id):
self._allocate_dhcp_edge_appliance(context, resource_id)
with locking.LockManager.get_lock(
'nsx-edge-pool', lock_file_prefix='edge-bind-', external=True):
'nsx-edge-pool', lock_file_prefix='edge-bind-'):
new_edge = nsxv_db.get_nsxv_router_binding(context.session,
resource_id)
nsxv_db.allocate_edge_vnic_with_tunnel_index(
@ -809,8 +808,7 @@ class EdgeManager(object):
# case 1: update a subnet to an existing dhcp edge
if dhcp_edge_binding:
with locking.LockManager.get_lock(
'nsx-edge-pool', lock_file_prefix='edge-bind-',
external=True):
'nsx-edge-pool', lock_file_prefix='edge-bind-'):
edge_id = dhcp_edge_binding['edge_id']
(conflict_edge_ids,
available_edge_ids) = self._get_used_edges(context, subnet)
@ -818,8 +816,7 @@ class EdgeManager(object):
"at present is using edge %s",
available_edge_ids, conflict_edge_ids, edge_id)
with locking.LockManager.get_lock(
str(edge_id), lock_file_prefix='nsxv-dhcp-config-',
external=True):
str(edge_id), lock_file_prefix='nsxv-dhcp-config-'):
# Delete the existing vnic interface if there is
# and overlapping subnet
if edge_id in conflict_edge_ids:
@ -843,8 +840,7 @@ class EdgeManager(object):
# case 2: attach the subnet to a new edge and update vnic
else:
with locking.LockManager.get_lock(
'nsx-edge-pool', lock_file_prefix='edge-bind-',
external=True):
'nsx-edge-pool', lock_file_prefix='edge-bind-'):
(conflict_edge_ids,
available_edge_ids) = self._get_used_edges(context, subnet)
LOG.debug('The available edges %s, the conflict edges %s',
@ -885,8 +881,7 @@ class EdgeManager(object):
edge_id, vnic_index, tunnel_index)
try:
with locking.LockManager.get_lock(
str(edge_id), lock_file_prefix='nsxv-dhcp-config-',
external=True):
str(edge_id), lock_file_prefix='nsxv-dhcp-config-'):
self._update_dhcp_internal_interface(
context, edge_id, vnic_index, tunnel_index, network_id,
address_groups)
@ -899,8 +894,7 @@ class EdgeManager(object):
'vnic_index': vnic_index,
'tunnel_index': tunnel_index})
with locking.LockManager.get_lock(
str(edge_id), lock_file_prefix='nsxv-dhcp-config-',
external=True):
str(edge_id), lock_file_prefix='nsxv-dhcp-config-'):
ports = self.nsxv_plugin.get_ports(
context, filters={'network_id': [network_id]})
inst_ports = [port
@ -930,8 +924,8 @@ class EdgeManager(object):
network_id)
try:
with locking.LockManager.get_lock(
str(edge_id), lock_file_prefix='nsxv-dhcp-config-',
external=True):
str(edge_id),
lock_file_prefix='nsxv-dhcp-config-'):
self._delete_dhcp_internal_interface(context, edge_id,
vnic_index,
tunnel_index,
@ -956,12 +950,10 @@ class EdgeManager(object):
if dhcp_edge_binding:
with locking.LockManager.get_lock(
'nsx-edge-pool', lock_file_prefix='edge-bind-',
external=True):
'nsx-edge-pool', lock_file_prefix='edge-bind-'):
edge_id = dhcp_edge_binding['edge_id']
with locking.LockManager.get_lock(
str(edge_id), lock_file_prefix='nsxv-dhcp-config-',
external=True):
str(edge_id), lock_file_prefix='nsxv-dhcp-config-'):
self.remove_network_from_dhcp_edge(context, network_id,
edge_id)
@ -987,8 +979,7 @@ class EdgeManager(object):
if not self.per_interface_rp_filter:
with locking.LockManager.get_lock(
'nsx-edge-pool', lock_file_prefix='edge-bind-',
external=True):
'nsx-edge-pool', lock_file_prefix='edge-bind-'):
self.nsxv_manager.vcns.set_system_control(
dhcp_edge_id,
[RP_FILTER_PROPERTY_OFF_TEMPLATE % ('all', '0')])
@ -1027,8 +1018,7 @@ class EdgeManager(object):
if vnic_index:
vnic_id = 'vNic_%d' % vnic_index
with locking.LockManager.get_lock(
str(edge_id), lock_file_prefix='nsxv-dhcp-config-',
external=True):
str(edge_id), lock_file_prefix='nsxv-dhcp-config-'):
sysctl_props = []
h, sysctl = self.nsxv_manager.vcns.get_system_control(edge_id)
if sysctl:
@ -1047,8 +1037,7 @@ class EdgeManager(object):
if vnic_index:
vnic_id = 'vNic_%d' % vnic_index
with locking.LockManager.get_lock(
str(edge_id), lock_file_prefix='nsxv-dhcp-config-',
external=True):
str(edge_id), lock_file_prefix='nsxv-dhcp-config-'):
h, sysctl = self.nsxv_manager.vcns.get_system_control(edge_id)
if sysctl:
sysctl_props = sysctl['property']
@ -1175,7 +1164,7 @@ class EdgeManager(object):
Return True if the logical router is bound to a new edge.
"""
with locking.LockManager.get_lock(
"edge-router", lock_file_prefix="bind-", external=True):
"edge-router", lock_file_prefix="bind-"):
optional_edge_ids = []
conflict_edge_ids = []
for router_id in optional_router_ids:
@ -1234,7 +1223,7 @@ class EdgeManager(object):
Return True if no logical router bound to the edge.
"""
with locking.LockManager.get_lock(
"edge-router", lock_file_prefix="bind-", external=True):
"edge-router", lock_file_prefix="bind-"):
# free edge if no other routers bound to the edge
router_ids = self.get_routers_on_same_edge(context, router_id)
if router_ids == [router_id]:
@ -1248,7 +1237,7 @@ class EdgeManager(object):
conflict_network_ids,
intf_num=0):
with locking.LockManager.get_lock(
"edge-router", lock_file_prefix="bind-", external=True):
"edge-router", lock_file_prefix="bind-"):
router_ids = self.get_routers_on_same_edge(context, router_id)
if set(router_ids) & set(conflict_router_ids):
return True
@ -1364,8 +1353,7 @@ def create_dhcp_bindings(context, nsxv_manager, network_id, bindings):
if edge_id:
with locking.LockManager.get_lock(
str(edge_id),
lock_file_prefix='nsxv-dhcp-config-',
external=True):
lock_file_prefix='nsxv-dhcp-config-'):
for binding in bindings:
nsxv_manager.vcns.create_dhcp_binding(edge_id, binding)
bindings_get = get_dhcp_binding_mappings(nsxv_manager, edge_id)
@ -1401,8 +1389,7 @@ def delete_dhcp_binding(context, nsxv_manager, network_id, mac_address):
if edge_id and dhcp_binding:
with locking.LockManager.get_lock(
str(edge_id),
lock_file_prefix='nsxv-dhcp-config-',
external=True):
lock_file_prefix='nsxv-dhcp-config-'):
nsxv_manager.vcns.delete_dhcp_binding(
edge_id, dhcp_binding.binding_id)
nsxv_db.delete_edge_dhcp_static_binding(