mirror of
https://github.com/ansible/awx.git
synced 2026-02-26 07:26:03 -03:30
Adjust datetimes to be aware when using awx-manage gather_analytics
Also, make sure that an explicit `since` parameter will win over default `until=now()` when calculating the 4-week data limit.
This commit is contained in:
@@ -149,11 +149,22 @@ def gather(dest=None, module=None, subset=None, since=None, until=None, collecti
|
|||||||
from awx.main.signals import disable_activity_stream
|
from awx.main.signals import disable_activity_stream
|
||||||
|
|
||||||
_now = now()
|
_now = now()
|
||||||
until = _now if until is None else min(until, _now) # Make sure the end isn't in the future.
|
|
||||||
|
# Make sure that the endpoints are not in the future.
|
||||||
|
until = None if until is None else min(until, _now)
|
||||||
|
since = None if since is None else min(since, _now)
|
||||||
|
|
||||||
|
if since and not until:
|
||||||
|
# If `since` is explicit but not `until`, `since` should be used to calculate the 4-week limit
|
||||||
|
until = min(since + timedelta(weeks=4), _now)
|
||||||
|
else:
|
||||||
|
until = _now if until is None else until
|
||||||
|
|
||||||
horizon = until - timedelta(weeks=4)
|
horizon = until - timedelta(weeks=4)
|
||||||
if since is not None:
|
if since is not None:
|
||||||
# Make sure the start isn't in the future or more than 4 weeks prior to `until`.
|
# Make sure the start isn't more than 4 weeks prior to `until`.
|
||||||
since = max(min(since, _now), horizon)
|
since = max(since, horizon)
|
||||||
|
|
||||||
if since and since >= until:
|
if since and since >= until:
|
||||||
logger.warning("Start of the collection interval is later than the end, ignoring request.")
|
logger.warning("Start of the collection interval is later than the end, ignoring request.")
|
||||||
return None
|
return None
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import logging
|
|||||||
from awx.main import analytics
|
from awx.main import analytics
|
||||||
from dateutil import parser
|
from dateutil import parser
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
from django.utils.timezone import now
|
from django.utils import timezone
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
@@ -36,14 +36,12 @@ class Command(BaseCommand):
|
|||||||
opt_since = options.get('since') or None
|
opt_since = options.get('since') or None
|
||||||
opt_until = options.get('until') or None
|
opt_until = options.get('until') or None
|
||||||
|
|
||||||
if opt_since:
|
since = parser.parse(opt_since) if opt_since else None
|
||||||
since = parser.parse(opt_since)
|
if since and since.tzinfo is None:
|
||||||
else:
|
since = since.replace(tzinfo=timezone.utc)
|
||||||
since = None
|
until = parser.parse(opt_until) if opt_until else None
|
||||||
if opt_until:
|
if until and until.tzinfo is None:
|
||||||
until = parser.parse(opt_until)
|
until = until.replace(tzinfo=timezone.utc)
|
||||||
else:
|
|
||||||
until = now()
|
|
||||||
|
|
||||||
if opt_ship and opt_dry_run:
|
if opt_ship and opt_dry_run:
|
||||||
self.logger.error('Both --ship and --dry-run cannot be processed at the same time.')
|
self.logger.error('Both --ship and --dry-run cannot be processed at the same time.')
|
||||||
|
|||||||
Reference in New Issue
Block a user