def register_parser(commands) -> None:
"""Register telemetry commands on the root parser."""
telemetry_parser = commands.add_parser("telemetry", help="Read operational telemetry.")
telemetry_commands = telemetry_parser.add_subparsers(dest="telemetry_command", required=True)
sources_validity_parser = telemetry_commands.add_parser(
"sources-validity", help="Show source validity timestamps."
)
sources_validity_parser.set_defaults(handler=handle_sources_validity)
source_age_parser = telemetry_commands.add_parser("source-age", help="Show source ages.")
source_age_parser.add_argument(
"-u",
"--unit",
choices=["minutes", "seconds"],
default="minutes",
)
source_age_parser.set_defaults(handler=handle_source_age)
entities_per_attr_parser = telemetry_commands.add_parser(
"entities-per-attr", help="Count entities with data present for each attribute."
)
entities_per_attr_parser.set_defaults(handler=handle_entities_per_attr)
snapshot_summary_parser = telemetry_commands.add_parser(
"snapshot-summary", help="Show recent snapshot activity summary."
)
snapshot_summary_parser.set_defaults(handler=handle_snapshot_summary)
metadata_parser = telemetry_commands.add_parser(
"metadata", help="Browse internal metadata records."
)
metadata_parser.add_argument("-m", "--module")
metadata_parser.add_argument("-f", "--from", dest="date_from")
metadata_parser.add_argument("-t", "--to", dest="date_to")
metadata_parser.add_argument("-s", "--skip", type=int, default=0)
metadata_parser.add_argument("-l", "--limit", type=int, default=0)
metadata_parser.add_argument("-S", "--sort", choices=["newest", "oldest"], default="newest")
metadata_parser.add_argument("-F", "--format", choices=["json", "ndjson"], default="ndjson")
metadata_parser.set_defaults(handler=handle_metadata)
rabbitmq_queues_parser = telemetry_commands.add_parser(
"rabbitmq-queues", help="Show RabbitMQ queue telemetry."
)
rabbitmq_queues_parser.set_defaults(handler=handle_rabbitmq_queues)