diff options
| author | Arnaud Cogoluègnes <acogoluegnes@gmail.com> | 2021-09-09 17:41:38 +0200 |
|---|---|---|
| committer | Arnaud Cogoluègnes <acogoluegnes@gmail.com> | 2021-09-09 17:41:38 +0200 |
| commit | 0038573f890ee266833ada8194629fbc9afc2c34 (patch) | |
| tree | cb195fcff6d3eff735db82ae4bf2d072b47be3cf | |
| parent | 8cc9806f07095ea8d0edadd18db5959407eb8993 (diff) | |
| download | rabbitmq-server-git-0038573f890ee266833ada8194629fbc9afc2c34.tar.gz | |
Display stream publishers in queue management page
If the queue is a stream. WIP, currently all the stream publishers
are listed, a new publishers per stream endpoint is required.
References #3389
| -rw-r--r-- | deps/rabbitmq_management/priv/www/js/dispatcher.js | 20 | ||||
| -rw-r--r-- | deps/rabbitmq_management/priv/www/js/global.js | 3 | ||||
| -rw-r--r-- | deps/rabbitmq_management/priv/www/js/main.js | 20 | ||||
| -rw-r--r-- | deps/rabbitmq_management/priv/www/js/tmpl/queue.ejs | 3 | ||||
| -rw-r--r-- | deps/rabbitmq_stream_management/priv/www/js/stream.js | 16 |
5 files changed, 55 insertions, 7 deletions
diff --git a/deps/rabbitmq_management/priv/www/js/dispatcher.js b/deps/rabbitmq_management/priv/www/js/dispatcher.js index 5f1b54dbac..718808368b 100644 --- a/deps/rabbitmq_management/priv/www/js/dispatcher.js +++ b/deps/rabbitmq_management/priv/www/js/dispatcher.js @@ -98,10 +98,22 @@ dispatcher_add(function(sammy) { }); sammy.get('#/queues/:vhost/:name', function() { - var path = '/queues/' + esc(this.params['vhost']) + '/' + esc(this.params['name']); - render({'queue': {path: path, - options: {ranges:['lengths-q', 'msg-rates-q', 'data-rates-q']}}, - 'bindings': path + '/bindings'}, 'queue', '#/queues'); + var vhost = this.params['vhost']; + var queue = this.params['name']; + var path = '/queues/' + esc(vhost) + '/' + esc(queue); + var requests = {'queue': {path: path, + options: {ranges:['lengths-q', 'msg-rates-q', 'data-rates-q']}}, + 'bindings': path + '/bindings'}; + // we add extra requests that can be added by code plugged on the extension point + for (var i = 0; i < QUEUE_EXTRA_CONTENT_REQUESTS.length; i++) { + var extra = QUEUE_EXTRA_CONTENT_REQUESTS[i](vhost, queue); + for (key in extra) { + if(extra.hasOwnProperty(key)){ + requests[key] = "/stream/publishers"; + } + } + } + render(requests, 'queue', '#/queues'); }); sammy.put('#/queues', function() { if (sync_put(this, '/queues/:vhost/:name')) diff --git a/deps/rabbitmq_management/priv/www/js/global.js b/deps/rabbitmq_management/priv/www/js/global.js index b930713acb..b08cec3f2c 100644 --- a/deps/rabbitmq_management/priv/www/js/global.js +++ b/deps/rabbitmq_management/priv/www/js/global.js @@ -168,6 +168,9 @@ var COLUMNS; var RENDER_CALLBACKS = {}; +const QUEUE_EXTRA_CONTENT = []; +const QUEUE_EXTRA_CONTENT_REQUESTS = []; + // All help ? popups var HELP = { 'delivery-limit': diff --git a/deps/rabbitmq_management/priv/www/js/main.js b/deps/rabbitmq_management/priv/www/js/main.js index 577f6fd71c..ffbf6e9a82 100644 --- a/deps/rabbitmq_management/priv/www/js/main.js +++ b/deps/rabbitmq_management/priv/www/js/main.js @@ -480,7 +480,9 @@ function with_update(fun) { if(outstanding_reqs.length > 0){ return false; } - with_reqs(apply_state(current_reqs), [], function(json) { + var model = []; + model['extra_content'] = []; // magic key for extension point + with_reqs(apply_state(current_reqs), model, function(json) { var html = format(current_template, json); fun(html); update_status('ok'); @@ -1116,7 +1118,13 @@ function with_reqs(reqs, acc, fun) { if (keys(reqs).length > 0) { var key = keys(reqs)[0]; with_req('GET', reqs[key], null, function(resp) { - acc[key] = JSON.parse(resp.responseText); + if (key.startsWith("extra_")) { + var extraContent = acc["extra_content"]; + extraContent[key] = JSON.parse(resp.responseText); + acc["extra_content"] = extraContent; + } else { + acc[key] = JSON.parse(resp.responseText); + } var remainder = {}; for (var k in reqs) { if (k != key) remainder[k] = reqs[k]; @@ -1152,6 +1160,14 @@ function format(template, json) { } } +function maybe_format_extra_queue_content(queue, extraContent) { + var content = ''; + for (var i = 0; i < QUEUE_EXTRA_CONTENT.length; i++) { + content += QUEUE_EXTRA_CONTENT[i](queue, extraContent); + } + return content; +} + function update_status(status) { var text; if (status == 'ok') diff --git a/deps/rabbitmq_management/priv/www/js/tmpl/queue.ejs b/deps/rabbitmq_management/priv/www/js/tmpl/queue.ejs index b7fba2f0c7..cf5afe508e 100644 --- a/deps/rabbitmq_management/priv/www/js/tmpl/queue.ejs +++ b/deps/rabbitmq_management/priv/www/js/tmpl/queue.ejs @@ -267,6 +267,9 @@ <% } %> +<% if(!disable_stats) { %> +<%= maybe_format_extra_queue_content(queue, extra_content) %> +<% } %> <% if(!disable_stats) { %> <div class="section-hidden"> diff --git a/deps/rabbitmq_stream_management/priv/www/js/stream.js b/deps/rabbitmq_stream_management/priv/www/js/stream.js index 46878b7c6b..0179f019f9 100644 --- a/deps/rabbitmq_stream_management/priv/www/js/stream.js +++ b/deps/rabbitmq_stream_management/priv/www/js/stream.js @@ -61,4 +61,18 @@ CONSUMER_OWNER_FORMATTERS.push({ } }); -CONSUMER_OWNER_FORMATTERS.sort(CONSUMER_OWNER_FORMATTERS_COMPARATOR);
\ No newline at end of file +CONSUMER_OWNER_FORMATTERS.sort(CONSUMER_OWNER_FORMATTERS_COMPARATOR); + +QUEUE_EXTRA_CONTENT_REQUESTS.push(function(vhost, queue) { + return {'extra_stream_publishers' : '/stream/publishers'}; +}); + +QUEUE_EXTRA_CONTENT.push(function(queue, extraContent) { + if (is_stream(queue)) { + return '<div class="section"><h2>Stream publishers</h2><div class="hider updatable">' + + format('streamPublishersList', {'publishers': extraContent['extra_stream_publishers']}) + + '</div></div>'; + } else { + return ''; + } +});
\ No newline at end of file |
