Upload using RH cred settings

This commit is contained in:
Christian Adams
2019-08-29 14:35:08 -04:00
parent 10d53637ad
commit 6309c0a426
2 changed files with 27 additions and 13 deletions

View File

@@ -12,10 +12,9 @@ from django.utils.timezone import now, timedelta
from rest_framework.exceptions import PermissionDenied from rest_framework.exceptions import PermissionDenied
from awx.conf.license import get_license from awx.conf.license import get_license
from awx.main.models import Job, Credential from awx.main.models import Job
from awx.main.access import access_registry from awx.main.access import access_registry
from awx.main.models.ha import TowerAnalyticsState from awx.main.models.ha import TowerAnalyticsState
from awx.main.utils import decrypt_field
__all__ = ['register', 'gather', 'ship', 'table_version'] __all__ = ['register', 'gather', 'ship', 'table_version']
@@ -85,13 +84,12 @@ def gather(dest=None, module=None, collection_type='scheduled'):
if last_run < max_interval or not last_run: if last_run < max_interval or not last_run:
last_run = max_interval last_run = max_interval
if _valid_license() is False: if _valid_license() is False:
logger.exception("Invalid License provided, or No License Provided") logger.exception("Invalid License provided, or No License Provided")
return "Error: Invalid License provided, or No License Provided" return "Error: Invalid License provided, or No License Provided"
if not settings.INSIGHTS_TRACKING_STATE: if not settings.INSIGHTS_TRACKING_STATE:
logger.error("Insights analytics not enabled") logger.error("Automation Analytics not enabled")
return return
if module is None: if module is None:
@@ -146,19 +144,35 @@ def gather(dest=None, module=None, collection_type='scheduled'):
def ship(path): def ship(path):
""" """
Ship gathered metrics via the Insights API Ship gathered metrics to the Insights API
""" """
if not path:
logger.error('Automation Analytics TAR not found')
return
if "Error:" in str(path):
return
try: try:
logger.debug('shipping analytics file: {}'.format(path)) logger.debug('shipping analytics file: {}'.format(path))
url = settings.INSIGHTS_URL_BASE + '/api/ingress/v1/upload' url = getattr(settings, 'AUTOMATION_ANALYTICS_URL', None)
if not url:
logger.error('AUTOMATION_ANALYTICS_URL is not set')
return
rh_user = getattr(settings, 'REDHAT_USERNAME', None)
rh_password = getattr(settings, 'REDHAT_PASSWORD', None)
if not rh_user:
return logger.error('REDHAT_USERNAME is not set')
if not rh_password:
return logger.error('REDHAT_PASSWORD is not set')
with open(path, 'rb') as f: with open(path, 'rb') as f:
files = {'file': (os.path.basename(path), f, settings.INSIGHTS_AGENT_MIME)} files = {'file': (os.path.basename(path), f, settings.INSIGHTS_AGENT_MIME)}
creds = Credential.objects.get(name=settings.INSIGHTS_URL_BASE) response = requests.post(url,
response = requests.post(url, files=files, auth=(creds.inputs['username'], files=files,
decrypt_field(creds, 'password'))) verify=True,
auth=(rh_user, rh_password),
timeout=(31, 31))
if response.status_code != 202: if response.status_code != 202:
logger.exception('Upload failure status {} text {}'.format(response.status_code, return logger.exception('Upload failed with status {}, {}'.format(response.status_code,
response.text)) response.text))
run_now = now() run_now = now()
state = TowerAnalyticsState.get_solo() state = TowerAnalyticsState.get_solo()
state.last_run = run_now state.last_run = run_now

View File

@@ -153,7 +153,7 @@ register(
register( register(
'AUTOMATION_ANALYTICS_URL', 'AUTOMATION_ANALYTICS_URL',
field_class=fields.URLField, field_class=fields.URLField,
default='https://cloud.redhat.com', default='https://example.com',
schemes=('http', 'https'), schemes=('http', 'https'),
allow_plain_hostname=True, # Allow hostname only without TLD. allow_plain_hostname=True, # Allow hostname only without TLD.
label=_('Automation Analytics upload URL.'), label=_('Automation Analytics upload URL.'),