7
7
import os .path
8
8
import logging
9
9
import commands
10
+ import sys
10
11
11
12
12
13
Z9264F_MAX_PSUS = 2
13
- IPMI_SENSOR_DATA = "docker exec -it pmon ipmitool sdr list"
14
+ IPMI_PSU_DATA = "docker exec -it pmon ipmitool sdr list"
15
+ IPMI_PSU_DATA_DOCKER = "ipmitool sdr list"
14
16
PSU_PRESENCE = "PSU{0}_state"
15
17
# Use this for older firmware
16
18
# PSU_PRESENCE="PSU{0}_prsnt"
@@ -29,14 +31,24 @@ class PsuUtil(PsuBase):
29
31
def __init__ (self ):
30
32
PsuBase .__init__ (self )
31
33
34
+ def isDockerEnv (self ):
35
+ num_docker = open ('/proc/self/cgroup' , 'r' ).read ().count (":/docker" )
36
+ if num_docker > 0 :
37
+ return True
38
+ else :
39
+ return False
40
+
32
41
# Fetch a BMC register
33
42
def get_pmc_register (self , reg_name ):
34
43
35
44
status = 1
36
45
global ipmi_sdr_list
37
46
ipmi_dev_node = "/dev/pmi0"
47
+ ipmi_cmd = IPMI_PSU_DATA
48
+ dockerenv = self .isDockerEnv ()
49
+ if dockerenv == True :
50
+ ipmi_cmd = IPMI_PSU_DATA_DOCKER
38
51
39
- ipmi_cmd = IPMI_SENSOR_DATA
40
52
status , ipmi_sdr_list = commands .getstatusoutput (ipmi_cmd )
41
53
42
54
if status :
@@ -48,16 +60,14 @@ def get_pmc_register(self, reg_name):
48
60
output = item .strip ()
49
61
50
62
if not output :
51
- print ('\n Failed to fetch: ' + reg_name + ' sensor ' )
63
+ print ('\n Failed to fetch: ' + reg_name + ' sensor ' )
52
64
sys .exit (0 )
53
65
54
66
output = output .split ('|' )[1 ]
55
67
56
68
logging .basicConfig (level = logging .DEBUG )
57
69
return output
58
70
59
-
60
-
61
71
def get_num_psus (self ):
62
72
"""
63
73
Retrieves the number of PSUs available on the device
@@ -74,11 +84,10 @@ def get_psu_status(self, index):
74
84
:return: Boolean, True if PSU is operating properly, False if PSU is\
75
85
faulty
76
86
"""
77
- #Until psu_status is implemented this is hardcoded temporarily
87
+ # Until psu_status is implemented this is hardcoded temporarily
78
88
79
89
status = 1
80
90
return status
81
-
82
91
83
92
def get_psu_presence (self , index ):
84
93
"""
@@ -89,9 +98,10 @@ def get_psu_presence(self, index):
89
98
"""
90
99
status = 0
91
100
psu_reg_name = PSU_PRESENCE .format (index )
92
- psu_status = int (self .get_pmc_register (psu_reg_name ),16 )
101
+ psu_status = int (self .get_pmc_register (psu_reg_name ), 16 )
93
102
if (psu_status != 'ERR' ):
94
103
# Check for PSU presence
95
104
if (psu_status ):
96
105
status = 1
97
106
return status
107
+
0 commit comments