The router now has two management agents, one in C and one in Python. They have overlapping and inconsistent functionality, which creates a difficult user experience. They need to be more closely aligned.
Issues noted so far:
- python agent "identity" attribute is unique per-agent. C agent "identity" is only unique per type and cannot be used in READ requests (DISPATCH-409)
- python agent allows delete by name or identity alone, C agent requires the client specify the type as well (DISPATCH-408)
- C agent does not do string conversions for integral attribute types as reqiured by the management spec. The "fix" in qdmanage is incorrect (DISPATCH-411)
- There are two address types - org.apache.qpid.dispatch.router.config.address and org.apache.qpid.dispatch.router.address. There is no shortname for org.apache.qpid.dispatch.router.address. Should short names be removed ?
I recommend that we need:
1. A single code path to validate/convert/insert defaults in incoming requests based on the schema.
2. A clear, documented statement of what "identity" means and whether it is type-scoped or agent-scoped, with a re-implementation of either the C or python entities to comply.
We may need to rework the interface between python and C to make it efficient and thread-safe, or refactor some/all of the python functionality as C, but we do need to get rid of the redundancy and inconsistency.