Improve the interactive runmqsc command line interface by providing context aware keyword autocomplete and dynamic tab completion of active queue manager object names across all distributed platforms.
Business Problem / Use Case
The interactive runmqsc shell is a critical tool for administrators and developers performing real time troubleshooting, configuration inspection, and ad hoc maintenance. While IBM MQ provides basic tab completion for static MQSC keywords on some Unix platforms, the current implementation introduces operational friction and does not meet modern command line usability expectations.
This results in several distinct challenges:
Fragile Keyword Autocomplete: The current completion engine requires keywords to be entered in a rigid sequence. If a user enters attributes out of order or attempts completion mid command, suggestions may fail or break entirely, interrupting workflow and reducing efficiency.
High Error Rates with Object Names: Enterprise naming conventions often produce long, descriptive MQ object names. Requiring users to manually type these names increases the likelihood of typographical errors, leading to failed commands and slower troubleshooting.
Lack of Real Time State Awareness: The runmqsc shell does not provide visibility into existing queue manager objects during command entry. Users frequently open additional sessions to issue DISPLAY commands simply to retrieve object names for use in the active shell.
Operational Inefficiency in Modern Workflows: Compared to modern CLI tools such as kubectl, cloud provider CLIs, and modern database shells, runmqsc lacks dynamic interaction capabilities. This increases the learning curve for newer engineers and limits productivity in fast paced operational environments.
Proposed Solution / Specification
This proposal details the enhancement of the interactive runmqsc utility with two complementary capabilities:
1. Context Aware Keyword Completion
Enhance the existing completion engine to better interpret command context and provide intelligent suggestions throughout the command string.
Mid String Completion: Tab completion should function anywhere within a partially entered command, correctly evaluating context even when optional parameters are already present.
Flexible Attribute Ordering Support: Completion should tolerate non sequential attribute entry and still provide valid suggestions.
Case Insensitive Input Handling: Lowercase and mixed case input should be interpreted correctly and normalized to standard uppercase MQSC syntax upon completion.
Graceful Fallback Behavior: If context cannot be reliably determined, the engine should fall back to existing static keyword completion behavior to preserve reliability.
2. Dynamic Object Name Auto Completion
Introduce real time object name completion by querying the active queue manager metadata.
Prefix Based Matching: For example, typing DISPLAY QLOCAL(DEV. and pressing TAB should cycle through existing queue names matching the DEV. prefix.
Object Class Awareness: Completion dynamically adapts based on object type context such as queues, channels, listeners, topics, process definitions, and namelists.
Broad Object Coverage: Supports all primary MQ administrative object types.
Design Considerations
Non Disruptive Enhancement: This functionality is strictly additive and does not modify existing MQSC command behavior, scripting compatibility, or batch execution semantics.
Performance Protection: To prevent performance impact on large production queue managers, object name lookups should be served from an optimized cache or low priority background query mechanism rather than real time blocking queries.
Security and Authority Compliance: All object name suggestions must respect Object Authority Manager settings. Users should only see objects for which they have appropriate display permissions.
Cross Platform Consistency: The enhanced interactive experience should be delivered consistently across all supported distributed platforms including Linux, AIX, and Windows, accounting for differences in terminal capabilities. If enhanced completion features are not supported in a given terminal environment, the utility should gracefully fall back to existing behavior.
Expected Benefits
Reduced Errors and Operational Friction: Eliminates typographical errors when entering complex object names, improving reliability during critical operations.
Faster Incident Resolution: Allows engineers to discover and reference objects directly within the shell, avoiding context switching and reducing troubleshooting time.
Improved Developer and Admin Experience: Aligns the MQ command line experience with modern CLI standards, lowering the learning curve for new engineers.
Increased Productivity: Streamlines interactive administration workflows, enabling faster command execution and more efficient system navigation.
This capability transforms the interactive runmqsc experience from a rigid syntax parser into a modern, context aware administrative shell.
We recognize that this is a valid requirement. However it doesn't fit with our delivery plans for the next year or so.
As a result we are declining this idea. While declined the idea can still be voted, and commented, upon.