4d29d70b98
* remove dev-leased-kv flag, handle non-secret responses in the console * skip lease tests for now * use the newer collection api for ember-page-object * include generic in types that can have a v2 * add tests for generic v2 * isolate kv v2 logic in the secret-engine model and add unit tests
101 lines
2.6 KiB
JavaScript
101 lines
2.6 KiB
JavaScript
import Ember from 'ember';
|
|
import DS from 'ember-data';
|
|
import lazyCapabilities, { apiPath } from 'vault/macros/lazy-capabilities';
|
|
import { fragment } from 'ember-data-model-fragments/attributes';
|
|
|
|
import { expandAttributeMeta } from 'vault/utils/field-to-attrs';
|
|
|
|
const { attr } = DS;
|
|
const { computed } = Ember;
|
|
|
|
//identity will be managed separately and the inclusion
|
|
//of the system backend is an implementation detail
|
|
const LIST_EXCLUDED_BACKENDS = ['system', 'identity'];
|
|
|
|
export default DS.Model.extend({
|
|
path: attr('string'),
|
|
accessor: attr('string'),
|
|
name: attr('string'),
|
|
type: attr('string'),
|
|
description: attr('string'),
|
|
config: fragment('mount-config', { defaultValue: {} }),
|
|
options: fragment('mount-options', { defaultValue: {} }),
|
|
local: attr('boolean'),
|
|
sealWrap: attr('boolean'),
|
|
|
|
modelTypeForKV: computed('type', 'options.version', function() {
|
|
let type = this.get('type');
|
|
let version = this.get('options.version');
|
|
let modelType = 'secret';
|
|
if ((type === 'kv' || type === 'generic') && version === 2) {
|
|
modelType = 'secret-v2';
|
|
}
|
|
return modelType;
|
|
}),
|
|
|
|
formFields: [
|
|
'type',
|
|
'path',
|
|
'description',
|
|
'accessor',
|
|
'local',
|
|
'sealWrap',
|
|
'config.{defaultLeaseTtl,maxLeaseTtl}',
|
|
'options.{version}',
|
|
],
|
|
|
|
attrs: computed('formFields', function() {
|
|
return expandAttributeMeta(this, this.get('formFields'));
|
|
}),
|
|
|
|
shouldIncludeInList: computed('type', function() {
|
|
return !LIST_EXCLUDED_BACKENDS.includes(this.get('type'));
|
|
}),
|
|
|
|
localDisplay: Ember.computed('local', function() {
|
|
return this.get('local') ? 'local' : 'replicated';
|
|
}),
|
|
|
|
// ssh specific ones
|
|
privateKey: attr('string'),
|
|
publicKey: attr('string'),
|
|
generateSigningKey: attr('boolean', {
|
|
defaultValue: true,
|
|
}),
|
|
|
|
saveCA(options) {
|
|
if (this.get('type') !== 'ssh') {
|
|
return;
|
|
}
|
|
if (options.isDelete) {
|
|
this.setProperties({
|
|
privateKey: null,
|
|
publicKey: null,
|
|
generateSigningKey: false,
|
|
});
|
|
}
|
|
return this.save({
|
|
adapterOptions: {
|
|
options: options,
|
|
apiPath: 'config/ca',
|
|
attrsToSend: ['privateKey', 'publicKey', 'generateSigningKey'],
|
|
},
|
|
});
|
|
},
|
|
|
|
saveZeroAddressConfig() {
|
|
return this.save({
|
|
adapterOptions: {
|
|
adapterMethod: 'saveZeroAddressConfig',
|
|
},
|
|
});
|
|
},
|
|
|
|
zeroAddressPath: lazyCapabilities(apiPath`${'id'}/config/zeroaddress`, 'id'),
|
|
canEditZeroAddress: computed.alias('zeroAddressPath.canUpdate'),
|
|
|
|
// aws backend attrs
|
|
lease: attr('string'),
|
|
leaseMax: attr('string'),
|
|
});
|