Merge pull request #2490 from AlanCoding/2413_allow_orphan_jobs

Allow launching an orphaned job
This commit is contained in:
Alan Rominger 2016-06-21 16:24:31 -04:00 committed by GitHub
commit 38aaf2d72b
3 changed files with 13 additions and 2 deletions

View File

@ -743,8 +743,10 @@ class Job(UnifiedJob, JobOptions):
def copy(self):
presets = {}
for kw in self.job_template._get_unified_job_field_names():
for kw in JobTemplate._get_unified_job_field_names():
presets[kw] = getattr(self, kw)
if not self.job_template:
self.job_template = JobTemplate(name='temporary')
return self.job_template.create_unified_job(**presets)
# Job Credential required

View File

@ -309,7 +309,8 @@ class UnifiedJobTemplate(PolymorphicModel, CommonModelNameNotUnique, Notificatio
kwargs.pop('%s_id' % parent_field_name, None)
create_kwargs = {}
m2m_fields = {}
create_kwargs[parent_field_name] = self
if self.pk:
create_kwargs[parent_field_name] = self
for field_name in self._get_unified_job_field_names():
# Foreign keys can be specified as field_name or field_name_id.
id_field_name = '%s_id' % field_name

View File

@ -35,3 +35,11 @@ def test_job_blocking_allow_simul(get, post, job_template, inventory):
job_template.allow_simultaneous = False
assert j1.is_blocked_by(j2)
assert j2.is_blocked_by(j1)
@pytest.mark.django_db
def test_orphan_unified_job_creation(instance, inventory):
job = Job.objects.create(job_template=None, inventory=inventory, name='hi world')
job2 = job.copy()
assert job2.job_template is None
assert job2.inventory == inventory
assert job2.name == 'hi world'