prefetch related source credentials in tasks.py

This commit is contained in:
Ryan Petrello 2019-02-28 11:45:45 -05:00 committed by Jake McDermott
parent 42f4956a7f
commit 81a509424a
No known key found for this signature in database
GPG Key ID: 9A6F084352C3A0B7
2 changed files with 5 additions and 4 deletions

View File

@ -819,7 +819,7 @@ class BaseTask(object):
private_data_files['credentials'][credential] = path
for credential, data in private_data.get('certificates', {}).items():
name = 'credential_%d-cert.pub' % credential.pk
path = os.path.join(kwargs['private_data_dir'], name)
path = os.path.join(private_data_dir, name)
with open(path, 'w') as f:
f.write(data)
f.close()
@ -1290,7 +1290,7 @@ class RunJob(BaseTask):
}
'''
private_data = {'credentials': {}}
for credential in job.credentials.all():
for credential in job.credentials.prefetch_related('input_sources__source_credential').all():
# If we were sent SSH credentials, decrypt them and send them
# back (they will be written to a temporary file).
if credential.has_input('ssh_key_data'):
@ -1521,7 +1521,7 @@ class RunJob(BaseTask):
return self._write_extra_vars_file(private_data_dir, extra_vars, safe_dict)
def build_credentials_list(self, job):
return job.credentials.all()
return job.credentials.prefetch_related('input_sources__source_credential').all()
def get_password_prompts(self, passwords={}):
d = super(RunJob, self).get_password_prompts(passwords)

View File

@ -700,7 +700,8 @@ class TestJobCredentials(TestJobExecution):
__iter__ = lambda *args: iter(job._credentials),
first = lambda: job._credentials[0]
),
'spec_set': ['all', 'add', 'filter']
'prefetch_related': lambda _: credentials_mock,
'spec_set': ['all', 'add', 'filter', 'prefetch_related'],
})
with mock.patch.object(UnifiedJob, 'credentials', credentials_mock):