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

1#!/usr/bin/env python3 

2""" 

3Get JSM service desk details by ID. 

4 

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

10 

11import sys 

12import os 

13import argparse 

14import json 

15from pathlib import Path 

16 

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

18 

19from config_manager import get_jira_client 

20from error_handler import print_error, JiraError 

21from formatters import format_json 

22 

23 

24def get_service_desk(service_desk_id: str, profile: str = None) -> dict: 

25 """ 

26 Get JSM service desk details by ID. 

27 

28 Args: 

29 service_desk_id: Service desk ID 

30 profile: JIRA profile to use 

31 

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

38 

39 return service_desk 

40 

41 

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. 

45 

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', '')}") 

57 

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 

67 

68 

69def format_service_desk_json(service_desk: dict) -> str: 

70 """ 

71 Format service desk as JSON. 

72 

73 Args: 

74 service_desk: Service desk data 

75 

76 Returns: 

77 JSON string 

78 """ 

79 return format_json(service_desk) 

80 

81 

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 ) 

87 

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

99 

100 args = parser.parse_args() 

101 

102 try: 

103 # Fetch service desk 

104 service_desk = get_service_desk( 

105 args.service_desk_id, 

106 profile=args.profile 

107 ) 

108 

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

119 

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) 

126 

127 

128if __name__ == '__main__': 

129 main()