diff options
author | Keith Wall <kwall@apache.org> | 2015-02-25 08:34:43 +0000 |
---|---|---|
committer | Keith Wall <kwall@apache.org> | 2015-02-25 08:34:43 +0000 |
commit | fb03abb7226ab42a6090a967c1748373c3d57e21 (patch) | |
tree | 0df4fac73f35d69e9b564c2baca7138c8a8f6a02 | |
parent | 8322532da30ec68bf4ebdf725adbdaef19901ff4 (diff) | |
download | qpid-python-fb03abb7226ab42a6090a967c1748373c3d57e21.tar.gz |
QPID-6408: [Java Broker] Expose the AMQP connection limits through the web management UI
Merged with command:
svn merge -c 1661741 https://svn.apache.org/repos/asf/qpid/trunk
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.32@1662181 13f79535-47bb-0310-9956-ffa450edef68
6 files changed, 95 insertions, 38 deletions
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html index b787e701ec..10b79987a5 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html @@ -159,6 +159,23 @@ </div> </div> + <div id="formAddPort:maxOpenConnections" > + <div class="clear"> + <div class="formLabel-labelCell"> + <label for="formAddPort.transports">Maximum number of connections:</label> + </div> + <div class="formLabel-controlCell"> + <input id="formAddPort.maxOpenConnections" type="text" + data-dojo-type="dijit.form.ValidationTextBox" + data-dojo-props=" + name: 'maxOpenConnections', + placeHolder: 'maximum number of connections', + promptMessage: 'Maximum number of concurrent connections permitted by this port. The <code>-1</code> signifies no limit is imposed.', + title: 'Enter a maximum number of connections'"/> + </div> + </div> + </div> + <div id="formAddPort:fieldsTransportSSL"> <div class="clear"> <div class="formLabel-labelCell"> diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js index 3938b74762..746eb4bbbc 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js @@ -737,6 +737,11 @@ define(["dojo/_base/xhr", return "^(\\d+)|" + singleContextVarRegexp + "$"; } + util.signedOrContextVarRegexp = function(constraints) + { + return "^(-?\\d+)|" + singleContextVarRegexp + "$"; + } + util.nameOrContextVarRegexp = function(constraints) { return "^(\\w+)|" + singleContextVarRegexp + "$"; diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js index 320de8a876..91407c0e83 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/Port.js @@ -138,12 +138,15 @@ define(["dojo/dom", "needClientAuthValue", "wantClientAuthValue", "trustStoresValue", + "connectionCountValue", + "maxOpenConnectionsValue", "authenticationProvider", "bindingAddress", "keyStore", "needClientAuth", "wantClientAuth", - "trustStores" + "trustStores", + "maxOpenConnections" ]); this.query = url; @@ -151,6 +154,7 @@ define(["dojo/dom", xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"}).then(function(data) { that.portData = data[0]; + util.flattenStatistics( that.portData ); that.updateHeader(); }); @@ -178,6 +182,9 @@ define(["dojo/dom", this.protocolsValue.innerHTML = printArray( "protocols", this.portData); this.transportsValue.innerHTML = printArray( "transports", this.portData); this.bindingAddressValue.innerHTML = this.portData[ "bindingAddress" ] ? entities.encode(String(this.portData[ "bindingAddress" ])) : "" ; + this.connectionCountValue.innerHTML = this.portData[ "connectionCount" ] ? entities.encode(String(this.portData[ "connectionCount" ])) : "0" ; + this.maxOpenConnectionsValue.innerHTML = (this.portData[ "maxOpenConnections" ] && this.portData[ "maxOpenConnections" ] >= 0) ? entities.encode(String(this.portData[ "maxOpenConnections" ])) : "(no limit)" ; + this.keyStoreValue.innerHTML = this.portData[ "keyStore" ] ? entities.encode(String(this.portData[ "keyStore" ])) : ""; this.needClientAuthValue.innerHTML = "<input type='checkbox' disabled='disabled' "+(this.portData[ "needClientAuth" ] ? "checked='checked'": "")+" />" ; this.wantClientAuthValue.innerHTML = "<input type='checkbox' disabled='disabled' "+(this.portData[ "wantClientAuth" ] ? "checked='checked'": "")+" />" ; @@ -191,6 +198,9 @@ define(["dojo/dom", this.needClientAuth.style.display = "needClientAuth" in typeMetaData.attributes ? "block" : "none"; this.wantClientAuth.style.display = "wantClientAuth" in typeMetaData.attributes ? "block" : "none"; this.trustStores.style.display = "trustStores" in typeMetaData.attributes ? "block" : "none"; + + this.maxOpenConnections.style.display = "maxOpenConnections" in typeMetaData.attributes ? "block" : "none"; + }; PortUpdater.prototype.update = function() @@ -201,6 +211,7 @@ define(["dojo/dom", xhr.get({url: this.query, sync: properties.useSyncGet, handleAs: "json"}).then(function(data) { thisObj.portData = data[0]; + util.flattenStatistics( thisObj.portData ); thisObj.updateHeader(); }); }; diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js index 43ccdfff70..befb5df9c1 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addPort.js @@ -79,6 +79,10 @@ define(["dojo/_base/xhr", registry.byId("formAddPort.bindingAddress").set("disabled", ! ("bindingAddress" in typeMetaData.attributes)); dom.byId("formAddPort:fieldsBindingAddress").style.display = "bindingAddress" in typeMetaData.attributes ? "block" : "none"; + //maxOpenConnections + registry.byId("formAddPort.maxOpenConnections").set("disabled", ! ("maxOpenConnections" in typeMetaData.attributes)); + dom.byId("formAddPort:maxOpenConnections").style.display = "maxOpenConnections" in typeMetaData.attributes ? "block" : "none"; + //transports var transportsMultiSelect = dom.byId("formAddPort.transports"); var transportsValidValues = typeMetaData.attributes.transports.validValues; @@ -314,6 +318,7 @@ define(["dojo/_base/xhr", var nameWidget = registry.byId("formAddPort.name"); var typeWidget = registry.byId("formAddPort.type"); var portWidget = registry.byId("formAddPort.port"); + var maxOpenConnectionsWidget = registry.byId("formAddPort.maxOpenConnections"); var editWarning = dojo.byId("portEditWarning"); var providerWidget = registry.byId("formAddPort.authenticationProvider"); @@ -418,6 +423,13 @@ define(["dojo/_base/xhr", bindAddressWidget.set("disabled", ! ("bindingAddress" in typeMetaData.attributes)); dom.byId("formAddPort:fieldsBindingAddress").style.display = "bindingAddress" in typeMetaData.attributes ? "block" : "none"; + //maxOpenConnections + var maxOpenConnectionsWidget = registry.byId("formAddPort.maxOpenConnections"); + maxOpenConnectionsWidget.set("regExpGen", util.signedOrContextVarRegexp); + maxOpenConnectionsWidget.set("value", port.maxOpenConnections ? port.maxOpenConnections : ""); + maxOpenConnectionsWidget.set("disabled", ! ("maxOpenConnections" in typeMetaData.attributes)); + dom.byId("formAddPort:maxOpenConnections").style.display = "maxOpenConnections" in typeMetaData.attributes ? "block" : "none"; + //ssl keystoreWidget.set("value", port.keyStore ? port.keyStore : ""); if (port.trustStores) @@ -447,6 +459,7 @@ define(["dojo/_base/xhr", truststoreWidget.initialValue = port.trustStores; transportWidget.initialValue = transportWidget.value; providerWidget.initialValue = providerWidget.value; + maxOpenConnectionsWidget.initialValue = maxOpenConnectionsWidget.value; registry.byId("addPort").show(); util.applyMetadataToWidgets(registry.byId("addPort").domNode, "Port", portType); @@ -465,8 +478,8 @@ define(["dojo/_base/xhr", nameWidget.set("disabled", false); nameWidget.set("regExpGen", util.nameOrContextVarRegexp); - portWidget.set("regExpGen", util.numericOrContextVarRegexp); + maxOpenConnectionsWidget.set("regExpGen", util.signedOrContextVarRegexp); editWarning.style.display = "none"; registry.byId("addPort").show(); diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html index 32071e262d..5e324bd219 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/showPort.html @@ -25,61 +25,72 @@ <div class="formLabel-labelCell">Name:</div> <div class="nameValue"></div> </div> - - <div class="clear type"> - <div class="formLabel-labelCell">Port Type:</div> - <div class="typeValue"></div> + <div class="clear"></div> + <div class="alignLeft"> + <div class="clear type"> + <div class="formLabel-labelCell">Port Type:</div> + <div class="formValue-valueCell typeValue"></div> + </div> </div> + <div class="alignRight"> + <div class="clear maxOpenConnections"> + <div class="formLabel-labelCell">Open connections (current/maximum):</div> + <div class="formValue-valueCell"> + <span class="connectionCountValue"></span><span>/</span><span class="maxOpenConnectionsValue"></span> + </div> + </div> + </div> - <div class="clear state"> + <div class="clear state"> <div class="formLabel-labelCell">State:</div> - <div class="stateValue"></div> - </div> + <div class="formValue-valueCell stateValue"></div> + </div> - <div class="clear port"> + <div class="clear port"> <div class="formLabel-labelCell">Port Number:</div> - <div class="portValue"></div> - </div> + <div class="formValue-valueCell portValue"></div> + </div> - <div class="clear protocols"> + <div class="clear protocols"> <div class="formLabel-labelCell">Protocols:</div> - <div class="protocolsValue multiLineValue"></div> - </div> + <div class="formValue-valueCell protocolsValue multiLineValue"></div> + </div> <div class="clear authenticationProvider"> - <div class="formLabel-labelCell">Authentication Provider:</div> - <div class="authenticationProviderValue"></div> + <div class="formLabel-labelCell">Authentication Provider:</div> + <div class="formValue-valueCell authenticationProviderValue"></div> </div> <div class="clear bindingAddress"> - <div class="formLabel-labelCell">Binding address:</div> - <div class="bindingAddressValue"></div> + <div class="formLabel-labelCell">Binding address:</div> + <div class="formValue-valueCell bindingAddressValue"></div> </div> <div class="clear transports"> <div class="formLabel-labelCell">Transports:</div> - <div class="transportsValue multiLineValue"></div> - </div> + <div class="formValue-valueCell transportsValue multiLineValue"></div> + </div> - <div class="clear keyStore"> - <div class="formLabel-labelCell">Key Store:</div> - <div class="keyStoreValue"></div> - </div> + <div class="clear keyStore"> + <div class="formLabel-labelCell">Key Store:</div> + <div class="formValue-valueCell keyStoreValue"></div> + </div> - <div class="clear needClientAuth"> - <div class="formLabel-labelCell">Need SSL Client Certificate:</div> - <div class="needClientAuthValue"></div> - </div> + <div class="clear needClientAuth"> + <div class="formLabel-labelCell">Need SSL Client Certificate:</div> + <div class="formValue-valueCell needClientAuthValue"></div> + </div> - <div class="clear wantClientAuth"> - <div class="formLabel-labelCell">Want SSL Client Certificate:</div> - <div class="wantClientAuthValue"></div> - </div> + <div class="clear wantClientAuth"> + <div class="formLabel-labelCell">Want SSL Client Certificate:</div> + <div class="formValue-valueCell wantClientAuthValue"></div> + </div> + + <div class="clear trustStores"> + <div class="formLabel-labelCell">Trust Stores:</div> + <div class="formValue-valueCell trustStoresValue multiLineValue"></div> + </div> - <div class="clear trustStores"> - <div class="formLabel-labelCell">Trust Stores:</div> - <div class="trustStoresValue multiLineValue"></div> - </div> <div class="clear"></div> </div> <br/> diff --git a/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html b/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html index a068868e7f..7132dd8105 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html +++ b/qpid/java/broker-plugins/management-http/src/main/java/resources/showQueue.html @@ -25,7 +25,7 @@ <div class="formLabel-labelCell">Name:</div> <div class="name formValue-valueCell"></div> </div> - <div class="clear"> + <div class="clear"></div> <div class="alignLeft"> <div class="clear"> <div class="formLabel-labelCell">Type:</div> |