예제 #1
0
    def events_handler_put_events(self):
        entries = self._get_param('Entries')
        events = list(
            map(lambda event: {'event': event, 'uuid': str(uuid.uuid4())}, entries)
        )

        _create_and_register_temp_dir()
        _dump_events_to_files(events)

        for event in events:
            event = event['event']
            event_bus = event.get('EventBusName') or DEFAULT_EVENT_BUS_NAME

            rules = EVENT_RULES.get(event_bus, [])

            targets = []
            for rule in rules:
                targets.extend(self.events_backend.list_targets_by_rule(rule)['Targets'])

            # process event
            process_events(event, targets)

        content = {
            'Entries': list(map(lambda event: {'EventId': event['uuid']}, events))
        }

        self.response_headers.update({
            'Content-Type': APPLICATION_AMZ_JSON_1_1,
            'x-amzn-RequestId': short_uid()
        })

        return json.dumps(content), self.response_headers
예제 #2
0
    def events_handler_put_events(self):
        entries = self._get_param("Entries")
        events = list(
            map(lambda event: {
                "event": event,
                "uuid": str(uuid.uuid4())
            }, entries))

        _create_and_register_temp_dir()
        _dump_events_to_files(events)
        event_rules = EventsBackend.get().event_rules

        for event_envelope in events:
            event = event_envelope["event"]
            event_bus = event.get("EventBusName") or DEFAULT_EVENT_BUS_NAME

            rules = event_rules.get(event_bus, [])

            formatted_event = {
                "version": "0",
                "id": event_envelope["uuid"],
                "detail-type": event.get("DetailType"),
                "source": event.get("Source"),
                "account": TEST_AWS_ACCOUNT_ID,
                "time":
                datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ"),
                "region": self.region,
                "resources": event.get("Resources", []),
                "detail": json.loads(event.get("Detail", "{}")),
            }

            targets = []
            for rule in rules:
                if filter_event_based_on_event_format(self, rule,
                                                      formatted_event):
                    targets.extend(
                        self.events_backend.list_targets_by_rule(rule)
                        ["Targets"])

            # process event
            process_events(formatted_event, targets)

        content = {
            "Entries":
            list(map(lambda event: {"EventId": event["uuid"]}, events))
        }

        self.response_headers.update({
            "Content-Type": APPLICATION_AMZ_JSON_1_1,
            "x-amzn-RequestId": short_uid()
        })

        return json.dumps(content), self.response_headers
예제 #3
0
    def events_handler_put_events(self):
        entries = self._get_param('Entries')
        events = list(
            map(lambda event: {
                'event': event,
                'uuid': str(uuid.uuid4())
            }, entries))

        _create_and_register_temp_dir()
        _dump_events_to_files(events)
        event_rules = EventsBackend.get().event_rules

        for event_envelope in events:
            event = event_envelope['event']
            event_bus = event.get('EventBusName') or DEFAULT_EVENT_BUS_NAME

            rules = event_rules.get(event_bus, [])

            formatted_event = {
                'version': '0',
                'id': event_envelope['uuid'],
                'detail-type': event.get('DetailType'),
                'source': event.get('Source'),
                'account': TEST_AWS_ACCOUNT_ID,
                'time':
                datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ'),
                'region': self.region,
                'resources': event.get('Resources', []),
                'detail': json.loads(event.get('Detail', '{}')),
            }

            targets = []
            for rule in rules:
                if filter_event_based_on_event_format(self, rule,
                                                      formatted_event):
                    targets.extend(
                        self.events_backend.list_targets_by_rule(rule)
                        ['Targets'])

            # process event
            process_events(formatted_event, targets)

        content = {
            'Entries':
            list(map(lambda event: {'EventId': event['uuid']}, events))
        }

        self.response_headers.update({
            'Content-Type': APPLICATION_AMZ_JSON_1_1,
            'x-amzn-RequestId': short_uid()
        })

        return json.dumps(content), self.response_headers