@@ -50,19 +50,11 @@ def readSensorsConfigFromMMSDRFS(logger=None):
50
50
with open (mmsdrfsFile ) as f :
51
51
data = data .join ([line .split (":" )[4 ] for line in f if "PERFMONCFG" in line ])
52
52
except (Exception , IOError ) as error :
53
- logger .error ("failed trying read %s with reason: %s" , mmsdrfsFile , error )
53
+ logger .details ("failed trying read %s with reason: %s" , mmsdrfsFile , error )
54
54
return []
55
55
56
- sensors = []
57
- sensorsStr = data [data .find ("sensors" ):data .find ("smbstat" )]
58
- sensorsList = re .findall ('(?P<sensor>{.*?})' , sensorsStr )
59
- for sensorString in sensorsList :
60
- sensorAttr = re .findall (r'(?P<name>\w+) = (?P<value>\"[\S]*\"|\d+)' , sensorString )
61
- d = {}
62
- for attr in sensorAttr :
63
- d [attr [0 ]] = attr [1 ]
64
- sensors .append (d )
65
- return sensors
56
+ # parse config file in a list of dictionaries format
57
+ return parseSensorsConfig (data , logger )
66
58
67
59
68
60
def readSensorsConfig (logger = None ):
@@ -73,7 +65,7 @@ def readSensorsConfig(logger=None):
73
65
logger = SysmonLogger .getLogger (__name__ )
74
66
75
67
if not os .path .isfile (zimonFile ):
76
- logger .error ("ZiMon sensor configuration file not found (%s) " , zimonFile )
68
+ logger .details ("ZiMon sensor configuration file not found (%s) " , zimonFile )
77
69
print ("ZiMon sensor configuration file not found" )
78
70
raise OSError (2 , 'No such file or directory' , zimonFile )
79
71
@@ -83,19 +75,29 @@ def readSensorsConfig(logger=None):
83
75
with open (zimonFile ) as myfile :
84
76
data = myfile .read ().replace ('\n ' , '' )
85
77
except (Exception , IOError ) as error :
86
- logger .error ("failed trying read %s with reason: %s" , zimonFile , error )
78
+ logger .details ("failed trying read %s with reason: %s" , zimonFile , error )
87
79
return []
80
+ # parse config file in a list of dictionaries format
81
+ return parseSensorsConfig (data , logger )
88
82
89
- sensors = []
90
- sensorsStr = data [data .find ("sensors" ):data .find ("smbstat" )]
91
- sensorsList = re .findall ('(?P<sensor>{.*?})' , sensorsStr )
92
- for sensorString in sensorsList :
93
- sensorAttr = re .findall (r'(?P<name>\w+) = (?P<value>\"[\S]*\"|\d+)' , sensorString )
94
- d = {}
95
- for attr in sensorAttr :
96
- d [attr [0 ]] = attr [1 ]
97
- sensors .append (d )
98
- return sensors
83
+
84
+ def parseSensorsConfig (sensorsConfig , logger ):
85
+ """ Returns a list of dicts, describing definitions of sensors """
86
+ logger .debug ("invoke parseSensorsConfig" )
87
+ try :
88
+ sensors = []
89
+ sensorsStr = sensorsConfig [sensorsConfig .find ("sensors" ):sensorsConfig .find ("smbstat" )]
90
+ sensorsList = re .findall ('(?P<sensor>{.*?})(?:,|$)' , sensorsStr )
91
+ for sensorString in sensorsList :
92
+ sensorAttr = re .findall (r'(?P<name>\w+) = (?P<value>\"\S*\"|\d+)' , sensorString )
93
+ d = {}
94
+ for attr in sensorAttr :
95
+ d [attr [0 ]] = attr [1 ]
96
+ sensors .append (d )
97
+ return sensors
98
+ except (Exception , IOError ) as error :
99
+ logger .details ("failed parsing sensors config content with reason: %s" , error )
100
+ return []
99
101
100
102
101
103
def getCollectorPorts (logger = None ):
0 commit comments