You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by jc...@apache.org on 2021/11/22 13:31:23 UTC

[brooklyn-ui] branch master updated: Display error modal on HA operation failure

This is an automated email from the ASF dual-hosted git repository.

jcabrerizo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-ui.git


The following commit(s) were added to refs/heads/master by this push:
     new e1cf5a6  Display error modal on HA operation failure
     new 4385873  Merge pull request #311 from algairim/ha-improvements
e1cf5a6 is described below

commit e1cf5a6b1282eedba5b30a6c6a0f872eed1b6c4f
Author: Mykola Mandra <my...@cloudsoft.io>
AuthorDate: Thu Nov 18 16:05:38 2021 +0000

    Display error modal on HA operation failure
    
    Signed-off-by: Mykola Mandra <my...@cloudsoft.io>
---
 .../home/app/views/about/about.controller.js       | 29 ++++++++++++++++------
 .../home/app/views/about/about.template.html       | 22 +++++++++++++---
 2 files changed, 40 insertions(+), 11 deletions(-)

diff --git a/ui-modules/home/app/views/about/about.controller.js b/ui-modules/home/app/views/about/about.controller.js
index 95a5113..6b675e7 100644
--- a/ui-modules/home/app/views/about/about.controller.js
+++ b/ui-modules/home/app/views/about/about.controller.js
@@ -81,6 +81,11 @@ export function aboutStateController($scope, $rootScope, $element, $q, $uibModal
     $scope.expectedNodeCounter = Object.keys($scope.states.nodes).length;
     $scope.template = 'haStatusTemplate';
 
+    $scope.operations = {
+        REMOVE_TERMINATED_NODE: 'Remove',
+        REMOVE_ALL_TERMINATED_NODES: 'Remove terminated nodes'
+    };
+
     $scope.importPersistence = function () {
         $rootScope.$broadcast('open-persistence-importer');
     }
@@ -193,8 +198,8 @@ export function aboutStateController($scope, $rootScope, $element, $q, $uibModal
             });
 
             errorModal.closed.then(() => {
-                console.log('closing, wipe errors')
                 $scope.errors = [];
+                $scope.haManageErrors = [];
             })
         }
     });
@@ -202,24 +207,34 @@ export function aboutStateController($scope, $rootScope, $element, $q, $uibModal
     $scope.removeNode = function (nodeId) {
         $scope.template = 'spinnerTemplate';
         let removeNode = serverApi.removeHaTerminatedNode(nodeId);
-        removeNode.then(data => {
+        removeNode.then(() => {
             $scope.expectedNodeCounter--;
-            $scope.container.dispatchEvent(new CustomEvent('update-states', {}));
+        }).catch(error => {
+            $scope.haManageErrors.push({
+                operationName: $scope.operations.REMOVE_TERMINATED_NODE,
+                message: get(error, 'data.message', 'Unknown error.'),
+            });
         });
+        $scope.container.dispatchEvent(new CustomEvent('update-states', {}));
     }
 
     $scope.removeAllTerminatedNodes = function () {
         $scope.template = 'spinnerTemplate';
         let removeNodes = serverApi.removeHaTerminatedNodes();
-        removeNodes.then(data => {
+        removeNodes.then(() => {
             Object.values($scope.states.nodes).forEach( ({ status }) => {
                 if (status === "TERMINATED" || status === "FAILED") $scope.expectedNodeCounter--;
             });
-            $scope.container.dispatchEvent(new CustomEvent('update-states', {}));
+        }).catch(error => {
+            $scope.haManageErrors.push({
+                operationName: $scope.operations.REMOVE_ALL_TERMINATED_NODES,
+                message: get(error, 'data.message', 'Unknown error.'),
+            });
         });
-    }
+        $scope.container.dispatchEvent(new CustomEvent('update-states', {}));
+    };
 
-    $element.bind('update-states', (event) => {
+    $element.bind('update-states', () => {
         let updateStates = serverApi.getHaStates();
         updateStates.then(({ data }) => {
             if (Object.keys(data.nodes).length === $scope.expectedNodeCounter) {
diff --git a/ui-modules/home/app/views/about/about.template.html b/ui-modules/home/app/views/about/about.template.html
index fc29f01..d887b39 100644
--- a/ui-modules/home/app/views/about/about.template.html
+++ b/ui-modules/home/app/views/about/about.template.html
@@ -71,7 +71,7 @@
                 HA status
                 <button ng-if="states.nodes[states.ownId].status === 'MASTER'"
                         ng-click="removeAllTerminatedNodes()" class="btn btn-sm btn-default"
-                        style="float: right;">Remove terminated nodes</button>
+                        style="float: right;">{{operations.REMOVE_ALL_TERMINATED_NODES}}</button>
             </h2>
 
             <script type="text/ng-template" id="haManageErrorsModal.html">
@@ -80,7 +80,7 @@
                 </div>
                 <div class="modal-body">
                     The following errors occurred while attempting to edit the node's properties:
-                    <table class="table table-responsive table-bordered table-hover">
+                    <table ng-if="(errors | filter: {configName:'!!'}).length > 0" class="table table-responsive table-bordered table-hover">
                         <thead>
                             <tr>
                                 <th scope="col">Property name</th>
@@ -88,12 +88,26 @@
                             </tr>
                         </thead>
                         <tbody>
-                            <tr ng-repeat="error in errors track by error.configName">
+                            <tr ng-repeat="error in errors | filter: {configName: '!!'} track by error.configName">
                                 <td><code>{{error.configName}}</code></td>
                                 <td><em>{{error.message}}</em></td>
                             </tr>
                         </tbody>
                     </table>
+                    <table ng-if="(errors | filter: {operationName:'!!'}).length > 0" class="table table-responsive table-bordered table-hover">
+                        <thead>
+                        <tr>
+                            <th scope="col">Operation name</th>
+                            <th scope="col">Error message</th>
+                        </tr>
+                        </thead>
+                        <tbody>
+                        <tr ng-repeat="error in errors | filter: {operationName: '!!'} track by error.operationName">
+                            <td><code>{{error.operationName}}</code></td>
+                            <td><em>{{error.message}}</em></td>
+                        </tr>
+                        </tbody>
+                    </table>
                 </div>
                 <div class="modal-footer">
                     <button class="btn btn-lg btn-success" type="button" ng-click="okClicked()">OK</button>
@@ -123,7 +137,7 @@
                                     ng-show="row == $index">Manage</button>
                             <button class="btn btn-sm btn-default" style="float: right;"
                                     ng-if="(node.status === 'TERMINATED') && (states.nodes[states.ownId].status === 'MASTER')"
-                                    ng-click="removeNode(node.nodeId)" ng-show="row == $index">Remove</button>
+                                    ng-click="removeNode(node.nodeId)" ng-show="row == $index">{{operations.REMOVE_TERMINATED_NODE}}</button>
                             <span ng-if="node.nodeId === states.ownId" class="label label-info">current</span>
                             <span ng-if="node.status === 'MASTER'" class="label label-success">master</span><br>
                         </td>