From d2d7d5c3db0714c0efaa05fa013022fccb2b27e6 Mon Sep 17 00:00:00 2001 From: Guido Trotter <ultrotter@google.com> Date: Thu, 28 May 2009 10:10:11 +0100 Subject: [PATCH] objects: add configuration upgrade system Add a very basic configuration update mechanism to objects. An object can define the UpgradeConfig method, which will be called at init time, and use it to fill in missing defaults in the configuration. In the future we may want to make it more complex, for example adding the config version, but for now a basic solution will do. Signed-off-by: Guido Trotter <ultrotter@google.com> Reviewed-by: Iustin Pop <iustin@google.com> (cherry picked from commit 560428be4f5852813972cd2791f425cf708ca7c6) --- lib/objects.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/objects.py b/lib/objects.py index acb24d84b..23bb0f977 100644 --- a/lib/objects.py +++ b/lib/objects.py @@ -58,6 +58,7 @@ class ConfigObject(object): def __init__(self, **kwargs): for k, v in kwargs.iteritems(): setattr(self, k, v) + self.UpgradeConfig() def __getattr__(self, name): if name not in self.__slots__: @@ -165,6 +166,15 @@ class ConfigObject(object): """Implement __repr__ for ConfigObjects.""" return repr(self.ToDict()) + def UpgradeConfig(self): + """Fill defaults for missing configuration values. + + This method will be called at object init time, and its implementation will + be object dependent. + + """ + pass + class TaggableObject(ConfigObject): """An generic class supporting tags. -- GitLab