27bb03bbc0
* adding copyright header * fix fmt and a test
98 lines
2.5 KiB
JavaScript
98 lines
2.5 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import Component from '@glimmer/component';
|
|
import { inject as service } from '@ember/service';
|
|
import { tracked } from '@glimmer/tracking';
|
|
import { action } from '@ember/object';
|
|
import { task } from 'ember-concurrency';
|
|
import { waitFor } from '@ember/test-waiters';
|
|
import errorMessage from 'vault/utils/error-message';
|
|
|
|
/**
|
|
* @module Configure
|
|
* ConfigurePage component is a child component to configure kubernetes secrets engine.
|
|
*
|
|
* @param {object} model - config model that contains kubernetes configuration
|
|
*/
|
|
export default class ConfigurePageComponent extends Component {
|
|
@service router;
|
|
@service store;
|
|
|
|
@tracked inferredState;
|
|
@tracked modelValidations;
|
|
@tracked alert;
|
|
@tracked error;
|
|
@tracked showConfirm;
|
|
|
|
constructor() {
|
|
super(...arguments);
|
|
if (!this.args.model.isNew && !this.args.model.disableLocalCaJwt) {
|
|
this.inferredState = 'success';
|
|
}
|
|
}
|
|
|
|
get isDisabled() {
|
|
if (!this.args.model.disableLocalCaJwt && this.inferredState !== 'success') {
|
|
return true;
|
|
}
|
|
return this.save.isRunning || this.fetchInferred.isRunning;
|
|
}
|
|
|
|
leave(route) {
|
|
this.router.transitionTo(`vault.cluster.secrets.backend.kubernetes.${route}`);
|
|
}
|
|
|
|
@action
|
|
onRadioSelect(value) {
|
|
this.args.model.disableLocalCaJwt = value;
|
|
this.inferredState = null;
|
|
}
|
|
|
|
@task
|
|
@waitFor
|
|
*fetchInferred() {
|
|
try {
|
|
yield this.store.adapterFor('kubernetes/config').checkConfigVars(this.args.model.backend);
|
|
this.inferredState = 'success';
|
|
} catch {
|
|
this.inferredState = 'error';
|
|
}
|
|
}
|
|
|
|
@task
|
|
@waitFor
|
|
*save() {
|
|
if (!this.args.model.isNew && !this.showConfirm) {
|
|
this.showConfirm = true;
|
|
return;
|
|
}
|
|
this.showConfirm = false;
|
|
|
|
const { isValid, state, invalidFormMessage } = yield this.args.model.validate();
|
|
if (!isValid) {
|
|
this.modelValidations = state;
|
|
this.alert = invalidFormMessage;
|
|
return;
|
|
}
|
|
|
|
try {
|
|
yield this.args.model.save();
|
|
this.leave('configuration');
|
|
} catch (error) {
|
|
this.error = errorMessage(error, 'Error saving configuration. Please try again or contact support');
|
|
}
|
|
}
|
|
|
|
@action
|
|
cancel() {
|
|
const { model } = this.args;
|
|
const transitionRoute = model.isNew ? 'overview' : 'configuration';
|
|
const cleanupMethod = model.isNew ? 'unloadRecord' : 'rollbackAttributes';
|
|
model[cleanupMethod]();
|
|
this.leave(transitionRoute);
|
|
}
|
|
}
|