From 400d9be252bcc666fe43b1be582f34202faf23f7 Mon Sep 17 00:00:00 2001 From: Alex Rudyy Date: Fri, 1 Aug 2014 18:08:31 +0000 Subject: QPID-5928: [Java Broker] Add UI into web management console for editing of virtual host nodes and virtual hosts The work is done by Andrew MacBean and Alex Rudyy. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1615187 13f79535-47bb-0310-9956-ffa450edef68 --- .../js/qpid/management/virtualhost/bdb/edit.js | 30 +++ .../js/qpid/management/virtualhost/bdb_ha/edit.js | 155 +++++++++++++++ .../js/qpid/management/virtualhostnode/bdb/edit.js | 30 +++ .../js/qpid/management/virtualhostnode/bdb/show.js | 2 + .../qpid/management/virtualhostnode/bdb_ha/edit.js | 184 ++++-------------- .../qpid/management/virtualhostnode/bdb_ha/show.js | 12 +- .../java/resources/virtualhost/bdb_ha/edit.html | 131 +++++++++++++ .../java/resources/virtualhost/bdb_ha/show.html | 10 +- .../java/resources/virtualhostnode/bdb/show.html | 2 +- .../virtualhostnode/bdb_ha/add/newgroup/add.html | 8 +- .../resources/virtualhostnode/bdb_ha/edit.html | 208 +++++++++------------ .../resources/virtualhostnode/bdb_ha/show.html | 4 +- 12 files changed, 486 insertions(+), 290 deletions(-) create mode 100644 qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhost/bdb/edit.js create mode 100644 qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhost/bdb_ha/edit.js create mode 100644 qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb/edit.js create mode 100644 qpid/java/bdbstore/src/main/java/resources/virtualhost/bdb_ha/edit.html (limited to 'qpid/java/bdbstore/src') diff --git a/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhost/bdb/edit.js b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhost/bdb/edit.js new file mode 100644 index 0000000000..5438eda926 --- /dev/null +++ b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhost/bdb/edit.js @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +define(["qpid/common/util", "dojo/domReady!"], + function (util) + { + var fieldNames = ["storeUnderfullSize", "storeOverfullSize", "storePath"]; + return { + show: function(data) + { + util.buildEditUI(data.containerNode, "virtualhost/sizemonitoring/edit.html", "editVirtualHost.", fieldNames, data.data); + } + }; + } +); diff --git a/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhost/bdb_ha/edit.js b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhost/bdb_ha/edit.js new file mode 100644 index 0000000000..bc62654c56 --- /dev/null +++ b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhost/bdb_ha/edit.js @@ -0,0 +1,155 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +define(["qpid/common/util", "dijit/registry", "dojo/_base/window", "dojo/domReady!"], + function (util, registry, win) + { + var fieldNames = ["storeUnderfullSize", "storeOverfullSize"]; + return { + show: function(data) + { + util.buildEditUI(data.containerNode, "virtualhost/bdb_ha/edit.html", "editVirtualHost.", fieldNames, data.data); + + var widget = registry.byId("editVirtualHost.localTransactionSynchronizationPolicy-" + data.data["localTransactionSynchronizationPolicy"]); + if (widget) + { + widget.set("checked", true); + } + widget = registry.byId("editVirtualHost.remoteTransactionSynchronizationPolicy-" + data.data["remoteTransactionSynchronizationPolicy"]); + if (widget) + { + widget.set("checked", true); + } + + var that = this; + this.permittedNodes = registry.byId("editVirtualHost.permittedNodes"); + this.permittedNodesList = registry.byId("editVirtualHost.permittedNodesList"); + this.permittedNodesList.on("change", function(value){that._changePermittedNodeList(value);}); + + // permitted node text field + this.permittedNode = registry.byId("editVirtualHost.permittedNode"); + this.permittedNode.on("change", function(value){that._changePermittedNode(value);}); + + // add and remove buttons & click handlers + this.permittedNodeAddButton = registry.byId("editVirtualHost.permittedNodeAdd"); + this.permittedNodeAddButton.set("disabled", true); + this.permittedNodeRemoveButton = registry.byId("editVirtualHost.permittedNodeRemove"); + this.permittedNodeRemoveButton.set("disabled", true); + this.permittedNodeAddButton.on("click", function(e){that._clickAddPermittedNodeButton(e);}); + this.permittedNodeRemoveButton.on("click", function(e){that._clickRemovePermittedNodeButton(e);}); + + var permittedNodes = data.data.permittedNodes; + for(var i=0; i 0; + this.permittedNodeRemoveButton.set("disabled", !hasSelection); + }, + _changePermittedNode: function(value) + { + var fieldIsEmpty = (this.permittedNode.get("value") == ""); + this.permittedNodeAddButton.set("disabled", fieldIsEmpty); + return true; + }, + _updatePermittedNodes: function() + { + var values = []; + var children = this.permittedNodesList.containerNode.children; + for (var i = 0; i < children.length; i++) + { + var child = children.item(i); + values.push(children.item(i).value); + } + this.permittedNodes.set("value", values); + } + }; + } +); diff --git a/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb/edit.js b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb/edit.js new file mode 100644 index 0000000000..35ecbec315 --- /dev/null +++ b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb/edit.js @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +define(["qpid/common/util", "dijit/registry", "dojo/domReady!"], + function (util, registry) + { + return { + show: function(data) + { + util.buildEditUI(data.containerNode, "virtualhostnode/filebased/edit.html", "editVirtualHostNode.", ["storePath"], data.data); + registry.byId("editVirtualHostNode.storePath").set("disabled", !(data.data.state == "STOPPED" || data.data.state == "ERRORED")); + } + }; + } +); diff --git a/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb/show.js b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb/show.js index b7f29f9469..bef6a4214d 100644 --- a/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb/show.js +++ b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb/show.js @@ -25,11 +25,13 @@ define(["qpid/common/util", "dojo/domReady!"], function BdbNode(data) { + this.parent = data.parent; util.buildUI(data.containerNode, data.parent, "virtualhostnode/bdb/show.html", fieldNames, this); } BdbNode.prototype.update=function(data) { + this.parent.editNodeButton.set("disabled", !(data.state == "STOPPED" || data.state == "ERRORED")); util.updateUI(data, fieldNames, this); }; diff --git a/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/edit.js b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/edit.js index 02996046e3..f2f256cd89 100644 --- a/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/edit.js +++ b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/edit.js @@ -18,163 +18,47 @@ * under the License. * */ -define(["dojo/_base/xhr", - "dojo/_base/array", - "dojo/_base/event", - "dojo/_base/lang", - "dojo/_base/window", - "dojo/dom", - "dojo/dom-construct", +define(["qpid/common/util", "dijit/registry", - "dojo/parser", - 'dojo/json', - "dojo/query", "dojo/store/Memory", "dojo/data/ObjectStore", - "dojo/text!virtualhostnode/bdb_ha/edit.html", - "dijit/Dialog", - "dijit/form/CheckBox", - "dijit/form/FilteringSelect", - "dijit/form/ValidationTextBox", - "dijit/form/Button", - "dijit/form/Form", - "dojox/validate/us", - "dojox/validate/web", "dojo/domReady!"], - function (xhr, array, event, lang, win, dom, domConstruct, registry, parser, json, query, Memory, ObjectStore, template) - { - var fields = [ "storePath", "name", "groupName", "address", - "designatedPrimary", "priority", "quorumOverride"]; + function (util, registry, Memory, ObjectStore) + { + var fields = [ "storePath", "name", "groupName", "address", + "designatedPrimary", "priority", "quorumOverride"]; - var bdbHaNodeEditor = - { - init: function() - { - var that=this; - this.containerNode = domConstruct.create("div", {innerHTML: template}); - parser.parse(this.containerNode); - this.dialog = registry.byId("editBDBHANodeDialog") - this.saveButton = registry.byId("editBDBHANode.saveButton"); - this.cancelButton = registry.byId("editBDBHANode.cancelButton"); - this.cancelButton.on("click", function(e){that._cancel(e);}); - this.saveButton.on("click", function(e){that._save(e);}); - for(var i = 0; i < fields.length; i++) - { - var fieldName = fields[i]; - this[fieldName] = registry.byId("editBDBHANode." + fieldName); - } - this.form = registry.byId("editBDBHANodeForm"); - }, - show: function(nodeName) - { - var that=this; - this.nodeName = nodeName; - this.query = "api/latest/virtualhostnode/" + encodeURIComponent(nodeName); - xhr.get( - { - url: this.query, - sync: true, - handleAs: "json", - load: function(data) + return { + show: function(data) + { + var node = data.data; + util.buildEditUI(data.containerNode, "virtualhostnode/bdb_ha/edit.html", "editVirtualHostNode.", fields, node); + if ( !(data.data.state == "ERRORED" || data.data.state == "STOPPED")) { - that._show(data[0]); + registry.byId("editVirtualHostNode.storePath").set("disabled", true); } - } - ); - }, - destroy: function() - { - if (this.dialog) - { - this.dialog.destroyRecursive(); - this.dialog = null; - } - if (this.containerNode) - { - domConstruct.destroy(this.containerNode); - this.containerNode = null; - } - }, - _cancel: function(e) - { - this.dialog.hide(); - }, - _save: function(e) - { - event.stop(e); - if(this.form.validate()) - { - var data = {}; - for(var i = 0; i < fields.length; i++) - { - var fieldName = fields[i]; - var widget = this[fieldName]; - if (!widget.get("disabled")) + var overrideData = [{id: '0', name: 'Majority', selected: '1'}]; + if (node.remotereplicationnodes && node.remotereplicationnodes.length>1) { - data[fieldName] = widget.hasOwnProperty("checked")? widget.get("checked"):widget.get("value"); + registry.byId("editVirtualHostNode.designatedPrimary").set("disabled", true); + registry.byId("editVirtualHostNode.priority").set("disabled", false); + registry.byId("editVirtualHostNode.quorumOverride").set("disabled", false); + var overrideLimit = Math.floor((node.remotereplicationnodes.length + 1)/2); + for(var i = 1; i <= overrideLimit; i++) + { + overrideData.push({id: i, name: i + ""}); + } } - } - var success = false,failureReason=null; - xhr.put({ - url: this.query, - sync: true, - handleAs: "json", - headers: { "Content-Type": "application/json"}, - putData: json.stringify(data), - load: function(x) {success = true; }, - error: function(error) {success = false; failureReason = error;} - }); - - if(success === true) - { - this.dialog.hide(); - } - else - { - alert("Error:" + failureReason); - } - } - else - { - alert('Form contains invalid data. Please correct first'); - } - }, - _show:function(node) - { - for(var i = 0; i < fields.length; i++) - { - var fieldName = fields[i]; - this[fieldName].set("value", node[fieldName]); - } - - var overrideData = [{id: '0', name: 'Majority', selected: '1'}]; - - if (node.remotereplicationnodes && node.remotereplicationnodes.length>1) - { - this["designatedPrimary"].set("disabled", true); - this["priority"].set("disabled", false); - this["quorumOverride"].set("disabled", false); - var overrideLimit = Math.floor((node.remotereplicationnodes.length + 1)/2); - for(var i = 1; i <= overrideLimit; i++) - { - overrideData.push({id: i, name: i + ""}); - } - } - else - { - this["designatedPrimary"].set("disabled", false); - this["priority"].set("disabled", true); - this["quorumOverride"].set("disabled", true); - } - var store = new Memory({data :overrideData, idProperty: "id" }); - this["quorumOverride"].set("store", new ObjectStore({objectStore: store})); - this.dialog.show(); - } - }; - - bdbHaNodeEditor.init(); - - return bdbHaNodeEditor; - } -); \ No newline at end of file + else + { + registry.byId("editVirtualHostNode.designatedPrimary").set("disabled", false); + registry.byId("editVirtualHostNode.priority").set("disabled", true); + registry.byId("editVirtualHostNode.quorumOverride").set("disabled", true); + } + var store = new Memory({data :overrideData, idProperty: "id" }); + registry.byId("editVirtualHostNode.quorumOverride").set("store", new ObjectStore({objectStore: store})); + } + }; + } +); diff --git a/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/show.js b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/show.js index 43cb2a1992..f927b81c9d 100644 --- a/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/show.js +++ b/qpid/java/bdbstore/src/main/java/resources/js/qpid/management/virtualhostnode/bdb_ha/show.js @@ -27,10 +27,9 @@ define(["dojo/_base/xhr", "dojox/grid/EnhancedGrid", "qpid/common/UpdatableStore", "qpid/management/UserPreferences", - "qpid/management/virtualhostnode/bdb_ha/edit", "qpid/common/util", "dojo/domReady!"], - function (xhr, connect, entities, query, json, registry, EnhancedGrid, UpdatableStore, UserPreferences, edit, util) + function (xhr, connect, entities, query, json, registry, EnhancedGrid, UpdatableStore, UserPreferences, util) { var priorityNames = {'_0': 'Never', '_1': 'Default', '_2': 'Normal', '_3': 'High'}; var nodeFields = ["storePath", "groupName", "role", "address", "designatedPrimary", "priority", "quorumOverride"]; @@ -154,18 +153,11 @@ define(["dojo/_base/xhr", } } ); - this.parent.editNodeButton.set("disabled", false); - this.parent.editNodeButton.domNode.style.display = "inline"; - this.parent.editNodeButton.on("click", - function(e) - { - edit.show(that.data.name); - } - ); } BDBHA.prototype.update=function(data) { + this.parent.editNodeButton.set("disabled", false); this.data = data; for(var i = 0; i < nodeFields.length; i++) { diff --git a/qpid/java/bdbstore/src/main/java/resources/virtualhost/bdb_ha/edit.html b/qpid/java/bdbstore/src/main/java/resources/virtualhost/bdb_ha/edit.html new file mode 100644 index 0000000000..2df0ebb0fd --- /dev/null +++ b/qpid/java/bdbstore/src/main/java/resources/virtualhost/bdb_ha/edit.html @@ -0,0 +1,131 @@ + +
+ +
+
Store overfull size (bytes):
+
+ +
+
+
+
Store underfull size (bytes):
+
+ +
+
+ +
+
+ Permitted group nodes +
+
Permitted addresses*:
+
+ + +
+ +
+ +
+
+
Address:
+
+ +
+ +
+
+
+ +
+ +
+
+ High availability durability +
+
Master transaction sync policy
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
+
Replica transaction sync policy
+
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
+ +
diff --git a/qpid/java/bdbstore/src/main/java/resources/virtualhost/bdb_ha/show.html b/qpid/java/bdbstore/src/main/java/resources/virtualhost/bdb_ha/show.html index a5a4147c9c..35ab0a0bcf 100644 --- a/qpid/java/bdbstore/src/main/java/resources/virtualhost/bdb_ha/show.html +++ b/qpid/java/bdbstore/src/main/java/resources/virtualhost/bdb_ha/show.html @@ -19,15 +19,15 @@
-
Store Overfull Limit:
+
Store overfull size:
bytes
-
Store Underfull Limit:
+
Store underfull size:
bytes
-
Permitted Nodes:
+
Permitted nodes:
@@ -35,7 +35,7 @@
-
Local Transaction Sync Policy:
+
Master transaction sync policy:
SYNC (the transaction will be written and synchronized to the disk; highest durability) WRITE_NO_SYNC (the transaction will be written only; the synchronization will be performed later) @@ -43,7 +43,7 @@
-
Remote Transaction Sync Policy:
+
Replica transaction sync policy:
SYNC (the transaction will be written and synchronized to the disk; highest durability) WRITE_NO_SYNC (the transaction will be written only; the synchronization will be performed later) diff --git a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb/show.html b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb/show.html index 29efa712e7..a93a11086c 100644 --- a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb/show.html +++ b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb/show.html @@ -16,7 +16,7 @@ -->
-
Store Path:
+
Configuration store path:
diff --git a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html index 02542a28ce..642482bd4f 100644 --- a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html +++ b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/add/newgroup/add.html @@ -73,9 +73,7 @@ title: 'Enter permitted nodes'">
-
- -
+
@@ -91,9 +89,7 @@ intermediateChanges: true, pattern: '([0-9a-zA-Z.-_]|::)+:[0-9]{1,5}'" />
-
- -
+
diff --git a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/edit.html b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/edit.html index 94b9451057..026de1aa14 100644 --- a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/edit.html +++ b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/edit.html @@ -14,120 +14,96 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Path to store location*: - -
Node Name*: - -
Replication Group*: - -
Address*: - -
Allow this node to operate solo: - +
Replication Group*:
+
+ +
+ +
+
Address*:
+
+ +
+
+
+
Configuration store path*:
+
+ +
+
+
+
Allow this node to operate solo:
+
+ +
+
+
+
Election priority of this node:
+
+
+ -
Election priority of this node: -
- -
Required minimum number of nodes: -
- -
-
- - -
-
-
-
+ title: 'Select node priority for election as a Master', + store: nodePriorityStore, + searchAttr: 'name'" /> + + +
+
Required minimum number of nodes:
+
+
+ +
+
+ +
+ \ No newline at end of file diff --git a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/show.html b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/show.html index cfd5804c01..7583eee9d4 100644 --- a/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/show.html +++ b/qpid/java/bdbstore/src/main/java/resources/virtualhostnode/bdb_ha/show.html @@ -20,11 +20,11 @@ -->
-
Group Name:
+
Group name:
-
Store Path:
+
Configuration store path:
-- cgit v1.2.1