mirror of
https://github.com/ansible/awx.git
synced 2026-03-27 05:45:02 -02:30
Merge pull request #423 from ryanpetrello/stdout_defer
more 3.1.5 result_stdout_text optimizations -> 3.2 so we don't regress
This commit is contained in:
@@ -146,6 +146,7 @@ activity_stream_registrar.connect(WorkflowJob)
|
|||||||
# prevent API filtering on certain Django-supplied sensitive fields
|
# prevent API filtering on certain Django-supplied sensitive fields
|
||||||
prevent_search(User._meta.get_field('password'))
|
prevent_search(User._meta.get_field('password'))
|
||||||
|
|
||||||
|
|
||||||
# Always, always, always defer result_stdout_text for polymorphic UnifiedJob rows
|
# Always, always, always defer result_stdout_text for polymorphic UnifiedJob rows
|
||||||
# TODO: remove this defer in 3.3 when we implement https://github.com/ansible/ansible-tower/issues/5436
|
# TODO: remove this defer in 3.3 when we implement https://github.com/ansible/ansible-tower/issues/5436
|
||||||
def defer_stdout(f):
|
def defer_stdout(f):
|
||||||
|
|||||||
@@ -388,6 +388,9 @@ def activity_stream_create(sender, instance, created, **kwargs):
|
|||||||
# Skip recording any inventory source directly associated with a group.
|
# Skip recording any inventory source directly associated with a group.
|
||||||
if isinstance(instance, InventorySource) and instance.deprecated_group:
|
if isinstance(instance, InventorySource) and instance.deprecated_group:
|
||||||
return
|
return
|
||||||
|
_type = type(instance)
|
||||||
|
if getattr(_type, '_deferred', False):
|
||||||
|
return
|
||||||
object1 = camelcase_to_underscore(instance.__class__.__name__)
|
object1 = camelcase_to_underscore(instance.__class__.__name__)
|
||||||
changes = model_to_dict(instance, model_serializer_mapping)
|
changes = model_to_dict(instance, model_serializer_mapping)
|
||||||
# Special case where Job survey password variables need to be hidden
|
# Special case where Job survey password variables need to be hidden
|
||||||
@@ -421,6 +424,9 @@ def activity_stream_update(sender, instance, **kwargs):
|
|||||||
changes = model_instance_diff(old, new, model_serializer_mapping)
|
changes = model_instance_diff(old, new, model_serializer_mapping)
|
||||||
if changes is None:
|
if changes is None:
|
||||||
return
|
return
|
||||||
|
_type = type(instance)
|
||||||
|
if getattr(_type, '_deferred', False):
|
||||||
|
return
|
||||||
object1 = camelcase_to_underscore(instance.__class__.__name__)
|
object1 = camelcase_to_underscore(instance.__class__.__name__)
|
||||||
activity_entry = ActivityStream(
|
activity_entry = ActivityStream(
|
||||||
operation='update',
|
operation='update',
|
||||||
@@ -445,6 +451,9 @@ def activity_stream_delete(sender, instance, **kwargs):
|
|||||||
# explicitly called with flag on in Inventory.schedule_deletion.
|
# explicitly called with flag on in Inventory.schedule_deletion.
|
||||||
if isinstance(instance, Inventory) and not kwargs.get('inventory_delete_flag', False):
|
if isinstance(instance, Inventory) and not kwargs.get('inventory_delete_flag', False):
|
||||||
return
|
return
|
||||||
|
_type = type(instance)
|
||||||
|
if getattr(_type, '_deferred', False):
|
||||||
|
return
|
||||||
changes = model_to_dict(instance)
|
changes = model_to_dict(instance)
|
||||||
object1 = camelcase_to_underscore(instance.__class__.__name__)
|
object1 = camelcase_to_underscore(instance.__class__.__name__)
|
||||||
activity_entry = ActivityStream(
|
activity_entry = ActivityStream(
|
||||||
@@ -466,6 +475,9 @@ def activity_stream_associate(sender, instance, **kwargs):
|
|||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
obj1 = instance
|
obj1 = instance
|
||||||
|
_type = type(instance)
|
||||||
|
if getattr(_type, '_deferred', False):
|
||||||
|
return
|
||||||
object1=camelcase_to_underscore(obj1.__class__.__name__)
|
object1=camelcase_to_underscore(obj1.__class__.__name__)
|
||||||
obj_rel = sender.__module__ + "." + sender.__name__
|
obj_rel = sender.__module__ + "." + sender.__name__
|
||||||
|
|
||||||
@@ -476,6 +488,9 @@ def activity_stream_associate(sender, instance, **kwargs):
|
|||||||
if not obj2_actual.exists():
|
if not obj2_actual.exists():
|
||||||
continue
|
continue
|
||||||
obj2_actual = obj2_actual[0]
|
obj2_actual = obj2_actual[0]
|
||||||
|
_type = type(obj2_actual)
|
||||||
|
if getattr(_type, '_deferred', False):
|
||||||
|
return
|
||||||
if isinstance(obj2_actual, Role) and obj2_actual.content_object is not None:
|
if isinstance(obj2_actual, Role) and obj2_actual.content_object is not None:
|
||||||
obj2_actual = obj2_actual.content_object
|
obj2_actual = obj2_actual.content_object
|
||||||
object2 = camelcase_to_underscore(obj2_actual.__class__.__name__)
|
object2 = camelcase_to_underscore(obj2_actual.__class__.__name__)
|
||||||
|
|||||||
@@ -316,7 +316,11 @@ def awx_periodic_scheduler(self):
|
|||||||
def _send_notification_templates(instance, status_str):
|
def _send_notification_templates(instance, status_str):
|
||||||
if status_str not in ['succeeded', 'failed']:
|
if status_str not in ['succeeded', 'failed']:
|
||||||
raise ValueError(_("status_str must be either succeeded or failed"))
|
raise ValueError(_("status_str must be either succeeded or failed"))
|
||||||
notification_templates = instance.get_notification_templates()
|
try:
|
||||||
|
notification_templates = instance.get_notification_templates()
|
||||||
|
except:
|
||||||
|
logger.warn("No notification template defined for emitting notification")
|
||||||
|
notification_templates = None
|
||||||
if notification_templates:
|
if notification_templates:
|
||||||
if status_str == 'succeeded':
|
if status_str == 'succeeded':
|
||||||
notification_template_type = 'success'
|
notification_template_type = 'success'
|
||||||
|
|||||||
Reference in New Issue
Block a user