mirror of
https://github.com/ansible/awx.git
synced 2026-05-08 01:47:35 -02:30
Update where host_name field is set on job events.
This commit is contained in:
@@ -83,9 +83,6 @@ def process_job_event(data):
|
|||||||
for key in data.keys():
|
for key in data.keys():
|
||||||
if key not in ('job_id', 'event', 'event_data', 'created'):
|
if key not in ('job_id', 'event', 'event_data', 'created'):
|
||||||
data.pop(key)
|
data.pop(key)
|
||||||
data['play'] = data.get('event_data', {}).get('play', '').strip()
|
|
||||||
data['task'] = data.get('event_data', {}).get('task', '').strip()
|
|
||||||
data['host_name'] = data.get('event_data', {}).get('host', '').strip()
|
|
||||||
for retry_count in xrange(11):
|
for retry_count in xrange(11):
|
||||||
try:
|
try:
|
||||||
if event == 'playbook_on_stats':
|
if event == 'playbook_on_stats':
|
||||||
|
|||||||
@@ -485,7 +485,9 @@ class JobEvent(CreatedModifiedModel):
|
|||||||
)
|
)
|
||||||
host_name = models.CharField(
|
host_name = models.CharField(
|
||||||
max_length=1024,
|
max_length=1024,
|
||||||
default='')
|
default='',
|
||||||
|
editable=False,
|
||||||
|
)
|
||||||
hosts = models.ManyToManyField(
|
hosts = models.ManyToManyField(
|
||||||
'Host',
|
'Host',
|
||||||
related_name='job_events',
|
related_name='job_events',
|
||||||
@@ -652,13 +654,16 @@ class JobEvent(CreatedModifiedModel):
|
|||||||
self.role = self.event_data.get('role', '').strip()
|
self.role = self.event_data.get('role', '').strip()
|
||||||
if 'role' not in update_fields:
|
if 'role' not in update_fields:
|
||||||
update_fields.append('role')
|
update_fields.append('role')
|
||||||
|
self.host_name = self.event_data.get('host', '').strip()
|
||||||
|
if 'host_name' not in update_fields:
|
||||||
|
update_fields.append('host_name')
|
||||||
# Only update job event hierarchy and related models during post
|
# Only update job event hierarchy and related models during post
|
||||||
# processing (after running job).
|
# processing (after running job).
|
||||||
post_process = kwargs.pop('post_process', False)
|
post_process = kwargs.pop('post_process', False)
|
||||||
if post_process:
|
if post_process:
|
||||||
try:
|
try:
|
||||||
if not self.host_id and self.event_data.get('host', ''):
|
if not self.host_id and self.host_name:
|
||||||
host_qs = Host.objects.filter(inventory__jobs__id=self.job_id, name=self.event_data['host'])
|
host_qs = Host.objects.filter(inventory__jobs__id=self.job_id, name=self.host_name)
|
||||||
self.host_id = host_qs.only('id').values_list('id', flat=True)[0]
|
self.host_id = host_qs.only('id').values_list('id', flat=True)[0]
|
||||||
if 'host_id' not in update_fields:
|
if 'host_id' not in update_fields:
|
||||||
update_fields.append('host_id')
|
update_fields.append('host_id')
|
||||||
@@ -695,8 +700,8 @@ class JobEvent(CreatedModifiedModel):
|
|||||||
from awx.main.models.inventory import Host
|
from awx.main.models.inventory import Host
|
||||||
extra_host_pks = set(extra_host_pks or [])
|
extra_host_pks = set(extra_host_pks or [])
|
||||||
hostnames = set()
|
hostnames = set()
|
||||||
if self.event_data.get('host', ''):
|
if self.host_name:
|
||||||
hostnames.add(self.event_data['host'])
|
hostnames.add(self.host_name)
|
||||||
if self.event == 'playbook_on_stats':
|
if self.event == 'playbook_on_stats':
|
||||||
try:
|
try:
|
||||||
for v in self.event_data.values():
|
for v in self.event_data.values():
|
||||||
|
|||||||
@@ -419,6 +419,7 @@ class RunJobTest(BaseCeleryTest):
|
|||||||
self.assertEqual(evt.host, self.host)
|
self.assertEqual(evt.host, self.host)
|
||||||
self.assertTrue(evt.play, evt)
|
self.assertTrue(evt.play, evt)
|
||||||
self.assertTrue(evt.task, evt)
|
self.assertTrue(evt.task, evt)
|
||||||
|
self.assertTrue(evt.host_name)
|
||||||
if has_roles:
|
if has_roles:
|
||||||
self.assertTrue(evt.role, evt)
|
self.assertTrue(evt.role, evt)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user