[PATCH] [Kimchi] * DEPENDS on WOK 'eliminate code repetition' patchset * model changes

From: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com> This patch uses the new WoK function 'get_all_model_instances' to simplify the code in model.py. Daniel Henrique Barboza (1): model.py: use the new 'get_all_model_instances' utils function model/model.py | 40 ++++++++-------------------------------- 1 file changed, 8 insertions(+), 32 deletions(-) -- 2.5.5

From: Daniel Henrique Barboza <danielhb@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@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

Reviewed-By: Lucio Correia <luciojhc@linux.vnet.ibm.com> On 11-08-2016 17:53, dhbarboza82@gmail.com wrote:
From: Daniel Henrique Barboza <danielhb@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@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)
-- Lucio Correia Software Engineer IBM LTC Brazil

Applied to master. Thanks! On 08/11/2016 05:53 PM, dhbarboza82@gmail.com wrote:
From: Daniel Henrique Barboza <danielhb@linux.vnet.ibm.com>
This patch uses the new WoK function 'get_all_model_instances' to simplify the code in model.py.
Daniel Henrique Barboza (1): model.py: use the new 'get_all_model_instances' utils function
model/model.py | 40 ++++++++-------------------------------- 1 file changed, 8 insertions(+), 32 deletions(-)
participants (3)
-
Daniel Henrique Barboza
-
dhbarboza82@gmail.com
-
Lucio Correia