add working multivault select for templates form

This commit is contained in:
Jake McDermott
2017-12-12 02:04:21 -05:00
parent ef8af79700
commit 6759e60428
7 changed files with 211 additions and 236 deletions

View File

@@ -280,25 +280,13 @@
data.ask_credential_on_launch = $scope.ask_credential_on_launch ? $scope.ask_credential_on_launch : false; data.ask_credential_on_launch = $scope.ask_credential_on_launch ? $scope.ask_credential_on_launch : false;
data.job_tags = (Array.isArray($scope.job_tags)) ? $scope.job_tags.join() : ""; data.job_tags = (Array.isArray($scope.job_tags)) ? $scope.job_tags.join() : "";
data.skip_tags = (Array.isArray($scope.skip_tags)) ? $scope.skip_tags.join() : ""; data.skip_tags = (Array.isArray($scope.skip_tags)) ? $scope.skip_tags.join() : "";
if ($scope.selectedCredentials && $scope.selectedCredentials
.machine && $scope.selectedCredentials
.machine) {
data.credential = $scope.selectedCredentials
.machine.id;
} else {
data.credential = null;
}
if ($scope.selectedCredentials && $scope.selectedCredentials
.vault && $scope.selectedCredentials
.vault.id) {
data.vault_credential = $scope.selectedCredentials
.vault.id;
} else {
data.vault_credential = null;
}
data.extra_vars = ToJSON($scope.parseType, // drop legacy 'credential' and 'vault_credential' keys from the creation request as they will
$scope.variables, true); // be provided to the related credentials endpoint by the template save success handler.
delete data.credential;
delete data.vault_credential;
data.extra_vars = ToJSON($scope.parseType, $scope.variables, true);
// We only want to set the survey_enabled flag to // We only want to set the survey_enabled flag to
// true for this job template if a survey exists // true for this job template if a survey exists
@@ -361,8 +349,8 @@
MultiCredentialService MultiCredentialService
.saveExtraCredentials({ .saveExtraCredentials({
creds: $scope.selectedCredentials.extra, creds: $scope.credentialsToPost,
url: data.related.extra_credentials url: data.related.credentials
}); });
var orgDefer = $q.defer(); var orgDefer = $q.defer();

View File

