Coverage for scripts / get_queue.py: 36%

39 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2025-12-25 18:08 -0500

1#!/usr/bin/env python3 

2""" 

3Get JSM service desk queue details. 

4 

5Usage: 

6 python get_queue.py --service-desk 1 --queue-id 5 

7 python get_queue.py --service-desk 1 --queue-id 5 --output json 

8""" 

9 

10import sys 

11import os 

12import argparse 

13import json 

14from pathlib import Path 

15from typing import Optional, Dict, Any 

16 

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

18 

19from config_manager import get_jira_client 

20from error_handler import print_error, JiraError 

21 

22 

23def get_queue(service_desk_id: int, queue_id: int, 

24 profile: Optional[str] = None) -> Dict[str, Any]: 

25 """Get queue details.""" 

26 with get_jira_client(profile) as client: 

27 return client.get_queue(service_desk_id, queue_id) 

28 

29 

30def format_queue_text(queue: Dict[str, Any]) -> str: 

31 """Format queue as text.""" 

32 lines = [] 

33 lines.append(f"\nQueue: {queue.get('name')}") 

34 lines.append("=" * 80) 

35 lines.append(f"ID: {queue.get('id')}") 

36 lines.append(f"JQL: {queue.get('jql', 'N/A')}") 

37 return '\n'.join(lines) 

38 

39 

40def format_queue_json(queue: Dict[str, Any]) -> str: 

41 """Format queue as JSON.""" 

42 return json.dumps(queue, indent=2) 

43 

44 

45def main(): 

46 """Main entry point.""" 

47 parser = argparse.ArgumentParser(description='Get JSM service desk queue details') 

48 parser.add_argument('--service-desk', type=int, required=True, help='Service desk ID') 

49 parser.add_argument('--queue-id', type=int, required=True, help='Queue ID') 

50 parser.add_argument('--output', choices=['text', 'json'], default='text') 

51 parser.add_argument('--profile', help='JIRA profile to use') 

52 

53 args = parser.parse_args() 

54 

55 try: 

56 queue = get_queue(args.service_desk, args.queue_id, args.profile) 

57 

58 if args.output == 'json': 

59 print(format_queue_json(queue)) 

60 else: 

61 print(format_queue_text(queue)) 

62 

63 return 0 

64 

65 except JiraError as e: 

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

67 return 1 

68 

69 

70if __name__ == '__main__': 

71 sys.exit(main())