From 5d59c62fd244812dbf2d735e9a5de9b600b95a84 Mon Sep 17 00:00:00 2001 From: Angel Garbarino Date: Mon, 22 Mar 2021 10:03:47 -0600 Subject: [PATCH] UI/control groups kv (#11143) * forced reload causing issues removed and tested * better logging for handling controlGroup error * cleanup * add changelog * address pr comments --- changelog/11143.txt | 3 ++ ui/app/components/secret-edit.js | 47 ++++++++++++++++++++------------ 2 files changed, 32 insertions(+), 18 deletions(-) create mode 100644 changelog/11143.txt diff --git a/changelog/11143.txt b/changelog/11143.txt new file mode 100644 index 0000000000..e847eb908f --- /dev/null +++ b/changelog/11143.txt @@ -0,0 +1,3 @@ +```release-note:bug +ui: Fix error message caused by control group +``` diff --git a/ui/app/components/secret-edit.js b/ui/app/components/secret-edit.js index 49eb853f66..8ed124a7e1 100644 --- a/ui/app/components/secret-edit.js +++ b/ui/app/components/secret-edit.js @@ -9,6 +9,7 @@ import WithNavToNearestAncestor from 'vault/mixins/with-nav-to-nearest-ancestor' import keys from 'vault/lib/keycodes'; import KVObject from 'vault/lib/kv-object'; import { maybeQueryRecord } from 'vault/macros/maybe-query-record'; +import ControlGroupError from 'vault/lib/control-group-error'; const LIST_ROUTE = 'vault.cluster.secrets.backend.list'; const LIST_ROOT_ROUTE = 'vault.cluster.secrets.backend.list-root'; @@ -16,6 +17,7 @@ const SHOW_ROUTE = 'vault.cluster.secrets.backend.show'; export default Component.extend(FocusOnInsertMixin, WithNavToNearestAncestor, { wizard: service(), + controlGroup: service(), router: service(), store: service(), flashMessages: service(), @@ -197,26 +199,35 @@ export default Component.extend(FocusOnInsertMixin, WithNavToNearestAncestor, { secretData.set(secretData.pathAttr, key); } - return secretData.save().then(() => { - if (!secretData.isError) { - if (isV2) { - secret.set('id', key); + return secretData + .save() + .then(() => { + if (!secretData.isError) { + if (isV2) { + secret.set('id', key); + } + if (isV2 && Object.keys(secret.changedAttributes()).length) { + // save secret metadata + secret + .save() + .then(() => { + this.saveComplete(successCallback, key); + }) + .catch(e => { + this.set(e, e.errors.join(' ')); + }); + } else { + this.saveComplete(successCallback, key); + } } - if (isV2 && Object.keys(secret.changedAttributes()).length) { - // save secret metadata - secret - .save() - .then(() => { - this.saveComplete(successCallback, key); - }) - .catch(e => { - this.set(e, e.errors.join(' ')); - }); - } else { - this.saveComplete(successCallback, key); + }) + .catch(error => { + if (error instanceof ControlGroupError) { + let errorMessage = this.controlGroup.logFromError(error); + this.set('error', errorMessage.content); } - } - }); + throw error; + }); }, saveComplete(callback, key) { if (this.wizard.featureState === 'secret') {