From 44ffcf86de69585f4709fbb7c14e1c0edf2a95e9 Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Fri, 24 Aug 2018 14:21:18 -0400 Subject: [PATCH] Properly take prompted inventory into account This also will rename shard jobs to add an index to the job name --- awx/main/models/jobs.py | 10 ++++++++-- awx/main/scheduler/task_manager.py | 3 +++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index 4e3a22a774..4821223a3f 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -331,11 +331,17 @@ class JobTemplate(UnifiedJobTemplate, JobOptions, SurveyJobTemplateMixin, Resour kwargs['_unified_job_field_names'] = WorkflowJobTemplate._get_unified_job_field_names() job = self.create_unified_job(**kwargs) if self.job_shard_count > 1: - for idx in xrange(self.job_shard_count): + if 'inventory' in kwargs: + actual_inventory = kwargs['inventory'] + else: + actual_inventory = self.inventory + for idx in xrange(min(self.job_shard_count, + actual_inventory.hosts.count())): create_kwargs = dict(workflow_job=job, unified_job_template=self, #survey_passwords=self.survey_passwords, - inventory=self.inventory) + inventory=actual_inventory, + ancestor_artifacts=dict(job_shard=idx)) #char_prompts=self.char_prompts) wfjn = WorkflowJobNode.objects.create(**create_kwargs) for cred in self.credentials.all(): diff --git a/awx/main/scheduler/task_manager.py b/awx/main/scheduler/task_manager.py index 08cb6cd247..a5bfccb967 100644 --- a/awx/main/scheduler/task_manager.py +++ b/awx/main/scheduler/task_manager.py @@ -117,6 +117,9 @@ class TaskManager(): continue kv = spawn_node.get_job_kwargs() job = spawn_node.unified_job_template.create_unified_job(**kv) + if 'job_shard' in spawn_node.ancestor_artifacts: + job.name = "{} - {}".format(job.name, spawn_node.ancestor_artifacts['job_shard'] + 1) + job.save() spawn_node.job = job spawn_node.save() logger.info('Spawned %s in %s for node %s', job.log_format, workflow_job.log_format, spawn_node.pk)