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