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)
14 "AddSliceAttributeType" : "AddTagType",
15 "DeleteSliceAttributeType" : "DeleteTagType",
16 "GetSliceAttributeTypes" : "GetTagTypes",
17 "UpdateSliceAttributeType" : "UpdateTagType",
18 "AddNodeNetworkSettingType" : "AddTagType",
19 "DeleteNodeNetworkSettingType" : "DeleteTagType",
20 "GetNodeNetworkSettingTypes" : "GetTagTypes",
21 "UpdateNodeNetworkSettingType" : "UpdateTagType",
24 # does any required renaming
31 # apply rename on list (columns) or dict (filter) args
32 def patch_legacy_arg (arg):
33 if isinstance(arg,list):
34 return [rename(x) for x in arg]
35 if isinstance(arg,dict):
36 return dict ( [ (rename(k),v) for (k,v) in arg.iteritems() ] )
39 def legacy_method (legacyname, newname):
41 newclass=getattr(import_deep("PLC.Methods."+newname),newname)
42 # create class for legacy name
43 legacyclass = type(legacyname,(newclass,),
44 {"__doc__":"Legacy method - please use %s instead"%newname})
45 for internal in ["roles","accepts","returns"]:
46 setattr(legacyclass,internal,getattr(newclass,internal))
47 # turn off type checking, as introspection code fails on wrapped_call
48 setattr(legacyclass,"skip_typecheck",True)
50 def wrapped_call (self,auth,*args, **kwds):
51 newargs=[patch_legacy_arg(x) for x in args]
52 newkwds=dict ( [ (k,patch_legacy_arg(v)) for (k,v) in kwds.iteritems() ] )
53 return getattr(newclass,"call")(self,auth,*newargs,**newkwds)
54 setattr(legacyclass,"call",wrapped_call)
59 current_module=sys.modules[__name__]
61 for (legacyname,newname) in map.iteritems():
62 setattr(current_module,legacyname,legacy_method(legacyname,newname))