From 5d11400f6c0ddfb3990d837e9860199046119d8f Mon Sep 17 00:00:00 2001 From: Jake McDermott Date: Fri, 29 Mar 2019 15:53:08 -0400 Subject: [PATCH] replace unlinked fields before updating input sources With credential type changes for linked credentials disabled, we can update the unlinked credential fields first. If an error occurs when updating the unlinked fields, no input sources will be changed. --- .../credentials/add-edit-credentials.controller.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/awx/ui/client/features/credentials/add-edit-credentials.controller.js b/awx/ui/client/features/credentials/add-edit-credentials.controller.js index c2cdd70ebc..63c54c9c32 100644 --- a/awx/ui/client/features/credentials/add-edit-credentials.controller.js +++ b/awx/ui/client/features/credentials/add-edit-credentials.controller.js @@ -72,6 +72,10 @@ function AddEditCredentialsController ( vm.form.credential_type._displayValue = credentialType.get('name'); vm.isTestable = (isEditable && credentialType.get('kind') === 'external'); + if (credential.get('related.input_sources.results.length' > 0)) { + vm.form.credential_type._disabled = true; + } + $scope.$watch('$state.current.name', (value) => { if (/credentials.edit($|\.organization$|\.credentialType$)/.test(value)) { vm.tab.details._active = true; @@ -548,8 +552,8 @@ function AddEditCredentialsController ( filteredInputs = _.omit(filteredInputs, updatedLinkedFieldNames); data.inputs = filteredInputs; - return Promise.all(sourcesToDisassociate.map(deleteInputSource)) - .then(() => credential.request('put', { data })) + return credential.request('put', { data }) + .then(() => Promise.all(sourcesToDisassociate.map(deleteInputSource))) .then(() => Promise.all(sourcesToAssociate.map(createInputSource))); }