mirror of
https://github.com/ansible/awx.git
synced 2026-02-21 13:10:11 -03:30
add handling for missing related items of events
This commit is contained in:
@@ -2,7 +2,7 @@ import datetime
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db import models
|
from django.db import models, DatabaseError
|
||||||
from django.utils.dateparse import parse_datetime
|
from django.utils.dateparse import parse_datetime
|
||||||
from django.utils.timezone import utc
|
from django.utils.timezone import utc
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
@@ -15,6 +15,8 @@ from awx.main.utils import ignore_inventory_computed_fields
|
|||||||
|
|
||||||
analytics_logger = logging.getLogger('awx.analytics.job_events')
|
analytics_logger = logging.getLogger('awx.analytics.job_events')
|
||||||
|
|
||||||
|
logger = logging.getLogger('awx.main.models.events')
|
||||||
|
|
||||||
|
|
||||||
__all__ = ['JobEvent', 'ProjectUpdateEvent', 'AdHocCommandEvent',
|
__all__ = ['JobEvent', 'ProjectUpdateEvent', 'AdHocCommandEvent',
|
||||||
'InventoryUpdateEvent', 'SystemJobEvent']
|
'InventoryUpdateEvent', 'SystemJobEvent']
|
||||||
@@ -323,7 +325,10 @@ class BasePlaybookEvent(CreatedModifiedModel):
|
|||||||
|
|
||||||
hostnames = self._hostnames()
|
hostnames = self._hostnames()
|
||||||
self._update_host_summary_from_stats(hostnames)
|
self._update_host_summary_from_stats(hostnames)
|
||||||
self.job.inventory.update_computed_fields()
|
try:
|
||||||
|
self.job.inventory.update_computed_fields()
|
||||||
|
except DatabaseError:
|
||||||
|
logger.exception('Computed fields database error saving event {}'.format(self.pk))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -441,6 +446,9 @@ class JobEvent(BasePlaybookEvent):
|
|||||||
|
|
||||||
def _update_host_summary_from_stats(self, hostnames):
|
def _update_host_summary_from_stats(self, hostnames):
|
||||||
with ignore_inventory_computed_fields():
|
with ignore_inventory_computed_fields():
|
||||||
|
if not self.job or not self.job.inventory:
|
||||||
|
logger.info('Event {} missing job or inventory, host summaries not updated'.format(self.pk))
|
||||||
|
return
|
||||||
qs = self.job.inventory.hosts.filter(name__in=hostnames)
|
qs = self.job.inventory.hosts.filter(name__in=hostnames)
|
||||||
job = self.job
|
job = self.job
|
||||||
for host in hostnames:
|
for host in hostnames:
|
||||||
|
|||||||
Reference in New Issue
Block a user