diff --git a/docs/source/HISTORY.rst b/docs/source/HISTORY.rst index 95e35ea8..7da586ef 100644 --- a/docs/source/HISTORY.rst +++ b/docs/source/HISTORY.rst @@ -1,6 +1,11 @@ Release History =============== +3.3.8 (2020-01-14) +------------------ + +- Process deprecated vault_credential parameter with extra request + 3.3.7 (2019-10-25) ------------------ diff --git a/tower_cli/constants.py b/tower_cli/constants.py index b2db6944..298abc21 100644 --- a/tower_cli/constants.py +++ b/tower_cli/constants.py @@ -13,7 +13,7 @@ # limitations under the License. -VERSION = '3.3.7' +VERSION = '3.3.8' # This is the release number for the RPM builds RELEASE = 1 CUR_API_VERSION = 'v2' diff --git a/tower_cli/resources/job_template.py b/tower_cli/resources/job_template.py index dc03ff73..8c0be8f0 100644 --- a/tower_cli/resources/job_template.py +++ b/tower_cli/resources/job_template.py @@ -24,6 +24,9 @@ from tower_cli.exceptions import NotFound +OLD_CRED_FIELDS = ['credential', 'vault_credential'] + + class Resource(models.SurveyResource): """A resource for job templates.""" cli_help = 'Manage job templates.' @@ -124,15 +127,20 @@ def write(self, pk=None, *args, **kwargs): if (kwargs.get('create_on_missing', False) and (not kwargs.get('job_type', None))): kwargs['job_type'] = 'run' - mcred = kwargs.get('credential', None) + old_creds = {} + for cred_field in OLD_CRED_FIELDS: + if cred_field in kwargs: + old_creds[cred_field] = kwargs[cred_field] ret = super(Resource, self).write(pk=pk, **kwargs) cred_ids = [c['id'] for c in ret.get('summary_fields', {}).get('credentials', [])] - if mcred and mcred not in cred_ids: - new_pk = ret['id'] + for cred_field, cred_id in old_creds.items(): + if cred_id is None or cred_id in cred_ids: + continue + jt_pk = ret['id'] debug.log('Processing deprecated credential field via another request.', header='details') - self._assoc('credentials', new_pk, mcred) - ret = self.read(new_pk) - ret['id'] = new_pk + self._assoc('credentials', jt_pk, cred_id) + ret = self.read(jt_pk) + ret['id'] = jt_pk ret['changed'] = True return ret