def send_resource_owner_messages(self, data): owners = {} for r in data['resources']: # Since we support arbitrary contact tags, eg OwnerEmail _and_ SupportEmail # we run set, to unique the list before it's processed. There is a chance # two different tags are both set to [email protected], in which case bob # would get duplicates of every resource. Since contact_tags could be # ['*****@*****.**', '*****@*****.**']. contact_tags = set(self.find_resource_owners(r)) if not contact_tags: self.logger.info("No resource owner found for %s" % ( resource_format(r, data['policy']['resource']))) continue for contact_tag in contact_tags: owners.setdefault(contact_tag, []).append(r) # Address resolution can take some time, try to do it upfront t = time.time() owner_addrs = { o: (self.resolve_address(o) or o) for o in owners.keys()} self.logger.info("policy:%s resolved %d owners in %0.2f seconds" % ( data['policy']['name'], len(owner_addrs), time.time() - t)) # TODO, check deadline and requeue before sending any messages. for o, resources in owners.items(): self.send_message_to_targets([owner_addrs[o]], data, resources)
def send_resource_owner_messages(self, data): owners = {} for r in data['resources']: contact_tags = self.find_resource_owners(r) if not contact_tags: self.logger.info( "No resource owner found for %s" % (resource_format(r, data['policy']['resource']))) continue for contact_tag in contact_tags: owners.setdefault(contact_tag, []).append(r) # Address resolution can take some time, try to do it upfront t = time.time() owner_addrs = { o: (self.resolve_address(o) or o) for o in owners.keys() } self.logger.info( "policy:%s resolved %d owners in %0.2f seconds" % (data['policy']['name'], len(owner_addrs), time.time() - t)) # TODO, check deadline and requeue before sending any messages. for o, resources in owners.items(): self.send_message_to_targets([owner_addrs[o]], data, resources)
def send_resource_owner_messages(self, data): owners = {} for r in data['resources']: owner = self.find_resource_owner(r) if owner is None: log.info("No resource owner found for %s" % ( resource_format(r, data['policy']['resource']))) continue owners.setdefault(owner, []).append(r) # Address resolution can take some time, try to do it upfront t = time.time() owner_addrs = { o: (self.resolve_address(o) or o) for o in owners.keys()} log.info("policy:%s resolved %d owners in %0.2f seconds" % ( data['policy']['name'], len(owner_addrs), time.time() - t)) # TODO, check deadline and requeue before sending any messages. for o, resources in owners.items(): self.send_resource_set_message([owner_addrs[o]], data, resources)