@@ -375,17 +375,16 @@ export default
}); });
} }
else { else {
// if (jobTemplateData.summary_fields.credential) {
// $scope.selectedCredentials.machine = jobTemplateData.summary_fields.credential;
// }
if (jobTemplateData.summary_fields.credential) { // if (jobTemplateData.summary_fields.vault_credential) {
$scope.selectedCredentials.machine = jobTemplateData.summary_fields.credential; // $scope.selectedCredentials.vault = jobTemplateData.summary_fields.vault_credential;
} // }
if (jobTemplateData.summary_fields.vault_credential) { if (jobTemplateData.summary_fields.credentials) {
$scope.selectedCredentials.vault = jobTemplateData.summary_fields.vault_credential; $scope.selectedCredentials.extra = jobTemplateData.summary_fields.credentials;
}
if (jobTemplateData.summary_fields.extra_credentials) {
$scope.selectedCredentials.extra = jobTemplateData.summary_fields.extra_credentials;
} }
MultiCredentialService.getCredentialTypes() MultiCredentialService.getCredentialTypes()
@@ -396,12 +395,12 @@ export default
let machineAndVaultCreds = [], let machineAndVaultCreds = [],
extraCreds = []; extraCreds = [];
if($scope.selectedCredentials.machine) { //if($scope.selectedCredentials.machine) {
machineAndVaultCreds.push($scope.selectedCredentials.machine); // machineAndVaultCreds.push($scope.selectedCredentials.machine);
} //}
if($scope.selectedCredentials.vault) { //if($scope.selectedCredentials.vault) {
machineAndVaultCreds.push($scope.selectedCredentials.vault); // machineAndVaultCreds.push($scope.selectedCredentials.vault);
} //}
machineAndVaultCreds.map(cred => ({ machineAndVaultCreds.map(cred => ({
name: cred.name, name: cred.name,
@@ -425,7 +424,8 @@ export default
})); }));
} }
$scope.credentialsToPost = machineAndVaultCreds.concat(extraCreds); //$scope.credentialsToPost = machineAndVaultCreds.concat(extraCreds);
$scope.credentialsToPost = extraCreds;
$scope.$emit('jobTemplateLoaded', master); $scope.$emit('jobTemplateLoaded', master);
}); });
@@ -523,8 +523,8 @@ export default
MultiCredentialService MultiCredentialService
.findChangedExtraCredentials({ .findChangedExtraCredentials({
creds: $scope.selectedCredentials.extra, creds: $scope.credentialsToPost,
url: data.related.extra_credentials url: data.related.credentials
}); });
InstanceGroupsService.editInstanceGroups(instance_group_url, $scope.instance_groups) InstanceGroupsService.editInstanceGroups(instance_group_url, $scope.instance_groups)
@@ -668,24 +668,13 @@ export default
data.ask_credential_on_launch = $scope.ask_credential_on_launch ? $scope.ask_credential_on_launch : false; data.ask_credential_on_launch = $scope.ask_credential_on_launch ? $scope.ask_credential_on_launch : false;
data.job_tags = (Array.isArray($scope.job_tags)) ? $scope.job_tags.join() : ""; data.job_tags = (Array.isArray($scope.job_tags)) ? $scope.job_tags.join() : "";
data.skip_tags = (Array.isArray($scope.skip_tags)) ? $scope.skip_tags.join() : ""; data.skip_tags = (Array.isArray($scope.skip_tags)) ? $scope.skip_tags.join() : "";
if ($scope.selectedCredentials && $scope.selectedCredentials
.machine && $scope.selectedCredentials // drop legacy 'credential' and 'vault_credential' keys from the update request as they will
.machine.id) { // be provided to the related credentials endpoint by the template save success handler.
data.credential = $scope.selectedCredentials delete data.credential;
.machine.id; delete data.vault_credential;
} else {
data.credential = null; data.extra_vars = ToJSON($scope.parseType, $scope.variables, true);
}
if ($scope.selectedCredentials && $scope.selectedCredentials
.vault && $scope.selectedCredentials
.vault.id) {
data.vault_credential = $scope.selectedCredentials
.vault.id;
} else {
data.vault_credential = null;
}
data.extra_vars = ToJSON($scope.parseType,
$scope.variables, true);
// We only want to set the survey_enabled flag to // We only want to set the survey_enabled flag to
// true for this job template if a survey exists // true for this job template if a survey exists

View File

@@ -129,7 +129,6 @@ function(NotificationsList, CompletedJobsList, i18n) {
credentials-to-post="credentialsToPost" credentials-to-post="credentialsToPost"
field-is-disabled="!(job_template_obj.summary_fields.user_capabilities.edit || canAddJobTemplate)"> field-is-disabled="!(job_template_obj.summary_fields.user_capabilities.edit || canAddJobTemplate)">
</multi-credential>`, </multi-credential>`,
required: true,
awPopOver: i18n._('Select credentials that allow Tower to access the nodes this job will be ran against. You can only select one credential of each type. For machine credentials (SSH), checking "Prompt on launch" without selecting credentials will require you to select a machine credential at run time. If you select credentials and check "Prompt on launch", the selected credential(s) become the defaults that can be updated at run time.'), awPopOver: i18n._('Select credentials that allow Tower to access the nodes this job will be ran against. You can only select one credential of each type. For machine credentials (SSH), checking "Prompt on launch" without selecting credentials will require you to select a machine credential at run time. If you select credentials and check "Prompt on launch", the selected credential(s) become the defaults that can be updated at run time.'),
dataTitle: i18n._('Credentials'), dataTitle: i18n._('Credentials'),
dataPlacement: 'right', dataPlacement: 'right',
@@ -368,7 +367,7 @@ function(NotificationsList, CompletedJobsList, i18n) {
}, },
save: { save: {
ngClick: 'formSave()', //$scope.function to call on click, optional ngClick: 'formSave()', //$scope.function to call on click, optional
ngDisabled: "job_template_form.$invalid || credentialNotPresent",//true //Disable when $pristine or $invalid, optional and when can_edit = false, for permission reasons ngDisabled: "job_template_form.$invalid",//true //Disable when $pristine or $invalid, optional and when can_edit = false, for permission reasons
ngShow: '(job_template_obj.summary_fields.user_capabilities.edit || canAddJobTemplate)' ngShow: '(job_template_obj.summary_fields.user_capabilities.edit || canAddJobTemplate)'
} }
}, },

