X-Git-Url: https://code.grnet.gr/git/ganeti-local/blobdiff_plain/26b316d09e8ef1b4f530be603faaa38076df8719..fc8a6b8f3334c1352caafcede1e31d801fc146ba:/lib/config.py?ds=sidebyside diff --git a/lib/config.py b/lib/config.py index af45aa3..712f599 100644 --- a/lib/config.py +++ b/lib/config.py @@ -206,6 +206,13 @@ class ConfigWriter: self._temporary_ids.add(unique_id) return unique_id + def _CleanupTemporaryIDs(self): + """Cleanups the _temporary_ids structure. + + """ + existing = self._AllIDs(include_temporary=False) + self._temporary_ids = self._temporary_ids - existing + def _AllMACs(self): """Return all MACs present in the config. @@ -1114,6 +1121,10 @@ class ConfigWriter: """Write the configuration data to persistent storage. """ + # first, cleanup the _temporary_ids set, if an ID is now in the + # other objects it should be discarded to prevent unbounded growth + # of that structure + self._CleanupTemporaryIDs() config_errors = self._UnlockedVerifyConfig() if config_errors: raise errors.ConfigurationError("Configuration data is not"