diff --git a/awx/api/filters.py b/awx/api/filters.py index e574fce539..1a6e3eb90e 100644 --- a/awx/api/filters.py +++ b/awx/api/filters.py @@ -385,10 +385,6 @@ class FieldLookupBackend(BaseFilterBackend): raise ParseError(json.dumps(e.messages, ensure_ascii=False)) -class HostMetricSummaryMonthlyFieldLookupBackend(FieldLookupBackend): - RESERVED_NAMES = ('page', 'page_size', 'format', 'order', 'order_by', 'search', 'type', 'past_months', 'count_disabled', 'no_truncate', 'limit') - - class OrderByBackend(BaseFilterBackend): """ Filter to apply ordering based on query string parameters. diff --git a/awx/api/templates/api/host_metric_detail.md b/awx/api/templates/api/host_metric_detail.md new file mode 100644 index 0000000000..0a59a1b410 --- /dev/null +++ b/awx/api/templates/api/host_metric_detail.md @@ -0,0 +1,18 @@ +{% ifmeth GET %} +# Retrieve {{ model_verbose_name|title|anora }}: + +Make GET request to this resource to retrieve a single {{ model_verbose_name }} +record containing the following fields: + +{% include "api/_result_fields_common.md" %} +{% endifmeth %} + +{% ifmeth DELETE %} +# Delete {{ model_verbose_name|title|anora }}: + +Make a DELETE request to this resource to soft-delete this {{ model_verbose_name }}. + +A soft deletion will mark the `deleted` field as true and exclude the host +metric from license calculations. +This may be undone later if the same hostname is automated again afterwards. +{% endifmeth %} diff --git a/awx/api/templates/api/host_metric_summary_monthly_list.md b/awx/api/templates/api/host_metric_summary_monthly_list.md new file mode 100644 index 0000000000..953b1827a6 --- /dev/null +++ b/awx/api/templates/api/host_metric_summary_monthly_list.md @@ -0,0 +1,12 @@ +# Intended Use Case + +To get summaries from a certain day or earlier, you can filter this +endpoint in the following way. + + ?date__gte=2023-01-01 + +This will return summaries that were produced on that date or later. +These host metric monthly summaries should be automatically produced +by a background task that runs once each month. + +{% include "api/list_api_view.md" %} diff --git a/awx/api/views/__init__.py b/awx/api/views/__init__.py index d05806afb1..0068eb0148 100644 --- a/awx/api/views/__init__.py +++ b/awx/api/views/__init__.py @@ -122,7 +122,6 @@ from awx.api.views.mixin import ( UnifiedJobDeletionMixin, NoTruncateMixin, ) -from awx.api.filters import HostMetricSummaryMonthlyFieldLookupBackend from awx.api.pagination import UnifiedJobEventPagination from awx.main.utils import set_environ @@ -1578,29 +1577,9 @@ class HostMetricSummaryMonthlyList(ListAPIView): serializer_class = serializers.HostMetricSummaryMonthlySerializer permission_classes = (IsSystemAdminOrAuditor,) search_fields = ('date',) - filter_backends = [HostMetricSummaryMonthlyFieldLookupBackend] def get_queryset(self): - queryset = self.model.objects.all() - past_months = self.request.query_params.get('past_months', None) - date_from = self._get_date_from(past_months) - - queryset = queryset.filter(date__gte=date_from) - return queryset - - @staticmethod - def _get_date_from(past_months, default=12, maximum=36): - try: - months_ago = int(past_months or default) - except ValueError: - months_ago = default - months_ago = min(months_ago, maximum) - months_ago = max(months_ago, 1) - - date_from = datetime.date.today() - dateutil.relativedelta.relativedelta(months=months_ago) - # Set to beginning of the month - date_from = date_from.replace(day=1).isoformat() - return date_from + return self.model.objects.all() class HostList(HostRelatedSearchMixin, ListCreateAPIView):