4
4
Relies on git origin/master vs local release.json
5
5
"""
6
6
import json
7
- import os
8
- import re
7
+ import logging
9
8
import subprocess
10
9
import sys
11
10
from typing import Dict , List , Optional , Tuple
12
11
12
+ logging .basicConfig (
13
+ level = logging .INFO ,
14
+ format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ,
15
+ handlers = [logging .StreamHandler (sys .stdout )],
16
+ )
17
+ logger = logging .getLogger (__name__ )
18
+
13
19
14
20
def get_content_from_git (commit : str , file_path : str ) -> Optional [str ]:
15
21
try :
16
22
result = subprocess .run (
17
23
["git" , "show" , f"{ commit } :{ file_path } " ], capture_output = True , text = True , check = True , timeout = 30
18
24
)
19
25
return result .stdout
20
- except (subprocess .CalledProcessError , subprocess .TimeoutExpired ):
26
+ except (subprocess .CalledProcessError , subprocess .TimeoutExpired ) as e :
27
+ logger .error (f"Failed to get { file_path } from git commit { commit } : { e } " )
21
28
return None
22
29
23
30
@@ -26,13 +33,13 @@ def load_release_json_from_master() -> Optional[Dict]:
26
33
27
34
content = get_content_from_git (base_revision , "release.json" )
28
35
if not content :
29
- print (f"Could not retrieve release.json from { base_revision } " )
36
+ logger . error (f"Could not retrieve release.json from { base_revision } " )
30
37
return None
31
38
32
39
try :
33
40
return json .loads (content )
34
41
except json .JSONDecodeError as e :
35
- print (f"Invalid JSON in base release.json: { e } " )
42
+ logger . error (f"Invalid JSON in base release.json: { e } " )
36
43
return None
37
44
38
45
@@ -41,7 +48,7 @@ def load_current_release_json() -> Optional[Dict]:
41
48
with open ("release.json" , "r" ) as f :
42
49
return json .load (f )
43
50
except (FileNotFoundError , json .JSONDecodeError ) as e :
44
- print (f"Could not load current release.json: { e } " )
51
+ logger . error (f"Could not load current release.json: { e } " )
45
52
return None
46
53
47
54
@@ -97,7 +104,7 @@ def get_all_agents_for_rebuild() -> List[Tuple[str, str]]:
97
104
98
105
release_data = load_current_release_json ()
99
106
if not release_data :
100
- print ( "ERROR: Could not load release.json" )
107
+ logger . error ( " Could not load release.json" )
101
108
return []
102
109
103
110
ops_manager_mapping = extract_ops_manager_mapping (release_data )
@@ -122,21 +129,21 @@ def get_all_agents_for_rebuild() -> List[Tuple[str, str]]:
122
129
tools_version = get_tools_version_for_agent (main_agent_version )
123
130
agents .append ((main_agent_version , tools_version ))
124
131
125
- return list (set (agents )) # Remove duplicates
132
+ return list (set (agents ))
126
133
127
134
128
135
def detect_ops_manager_changes () -> List [Tuple [str , str ]]:
129
136
"""Returns (has_changes, changed_agents_list)"""
130
- print ("=== Detecting OM Mapping Changes (Local vs Base) ===" )
137
+ logger . info ("=== Detecting OM Mapping Changes (Local vs Base) ===" )
131
138
132
139
current_release = load_current_release_json ()
133
140
if not current_release :
134
- print ( "ERROR: Could not load current local release.json" )
141
+ logger . error ( " Could not load current local release.json" )
135
142
return []
136
143
137
144
master_release = load_release_json_from_master ()
138
145
if not master_release :
139
- print ( "WARNING: Could not load base release.json, assuming changes exist" )
146
+ logger . warning ( " Could not load base release.json, assuming changes exist" )
140
147
return []
141
148
142
149
current_mapping = extract_ops_manager_mapping (current_release )
0 commit comments