[Kimchi-devel] [PATCH] [Kimchi] model.py: use the new 'get_all_model_instances' utils function

dhbarboza82 at gmail.com dhbarboza82 at gmail.com
Thu Aug 11 20:53:02 UTC 2016


From: Daniel Henrique Barboza <danielhb at linux.vnet.ibm.com>

This patch uses the new get_all_model_instances function from
WoK utils to retrieve all Kimchi model instances

Signed-off-by: Daniel Henrique Barboza <danielhb at linux.vnet.ibm.com>
---
 model/model.py | 40 ++++++++--------------------------------
 1 file changed, 8 insertions(+), 32 deletions(-)

diff --git a/model/model.py b/model/model.py
index 327d5a7..719652d 100644
--- a/model/model.py
+++ b/model/model.py
@@ -17,13 +17,10 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 
-import inspect
-import os
-
 from wok.basemodel import BaseModel
 from wok.objectstore import ObjectStore
 from wok.plugins.kimchi import config
-from wok.utils import import_module, listPathModules
+from wok.utils import get_all_model_instances, get_model_instances
 
 from wok.plugins.kimchi.model.libvirtconnection import LibvirtConnection
 from wok.plugins.kimchi.model.libvirtevents import LibvirtEvents
@@ -32,42 +29,21 @@ from wok.plugins.kimchi.model.libvirtevents import LibvirtEvents
 class Model(BaseModel):
     def __init__(self, libvirt_uri=None, objstore_loc=None):
 
-        def get_instances(module_name):
-            instances = []
-            module = import_module(module_name)
-            members = inspect.getmembers(module, inspect.isclass)
-            for cls_name, instance in members:
-                if inspect.getmodule(instance) == module and \
-                   cls_name.endswith('Model'):
-                    instances.append(instance)
-
-            return instances
-
         self.objstore = ObjectStore(objstore_loc or config.get_object_store())
-        self.events = LibvirtEvents()
         self.conn = LibvirtConnection(libvirt_uri)
-        kargs = {'objstore': self.objstore, 'conn': self.conn,
-                 'eventsloop': self.events}
-        models = []
 
         # Register for Libvirt's host ENOSPC event and notify UI if it happens
+        self.events = LibvirtEvents()
         self.events.handleEnospc(self.conn)
 
+        kargs = {'objstore': self.objstore, 'conn': self.conn,
+                 'eventsloop': self.events}
+
+        models = get_all_model_instances(__name__, __file__, kargs)
+
         # Import task model from Wok
-        instances = get_instances('wok.model.tasks')
+        instances = get_model_instances('wok.model.tasks')
         for instance in instances:
             models.append(instance(**kargs))
 
-        # Import all Kimchi plugin models
-        this = os.path.basename(__file__)
-        this_mod = os.path.splitext(this)[0]
-
-        for mod_name in listPathModules(os.path.dirname(__file__)):
-            if mod_name.startswith("_") or mod_name == this_mod:
-                continue
-
-            instances = get_instances('wok.plugins.kimchi.model.' + mod_name)
-            for instance in instances:
-                models.append(instance(**kargs))
-
         return super(Model, self).__init__(models)
-- 
2.5.5




More information about the Kimchi-devel mailing list