in groups/master/ggd/utils.py [0:0]
def ggc_discovery(thing_name, discovery_info_provider, retry_count=10,
max_groups=1):
back_off_core = ProgressiveBackOffCore()
discovered = False
discovery_info = None
while retry_count != 0:
try:
discovery_info = discovery_info_provider.discover(thing_name)
group_list = discovery_info.getAllGroups()
if len(group_list) > max_groups:
raise DiscoveryFailure("Discovered more groups than expected")
discovered = True
break
except DiscoveryFailure as df:
logging.error(
"Discovery failed! Error:{0} type:{1} message:{2}".format(
df, str(type(df)), df.message)
)
back_off = True
except DiscoveryInvalidRequestException as e:
logging.error("Invalid discovery request! Error:{0}".format(e))
logging.error("Stopping discovery...")
break
except BaseException as e:
logging.error(
"Error in discovery:{0} type:{1} message:{2} thing_name:{3} "
"dip:{4}".format(
e, str(type(e)), e.message, thing_name,
discovery_info_provider)
)
back_off = True
if back_off:
retry_count -= 1
logging.info("{0} retries left\n".format(retry_count))
logging.debug("Backing off...\n")
back_off_core.backOff()
return discovered, discovery_info