mirror of
https://github.com/ansible/awx.git
synced 2026-03-20 02:17:37 -02:30
show vault id
This commit is contained in:
@@ -552,8 +552,9 @@ export default ['$compile', 'Attr', 'Icon',
|
|||||||
|
|
||||||
if(list.fields.info) {
|
if(list.fields.info) {
|
||||||
customClass = list.fields.name.modalColumnClass || '';
|
customClass = list.fields.name.modalColumnClass || '';
|
||||||
|
const infoHeaderClass = _.get(list.fields.info, 'infoHeaderClass', 'List-tableHeader--info');
|
||||||
html += `<th
|
html += `<th
|
||||||
class="List-tableHeader--info"
|
class="${infoHeaderClass}"
|
||||||
base-path="${list.basePath || list.name}"
|
base-path="${list.basePath || list.name}"
|
||||||
collection="${list.name}"
|
collection="${list.name}"
|
||||||
dataset="${list.iterator}_dataset"
|
dataset="${list.iterator}_dataset"
|
||||||
|
|||||||
@@ -36,9 +36,10 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
|
|||||||
$('#multi-credential-modal').modal('hide');
|
$('#multi-credential-modal').modal('hide');
|
||||||
};
|
};
|
||||||
|
|
||||||
scope.generateCredentialList = function(inputType = 'radio') {
|
scope.generateCredentialList = function(inputType = 'radio', list = scope.list) {
|
||||||
|
console.log(inputType);
|
||||||
let html = GenerateList.build({
|
let html = GenerateList.build({
|
||||||
list: scope.list,
|
list,
|
||||||
input_type: inputType,
|
input_type: inputType,
|
||||||
mode: 'lookup'
|
mode: 'lookup'
|
||||||
});
|
});
|
||||||
@@ -69,9 +70,9 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
|
|||||||
scope.credentialTypeOptions = credentialTypeOptions;
|
scope.credentialTypeOptions = credentialTypeOptions;
|
||||||
scope.allCredentialTypeOptions = _.cloneDeep(credentialTypeOptions);
|
scope.allCredentialTypeOptions = _.cloneDeep(credentialTypeOptions);
|
||||||
|
|
||||||
// We want to hide machine and vault dropdown options if a credential
|
// We want to hide the machine dropdown option if a machine credential
|
||||||
// has already been selected for those types and the user interacting
|
// has already been selected and the user interacting with the form doesn't
|
||||||
// with the form doesn't have the ability to change them
|
// have the ability to change it.
|
||||||
for(let i=scope.credentialTypeOptions.length - 1; i >=0; i--) {
|
for(let i=scope.credentialTypeOptions.length - 1; i >=0; i--) {
|
||||||
if((scope.selectedCredentials.machine &&
|
if((scope.selectedCredentials.machine &&
|
||||||
scope.selectedCredentials.machine.credential_type_id === scope.credentialTypeOptions[i].value &&
|
scope.selectedCredentials.machine.credential_type_id === scope.credentialTypeOptions[i].value &&
|
||||||
@@ -126,13 +127,13 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
|
|||||||
$scope.credential_queryset.credential_type = parseInt($scope.credentialKind);
|
$scope.credential_queryset.credential_type = parseInt($scope.credentialKind);
|
||||||
|
|
||||||
qs.search(GetBasePath('credentials'), $scope.credential_default_params)
|
qs.search(GetBasePath('credentials'), $scope.credential_default_params)
|
||||||
.then(res => {
|
.then(({ data }) => {
|
||||||
$scope.credential_dataset = res.data;
|
$scope.credential_dataset = data;
|
||||||
$scope.credentials = $scope.credential_dataset.results;
|
$scope.credentials = $scope.credential_dataset.results;
|
||||||
|
|
||||||
if(!$scope.listRendered) {
|
if(!$scope.listRendered) {
|
||||||
if (newValueIsVault) {
|
if (newValueIsVault) {
|
||||||
$scope.generateCredentialList('checkbox');
|
$scope.generateCredentialList('checkbox', $scope.vaultList);
|
||||||
} else {
|
} else {
|
||||||
$scope.generateCredentialList();
|
$scope.generateCredentialList();
|
||||||
}
|
}
|
||||||
@@ -148,9 +149,26 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
|
|||||||
$scope.credentials = $scope.credentials || [];
|
$scope.credentials = $scope.credentials || [];
|
||||||
$scope.listRendered = false;
|
$scope.listRendered = false;
|
||||||
|
|
||||||
let credList = _.cloneDeep(CredentialList);
|
const credList = _.cloneDeep(CredentialList);
|
||||||
|
|
||||||
credList.emptyListText = i18n._('No Credentials Matching This Type Have Been Created');
|
credList.emptyListText = i18n._('No Credentials Matching This Type Have Been Created');
|
||||||
|
|
||||||
|
const vaultCredList = _.cloneDeep(credList);
|
||||||
|
|
||||||
|
vaultCredList.fields.name.modalColumnClass = 'col-md-6';
|
||||||
|
|
||||||
|
vaultCredList.fields.info = {
|
||||||
|
label: i18n._('Vault ID'),
|
||||||
|
ngBind: 'credential.inputs.vault_id',
|
||||||
|
key: false,
|
||||||
|
nosort: true,
|
||||||
|
modalColumnClass: 'col-md-6',
|
||||||
|
infoHeaderClass: '',
|
||||||
|
dataPlacement: 'top'
|
||||||
|
};
|
||||||
|
|
||||||
$scope.list = credList;
|
$scope.list = credList;
|
||||||
|
$scope.vaultList = vaultCredList;
|
||||||
|
|
||||||
$scope.credential_default_params = {
|
$scope.credential_default_params = {
|
||||||
order_by: 'name',
|
order_by: 'name',
|
||||||
@@ -191,21 +209,25 @@ export default ['templateUrl', 'Rest', 'GetBasePath', 'generateList', '$compile'
|
|||||||
return $scope.toggle_row(credential);
|
return $scope.toggle_row(credential);
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.toggle_row = function(selectedRow) {
|
$scope.toggle_row = function(credential) {
|
||||||
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.id) {
|
if($scope.selectedCredentials.extra[i].id === credential.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(credential.credential_type === $scope.selectedCredentials.extra[i].credential_type) {
|
||||||
if (selectedRow.credential_type !== $scope.credentialKinds.Vault) {
|
if (credential.credential_type !== $scope.credentialKinds.Vault) {
|
||||||
|
$scope.selectedCredentials.extra.splice(i, 1);
|
||||||
|
} else if($scope.selectedCredentials.extra[i].inputs.vault_id === credential.inputs.vault_id) {
|
||||||
|
// remove existing vault credentials if they have the same vault_id as a recently
|
||||||
|
// toggled vault credential
|
||||||
$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(credential));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -34,10 +34,13 @@
|
|||||||
</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 class="MultiCredential-name--label ng-binding">
|
<span ng-if="tag.kind !== 'Vault'" class="MultiCredential-name--label ng-binding">
|
||||||
{{ tag.kind }}
|
{{ tag.kind }}:
|
||||||
</span>
|
</span>
|
||||||
<span class="MultiCredential-name u-wordwrapng-binding">
|
<span ng-if="tag.kind === 'Vault'" class="MultiCredential-name--label ng-binding">
|
||||||
|
{{ tag.kind }} ({{ tag.vault_id }}):
|
||||||
|
</span>
|
||||||
|
<span class="MultiCredential-name u-wordwrap ng-binding">
|
||||||
{{ tag.name }}
|
{{ tag.name }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -24,8 +24,11 @@
|
|||||||
</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 ng-binding">
|
<span ng-if="tag.kind !== 'Vault'" class="MultiCredential-name--label ng-binding">
|
||||||
{{ tag.kind }}
|
{{ tag.kind }}:
|
||||||
|
</span>
|
||||||
|
<span ng-if="tag.kind === 'Vault'" class="MultiCredential-name--label ng-binding">
|
||||||
|
{{ tag.kind }} ({{ tag.vault_id }}):
|
||||||
</span>
|
</span>
|
||||||
<span class="MultiCredential-name u-wordwrap ng-binding">
|
<span class="MultiCredential-name u-wordwrap ng-binding">
|
||||||
{{ tag.name }}
|
{{ tag.name }}
|
||||||
|
|||||||
@@ -134,16 +134,24 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return machineCred.concat(extraCreds).concat(vaultCred).map(cred => ({
|
return machineCred.concat(extraCreds).concat(vaultCred).map(cred => {
|
||||||
name: cred.name,
|
const { name, id, postType, readOnly } = cred;
|
||||||
id: cred.id,
|
const [type] = typeOpts.filter(type => parseInt(cred.credential_type) === type.value)
|
||||||
postType: cred.postType,
|
|
||||||
readOnly: cred.readOnly ? true : false,
|
const tagData = {
|
||||||
kind: typeOpts
|
name: cred.name,
|
||||||
.filter(type => {
|
id: cred.id,
|
||||||
return parseInt(cred.credential_type) === type.value;
|
postType: cred.postType,
|
||||||
})[0].name + ":"
|
readOnly: cred.readOnly ? true : false,
|
||||||
}));
|
kind: `${type.name}`
|
||||||
|
};
|
||||||
|
|
||||||
|
if (type.name === 'Vault') {
|
||||||
|
tagData.vault_id = _.get(cred, 'inputs.vault_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
return tagData;
|
||||||
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
// remove credential from structured selected credential data and tag-view
|
// remove credential from structured selected credential data and tag-view
|
||||||
@@ -234,7 +242,7 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
|
|||||||
// }));
|
// }));
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// get extra credentials
|
// get credentials
|
||||||
if (data.related.credentials) {
|
if (data.related.credentials) {
|
||||||
Rest.setUrl(data.related.credentials);
|
Rest.setUrl(data.related.credentials);
|
||||||
credDefers.push(Rest.get()
|
credDefers.push(Rest.get()
|
||||||
@@ -243,7 +251,7 @@ export default ['Rest', 'ProcessErrors', '$q', 'GetBasePath', function(Rest, Pro
|
|||||||
})
|
})
|
||||||
.catch(({data, status}) => {
|
.catch(({data, status}) => {
|
||||||
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 credentials, so use summary_fields */
|
||||||
credentialGetPermissionDenied = true;
|
credentialGetPermissionDenied = true;
|
||||||
selectedCredentials.extra = job_template_obj.summary_fields.credentials;
|
selectedCredentials.extra = job_template_obj.summary_fields.credentials;
|
||||||
_.map(selectedCredentials.extra, (cred) => {
|
_.map(selectedCredentials.extra, (cred) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user