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",
26 # does any required renaming
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 legacy_method (legacyname, newname):
43 newclass=getattr(import_deep("PLC.Methods."+newname),newname)
44 # create class for legacy name
45 legacyclass = type(legacyname,(newclass,),
46 {"__doc__":"Legacy method - please use %s instead"%newname})
47 for internal in ["roles","accepts","returns"]:
48 setattr(legacyclass,internal,getattr(newclass,internal))
49 # turn off type checking, as introspection code fails on wrapped_call
50 setattr(legacyclass,"skip_typecheck",True)
52 def wrapped_call (self,auth,*args, **kwds):
53 newargs=[patch_legacy_arg(x) for x in args]
54 newkwds=dict ( [ (k,patch_legacy_arg(v)) for (k,v) in kwds.iteritems() ] )
55 return getattr(newclass,"call")(self,auth,*newargs,**newkwds)
56 setattr(legacyclass,"call",wrapped_call)
61 current_module=sys.modules[__name__]
63 for (legacyname,newname) in map.iteritems():
64 setattr(current_module,legacyname,legacy_method(legacyname,newname))