1 # Thierry Parmentelat - INRIA
4 from PLC.Method import Method
7 current_module=sys.modules[__name__]
11 "AddNodeNetworkSetting",
13 "DeleteNodeNetworkSetting",
14 "GetNodeNetworkSettings",
17 "UpdateNodeNetworkSetting",
22 "nodenetwork_id":"interface_id",
23 "nodenetwork_ids":"interface_ids",
24 "nodenetworksetting_ids":"interface_tag_ids",
26 v43_to_v42_argmap = dict([ (v,k) for k,v in v42_to_v43_argmap.iteritems()])
27 def v42rename (x): return v42_to_v43_argmap.get(x,x)
28 def v43rename (x): return v43_to_v42_argmap.get(x,x)
31 for legacyname in methods:
33 newname=legacyname.replace("NodeNetwork","Interface").replace("Setting","Tag")
35 setattr(current_module,legacyname,v42legacy.make_class(legacyname,newname,path,v42rename,v43rename))
38 # first replace the call method so we can translate fields
39 c = getattr(v42legacy.import_deep("PLC.Methods.GetNodes"),"GetNodes")
40 # rename call to newcall so we can still invoke
41 original = getattr(c,"call")
42 setattr(c,"newcall",original)
44 # 4.2 legacy support; update node_fields to include nodenetwork_ids
45 from PLC.Parameter import Parameter, Mixed, python_type
46 from PLC.Filter import Filter
47 from PLC.Nodes import Node, Nodes
50 node_fields['nodenetwork_ids']=Parameter([int], "Legacy version of interface_ids")
51 for k,v in Node.fields.iteritems():
55 expected = node_fields['nodenetwork_ids']
56 print "type of nodenetwork_ids = %s" % python_type(node_fields['nodenetwork_ids'])
57 print Filter(node_fields).fields.keys()
58 print Filter(Node.fields).fields.keys()
60 accepts = getattr(c,"accepts")
62 arg1=Mixed([Mixed(Node.fields['node_id'],
63 Node.fields['hostname'])],
64 Parameter(str,"hostname"),
65 Parameter(int,"node_id"),
68 newaccepts = [arg0,arg1,arg2]
69 setattr(c,"accepts",newaccepts)
70 newreturns = [node_fields]
71 setattr(c,"returns",newreturns)
73 def GetNodesCall(self, auth, node_filter = None, return_fields = None):
75 # convert nodenetwork_ids -> interface_ids
76 if node_filter <> None and \
77 node_filter.has_key('nodenetwork_ids') and \
78 not node_filter.has_key('interface_ids'):
79 node_filter['interface_ids']=node_filter['nodenetwork_ids']
81 nodes = original(self,auth,node_filter,return_fields)
83 # add in a interface_ids -> nodenetwork_ids
85 if node.has_key('interface_ids'):
86 node['nodenetwork_ids']=node['interface_ids']
90 setattr(c,"call",GetNodesCall)