[Kimchi-devel] [PATCH 1/4] improve controller: add a method to load root sub collections/resouces automatically
Sheldon
shaohef at linux.vnet.ibm.com
Mon Jan 20 09:28:50 UTC 2014
On 01/20/2014 04:30 PM, Zhou Zheng Sheng wrote:
> on 2014/01/20 14:00, shaohef at linux.vnet.ibm.com wrote:
>> From: ShaoHe Feng <shaohef at 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 at linux.vnet.ibm.com>
>> ---
>> src/kimchi/utils.py | 39 +++++++++++++++++++++++++++++++++++++++
>> 1 file changed, 39 insertions(+)
>>
>> diff --git a/src/kimchi/utils.py b/src/kimchi/utils.py
>> index 331da91..6d3f2ad 100644
>> --- a/src/kimchi/utils.py
>> +++ b/src/kimchi/utils.py
>> @@ -22,6 +22,7 @@
>> #
>>
>> import cherrypy
>> +import imp
>> import os
>> import subprocess
>> import urllib2
>> @@ -154,3 +155,41 @@ def run_command(cmd, timeout=None):
>> finally:
>> if timer and not timeout_flag[0]:
>> timer.cancel()
>> +
>> +
>> +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_sub_node_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, except_attr="_url_sub_node_name"):
>> + sub_nodes = {}
>> +
>> + for mod_name in listPathModules(path):
>> + if mod_name.startswith("_"):
>> + continue
>> + mod_fobj, mod_absp, mod_desc = imp.find_module(mod_name, [path])
>> + module = imp.load_module(mod_name, mod_fobj,
>> + mod_absp, mod_desc)
>> + for node in [getattr(module, x) for x in dir(module)]:
>> + if not hasattr(node, except_attr):
>> + continue
>> + name = getattr(node, except_attr)["name"]
>> + sub_nodes.update({name: node})
>> +
>> + return sub_nodes
>>
> It seems except_attr should be renamed to expect_attr.
yes. expect_attr
>
--
Thanks and best regards!
Sheldon Feng(冯少合)<shaohef at linux.vnet.ibm.com>
IBM Linux Technology Center
More information about the Kimchi-devel
mailing list