mirror of
https://github.com/ansible/awx.git
synced 2026-05-10 02:47:36 -02:30
Merge pull request #3293 from chrismeyersfsu/fix-serial
fix handling of serial strategy
This commit is contained in:
@@ -69,6 +69,9 @@ class BaseCallbackModule(CallbackBase):
|
|||||||
self.task_uuids = set()
|
self.task_uuids = set()
|
||||||
self.duplicate_task_counts = collections.defaultdict(lambda: 1)
|
self.duplicate_task_counts = collections.defaultdict(lambda: 1)
|
||||||
|
|
||||||
|
self.play_uuids = set()
|
||||||
|
self.duplicate_play_counts = collections.defaultdict(lambda: 1)
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def capture_event_data(self, event, **event_data):
|
def capture_event_data(self, event, **event_data):
|
||||||
event_data.setdefault('uuid', str(uuid.uuid4()))
|
event_data.setdefault('uuid', str(uuid.uuid4()))
|
||||||
@@ -195,6 +198,24 @@ class BaseCallbackModule(CallbackBase):
|
|||||||
super(BaseCallbackModule, self).v2_playbook_on_include(included_file)
|
super(BaseCallbackModule, self).v2_playbook_on_include(included_file)
|
||||||
|
|
||||||
def v2_playbook_on_play_start(self, play):
|
def v2_playbook_on_play_start(self, play):
|
||||||
|
play_uuid = str(play._uuid)
|
||||||
|
if play_uuid in self.play_uuids:
|
||||||
|
# When this play UUID repeats, it means the play is using the
|
||||||
|
# free strategy (or serial:1) so different hosts may be running
|
||||||
|
# different tasks within a play (where duplicate UUIDS are common).
|
||||||
|
#
|
||||||
|
# When this is the case, modify the UUID slightly to append
|
||||||
|
# a counter so we can still _track_ duplicate events, but also
|
||||||
|
# avoid breaking the display in these scenarios.
|
||||||
|
self.duplicate_play_counts[play_uuid] += 1
|
||||||
|
|
||||||
|
play_uuid = '_'.join([
|
||||||
|
play_uuid,
|
||||||
|
str(self.duplicate_play_counts[play_uuid])
|
||||||
|
])
|
||||||
|
self.play_uuids.add(play_uuid)
|
||||||
|
play._uuid = play_uuid
|
||||||
|
|
||||||
self.set_play(play)
|
self.set_play(play)
|
||||||
if hasattr(play, 'hosts'):
|
if hasattr(play, 'hosts'):
|
||||||
if isinstance(play.hosts, list):
|
if isinstance(play.hosts, list):
|
||||||
|
|||||||
Reference in New Issue
Block a user