コード例 #1
0
class ExportClusterLogsFiltersParser(ClusterLogsFiltersParser):
    """Class to manage export cluster logs filters."""
    def __init__(
        self,
        head_node: ClusterInstance,
        log_group_name: str,
        start_time: datetime.datetime = None,
        end_time: datetime.datetime = None,
        filters: str = None,
    ):
        super().__init__(head_node, filters)
        self.time_parser = LogGroupTimeFiltersParser(log_group_name,
                                                     start_time, end_time)

    @property
    def start_time(self):
        """Get start time parameter."""
        return self.time_parser.start_time

    @property
    def end_time(self):
        """Get end time parameter."""
        return self.time_parser.end_time

    def validate(self):
        """Check filter consistency."""
        super().validate()
        self.time_parser.validate(log_stream_prefix=self.log_stream_prefix)
コード例 #2
0
 def _init_export_logs_filters(self, start_time, end_time):
     try:
         export_logs_filters = LogGroupTimeFiltersParser(
             log_group_name=self._log_group_name, start_time=start_time, end_time=end_time
         )
         export_logs_filters.validate()
     except FiltersParserError as e:
         raise BadRequestImageBuilderActionError(str(e))
     return export_logs_filters
コード例 #3
0
 def __init__(
     self,
     head_node: ClusterInstance,
     log_group_name: str,
     start_time: datetime.datetime = None,
     end_time: datetime.datetime = None,
     filters: str = None,
 ):
     super().__init__(head_node, filters)
     self.time_parser = LogGroupTimeFiltersParser(log_group_name, start_time, end_time)
コード例 #4
0
 def test_initialization(self, args, error_message, run_cli, capsys):
     kwargs = {"log_group_name": "log_group"}
     kwargs.update(args)
     if error_message:
         with pytest.raises(FiltersParserError, match=error_message):
             LogGroupTimeFiltersParser(**kwargs)
     else:
         time_parser = LogGroupTimeFiltersParser(**kwargs)
         assert_that(time_parser.start_time).is_equal_to(
             args.get("start_time"))
         assert_that(time_parser.end_time).is_equal_to(args.get("end_time"))
コード例 #5
0
    def test_initialization_error(self, mocker, params, expected_error):
        log_group_name = "log_group_name"
        creation_time_mock = 1623061001000
        mock_aws_api(mocker)
        mocker.patch("pcluster.aws.logs.LogsClient.describe_log_group",
                     return_value={"creationTime": creation_time_mock})

        with pytest.raises(FiltersParserError, match=expected_error):
            LogGroupTimeFiltersParser(log_group_name,
                                      params.get("start_time", None),
                                      params.get("end_time", None))
コード例 #6
0
    def test_initialization_success(self, params, expected_attrs):
        os.environ["TZ"] = "Europe/London"
        time.tzset()
        log_group_name = "log_group_name"

        export_logs_filters = LogGroupTimeFiltersParser(
            log_group_name, params.get("start_time", None),
            params.get("end_time", None))

        for attr in expected_attrs:
            assert_that(getattr(export_logs_filters,
                                attr)).is_equal_to(expected_attrs.get(attr))
コード例 #7
0
    def test_validate(self, mocker, attrs, event_in_window, log_stream_prefix,
                      expected_error):
        log_group_name = "log_group_name"
        creation_time_mock = 1623061001000
        mock_aws_api(mocker)
        describe_log_group_mock = mocker.patch(
            "pcluster.aws.logs.LogsClient.describe_log_group",
            return_value={"creationTime": creation_time_mock})
        filter_log_events_mock = mocker.patch(
            "pcluster.aws.logs.LogsClient.filter_log_events",
            return_value=event_in_window)

        export_logs_filters = LogGroupTimeFiltersParser(
            log_group_name, attrs.get("start_time", None),
            attrs.get("end_time", None))

        if expected_error:
            with pytest.raises(FiltersParserError, match=expected_error):
                export_logs_filters.validate(log_stream_prefix)
        else:
            export_logs_filters.validate(log_stream_prefix)
            filter_log_events_mock.assert_called_with(
                log_group_name,
                log_stream_prefix,
                export_logs_filters.start_time,
                export_logs_filters.end_time,
            )

            if "start_time" not in attrs:
                describe_log_group_mock.assert_called_with(log_group_name)
                assert_that(export_logs_filters.start_time).is_equal_to(
                    creation_time_mock)
コード例 #8
0
 def log_group_time_parser(self):
     return LogGroupTimeFiltersParser("log_group_name")