diff --git a/awx/main/analytics/core.py b/awx/main/analytics/core.py index 2462b88193..e788ee2dc9 100644 --- a/awx/main/analytics/core.py +++ b/awx/main/analytics/core.py @@ -12,6 +12,7 @@ from django.utils.encoding import smart_str from django.utils.timezone import now, timedelta from rest_framework.exceptions import PermissionDenied +from awx.conf.license import get_license from awx.main.models import Job from awx.main.access import access_registry from awx.main.models.ha import TowerAnalyticsState @@ -25,6 +26,8 @@ logger = logging.getLogger('awx.main.analytics') def _valid_license(): try: + if get_license(show_key=False)['license_type'] == 'open': + return False access_registry[Job](None).check_license() except PermissionDenied: logger.exception("A valid license was not found:") @@ -73,8 +76,8 @@ def gather(dest=None, module=None): if _valid_license() is False: logger.exception("Invalid License provided, or No License Provided") - return - + return "Error: Invalid License provided, or No License Provided" + if not settings.INSIGHTS_DATA_ENABLED: logger.error("Insights analytics not enabled") return "Error: Insights analytics not enabled" diff --git a/awx/main/tests/functional/analytics/test_core.py b/awx/main/tests/functional/analytics/test_core.py index 235bda26be..261ed1128b 100644 --- a/awx/main/tests/functional/analytics/test_core.py +++ b/awx/main/tests/functional/analytics/test_core.py @@ -2,7 +2,7 @@ import importlib import json import os import tarfile - +from unittest import mock import pytest from django.conf import settings @@ -22,11 +22,23 @@ def bad_json(since): @register('throws_error') def throws_error(since): raise ValueError() + + +def _valid_license(): + pass + + +@pytest.fixture +def mock_valid_license(): + with mock.patch('awx.main.analytics.core._valid_license') as license: + license.return_value = True + yield license @pytest.mark.django_db -def test_gather(): +def test_gather(mock_valid_license): settings.INSIGHTS_DATA_ENABLED = True + tgz = gather(module=importlib.import_module(__name__)) files = {} with tarfile.open(tgz, "r:gz") as archive: