From: Thierry Parmentelat Date: Sun, 5 Nov 2006 15:38:05 +0000 (+0000) Subject: selection on foreign nodes : either on id or hostname, undoes selection on peername X-Git-Tag: pycurl-7_13_1~383 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=1f6ee420de8747ad6d801104e24bb1fa386de2bb;p=plcapi.git selection on foreign nodes : either on id or hostname, undoes selection on peername --- diff --git a/PLC/ForeignNodes.py b/PLC/ForeignNodes.py index c58bdf23..0a135ea4 100644 --- a/PLC/ForeignNodes.py +++ b/PLC/ForeignNodes.py @@ -1,7 +1,5 @@ # -# the nodes standing on peer plc's -# -# Thierry Parmentelat +# Thierry Parmentelat - INRIA # from types import StringTypes @@ -31,27 +29,25 @@ class ForeignNode (Row) : class ForeignNodes (Table): - def __init__ (self, api, foreign_node_id_or_peername_list=None): + def __init__ (self, api, foreign_node_id_or_hostname_list=None): self.api=api - # must qualify fields because peer_id otherwise gets ambiguous - fields = ["foreign_nodes.%s"%x for x in ForeignNode.fields] - sql ="" - sql += "SELECT %s FROM foreign_nodes, peers " % ", ".join(fields) - sql += "WHERE foreign_nodes.peer_id=peers.peer_id " - sql += "AND foreign_nodes.deleted IS False " - - if foreign_node_id_or_peername_list: - foreign_node_id_list = [ x for x in foreign_node_id_or_peername_list if isinstance(x, (int,long))] - peername_list = [ x for x in foreign_node_id_or_peername_list if isinstance(x, StringTypes)] + sql += "SELECT %s FROM foreign_nodes " % ", ".join(ForeignNode.fields) + sql += "WHERE foreign_nodes.deleted IS False " + + if foreign_node_id_or_hostname_list: + foreign_node_id_list = [ str(x) for x in foreign_node_id_or_hostname_list + if isinstance(x, (int,long))] + hostname_list = [ x for x in foreign_node_id_or_hostname_list + if isinstance(x, StringTypes)] sql += " AND (False" if foreign_node_id_list: - sql += " OR foreign_node_id in (%s)" % ", ".join([str(i) for i in foreign_node_id_list]) - if peername_list: - ## figure how to retrieve peer_id from the peername(s) - sql += " OR peername IN (%s)" % ", ".join(api.db.quote(peername_list)) + sql += " OR foreign_node_id in (%s)" % ", ".join(foreign_node_id_list) + if hostname_list: + ## figure how to retrieve peer_id from the hostname(s) + sql += " OR hostname IN (%s)" % ", ".join(api.db.quote(hostname_list)) sql += ")" rows = self.api.db.selectall (sql) diff --git a/PLC/Methods/AddPeer.py b/PLC/Methods/AddPeer.py index f636add1..79982f5d 100644 --- a/PLC/Methods/AddPeer.py +++ b/PLC/Methods/AddPeer.py @@ -1,3 +1,7 @@ +# +# Thierry Parmentelat - INRIA +# + from PLC.Faults import * from PLC.Method import Method from PLC.Parameter import Parameter, Mixed diff --git a/PLC/Methods/GetForeignNodes.py b/PLC/Methods/GetForeignNodes.py index 100f3ea1..230240b5 100644 --- a/PLC/Methods/GetForeignNodes.py +++ b/PLC/Methods/GetForeignNodes.py @@ -1,3 +1,7 @@ +# +# Thierry Parmentelat - INRIA +# + from PLC.Faults import * from PLC.Method import Method from PLC.Parameter import Parameter, Mixed @@ -19,7 +23,7 @@ class GetForeignNodes (Method): returns = [ ForeignNode.fields] - def call (self, auth, foreign_id_or_peername_list = None): + def call (self, auth, foreign_id_or_hostname_list = None): - return ForeignNodes (self.api, foreign_id_or_peername_list).values() + return ForeignNodes (self.api, foreign_id_or_hostname_list).values() diff --git a/PLC/Methods/GetPeers.py b/PLC/Methods/GetPeers.py index 3be2b180..cc85ef17 100644 --- a/PLC/Methods/GetPeers.py +++ b/PLC/Methods/GetPeers.py @@ -1,3 +1,7 @@ +# +# Thierry Parmentelat - INRIA +# + from PLC.Faults import * from PLC.Method import Method from PLC.Parameter import Parameter, Mixed diff --git a/PLC/Methods/UpdatePeer.py b/PLC/Methods/UpdatePeer.py index 09cf3be8..1249a478 100644 --- a/PLC/Methods/UpdatePeer.py +++ b/PLC/Methods/UpdatePeer.py @@ -1,3 +1,7 @@ +# +# Thierry Parmentelat - INRIA +# + import xmlrpclib from PLC.Faults import * diff --git a/PLC/Peers.py b/PLC/Peers.py index be4b24ce..9686044d 100644 --- a/PLC/Peers.py +++ b/PLC/Peers.py @@ -1,3 +1,7 @@ +# +# Thierry Parmentelat - INRIA +# + import re from types import StringTypes