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

1#!/usr/bin/env python3 

2""" 

3Get issues in JSM service desk queue. 

4 

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""" 

10 

11import sys 

12import os 

13import argparse 

14import json 

15from pathlib import Path 

16from typing import Optional, Dict, Any 

17 

18sys.path.insert(0, str(Path(__file__).parent.parent.parent / 'shared' / 'scripts' / 'lib')) 

19 

20from config_manager import get_jira_client 

21from error_handler import print_error, JiraError 

22 

23 

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) 

30 

31 

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) 

37 

38 lines.append(f"\nQueue Issues: {total} total") 

39 lines.append("=" * 80) 

40 lines.append("") 

41 

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') 

47 

48 lines.append(f"{issue_key}: {summary[:60]}") 

49 lines.append(f" Status: {status}") 

50 

51 return '\n'.join(lines) 

52 

53 

54def format_issues_json(issues_data: Dict[str, Any]) -> str: 

55 """Format issues as JSON.""" 

56 return json.dumps(issues_data, indent=2) 

57 

58 

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') 

68 

69 args = parser.parse_args() 

70 

71 try: 

72 issues = get_queue_issues( 

73 args.service_desk, args.queue_id, 

74 args.start, args.limit, args.profile 

75 ) 

76 

77 if args.output == 'json': 

78 print(format_issues_json(issues)) 

79 else: 

80 print(format_issues_text(issues)) 

81 

82 return 0 

83 

84 except JiraError as e: 

85 print_error(f"Failed to get queue issues: {e}") 

86 return 1 

87 

88 

89if __name__ == '__main__': 

90 sys.exit(main())