Esempio n. 1
0
    def _call(self, options, parsed_globals):
        if options.start_time:
            try:
                start_time_in_ms = utils.iso8601_to_epoch(options.start_time)
            except ValueError as e:
                raise ValueError('%s. You must pass a valid start time to '
                                 ' --start-time' % e)
        else:
            start_time_in_ms = None

        if options.end_time:
            try:
                end_time_in_ms = utils.iso8601_to_epoch(options.end_time)
            except ValueError as e:
                raise ValueError('%s. You must pass a valid end time to '
                                 ' --end-time' % e)
        else:
            end_time_in_ms = None

        log_stream_name = None
        # Verify the existence of log stream
        params = dict(logGroupName=options.log_group_name,
                      limit=1,
                      logStreamNamePrefix=options.log_stream_name)
        log_streams_response = self.logs.describe_log_streams(**params)
        if log_streams_response and log_streams_response.get('logStreams'):
            for log_stream in log_streams_response.get('logStreams'):
                if log_stream.get('logStreamName') == options.log_stream_name:
                    log_stream_name = options.log_stream_name
                    break
        if log_stream_name is None:
            # Raise exception so correct ret code is set
            raise ValueError('The specified log stream does not exist.')

        logger.debug('Going to start event puller...')
        threads = []
        stop_flag = Event()
        queue = Queue.Queue(self.QUEUE_SIZE)
        puller = EventsPuller(stop_flag, queue,
                              self.logs,
                              options.log_group_name,
                              options.log_stream_name,
                              start_time_in_ms,
                              end_time_in_ms,
                              options.follow,
                              int(options.pull_delay))
        puller.start()
        threads.append(puller)
        logger.debug('Going to start event renderer...')
        renderer = EventsRenderer(stop_flag, queue,
                                  options.output_format)
        renderer.start()
        threads.append(renderer)

        self._wait_on_exit(stop_flag)
        for thread in threads:
            thread.join()
Esempio n. 2
0
    def _call(self, options, parsed_globals):
        if options.start_time:
            try:
                start_time_in_ms = utils.iso8601_to_epoch(options.start_time)
            except ValueError as e:
                raise ValueError('%s. You must pass a valid start time to '
                                 ' --start-time' % e)
        else:
            start_time_in_ms = None

        if options.end_time:
            try:
                end_time_in_ms = utils.iso8601_to_epoch(options.end_time)
            except ValueError as e:
                raise ValueError('%s. You must pass a valid end time to '
                                 ' --end-time' % e)
        else:
            end_time_in_ms = None

        interleaved = True if options.interleaved is not None and options.interleaved is True else False

        logger.debug('Going to start event puller...')
        threads = []
        stop_flag = Event()
        queue = Queue.Queue(self.QUEUE_SIZE)
        puller = EventsPuller(stop_flag, queue,
                              self.logs,
                              options.log_group_name,
                              options.log_stream_names,
                              options.filter_pattern,
                              start_time_in_ms,
                              end_time_in_ms,
                              interleaved)
        puller.start()
        threads.append(puller)
        logger.debug('Going to start event renderer...')
        renderer = EventsRenderer(stop_flag, queue,
                                  options.output_format)
        renderer.start()
        threads.append(renderer)

        self._wait_on_exit(stop_flag)
        for thread in threads:
            try:
                thread.join()
            except:
                pass