diff --git a/vmware_nsx/dhcp_meta/modes.py b/vmware_nsx/dhcp_meta/modes.py index a1b7546f37..46bedd5520 100644 --- a/vmware_nsx/dhcp_meta/modes.py +++ b/vmware_nsx/dhcp_meta/modes.py @@ -15,6 +15,8 @@ # under the License. # +import weakref + from neutron_lib.agent import topics from neutron_lib import constants as const from oslo_concurrency import lockutils @@ -106,10 +108,10 @@ class DhcpMetadataAccess(object): nsx_svc.register_dhcp_opts(cfg) nsx_svc.register_metadata_opts(cfg) lsnmanager.register_lsn_opts(cfg) - lsn_manager = lsnmanager.PersistentLsnManager(self.safe_reference) + lsn_manager = lsnmanager.PersistentLsnManager(weakref.proxy(self)) self.lsn_manager = lsn_manager if cfg.CONF.NSX.agent_mode == config.AgentModes.AGENTLESS: - notifier = nsx_svc.DhcpAgentNotifyAPI(self.safe_reference, + notifier = nsx_svc.DhcpAgentNotifyAPI(weakref.proxy(self), lsn_manager) self.agent_notifiers[const.AGENT_TYPE_DHCP] = notifier # In agentless mode, ports whose owner is DHCP need to @@ -122,13 +124,13 @@ class DhcpMetadataAccess(object): # are handled by Logical Services Nodes in NSX cfg.CONF.set_override('network_auto_schedule', False) LOG.warning('network_auto_schedule has been disabled') - notifier = combined.DhcpAgentNotifyAPI(self.safe_reference, + notifier = combined.DhcpAgentNotifyAPI(weakref.proxy(self), lsn_manager) self.supported_extension_aliases.append(lsn.EXT_ALIAS) # Add the capability to migrate dhcp and metadata services over self.migration_manager = ( migration.MigrationManager( - self.safe_reference, lsn_manager, notifier)) + weakref.proxy(self), lsn_manager, notifier)) return notifier def _init_extensions(self): @@ -164,18 +166,18 @@ class DhcpMetadataAccess(object): return {'network': network_id, 'report': r} def handle_network_dhcp_access(self, context, network, action): - self.handle_network_dhcp_access_delegate(self.safe_reference, context, + self.handle_network_dhcp_access_delegate(weakref.proxy(self), context, network, action) def handle_port_dhcp_access(self, context, port_data, action): - self.handle_port_dhcp_access_delegate(self.safe_reference, context, + self.handle_port_dhcp_access_delegate(weakref.proxy(self), context, port_data, action) def handle_port_metadata_access(self, context, port, is_delete=False): - self.handle_port_metadata_access_delegate(self.safe_reference, context, + self.handle_port_metadata_access_delegate(weakref.proxy(self), context, port, is_delete) def handle_router_metadata_access(self, context, router_id, interface=None): - self.handle_metadata_access_delegate(self.safe_reference, context, + self.handle_metadata_access_delegate(weakref.proxy(self), context, router_id, interface) diff --git a/vmware_nsx/plugins/nsx_mh/plugin.py b/vmware_nsx/plugins/nsx_mh/plugin.py index 47e90e1951..55036a3d5d 100644 --- a/vmware_nsx/plugins/nsx_mh/plugin.py +++ b/vmware_nsx/plugins/nsx_mh/plugin.py @@ -13,6 +13,8 @@ # License for the specific language governing permissions and limitations # under the License. +import weakref + from neutron_lib.api.definitions import allowedaddresspairs as addr_apidef from neutron_lib.api.definitions import external_net as extnet_apidef from neutron_lib.api.definitions import port_security as psec @@ -211,7 +213,7 @@ class NsxPluginV2(addr_pair_db.AllowedAddressPairsMixin, self._is_default_net_gw_in_sync = False # Create a synchronizer instance for backend sync self._synchronizer = sync.NsxSynchronizer( - self.safe_reference, self.cluster, + weakref.proxy(self), self.cluster, self.nsx_sync_opts.state_sync_interval, self.nsx_sync_opts.min_sync_req_delay, self.nsx_sync_opts.min_chunk_size,