Coverage for scripts / get_queue_issues.py: 29%
49 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"""
3Get issues in JSM service desk queue.
5Usage:
6 python get_queue_issues.py --service-desk 1 --queue-id 1
7 python get_queue_issues.py --service-desk 1 --queue-id 1 --limit 10
8 python get_queue_issues.py --service-desk 1 --queue-id 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 get_queue_issues(service_desk_id: int, queue_id: int,
25 start: int = 0, limit: int = 50,
26 profile: Optional[str] = None) -> Dict[str, Any]:
27 """Get issues in a queue."""
28 with get_jira_client(profile) as client:
29 return client.get_queue_issues(service_desk_id, queue_id, start, limit)
32def format_issues_text(issues_data: Dict[str, Any]) -> str:
33 """Format issues as text."""
34 lines = []
35 issues = issues_data.get('values', [])
36 total = issues_data.get('size', 0)
38 lines.append(f"\nQueue Issues: {total} total")
39 lines.append("=" * 80)
40 lines.append("")
42 for issue in issues:
43 issue_key = issue.get('issueKey')
44 fields = issue.get('fields', {})
45 summary = fields.get('summary', 'N/A')
46 status = fields.get('status', {}).get('name', 'N/A')
48 lines.append(f"{issue_key}: {summary[:60]}")
49 lines.append(f" Status: {status}")
51 return '\n'.join(lines)
54def format_issues_json(issues_data: Dict[str, Any]) -> str:
55 """Format issues as JSON."""
56 return json.dumps(issues_data, indent=2)
59def main():
60 """Main entry point."""
61 parser = argparse.ArgumentParser(description='Get issues in JSM service desk queue')
62 parser.add_argument('--service-desk', type=int, required=True, help='Service desk ID')
63 parser.add_argument('--queue-id', type=int, required=True, help='Queue ID')
64 parser.add_argument('--start', type=int, default=0, help='Starting index')
65 parser.add_argument('--limit', type=int, default=50, help='Maximum results')
66 parser.add_argument('--output', choices=['text', 'json'], default='text')
67 parser.add_argument('--profile', help='JIRA profile to use')
69 args = parser.parse_args()
71 try:
72 issues = get_queue_issues(
73 args.service_desk, args.queue_id,
74 args.start, args.limit, args.profile
75 )
77 if args.output == 'json':
78 print(format_issues_json(issues))
79 else:
80 print(format_issues_text(issues))
82 return 0
84 except JiraError as e:
85 print_error(f"Failed to get queue issues: {e}")
86 return 1
89if __name__ == '__main__':
90 sys.exit(main())