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;