
On 01/23/2014 06:03 PM, Aline Manera wrote:
On 01/22/2014 02:51 PM, shaohef@linux.vnet.ibm.com wrote:
From: ShaoHe Feng <shaohef@linux.vnet.ibm.com>
load_url_sub_node can load collections/resouces automatically when they are tagged with @UrlSubNode
Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com> --- src/kimchi/utils.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+)
diff --git a/src/kimchi/utils.py b/src/kimchi/utils.py index 5d6e8ea..94c83d2 100644 --- a/src/kimchi/utils.py +++ b/src/kimchi/utils.py @@ -22,6 +22,7 @@ #
import cherrypy +import imp
I think it should not be there.
I also would say to move this code to kimchi/control/utils.py as it is a controller improvement
import os import subprocess import urllib2 @@ -162,3 +163,40 @@ def parse_cmd_output(output, output_items): res.append(dict(zip(output_items, line.split())))
return res + + +class UrlSubNode(object): + def __init__(self, name, auth=False): + self.name = name + self.auth = auth + + def __call__(self, fun): + fun._url_sub_node_name = {"name": self.name} + fun.url_auth = self.auth + return fun + + +def listPathModules(path): + modules = set() + for f in os.listdir(path): + base, ext = os.path.splitext(f) + if ext in ('.py', '.pyc', '.pyo'): + modules.add(base) + return sorted(modules) + + +def load_url_sub_node(path, package_name, expect_attr="_url_sub_node_name"): + sub_nodes = {} + for mod_name in listPathModules(path): + if mod_name.startswith("_"): + continue + + module = import_module(package_name + '.' + mod_name) + + for node in [getattr(module, x) for x in dir(module)]: + if not hasattr(node, expect_attr): + continue + name = getattr(node, expect_attr)["name"] + sub_nodes.update({name: node}) + + return sub_nodes
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel