DISPATCH-437 - WIP - Added code to transform body attribute map to use attribute ordinalities
diff --git a/include/qpid/dispatch/connection_manager.h b/include/qpid/dispatch/connection_manager.h
index baad127..feeb043 100644
--- a/include/qpid/dispatch/connection_manager.h
+++ b/include/qpid/dispatch/connection_manager.h
@@ -79,9 +79,9 @@
*/
void qd_connection_manager_start(qd_dispatch_t *qd);
-qd_amqp_error_t qd_connection_manager_create_ssl_profile(qd_dispatch_t *qd,
+qd_amqp_error_t qd_connection_manager_create_ssl_profile(qd_dispatch_t *qd,
qd_field_iterator_t *name,
- qd_parsed_field_t *in_body,
+ qd_parsed_field_t *in_body,
qd_composed_field_t *out_body);
qd_amqp_error_t qd_connection_manager_delete_ssl_profile(qd_dispatch_t *qd,
@@ -93,11 +93,11 @@
qd_field_iterator_t *identity,
qd_composed_field_t *out_body);
-qd_amqp_error_t qd_connection_manager_query_ssl_profile(qd_dispatch_t *qd,
- int offset,
- int count,
- qd_parsed_field_t *in_body,
- qd_composed_field_t *out_body);
+qd_amqp_error_t qd_connection_manager_query_ssl_profile(qd_dispatch_t *qd,
+ int offset,
+ int count,
+ qd_parsed_field_t *in_body,
+ qd_composed_field_t *out_body);
/**
* Get the connector's name.
*
diff --git a/python/qpid_dispatch_internal/management/agent/agent.py b/python/qpid_dispatch_internal/management/agent/agent.py
index 5430e6e..3d131b3 100644
--- a/python/qpid_dispatch_internal/management/agent/agent.py
+++ b/python/qpid_dispatch_internal/management/agent/agent.py
@@ -761,6 +761,7 @@
self.config_types = [et for et in schema.entity_types.itervalues()
if schema.is_configuration(et)]
self.policy = PolicyManager(self)
+ self.adapters = []
if self.config_file:
try:
self.load(self.config_file, raw_json)
@@ -769,7 +770,7 @@
else:
self.entities = []
self.log_adapter = LogAdapter("AGENT")
- self.adapters = []
+
self.management = self.create_entity({"type": "management"})
# self.add_entity(self.management)
#self.io = IoAdapter(self.receive, address, 'L', '0', TREATMENT_ANYCAST_CLOSEST)
@@ -824,7 +825,6 @@
"""
Calls the
"""
- print 'body is *********** ', body
self.agent_adapter.post_management_request(cid=cid,
reply_to=reply_to,
name=name,
@@ -835,14 +835,27 @@
count=count,
offset=offset)
+ def _transform_attributes(self, adapter):
+ transformed = {}
+ # adapter.attributes has something like this -
+ # {u'mobileAddrMaxAge': 60, u'raIntervalFlux': 4, u'workerThreads': 4, u'helloInterval': 1, u'area': '0',
+ # u'helloMaxAge': 3, u'saslConfigName': 'qdrouterd', u'remoteLsMaxAge': 60, u'raInterval': 30, u'mode': 0,
+ # 'type': 'org.apache.qpid.dispatch.router', u'id': 'Router.A'}
+ # We want to create a new dict with the keys as the ordinality of the respective keys from the above dict
+ # like this - {0: 'Router.A', 1: 0, 2: '0', 3: 1, 4: 3, 5: 30, 6: 4, 7: 60, 11: 4, 14: 'qdrouterd', 16: 60}
+ #
+ for key in adapter.attributes.keys():
+ if key == 'type':
+ continue
+ transformed[adapter.entity_type.attributes.get(key).ordinality] = adapter.attributes.get(key)
+ return transformed
+
def _create_config_entities(self):
- print 'In _create_config_entities ******************** '
for adapter in self.adapters:
- print adapter.attributes
self.post_request(cid=None, reply_to=None,
- operation_ordinality=self.all_operation_defs.get('CREATE').ordinality,
+ operation_ordinality=self.schema.all_operation_defs.get('CREATE').ordinality,
entity_type_ordinality=adapter.entity_type.ordinality,
- body=adapter.attributes)
+ body=self._transform_attributes(adapter))
def get_config_types(self):
return self.config_types
@@ -874,11 +887,9 @@
if et.singleton and not [s for s in sections if s[0] == et.short_name]:
sections.append((et.short_name, {}))
- entities = [dict(type=self.schema.entity_type(self.schema.long_name(s[0])), **s[1]) for s in sections]
- #self.schema.validate_all(entities)
- self.entities = entities
+ self.entities = [dict(type=self.schema.entity_type(self.schema.long_name(s[0])), **s[1]) for s in sections]
+ #self.schema.validate_all(self.entities)
self.entity_adapters(self.entities)
- print 'self.adapters ************** ', self.adapters
self._create_config_entities()
def log(self, level, text):
diff --git a/src/connection_manager.c b/src/connection_manager.c
index 79e6935..bbf7e64 100644
--- a/src/connection_manager.c
+++ b/src/connection_manager.c
@@ -726,11 +726,11 @@
return status;
}
-qd_amqp_error_t qd_connection_manager_query_ssl_profile(qd_dispatch_t *qd,
- int offset,
- int count,
- qd_parsed_field_t *in_body,
- qd_composed_field_t *out_body)
+qd_amqp_error_t qd_connection_manager_query_ssl_profile(qd_dispatch_t *qd,
+ int offset,
+ int count,
+ qd_parsed_field_t *in_body,
+ qd_composed_field_t *out_body)
{
return QD_AMQP_OK;
}
diff --git a/src/router_core/agent_core.c b/src/router_core/agent_core.c
index fb82fea..f89d416 100644
--- a/src/router_core/agent_core.c
+++ b/src/router_core/agent_core.c
@@ -176,10 +176,10 @@
void *context,
qd_router_entity_type_t type,
qd_parsed_field_t *attribute_names,
- qd_composed_field_t *body)
+ qd_composed_field_t *out_body)
{
- qdr_query_t* query = qdr_query(core, context, type, body);
+ qdr_query_t* query = qdr_query(core, context, type, out_body);
switch (query->entity_type) {
case QD_SCHEMA_ENTITY_TYPE_ROUTER_CONFIG_ADDRESS: qdr_agent_set_columns(query, attribute_names, qdr_config_address_columns, QDR_CONFIG_ADDRESS_COLUMN_COUNT); break;
@@ -355,7 +355,7 @@
qd_parsed_field_t *in_body = action->args.agent.in_body;
switch (query->entity_type) {
- case QD_SCHEMA_ENTITY_TYPE_ROUTER_CONFIG_ADDRESS: qdra_config_address_create_CT(core, name, query, in_body); break;
+ case QD_SCHEMA_ENTITY_TYPE_ROUTER_CONFIG_ADDRESS: qdra_config_address_create_CT(core, name, query, in_body); break;
case QD_SCHEMA_ENTITY_TYPE_ROUTER_CONFIG_LINKROUTE: qdra_config_link_route_create_CT(core, name, query, in_body); break;
case QD_SCHEMA_ENTITY_TYPE_ROUTER_CONFIG_AUTOLINK: qdra_config_auto_link_create_CT(core, name, query, in_body); break;
case QD_SCHEMA_ENTITY_TYPE_CONNECTION: break;