From 30768ce30555a5b4472c6d934b4aa6ea1ee74c0f Mon Sep 17 00:00:00 2001 From: Goffi Date: Wed, 15 Nov 2017 08:54:32 +0100 Subject: [PATCH] memory (disco): added findServiceEntity helper method to get first service of a kind --- src/core/sat_main.py | 3 +++ src/memory/disco.py | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/core/sat_main.py b/src/core/sat_main.py index 3bbd6492..b097a874 100644 --- a/src/core/sat_main.py +++ b/src/core/sat_main.py @@ -604,6 +604,9 @@ class SAT(service.Service): def getDiscoItems(self, *args, **kwargs): return self.memory.disco.getItems(*args, **kwargs) + def findServiceEntity(self, *args, **kwargs): + return self.memory.disco.findServiceEntity(*args, **kwargs) + def findServiceEntities(self, *args, **kwargs): return self.memory.disco.findServiceEntities(*args, **kwargs) diff --git a/src/memory/disco.py b/src/memory/disco.py index d5c6ebb4..112baea7 100755 --- a/src/memory/disco.py +++ b/src/memory/disco.py @@ -230,6 +230,16 @@ class Discovery(object): log.warning(_(u"Error while requesting [%(jid)s]: %(error)s") % {'jid': entity_jid.full(), 'error': failure_.getErrorMessage()}) + def findServiceEntity(self, client, category, type_, jid_=None): + """Helper method to find first available entity from findServiceEntities + + args are the same as for [findServiceEntities] + @return (jid.JID, None): found entity + """ + d = self.host.findServiceEntities(client, "pubsub", "service") + d.addCallback(lambda entities: entities.pop() if entities else None) + return d + def findServiceEntities(self, client, category, type_, jid_=None): """Return all available items of an entity which correspond to (category, type_)