Coverage for scripts / get_service_desk.py: 0%
57 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 JSM service desk details by ID.
5Usage:
6 python get_service_desk.py 1
7 python get_service_desk.py 1 --output json
8 python get_service_desk.py 1 --show-request-types
9"""
11import sys
12import os
13import argparse
14import json
15from pathlib import Path
17sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent / 'shared' / 'scripts' / 'lib'))
19from config_manager import get_jira_client
20from error_handler import print_error, JiraError
21from formatters import format_json
24def get_service_desk(service_desk_id: str, profile: str = None) -> dict:
25 """
26 Get JSM service desk details by ID.
28 Args:
29 service_desk_id: Service desk ID
30 profile: JIRA profile to use
32 Returns:
33 Service desk data
34 """
35 client = get_jira_client(profile)
36 service_desk = client.get_service_desk(service_desk_id)
37 client.close()
39 return service_desk
42def format_service_desk_text(service_desk: dict, show_request_types: bool = False, client = None) -> None:
43 """
44 Format service desk as human-readable text.
46 Args:
47 service_desk: Service desk data
48 show_request_types: Show request type count
49 client: Optional JiraClient for request type lookup
50 """
51 print("Service Desk Details:")
52 print()
53 print(f"ID: {service_desk.get('id', '')}")
54 print(f"Project ID: {service_desk.get('projectId', '')}")
55 print(f"Project Key: {service_desk.get('projectKey', '')}")
56 print(f"Project Name: {service_desk.get('projectName', '')}")
58 if show_request_types and client:
59 try:
60 request_types = client.get_request_types(service_desk.get('id'))
61 count = len(request_types.get('values', []))
62 print()
63 print(f"Request Types: {count} available")
64 print(f"Use: python list_request_types.py {service_desk.get('id')}")
65 except Exception:
66 pass
69def format_service_desk_json(service_desk: dict) -> str:
70 """
71 Format service desk as JSON.
73 Args:
74 service_desk: Service desk data
76 Returns:
77 JSON string
78 """
79 return format_json(service_desk)
82def main():
83 parser = argparse.ArgumentParser(
84 description='Get JSM service desk details by ID',
85 epilog='Example: python get_service_desk.py 1'
86 )
88 parser.add_argument('service_desk_id',
89 help='Service desk ID')
90 parser.add_argument('--output', '-o',
91 choices=['text', 'json'],
92 default='text',
93 help='Output format (default: text)')
94 parser.add_argument('--show-request-types', '-r',
95 action='store_true',
96 help='Show request type count')
97 parser.add_argument('--profile',
98 help='JIRA profile to use (default: from config)')
100 args = parser.parse_args()
102 try:
103 # Fetch service desk
104 service_desk = get_service_desk(
105 args.service_desk_id,
106 profile=args.profile
107 )
109 # Output results
110 if args.output == 'json':
111 print(format_service_desk_json(service_desk))
112 else:
113 client = None
114 if args.show_request_types:
115 client = get_jira_client(args.profile)
116 format_service_desk_text(service_desk, args.show_request_types, client)
117 if client:
118 client.close()
120 except JiraError as e:
121 print_error(e)
122 sys.exit(1)
123 except Exception as e:
124 print_error(e, debug=True)
125 sys.exit(1)
128if __name__ == '__main__':
129 main()