Repository: qpid-dispatch
Updated Branches:
  refs/heads/tross-DISPATCH-179-1 7e5d714a8 -> 75390ae35


DISPATCH-179 - Added semantics to the address entity so it can be displayed by 
qdstat.
Added more descriptive text to the management schema.


Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/a26308de
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/a26308de
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/a26308de

Branch: refs/heads/tross-DISPATCH-179-1
Commit: a26308dec2f71d9cc15d28ecfb0f1cae7af57994
Parents: 7e5d714
Author: Ted Ross <[email protected]>
Authored: Fri Feb 12 11:14:12 2016 -0500
Committer: Ted Ross <[email protected]>
Committed: Fri Feb 12 11:14:12 2016 -0500

----------------------------------------------------------------------
 python/qpid_dispatch/management/qdrouter.json |  57 +++++++--
 src/router_config.c                           |   2 -
 src/router_core/agent_address.c               | 133 +++++++++++----------
 src/router_core/agent_address.h               |   2 +-
 src/router_core/agent_provisioned.c           |   4 -
 tools/qdstat                                  |  12 ++
 6 files changed, 134 insertions(+), 76 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a26308de/python/qpid_dispatch/management/qdrouter.json
----------------------------------------------------------------------
diff --git a/python/qpid_dispatch/management/qdrouter.json 
b/python/qpid_dispatch/management/qdrouter.json
index 8689b2b..d95fff4 100644
--- a/python/qpid_dispatch/management/qdrouter.json
+++ b/python/qpid_dispatch/management/qdrouter.json
@@ -831,6 +831,7 @@
         "router.provisioned": {
             "description": "Provisioned component within the router: Address 
configuration, waypoint, or link-route destination",
             "extends": "configurationEntity",
+            "operations": ["CREATE", "DELETE"],
             "attributes": {
                 "objectType": {
                     "type": ["address", "linkDestination", "waypoint"],
@@ -944,19 +945,57 @@
             "description": "AMQP address managed by the router.",
             "extends": "operationalEntity",
             "attributes": {
-                "inProcess": {"type": "integer"},
-                "subscriberCount": {"type": "integer", "graph": true},
-                "remoteCount": {"type": "integer", "graph": true},
-                "deliveriesIngress": {"type": "integer", "graph": true},
-                "deliveriesEgress": {"type": "integer", "graph": true},
-                "deliveriesTransit": {"type": "integer", "graph": true},
-                "deliveriesToContainer": {"type": "integer", "graph": true},
-                "deliveriesFromContainer": {"type": "integer", "graph": true},
+                "semantics": {
+                    "type": ["flood", "multi", "anyClosest", "anyBalanced", 
"linkBalanced"],
+                    "description": "Forwarding semantics for the address: 
flood - messages delivered to all subscribers along all available paths (this 
will cause duplicate deliveries if there are redundant paths); multi - one copy 
of each message delivered to all subscribers; anyClosest - messages delivered 
to only the closest subscriber; anyBalanced - messages delivered to one 
subscriber with load balanced across subscribers; linkBalanced - for 
link-routing, link attaches balanced across destinations."
+                },
+                "inProcess": {
+                    "type": "integer",
+                    "description": "The number of in-process subscribers for 
this address"
+                },
+                "subscriberCount": {
+                    "type": "integer",
+                    "description": "The number of local subscribers for this 
address (i.e. attached to this router)",
+                    "graph": true
+                },
+                "remoteCount": {
+                    "type": "integer",
+                    "description": "The number of remote routers that have at 
least one subscriber to this address",
+                    "graph": true
+                },
+                "deliveriesIngress": {
+                    "type": "integer",
+                    "description": "The number of deliveries to this address 
that entered the router network on this router",
+                    "graph": true
+                },
+                "deliveriesEgress": {
+                    "type": "integer",
+                    "description": "The number of deliveries to this address 
that exited the router network on this router",
+                    "graph": true
+                },
+                "deliveriesTransit": {
+                    "type": "integer",
+                    "description": "The number of deliveries to this address 
that transited this router to another router",
+                    "graph": true
+                },
+                "deliveriesToContainer": {
+                    "type": "integer",
+                    "description": "The number of deliveries to this address 
that were given to an in-process subscriber",
+                    "graph": true
+                },
+                "deliveriesFromContainer": {
+                    "type": "integer",
+                    "description": "The number of deliveries to this address 
that were originated from an in-process entity",
+                    "graph": true
+                },
                 "key": {
                     "description": "Internal unique (to this router) key to 
identify the address",
                     "type": "string"
                 },
-                "hostRouters": {"type": "list", "description": "List of remote 
routers on which there is a destination for this address."}
+                "hostRouters": {
+                    "type": "list",
+                    "description": "List of remote routers on which there is a 
destination for this address."
+                }
             }
         },
 

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a26308de/src/router_config.c
----------------------------------------------------------------------
diff --git a/src/router_config.c b/src/router_config.c
index ba9094d..94da8fc 100644
--- a/src/router_config.c
+++ b/src/router_config.c
@@ -72,8 +72,6 @@ qd_error_t qd_router_configure_address(qd_router_t *router, 
qd_entity_t *entity)
     qd_compose_insert_string(body, "address");
     qd_compose_insert_string(body, prefix);
 
-    printf("Configure: %s\n", prefix);
-
     qd_compose_insert_string(body, "semantics");
     qd_compose_insert_string(body, sem);
     qd_compose_end_map(body);

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a26308de/src/router_core/agent_address.c
----------------------------------------------------------------------
diff --git a/src/router_core/agent_address.c b/src/router_core/agent_address.c
index e963bce..0256593 100644
--- a/src/router_core/agent_address.c
+++ b/src/router_core/agent_address.c
@@ -24,21 +24,23 @@
 #define QDR_ADDRESS_IDENTITY                  1
 #define QDR_ADDRESS_TYPE                      2
 #define QDR_ADDRESS_KEY                       3
-#define QDR_ADDRESS_IN_PROCESS                4
-#define QDR_ADDRESS_SUBSCRIBER_COUNT          5
-#define QDR_ADDRESS_REMOTE_COUNT              6
-#define QDR_ADDRESS_HOST_ROUTERS              7
-#define QDR_ADDRESS_DELIVERIES_INGRESS        8
-#define QDR_ADDRESS_DELIVERIES_EGRESS         9
-#define QDR_ADDRESS_DELIVERIES_TRANSIT        10
-#define QDR_ADDRESS_DELIVERIES_TO_CONTAINER   11
-#define QDR_ADDRESS_DELIVERIES_FROM_CONTAINER 12
+#define QDR_ADDRESS_SEMANTICS                 4
+#define QDR_ADDRESS_IN_PROCESS                5
+#define QDR_ADDRESS_SUBSCRIBER_COUNT          6
+#define QDR_ADDRESS_REMOTE_COUNT              7
+#define QDR_ADDRESS_HOST_ROUTERS              8
+#define QDR_ADDRESS_DELIVERIES_INGRESS        9
+#define QDR_ADDRESS_DELIVERIES_EGRESS         10
+#define QDR_ADDRESS_DELIVERIES_TRANSIT        11
+#define QDR_ADDRESS_DELIVERIES_TO_CONTAINER   12
+#define QDR_ADDRESS_DELIVERIES_FROM_CONTAINER 13
 
 const char *qdr_address_columns[] =
     {"name",
      "identity",
      "type",
      "key",
+     "semantics",
      "inProcess",
      "subscriberCount",
      "remoteCount",
@@ -56,58 +58,69 @@ static void qdr_insert_address_columns_CT(qdr_address_t     
   *addr,
                                           int column_index)
 {
     switch(column_index) {
-        case QDR_ADDRESS_NAME:
-        case QDR_ADDRESS_IDENTITY:
-        case QDR_ADDRESS_KEY:
-            if (addr->hash_handle)
-                qd_compose_insert_string(body, (const char*) 
qd_hash_key_by_handle(addr->hash_handle));
-            else
-                qd_compose_insert_null(body);
-            break;
-
-        case QDR_ADDRESS_TYPE:
-            qd_compose_insert_string(body, 
"org.apache.qpid.dispatch.router.address");
-            break;
-
-        case QDR_ADDRESS_IN_PROCESS:
-            qd_compose_insert_uint(body, DEQ_SIZE(addr->subscriptions));
-            break;
-
-        case QDR_ADDRESS_SUBSCRIBER_COUNT:
-            qd_compose_insert_uint(body, DEQ_SIZE(addr->rlinks));
-            break;
-
-        case QDR_ADDRESS_REMOTE_COUNT:
-            qd_compose_insert_uint(body, qd_bitmask_cardinality(addr->rnodes));
-            break;
-
-        case QDR_ADDRESS_HOST_ROUTERS:
-            qd_compose_insert_null(body);  // TEMP
-            break;
-
-        case QDR_ADDRESS_DELIVERIES_INGRESS:
-            qd_compose_insert_ulong(body, addr->deliveries_ingress);
-            break;
-
-        case QDR_ADDRESS_DELIVERIES_EGRESS:
-            qd_compose_insert_ulong(body, addr->deliveries_egress);
-            break;
-
-        case QDR_ADDRESS_DELIVERIES_TRANSIT:
-            qd_compose_insert_ulong(body, addr->deliveries_transit);
-            break;
-
-        case QDR_ADDRESS_DELIVERIES_TO_CONTAINER:
-            qd_compose_insert_ulong(body, addr->deliveries_to_container);
-            break;
-
-        case QDR_ADDRESS_DELIVERIES_FROM_CONTAINER:
-            qd_compose_insert_ulong(body, addr->deliveries_from_container);
-            break;
-
-        default:
+    case QDR_ADDRESS_NAME:
+    case QDR_ADDRESS_IDENTITY:
+    case QDR_ADDRESS_KEY:
+        if (addr->hash_handle)
+            qd_compose_insert_string(body, (const char*) 
qd_hash_key_by_handle(addr->hash_handle));
+        else
             qd_compose_insert_null(body);
-            break;
+        break;
+
+    case QDR_ADDRESS_TYPE:
+        qd_compose_insert_string(body, 
"org.apache.qpid.dispatch.router.address");
+        break;
+
+    case QDR_ADDRESS_SEMANTICS: {
+        switch (addr->semantics) {
+        case QD_SEMANTICS_MULTICAST_FLOOD:  qd_compose_insert_string(body, 
"flood");       break;
+        case QD_SEMANTICS_MULTICAST_ONCE:   qd_compose_insert_string(body, 
"multi");       break;
+        case QD_SEMANTICS_ANYCAST_CLOSEST:  qd_compose_insert_string(body, 
"anyClosest");  break;
+        case QD_SEMANTICS_ANYCAST_BALANCED: qd_compose_insert_string(body, 
"anyBalanced"); break;
+        case QD_SEMANTICS_LINK_BALANCED:    qd_compose_insert_string(body, 
"linkBalanced"); break;
+        }
+        break;
+    }
+
+    case QDR_ADDRESS_IN_PROCESS:
+        qd_compose_insert_uint(body, DEQ_SIZE(addr->subscriptions));
+        break;
+
+    case QDR_ADDRESS_SUBSCRIBER_COUNT:
+        qd_compose_insert_uint(body, DEQ_SIZE(addr->rlinks));
+        break;
+
+    case QDR_ADDRESS_REMOTE_COUNT:
+        qd_compose_insert_uint(body, qd_bitmask_cardinality(addr->rnodes));
+        break;
+
+    case QDR_ADDRESS_HOST_ROUTERS:
+        qd_compose_insert_null(body);  // TEMP
+        break;
+
+    case QDR_ADDRESS_DELIVERIES_INGRESS:
+        qd_compose_insert_ulong(body, addr->deliveries_ingress);
+        break;
+
+    case QDR_ADDRESS_DELIVERIES_EGRESS:
+        qd_compose_insert_ulong(body, addr->deliveries_egress);
+        break;
+
+    case QDR_ADDRESS_DELIVERIES_TRANSIT:
+        qd_compose_insert_ulong(body, addr->deliveries_transit);
+        break;
+
+    case QDR_ADDRESS_DELIVERIES_TO_CONTAINER:
+        qd_compose_insert_ulong(body, addr->deliveries_to_container);
+        break;
+
+    case QDR_ADDRESS_DELIVERIES_FROM_CONTAINER:
+        qd_compose_insert_ulong(body, addr->deliveries_from_container);
+        break;
+
+    default:
+        qd_compose_insert_null(body);
+        break;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a26308de/src/router_core/agent_address.h
----------------------------------------------------------------------
diff --git a/src/router_core/agent_address.h b/src/router_core/agent_address.h
index e0416e7..77d6dcc 100644
--- a/src/router_core/agent_address.h
+++ b/src/router_core/agent_address.h
@@ -36,7 +36,7 @@ void qdra_address_delete_CT(qdr_core_t          *core,
                             qdr_query_t          *query);
 
 
-#define QDR_ADDRESS_COLUMN_COUNT 13
+#define QDR_ADDRESS_COLUMN_COUNT 14
 
 const char *qdr_address_columns[QDR_ADDRESS_COLUMN_COUNT + 1];
 

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a26308de/src/router_core/agent_provisioned.c
----------------------------------------------------------------------
diff --git a/src/router_core/agent_provisioned.c 
b/src/router_core/agent_provisioned.c
index 066d016..83b436f 100644
--- a/src/router_core/agent_provisioned.c
+++ b/src/router_core/agent_provisioned.c
@@ -196,14 +196,10 @@ static qdr_address_t 
*qdra_configure_address_CT(qdr_core_t *core, qd_parsed_fiel
     qd_address_iterator_override_prefix(iter, cls);
     qd_address_iterator_reset_view(iter, ITER_VIEW_ADDRESS_HASH);
 
-    printf("CT configure address: %s\n", qd_field_iterator_copy(iter));
-    qd_field_iterator_reset(iter);
-
     qdr_address_t *addr = 0;
     qd_hash_retrieve(core->addr_hash, iter, (void**) &addr);
     if (addr) {
         // Log error TODO
-        printf("  dup\n");
         return 0;
     }
 

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/a26308de/tools/qdstat
----------------------------------------------------------------------
diff --git a/tools/qdstat b/tools/qdstat
index 0dae5d6..fc8b32c 100755
--- a/tools/qdstat
+++ b/tools/qdstat
@@ -187,6 +187,16 @@ class BusManager(Node):
             outlist.append(str(i))
         return outlist
 
+    def _sem_text(self, sem):
+        sem_map = {'flood'        : 'flood',
+                   'multi'        : 'multi',
+                   'anyClosest'   : 'closest',
+                   'anyBalanced'  : 'balanced',
+                   'linkBalanced' : 'linkBalanced'}
+        if sem in sem_map:
+            return sem_map[sem]
+        return '-'
+
     def displayGeneral(self):
         disp = Display(prefix="  ")
         heads = []
@@ -279,6 +289,7 @@ class BusManager(Node):
         disp = Display(prefix="  ")
         heads = []
         heads.append(Header("addr"))
+        heads.append(Header("sem"))
         heads.append(Header("in-proc", Header.COMMAS))
         heads.append(Header("local", Header.COMMAS))
         heads.append(Header("remote", Header.COMMAS))
@@ -294,6 +305,7 @@ class BusManager(Node):
         for addr in objects:
             row = []
             row.append(self._addr_summary(addr.name))
+            row.append(self._sem_text(addr.semantics))
             row.append(addr.inProcess)
             row.append(addr.subscriberCount)
             row.append(addr.remoteCount)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to