mirror of
https://github.com/ZwareBear/awx.git
synced 2026-05-05 16:01:50 -05:00
HostMetricSummaryMonthly API and Migrations
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
|
||||
# Python
|
||||
import dateutil
|
||||
import datetime
|
||||
import functools
|
||||
import html
|
||||
import itertools
|
||||
@@ -17,7 +18,6 @@ from collections import OrderedDict
|
||||
|
||||
from urllib3.exceptions import ConnectTimeoutError
|
||||
|
||||
|
||||
# Django
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import FieldError, ObjectDoesNotExist
|
||||
@@ -122,6 +122,7 @@ 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
|
||||
|
||||
@@ -1551,6 +1552,37 @@ class HostMetricDetail(RetrieveDestroyAPIView):
|
||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||
|
||||
|
||||
class HostMetricSummaryMonthlyList(ListAPIView):
|
||||
name = _("Host Metrics Summary Monthly")
|
||||
model = models.HostMetricSummaryMonthly
|
||||
permission_classes = (IsSystemAdminOrAuditor,)
|
||||
serializer_class = serializers.HostMetricSummaryMonthlySerializer
|
||||
search_fields = ('date',)
|
||||
filter_backends = [HostMetricSummaryMonthlyFieldLookupBackend]
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = super().get_queryset()
|
||||
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
|
||||
|
||||
|
||||
class HostList(HostRelatedSearchMixin, ListCreateAPIView):
|
||||
always_allow_superuser = False
|
||||
model = models.Host
|
||||
|
||||
Reference in New Issue
Block a user