コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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)