You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2019/10/08 19:20:57 UTC
[qpid-dispatch] branch master updated: DISPATCH-1442 - Added
metadata field to the router entity. This closes #581
This is an automated email from the ASF dual-hosted git repository.
tross pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/qpid-dispatch.git
The following commit(s) were added to refs/heads/master by this push:
new eae4575 DISPATCH-1442 - Added metadata field to the router entity. This closes #581
eae4575 is described below
commit eae457593a3f06db0cb0acb8fca8bd3f68cd504e
Author: Ted Ross <tr...@redhat.com>
AuthorDate: Fri Oct 4 16:18:11 2019 -0400
DISPATCH-1442 - Added metadata field to the router entity.
This closes #581
---
python/qpid_dispatch/management/qdrouter.json | 6 ++++
src/dispatch.c | 1 +
src/dispatch_private.h | 3 +-
src/router_core/agent_router.c | 49 ++++++++++++++++-----------
src/router_core/agent_router.h | 2 +-
tests/system_tests_management.py | 9 ++++-
6 files changed, 47 insertions(+), 23 deletions(-)
diff --git a/python/qpid_dispatch/management/qdrouter.json b/python/qpid_dispatch/management/qdrouter.json
index 707ae46..0b8262c 100644
--- a/python/qpid_dispatch/management/qdrouter.json
+++ b/python/qpid_dispatch/management/qdrouter.json
@@ -494,6 +494,12 @@
"required": false,
"default": "balanced"
},
+ "metadata": {
+ "type": "string",
+ "description": "Optional metadata text to describe or label this router. This text does not affect the function of the router, but it can be used by external tools (such as the console or orchestration software) to control how the router is displayed.",
+ "create": true,
+ "required": false
+ },
"addrCount": {
"type": "integer",
"description":"Number of addresses known to the router.",
diff --git a/src/dispatch.c b/src/dispatch.c
index eb2d195..505db4c 100644
--- a/src/dispatch.c
+++ b/src/dispatch.c
@@ -204,6 +204,7 @@ qd_error_t qd_dispatch_configure_router(qd_dispatch_t *qd, qd_entity_t *entity)
qd->allow_resumable_link_route = qd_entity_opt_bool(entity, "allowResumableLinkRoute", true); QD_ERROR_RET();
qd->timestamps_in_utc = qd_entity_opt_bool(entity, "timestampsInUTC", false); QD_ERROR_RET();
qd->timestamp_format = qd_entity_opt_string(entity, "timestampFormat", 0); QD_ERROR_RET();
+ qd->metadata = qd_entity_opt_string(entity, "metadata", 0); QD_ERROR_RET();
if (! qd->sasl_config_path) {
qd->sasl_config_path = qd_entity_opt_string(entity, "saslConfigDir", 0); QD_ERROR_RET();
diff --git a/src/dispatch_private.h b/src/dispatch_private.h
index f658fb2..741d34d 100644
--- a/src/dispatch_private.h
+++ b/src/dispatch_private.h
@@ -59,7 +59,8 @@ struct qd_dispatch_t {
bool allow_resumable_link_route;
bool test_hooks;
bool timestamps_in_utc;
- char* timestamp_format;
+ char *timestamp_format;
+ char *metadata;
};
/**
diff --git a/src/router_core/agent_router.c b/src/router_core/agent_router.c
index 2c4f89a..74f5b8d 100644
--- a/src/router_core/agent_router.c
+++ b/src/router_core/agent_router.c
@@ -31,26 +31,27 @@
#define QDR_ROUTER_MODE 4
#define QDR_ROUTER_AREA 5
#define QDR_ROUTER_VERSION 6
-#define QDR_ROUTER_ADDR_COUNT 7
-#define QDR_ROUTER_LINK_COUNT 8
-#define QDR_ROUTER_NODE_COUNT 9
-#define QDR_ROUTER_LINK_ROUTE_COUNT 10
-#define QDR_ROUTER_AUTO_LINK_COUNT 11
-#define QDR_ROUTER_CONNECTION_COUNT 12
-#define QDR_ROUTER_PRESETTLED_DELIVERIES 13
-#define QDR_ROUTER_DROPPED_PRESETTLED_DELIVERIES 14
-#define QDR_ROUTER_ACCEPTED_DELIVERIES 15
-#define QDR_ROUTER_REJECTED_DELIVERIES 16
-#define QDR_ROUTER_RELEASED_DELIVERIES 17
-#define QDR_ROUTER_MODIFIED_DELIVERIES 18
-#define QDR_ROUTER_DELAYED_1SEC 19
-#define QDR_ROUTER_DELAYED_10SEC 20
-#define QDR_ROUTER_DELIVERIES_INGRESS 21
-#define QDR_ROUTER_DELIVERIES_EGRESS 22
-#define QDR_ROUTER_DELIVERIES_TRANSIT 23
-#define QDR_ROUTER_DELIVERIES_INGRESS_ROUTE_CONTAINER 24
-#define QDR_ROUTER_DELIVERIES_EGRESS_ROUTE_CONTAINER 25
-#define QDR_ROUTER_DELIVERIES_REDIRECTED 26
+#define QDR_ROUTER_METADATA 7
+#define QDR_ROUTER_ADDR_COUNT 8
+#define QDR_ROUTER_LINK_COUNT 9
+#define QDR_ROUTER_NODE_COUNT 10
+#define QDR_ROUTER_LINK_ROUTE_COUNT 11
+#define QDR_ROUTER_AUTO_LINK_COUNT 12
+#define QDR_ROUTER_CONNECTION_COUNT 13
+#define QDR_ROUTER_PRESETTLED_DELIVERIES 14
+#define QDR_ROUTER_DROPPED_PRESETTLED_DELIVERIES 15
+#define QDR_ROUTER_ACCEPTED_DELIVERIES 16
+#define QDR_ROUTER_REJECTED_DELIVERIES 17
+#define QDR_ROUTER_RELEASED_DELIVERIES 18
+#define QDR_ROUTER_MODIFIED_DELIVERIES 19
+#define QDR_ROUTER_DELAYED_1SEC 20
+#define QDR_ROUTER_DELAYED_10SEC 21
+#define QDR_ROUTER_DELIVERIES_INGRESS 22
+#define QDR_ROUTER_DELIVERIES_EGRESS 23
+#define QDR_ROUTER_DELIVERIES_TRANSIT 24
+#define QDR_ROUTER_DELIVERIES_INGRESS_ROUTE_CONTAINER 25
+#define QDR_ROUTER_DELIVERIES_EGRESS_ROUTE_CONTAINER 26
+#define QDR_ROUTER_DELIVERIES_REDIRECTED 27
const char *qdr_router_columns[] =
@@ -61,6 +62,7 @@ const char *qdr_router_columns[] =
"mode",
"area",
"version",
+ "metadata",
"addrCount",
"linkCount",
"nodeCount",
@@ -124,6 +126,13 @@ static void qdr_agent_write_column_CT(qd_composed_field_t *body, int col, qdr_co
qd_compose_insert_string(body, QPID_DISPATCH_VERSION);
break;
+ case QDR_ROUTER_METADATA:
+ if (core->qd->metadata)
+ qd_compose_insert_string(body, core->qd->metadata);
+ else
+ qd_compose_insert_null(body);
+ break;
+
case QDR_ROUTER_ADDR_COUNT:
qd_compose_insert_ulong(body, DEQ_SIZE(core->addrs));
break;
diff --git a/src/router_core/agent_router.h b/src/router_core/agent_router.h
index dc9c7ce..860bf7a 100644
--- a/src/router_core/agent_router.h
+++ b/src/router_core/agent_router.h
@@ -21,7 +21,7 @@
#include "router_core_private.h"
-#define QDR_ROUTER_COLUMN_COUNT 27
+#define QDR_ROUTER_COLUMN_COUNT 28
const char *qdr_router_columns[QDR_ROUTER_COLUMN_COUNT + 1];
diff --git a/tests/system_tests_management.py b/tests/system_tests_management.py
index f0a12b5..e554462 100644
--- a/tests/system_tests_management.py
+++ b/tests/system_tests_management.py
@@ -62,7 +62,7 @@ class ManagementTest(system_test.TestCase):
super(ManagementTest, cls).setUpClass()
# Stand-alone router
conf0=Qdrouterd.Config([
- ('router', { 'mode': 'standalone', 'id': 'solo'}),
+ ('router', { 'mode': 'standalone', 'id': 'solo', 'metadata': 'selftest;solo'}),
('listener', {'name': 'l0', 'port':cls.get_port(), 'role':'normal'}),
# Extra listeners to exercise managment query
('listener', {'name': 'l1', 'port':cls.get_port(), 'role':'normal'}),
@@ -128,6 +128,13 @@ class ManagementTest(system_test.TestCase):
self.assertRaises(NotImplementedStatus, self.node.call,
self.node.request(operation="nosuch", type="org.amqp.management"))
+ def test_metadata(self):
+ """Query with type only"""
+ response = self.node.query(type=ROUTER)
+ for attr in ['type', 'metadata']:
+ self.assertTrue(attr in response.attribute_names)
+ self.assertEqual(response.get_entities()[0]['metadata'], 'selftest;solo')
+
def test_query_type(self):
"""Query with type only"""
response = self.node.query(type=LISTENER)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org