mirror of
https://github.com/ansible/awx.git
synced 2026-01-24 07:51:23 -03:30
Upload using RH cred settings
This commit is contained in:
parent
10d53637ad
commit
6309c0a426
@ -12,10 +12,9 @@ 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, Credential
|
||||
from awx.main.models import Job
|
||||
from awx.main.access import access_registry
|
||||
from awx.main.models.ha import TowerAnalyticsState
|
||||
from awx.main.utils import decrypt_field
|
||||
|
||||
|
||||
__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:
|
||||
last_run = max_interval
|
||||
|
||||
|
||||
if _valid_license() is False:
|
||||
logger.exception("Invalid License provided, or No License Provided")
|
||||
return "Error: Invalid License provided, or No License Provided"
|
||||
|
||||
|
||||
if not settings.INSIGHTS_TRACKING_STATE:
|
||||
logger.error("Insights analytics not enabled")
|
||||
logger.error("Automation Analytics not enabled")
|
||||
return
|
||||
|
||||
if module is None:
|
||||
@ -146,19 +144,35 @@ def gather(dest=None, module=None, collection_type='scheduled'):
|
||||
|
||||
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:
|
||||
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:
|
||||
files = {'file': (os.path.basename(path), f, settings.INSIGHTS_AGENT_MIME)}
|
||||
creds = Credential.objects.get(name=settings.INSIGHTS_URL_BASE)
|
||||
response = requests.post(url, files=files, auth=(creds.inputs['username'],
|
||||
decrypt_field(creds, 'password')))
|
||||
response = requests.post(url,
|
||||
files=files,
|
||||
verify=True,
|
||||
auth=(rh_user, rh_password),
|
||||
timeout=(31, 31))
|
||||
if response.status_code != 202:
|
||||
logger.exception('Upload failure status {} text {}'.format(response.status_code,
|
||||
response.text))
|
||||
return logger.exception('Upload failed with status {}, {}'.format(response.status_code,
|
||||
response.text))
|
||||
run_now = now()
|
||||
state = TowerAnalyticsState.get_solo()
|
||||
state.last_run = run_now
|
||||
|
||||
@ -153,7 +153,7 @@ register(
|
||||
register(
|
||||
'AUTOMATION_ANALYTICS_URL',
|
||||
field_class=fields.URLField,
|
||||
default='https://cloud.redhat.com',
|
||||
default='https://example.com',
|
||||
schemes=('http', 'https'),
|
||||
allow_plain_hostname=True, # Allow hostname only without TLD.
|
||||
label=_('Automation Analytics upload URL.'),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user