1 # Thierry Parmentelat - INRIA
4 from PLC.Method import Method
8 components = name.split('.')
9 for comp in components[1:]:
10 mod = getattr(mod, comp)
15 "AddNodeNetworkSetting",
17 "DeleteNodeNetworkSetting",
18 "GetNodeNetworkSettings",
21 "UpdateNodeNetworkSetting",
24 # does any required renaming
26 if x=='nodenetwork_id':
28 if x=='nodenetwork_ids':
29 return 'interface_ids'
33 # apply rename on list (columns) or dict (filter) args
34 def patch_legacy_arg (arg):
35 if isinstance(arg,list):
36 return [rename(x) for x in arg]
37 if isinstance(arg,dict):
38 return dict ( [ (rename(k),v) for (k,v) in arg.iteritems() ] )
41 def factory (legacyname):
43 newname=legacyname.replace("NodeNetwork","Interface")
45 newclass=getattr(import_deep("PLC.Methods."+newname),newname)
46 # create class for legacy name
47 legacyclass = type(legacyname,(newclass,),
48 {"__doc__":"Legacy method - please use %s instead"%newname})
49 # xxx should rewrite 'call' to handle any argument using nodenetwork_id(s)
50 for internal in ["roles","accepts","returns"]:
51 setattr(legacyclass,internal,getattr(newclass,internal))
52 # turn off type checking, as introspection code fails on wrapped_call
53 setattr(legacyclass,"skip_typecheck",True)
55 def wrapped_call (self,auth,*args, **kwds):
56 newargs=[patch_legacy_arg(x) for x in args]
57 newkwds=dict ( [ (k,patch_legacy_arg(v)) for (k,v) in kwds.iteritems() ] )
58 return getattr(newclass,"call")(self,auth,*newargs,**newkwds)
59 setattr(legacyclass,"call",wrapped_call)
63 # this does not work, as __module__ is not yet supported
64 #for legacyname in methods:
65 # setattr(__module__,legacyname,factory(legacyname))
66 # this does not work either, as we are importing the module so we cannot locate it yet
67 #for legacyname in methods:
68 # this_module = import_deep(__name__)
69 # setattr(__module__,legacyname,factory(legacyname))
71 AddNodeNetwork=factory("AddNodeNetwork")
72 AddNodeNetworkSetting=factory("AddNodeNetworkSetting")
73 DeleteNodeNetwork=factory("DeleteNodeNetwork")
74 DeleteNodeNetworkSetting=factory("DeleteNodeNetworkSetting")
75 GetNodeNetworkSettings=factory("GetNodeNetworkSettings")
76 GetNodeNetworks=factory("GetNodeNetworks")
77 UpdateNodeNetwork=factory("UpdateNodeNetwork")
78 UpdateNodeNetworkSetting=factory("UpdateNodeNetworkSetting")