memory (disco): add nodeIdentifier parameter to getItems

This commit is contained in:
souliane 2014-09-22 20:34:29 +02:00
commit 7ee4fee48c

View file

@ -116,10 +116,11 @@ class Discovery(object):
return d
@defer.inlineCallbacks
def getItems(self, jid_=None, profile_key=C.PROF_KEY_NONE):
def getItems(self, jid_=None, nodeIdentifier='', profile_key=C.PROF_KEY_NONE):
"""get disco items from jid_, cache them for our own server
@param jid_: jid of the target, or None for profile's server
@param jid_ (jid.JID): jid of the target, or None for profile's server
@param nodeIdentifier (str): optional node identifier
@param profile_key: %(doc_profile_key)s
@return: a Deferred which fire disco.DiscoItems
"""
@ -132,10 +133,10 @@ class Discovery(object):
log.debug("[%s] disco items are in cache" % jid_.full())
except KeyError:
log.debug("Caching [%s] disco items" % jid_.full())
items = yield client.disco.requestItems(jid_)
items = yield client.disco.requestItems(jid_, nodeIdentifier)
self.host.memory.updateEntityData(jid_, "DISCO_ITEMS", items, client.profile)
else:
items = yield client.disco.requestItems(jid_)
items = yield client.disco.requestItems(jid_, nodeIdentifier)
defer.returnValue(items)
@ -168,7 +169,7 @@ class Discovery(object):
defers_list.append(info_d)
return defer.DeferredList(defers_list)
d = self.getItems(jid_, profile_key)
d = self.getItems(jid_, profile_key=profile_key)
d.addCallback(gotItems)
d.addCallback(lambda dummy: found_entities)
reactor.callLater(TIMEOUT, d.cancel) # FIXME: one bad service make a general timeout
@ -213,7 +214,7 @@ class Discovery(object):
defer_list.append(infos_d)
return defer.DeferredList(defer_list)
d = self.getItems(jid_, profile_key)
d = self.getItems(jid_, profile_key=profile_key)
d.addCallback(gotItems)
d.addCallback(lambda dummy: found_entities)
reactor.callLater(TIMEOUT, d.cancel) # FIXME: one bad service make a general timeout
@ -261,5 +262,5 @@ class Discovery(object):
@return: list of tu"""
entity = jid.JID(entity_jid_s)
disco_items = yield self.getItems(entity, profile_key)
disco_items = yield self.getItems(entity, profile_key=profile_key)
defer.returnValue([(item.entity.full(), item.nodeIdentifier or '', item.name or '') for item in disco_items])