View File

@@ -14,7 +14,16 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
.then(kinds => { .then(kinds => {
scope.credentialKinds = kinds; scope.credentialKinds = kinds;
scope.credentialKind = scope.selectedCredentials.machine && scope.selectedCredentials.machine.readOnly ? (scope.selectedCredentials.vault && scope.selectedCredentials.vault.readOnly ? "" + kinds.Network : "" + kinds.Vault) : "" + kinds.Machine; const machineIsReadOnly = _.get(scope.selectedCredentials, 'machine.readOnly');
const vaultIsReadOnly = _.get(scope.selectedCredentials, 'vault.readOnly');
if (!machineIsReadOnly) {
scope.credentialKind = `${kinds.Machine}`;
} else if (!vaultIsReadOnly) {
scope.credentialKind = `${kinds.Vault}`;
} else {
scope.credentialKind = `${kinds.Network}`;
}
scope.showModal = function() { scope.showModal = function() {
scope.modalHidden = false; scope.modalHidden = false;
@@ -83,13 +92,12 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
'GetBasePath', function($scope, CredentialList, i18n, qs, 'GetBasePath', function($scope, CredentialList, i18n, qs,
GetBasePath) { GetBasePath) {
let updateExtraCredentialsList = function() { let updateExtraCredentialsList = function() {
let extraCredIds = $scope.selectedCredentials.extra let extraCredIds = $scope.selectedCredentials.extra.map(cred => cred.id);
.map(cred => cred.id);
$scope.credentials.forEach(cred => { $scope.credentials.forEach(cred => {
if (cred.credential_type !== $scope.credentialKinds.Machine) { cred.checked = (extraCredIds.indexOf(cred.id) > - 1) ? 1 : 0;
cred.checked = (extraCredIds // if (cred.credential_type !== $scope.credentialKinds.Machine) {
.indexOf(cred.id) > - 1) ? 1 : 0; // cred.checked = (extraCredIds.indexOf(cred.id) > - 1) ? 1 : 0;
} //}
}); });
$scope.credTags = MultiCredentialService $scope.credTags = MultiCredentialService
@@ -97,35 +105,35 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
$scope.allCredentialTypeOptions); $scope.allCredentialTypeOptions);
}; };
let updateMachineCredentialList = function() { // let updateMachineCredentialList = function() {
$scope.credentials.forEach(cred => { // $scope.credentials.forEach(cred => {
if (cred.credential_type === $scope.credentialKinds.Machine) { // if (cred.credential_type === $scope.credentialKinds.Machine) {
cred.checked = ($scope.selectedCredentials // cred.checked = ($scope.selectedCredentials
.machine !== null && // .machine !== null &&
cred.id === $scope.selectedCredentials // cred.id === $scope.selectedCredentials
.machine.id) ? 1 : 0; // .machine.id) ? 1 : 0;
} // }
}); // });
$scope.credTags = MultiCredentialService // $scope.credTags = MultiCredentialService
.updateCredentialTags($scope.selectedCredentials, // .updateCredentialTags($scope.selectedCredentials,
$scope.allCredentialTypeOptions); // $scope.allCredentialTypeOptions);
}; // };
let updateVaultCredentialList = function() { // let updateVaultCredentialList = function() {
$scope.credentials.forEach(cred => { // $scope.credentials.forEach(cred => {
if (cred.credential_type === $scope.credentialKinds.Vault) { // if (cred.credential_type === $scope.credentialKinds.Vault) {
cred.checked = ($scope.selectedCredentials // cred.checked = ($scope.selectedCredentials
.vault !== null && // .vault !== null &&
cred.id === $scope.selectedCredentials // cred.id === $scope.selectedCredentials
.vault.id) ? 1 : 0; // .vault.id) ? 1 : 0;
} // }
}); // });
$scope.credTags = MultiCredentialService // $scope.credTags = MultiCredentialService
.updateCredentialTags($scope.selectedCredentials, // .updateCredentialTags($scope.selectedCredentials,
$scope.allCredentialTypeOptions); // $scope.allCredentialTypeOptions);
}; // };
let uncheckAllCredentials = function() { let uncheckAllCredentials = function() {
$scope.credentials.forEach(cred => { $scope.credentials.forEach(cred => {
@@ -161,6 +169,7 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
} else { } else {
$scope.generateCredentialList(); $scope.generateCredentialList();
} }
updateExtraCredentialsList();
$scope.showModal(); $scope.showModal();
} }
}); });
@@ -188,61 +197,64 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
$scope.$watch('credentialKind', onCredentialKindChanged); $scope.$watch('credentialKind', onCredentialKindChanged);
$scope.$watchCollection('credentials', updateExtraCredentialsList);
$scope.$watchCollection('selectedCredentials.extra', () => { $scope.$watchCollection('selectedCredentials.extra', () => {
//$scope.$watchGroup(['credentials', 'selectedCredentials.extra'], () => {
if($scope.credentials && $scope.credentials.length > 0) { if($scope.credentials && $scope.credentials.length > 0) {
if($scope.selectedCredentials.extra && if($scope.selectedCredentials.extra &&
$scope.selectedCredentials.extra.length > 0 && $scope.selectedCredentials.extra.length > 0){ //&&
parseInt($scope.credentialKind) !== $scope.credentialKinds.Machine) { // parseInt($scope.credentialKind) !== $scope.credentialKinds.Machine) {
updateExtraCredentialsList(); updateExtraCredentialsList();
} else if (parseInt($scope.credentialKind) !== $scope.credentialKinds.Machine) { } else { //if (parseInt($scope.credentialKind) !== $scope.credentialKinds.Machine) {
uncheckAllCredentials(); uncheckAllCredentials();
} }
} }
}); });
$scope.$watch('selectedCredentials.machine', () => { // $scope.$watch('selectedCredentials.machine', () => {
if($scope.selectedCredentials && // if($scope.selectedCredentials &&
$scope.selectedCredentials.machine && // $scope.selectedCredentials.machine &&
parseInt($scope.credentialKind) === $scope.credentialKinds.Machine) { // parseInt($scope.credentialKind) === $scope.credentialKinds.Machine) {
updateMachineCredentialList(); // updateMachineCredentialList();
} else { // } else {
uncheckAllCredentials(); // uncheckAllCredentials();
} // }
}); // });
$scope.$watch('selectedCredentials.vault', () => { // $scope.$watch('selectedCredentials.vault', () => {
if($scope.selectedCredentials && // if($scope.selectedCredentials &&
$scope.selectedCredentials.vault && // $scope.selectedCredentials.vault &&
parseInt($scope.credentialKind) === $scope.credentialKinds.Vault) { // parseInt($scope.credentialKind) === $scope.credentialKinds.Vault) {
updateVaultCredentialList(); // updateVaultCredentialList();
} else { // } else {
uncheckAllCredentials(); // uncheckAllCredentials();
} // }
}); // });
$scope.$watchGroup(['credentials', // $scope.$watchGroup(['credentials',
'selectedCredentials.machine', // 'selectedCredentials.machine',
'selectedCredentials.vault'], () => { // 'selectedCredentials.vault'], () => {
if($scope.credentials && // if($scope.credentials &&
$scope.credentials.length > 0) { // $scope.credentials.length > 0) {
if($scope.selectedCredentials && // if($scope.selectedCredentials &&
$scope.selectedCredentials.machine && // $scope.selectedCredentials.machine &&
parseInt($scope.credentialKind) === $scope.credentialKinds.Machine) { // parseInt($scope.credentialKind) === $scope.credentialKinds.Machine) {
updateMachineCredentialList(); // updateMachineCredentialList();
} else if($scope.selectedCredentials && // } else if($scope.selectedCredentials &&
$scope.selectedCredentials.vault && // $scope.selectedCredentials.vault &&
parseInt($scope.credentialKind) === $scope.credentialKinds.Vault) { // parseInt($scope.credentialKind) === $scope.credentialKinds.Vault) {
updateVaultCredentialList(); // updateVaultCredentialList();
} else if($scope.selectedCredentials && // } else if($scope.selectedCredentials &&
$scope.selectedCredentials.extra && // $scope.selectedCredentials.extra &&
$scope.selectedCredentials.extra.length > 0 && // $scope.selectedCredentials.extra.length > 0 &&
parseInt($scope.credentialKind) !== $scope.credentialKinds.Machine) { // parseInt($scope.credentialKind) !== $scope.credentialKinds.Machine) {
updateExtraCredentialsList(); // updateExtraCredentialsList();
} else { // } else {
uncheckAllCredentials(); // uncheckAllCredentials();
} // }
} // }
}); // });
}; };
$scope.$on('multiCredentialModalLinked', function() { $scope.$on('multiCredentialModalLinked', function() {
@@ -250,39 +262,39 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
}); });
$scope.toggle_row = function(selectedRow) { $scope.toggle_row = function(selectedRow) {
if(parseInt($scope.credentialKind) === $scope.credentialKinds.Machine) { // if(false) { //if(parseInt($scope.credentialKind) === $scope.credentialKinds.Machine) {
if($scope.selectedCredentials && // if($scope.selectedCredentials &&
$scope.selectedCredentials.machine && // $scope.selectedCredentials.machine &&
$scope.selectedCredentials.machine.id === selectedRow.id) { // $scope.selectedCredentials.machine.id === selectedRow.id) {
$scope.selectedCredentials.machine = null; // $scope.selectedCredentials.machine = null;
} else { // } else {
$scope.selectedCredentials.machine = _.cloneDeep(selectedRow); // $scope.selectedCredentials.machine = _.cloneDeep(selectedRow);
} // }
}else if(parseInt($scope.credentialKind) === $scope.credentialKinds.Vault) { // }else if (false) { //if(parseInt($scope.credentialKind) === $scope.credentialKinds.Vault) {
if($scope.selectedCredentials && // if($scope.selectedCredentials &&
$scope.selectedCredentials.vault && // $scope.selectedCredentials.vault &&
$scope.selectedCredentials.vault.id === selectedRow.id) { // $scope.selectedCredentials.vault.id === selectedRow.id) {
$scope.selectedCredentials.vault = null; // $scope.selectedCredentials.vault = null;
} else { // } else {
$scope.selectedCredentials.vault = _.cloneDeep(selectedRow); // $scope.selectedCredentials.vault = _.cloneDeep(selectedRow);
} // }
} else { // } else {
let rowDeselected = false; let rowDeselected = false;
for (let i = $scope.selectedCredentials.extra.length - 1; i >= 0; i--) { for (let i = $scope.selectedCredentials.extra.length - 1; i >= 0; i--) {
if($scope.selectedCredentials.extra[i].id === selectedRow if($scope.selectedCredentials.extra[i].id === selectedRow.id) {
.id) { $scope.selectedCredentials.extra.splice(i, 1);
$scope.selectedCredentials.extra.splice(i, 1); rowDeselected = true;
rowDeselected = true; } else if(selectedRow.credential_type === $scope.selectedCredentials.extra[i].credential_type) {
} else if(selectedRow.credential_type === $scope if (selectedRow.credential_type !== $scope.credentialKinds.Vault) {
.selectedCredentials.extra[i].credential_type) {
$scope.selectedCredentials.extra.splice(i, 1); $scope.selectedCredentials.extra.splice(i, 1);
}
} }
} }
if(!rowDeselected) { if(!rowDeselected) {
$scope.selectedCredentials.extra $scope.selectedCredentials.extra
.push(_.cloneDeep(selectedRow)); .push(_.cloneDeep(selectedRow));
} }
} // }
}; };
$scope.selectedCredentialsDirty = function() { $scope.selectedCredentialsDirty = function() {

View File

@@ -34,14 +34,11 @@
</i> </i>
</div> </div>
<div class="MultiCredential-tag" ng-class="tag.readOnly ? 'MultiCredential-tag--disabled' : 'MultiCredential-tag--deletable'"> <div class="MultiCredential-tag" ng-class="tag.readOnly ? 'MultiCredential-tag--disabled' : 'MultiCredential-tag--deletable'">
<span <span class="MultiCredential-name--label ng-binding">
class="MultiCredential-name--label {{ tag.kind }}
ng-binding">
{{ tag.kind }}
</span> </span>
<span class="MultiCredential-name u-wordwrap <span class="MultiCredential-name u-wordwrapng-binding">
ng-binding"> {{ tag.name }}
{{ tag.name }}
</span> </span>
</div> </div>
</div> </div>

View File

@@ -8,14 +8,10 @@
<i class="fa fa-search"></i> <i class="fa fa-search"></i>
</button> </button>
</span> </span>
<span class="form-control Form-textInput Form-textInput--variableHeight <span class="form-control Form-textInput Form-textInput--variableHeight input-medium lookup"
input-medium lookup" ng-class="{'ng-dirty': fieldDirty}"
ng-class="{ ng-disabled="fieldIsDisabled"
'ng-invalid': credentialNotPresent, style="padding: 4px 6px;">
'ng-dirty': fieldDirty
}"
ng-disabled="fieldIsDisabled"
style="padding: 4px 6px;">
<div class="MultiCredential-tags"> <div class="MultiCredential-tags">
<div class="MultiCredential-tagSection"> <div class="MultiCredential-tagSection">
<div class="MultiCredential-flexContainer"> <div class="MultiCredential-flexContainer">
@@ -24,14 +20,12 @@
<div class="MultiCredential-deleteContainer" <div class="MultiCredential-deleteContainer"
ng-click="removeCredential(tag.id)" ng-click="removeCredential(tag.id)"
ng-hide="fieldIsDisabled || tag.readOnly"> ng-hide="fieldIsDisabled || tag.readOnly">
<i class="fa fa-times MultiCredential-tagDelete"> <i class="fa fa-times MultiCredential-tagDelete"></i>
</i>
</div> </div>
<div class="MultiCredential-tag" <div class="MultiCredential-tag"
ng-class="{'MultiCredential-tag--deletable': !fieldIsDisabled && !tag.readOnly, 'MultiCredential-tag--disabled': tag.readOnly}"> ng-class="{'MultiCredential-tag--deletable': !fieldIsDisabled && !tag.readOnly, 'MultiCredential-tag--disabled': tag.readOnly}">
<span class="MultiCredential-name--label <span class="MultiCredential-name--label ng-binding">
ng-binding"> {{ tag.kind }}
{{ tag.kind }}
</span> </span>
<span class="MultiCredential-name u-wordwrap ng-binding"> <span class="MultiCredential-name u-wordwrap ng-binding">
{{ tag.name }} {{ tag.name }}
@@ -43,7 +37,3 @@
</div> </div>
</span> </span>
</div> </div>
<div class="error" ng-cloak ng-show="credentialNotPresent && fieldDirty"
translate>
Please select a machine (SSH) credential or check the "Prompt on launch" option.
</div>

View File

@@ -182,61 +182,61 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
let credentialGetPermissionDenied = false; let credentialGetPermissionDenied = false;
// get machine credential // get machine credential
if (data.related.credential) { // if (data.related.credential) {
Rest.setUrl(data.related.credential); // Rest.setUrl(data.related.credential);
credDefers.push(Rest.get() // credDefers.push(Rest.get()
.then(({data}) => { // .then(({data}) => {
selectedCredentials.machine = data; // selectedCredentials.machine = data;
}) // })
.catch(({data, status}) => { // .catch(({data, status}) => {
if (status === 403) { // if (status === 403) {
/* User doesn't have read access to the machine credential, so use summary_fields */ // /* User doesn't have read access to the machine credential, so use summary_fields */
credentialGetPermissionDenied = true; // credentialGetPermissionDenied = true;
selectedCredentials.machine = job_template_obj.summary_fields.credential; // selectedCredentials.machine = job_template_obj.summary_fields.credential;
selectedCredentials.machine.credential_type = job_template_obj.summary_fields.credential.credential_type_id; // selectedCredentials.machine.credential_type = job_template_obj.summary_fields.credential.credential_type_id;
selectedCredentials.machine.readOnly = true; // selectedCredentials.machine.readOnly = true;
} else { // } else {
ProcessErrors( // ProcessErrors(
null, data, status, null, // null, data, status, null,
{ // {
hdr: 'Error!', // hdr: 'Error!',
msg: 'Failed to get machine credential. ' + // msg: 'Failed to get machine credential. ' +
'Get returned status: ' + // 'Get returned status: ' +
status // status
}); // });
} // }
})); // }));
} // }
if (data.related.vault_credential) { // if (data.related.vault_credential) {
Rest.setUrl(data.related.vault_credential); // Rest.setUrl(data.related.vault_credential);
credDefers.push(Rest.get() // credDefers.push(Rest.get()
.then(({data}) => { // .then(({data}) => {
selectedCredentials.vault = data; // selectedCredentials.vault = data;
}) // })
.catch(({data, status}) => { // .catch(({data, status}) => {
if (status === 403) { // if (status === 403) {
/* User doesn't have read access to the vault credential, so use summary_fields */ // /* User doesn't have read access to the vault credential, so use summary_fields */
credentialGetPermissionDenied = true; // credentialGetPermissionDenied = true;
selectedCredentials.vault = job_template_obj.summary_fields.vault_credential; // selectedCredentials.vault = job_template_obj.summary_fields.vault_credential;
selectedCredentials.vault.credential_type = job_template_obj.summary_fields.vault_credential.credential_type_id; // selectedCredentials.vault.credential_type = job_template_obj.summary_fields.vault_credential.credential_type_id;
selectedCredentials.vault.readOnly = true; // selectedCredentials.vault.readOnly = true;
} else { // } else {
ProcessErrors( // ProcessErrors(
null, data, status, null, // null, data, status, null,
{ // {
hdr: 'Error!', // hdr: 'Error!',
msg: 'Failed to get machine credential. ' + // msg: 'Failed to get machine credential. ' +
'Get returned status: ' + // 'Get returned status: ' +
status // status
}); // });
} // }
})); // }));
} // }
// get extra credentials // get extra credentials
if (data.related.extra_credentials) { if (data.related.credentials) {
Rest.setUrl(data.related.extra_credentials); Rest.setUrl(data.related.credentials);
credDefers.push(Rest.get() credDefers.push(Rest.get()
.then(({data}) => { .then(({data}) => {
selectedCredentials.extra = data.results; selectedCredentials.extra = data.results;
@@ -245,7 +245,7 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
if (status === 403) { if (status === 403) {
/* User doesn't have read access to the extra credentials, so use summary_fields */ /* User doesn't have read access to the extra credentials, so use summary_fields */
credentialGetPermissionDenied = true; credentialGetPermissionDenied = true;
selectedCredentials.extra = job_template_obj.summary_fields.extra_credentials; selectedCredentials.extra = job_template_obj.summary_fields.credentials;
_.map(selectedCredentials.extra, (cred) => { _.map(selectedCredentials.extra, (cred) => {
cred.credential_type = cred.credential_type_id; cred.credential_type = cred.credential_type_id;
cred.readOnly = true; cred.readOnly = true;