resources = self._uuid_dict_mappings[key]
return resources[key]
- def _update_resources(self, resources, new_resources):
+ def _clear_changed_flag_and_remove_from_cache(self, resources):
# Clear the 'changed' attribute for all items
for uuid, item in resources.items():
if item.pop('changed', None) and not item.get('data'):
del self._uuid_dict_mappings[uuid]
LOG.debug("Removed item %s from NSX object cache", uuid)
+ def _update_resources(self, resources, new_resources, clear_changed=True):
+ if clear_changed:
+ self._clear_changed_flag_and_remove_from_cache(resources)
+
def do_hash(item):
return hash(jsonutils.dumps(item))
return self._get_resource_ids(self._lswitchports, changed_only)
def update_lswitch(self, lswitch):
- self._update_resources(self._lswitches, [lswitch])
+ self._update_resources(self._lswitches, [lswitch], clear_changed=False)
def update_lrouter(self, lrouter):
- self._update_resources(self._lrouters, [lrouter])
+ self._update_resources(self._lrouters, [lrouter], clear_changed=False)
def update_lswitchport(self, lswitchport):
- self._update_resources(self._lswitchports, [lswitchport])
+ self._update_resources(self._lswitchports, [lswitchport],
+ clear_changed=False)
def process_updates(self, lswitches=None,
lrouters=None, lswitchports=None):
self.nsx_cache.process_updates(lswitches, LROUTERS, LSWITCHPORTS)
self.assertNotIn(deleted_lswitch['uuid'], self.nsx_cache._lswitches)
+ def test_update_resource_does_not_cleanup_deleted_resources(self):
+ deleted_lswitch, lswitches = self._test_process_updates_with_removals()
+ self.nsx_cache.process_deletes()
+ self.nsx_cache.update_lswitch(deleted_lswitch)
+ self.assertIn(deleted_lswitch['uuid'], self.nsx_cache._lswitches)
+
def _verify_delete(self, resource, deleted=True, hit=True):
cached_resource = self.nsx_cache[resource['uuid']]
data_field = 'data_bk' if deleted else 'data'