File: //opt/node_api/edac_detail.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os.path
import re
import json
edac_data = {}
edac_data['path'] = {}
edac_data['slot'] = {}
edac_data['error_count'] = {}
i = 0
if os.path.exists('/sys/devices/system/edac/mc'):
data = \
os.popen('ls /sys/devices/system/edac/mc/mc*/*/*ce_count 2>/dev/null').read().strip().split('\n')
for slot in data:
if os.path.exists(slot):
file = open(slot, 'r').read().strip()
if file > '0':
edac_data['path'][i] = slot
path = re.search('^(.*)\/(.*)_ce_count$', slot, re.M | re.I)
if path:
label = os.popen('ls ' + path.group(1) + '/*_label 2>/dev/null').read().strip().split('\n')
edac_data['slot'][i] = open(label[0], 'r').read().strip()
edac_data['error_count'][i] = file
i += 1
edac_data['Manufacturer'] = \
os.popen('dmidecode -t 2 |grep -E "Manufacturer"|cut -d: -f2'
).read().strip()
edac_data['Model'] = \
os.popen('dmidecode -t 2 |grep -E "Product Name"|cut -d: -f2'
).read().strip()
print json.dumps(edac_data)