Coverage for scripts / list_queues.py: 30%
46 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-25 18:08 -0500
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-25 18:08 -0500
1#!/usr/bin/env python3
2"""
3List JSM service desk queues.
5Usage:
6 python list_queues.py --service-desk 1
7 python list_queues.py --service-desk 1 --show-jql
8 python list_queues.py --service-desk 1 --output json
9"""
11import sys
12import os
13import argparse
14import json
15from pathlib import Path
16from typing import Optional, Dict, Any
18sys.path.insert(0, str(Path(__file__).parent.parent.parent / 'shared' / 'scripts' / 'lib'))
20from config_manager import get_jira_client
21from error_handler import print_error, JiraError
24def list_queues(service_desk_id: int, profile: Optional[str] = None) -> Dict[str, Any]:
25 """List queues for a service desk."""
26 with get_jira_client(profile) as client:
27 return client.get_service_desk_queues(service_desk_id)
30def format_queues_text(queues_data: Dict[str, Any], show_jql: bool = False) -> str:
31 """Format queues as text."""
32 lines = []
33 queues = queues_data.get('values', [])
35 lines.append(f"\nQueues: {len(queues)} total")
36 lines.append("=" * 80)
37 lines.append("")
39 for queue in queues:
40 queue_id = queue.get('id')
41 name = queue.get('name')
42 jql = queue.get('jql', 'N/A')
44 lines.append(f"[{queue_id}] {name}")
45 if show_jql:
46 lines.append(f" JQL: {jql}")
48 return '\n'.join(lines)
51def format_queues_json(queues_data: Dict[str, Any]) -> str:
52 """Format queues as JSON."""
53 return json.dumps(queues_data, indent=2)
56def main():
57 """Main entry point."""
58 parser = argparse.ArgumentParser(description='List JSM service desk queues')
59 parser.add_argument('--service-desk', type=int, required=True, help='Service desk ID')
60 parser.add_argument('--show-jql', action='store_true', help='Show JQL queries')
61 parser.add_argument('--output', choices=['text', 'json'], default='text')
62 parser.add_argument('--profile', help='JIRA profile to use')
64 args = parser.parse_args()
66 try:
67 queues = list_queues(args.service_desk, args.profile)
69 if args.output == 'json':
70 print(format_queues_json(queues))
71 else:
72 print(format_queues_text(queues, args.show_jql))
74 return 0
76 except JiraError as e:
77 print_error(f"Failed to list queues: {e}")
78 return 1
81if __name__ == '__main__':
82 sys.exit(main())