open-vault/ui/app/routes/vault/cluster/secrets/backend/create.js
Matthew Irish 7f4dbe3fd2
Ui kv v2 redux (#4393)
* remove header used for backwards compatibility in KV mounts, and use v1 paths for v1, v2 paths for v2

* make the model hook always run

* simplify adapter & serializer code for secrets

* update tests

* fix lease tests

* address review feedback
2018-04-19 21:26:25 -05:00

54 lines
1.6 KiB
JavaScript

import Ember from 'ember';
import EditBase from './secret-edit';
import KeyMixin from 'vault/models/key-mixin';
var SecretProxy = Ember.Object.extend(KeyMixin, {
store: null,
toModel() {
return this.getProperties('id', 'secretData', 'backend');
},
createRecord(backend) {
let modelType = 'secret';
let backendModel = this.store.peekRecord('secret-engine', backend);
if (backendModel.get('type') === 'kv' && backendModel.get('options.version') === 2) {
modelType = 'secret-v2';
}
return this.store.createRecord(modelType, this.toModel());
},
});
export default EditBase.extend({
createModel(transition, parentKey) {
const { backend } = this.paramsFor('vault.cluster.secrets.backend');
const modelType = this.modelType(backend);
if (modelType === 'role-ssh') {
return this.store.createRecord(modelType, { keyType: 'ca' });
}
if (modelType !== 'secret' && modelType !== 'secret-v2') {
return this.store.createRecord(modelType);
}
const key = transition.queryParams.initialKey || '';
const model = SecretProxy.create({
initialParentKey: parentKey,
store: this.store,
});
if (key) {
// have to set this after so that it will be
// computed properly in the template (it's dependent on `initialParentKey`)
model.set('keyWithoutParent', key);
}
return model;
},
model(params, transition) {
const parentKey = params.secret ? params.secret : '';
return Ember.RSVP.hash({
secret: this.createModel(transition, parentKey),
capabilities: {},
});
},
});