4
4
#
5
5
6
6
7
- import os .path
8
7
import logging
9
8
import sys
10
-
11
- if sys .version_info [0 ] < 3 :
12
- import commands
13
- else :
14
- import subprocess as commands
15
-
9
+ from sonic_py_common .general import getstatusoutput_noshell_pipe
16
10
17
11
S5232F_MAX_PSUS = 2
18
- IPMI_PSU1_DATA = "docker exec -it pmon ipmitool raw 0x04 0x2d 0x31 | awk '{print substr($0,9,1)}'"
19
- IPMI_PSU1_DATA_DOCKER = "ipmitool raw 0x04 0x2d 0x31 | awk '{print substr($0,9,1)}'"
20
- IPMI_PSU2_DATA = "docker exec -it pmon ipmitool raw 0x04 0x2d 0x32 | awk '{print substr($0,9,1)}'"
21
- IPMI_PSU2_DATA_DOCKER = "ipmitool raw 0x04 0x2d 0x32 | awk '{print substr($0,9,1)}'"
12
+ IPMI_PSU1_DATA = [ "docker" , " exec" , " -it" , " pmon" , " ipmitool" , " raw" , " 0x04" , " 0x2d" , " 0x31" ]
13
+ IPMI_PSU1_DATA_DOCKER = [ "ipmitool" , " raw" , " 0x04" , " 0x2d" , " 0x31" ]
14
+ IPMI_PSU2_DATA = [ "docker" , " exec" , " -it" , " pmon" , " ipmitool" , " raw" , " 0x04" , " 0x2d" , " 0x32" ]
15
+ IPMI_PSU2_DATA_DOCKER = [ "ipmitool" , " raw" , " 0x04" , " 0x2d" , " 0x32" ]
22
16
PSU_PRESENCE = "PSU{0}_stat"
17
+ awk_cmd = ['awk' , '{print substr($0,9,1)}' ]
23
18
# Use this for older firmware
24
19
# PSU_PRESENCE="PSU{0}_prsnt"
25
20
@@ -44,23 +39,24 @@ def isDockerEnv(self):
44
39
return False
45
40
46
41
# Fetch a BMC register
47
- def get_pmc_register (self , reg_name ):
42
+ def get_pmc_register (self , index ):
48
43
49
44
status = 1
50
- ipmi_cmd_1 = IPMI_PSU1_DATA
51
- ipmi_cmd_2 = IPMI_PSU1_DATA
45
+ ipmi_cmd = ''
52
46
dockerenv = self .isDockerEnv ()
53
47
if dockerenv == True :
54
48
if index == 1 :
55
- status , ipmi_sdr_list = commands . getstatusoutput ( IPMI_PSU1_DATA_DOCKER )
49
+ ipmi_cmd = IPMI_PSU1_DATA_DOCKER
56
50
elif index == 2 :
57
- status , ipmi_sdr_list = commands . getstatusoutput ( IPMI_PSU2_DATA_DOCKER )
51
+ ipmi_cmd = IPMI_PSU2_DATA_DOCKER
58
52
else :
59
53
if index == 1 :
60
- status , ipmi_sdr_list = commands . getstatusoutput ( IPMI_PSU1_DATA )
54
+ ipmi_cmd = IPMI_PSU1_DATA
61
55
elif index == 2 :
62
- status , ipmi_sdr_list = commands .getstatusoutput (IPMI_PSU2_DATA )
63
-
56
+ ipmi_cmd = IPMI_PSU2_DATA
57
+ if ipmi_cmd != '' :
58
+ status , ipmi_sdr_list = getstatusoutput_noshell_pipe (ipmi_cmd , awk_cmd )
59
+
64
60
if status :
65
61
logging .error ('Failed to execute ipmitool' )
66
62
sys .exit (0 )
@@ -87,22 +83,25 @@ def get_psu_status(self, index):
87
83
"""
88
84
# Until psu_status is implemented this is hardcoded temporarily
89
85
90
- psu_status = 'f '
86
+ psu_status = ''
91
87
ret_status = 1
88
+ ipmi_cmd = ''
92
89
dockerenv = self .isDockerEnv ()
93
90
if dockerenv == True :
94
91
if index == 1 :
95
- ret_status , ipmi_sdr_list = commands . getstatusoutput ( IPMI_PSU1_DATA_DOCKER )
92
+ ipmi_cmd = IPMI_PSU1_DATA_DOCKER
96
93
elif index == 2 :
97
- ret_status , ipmi_sdr_list = commands . getstatusoutput ( IPMI_PSU2_DATA_DOCKER )
94
+ ipmi_cmd = IPMI_PSU2_DATA_DOCKER
98
95
else :
99
96
if index == 1 :
100
- ret_status , ipmi_sdr_list = commands . getstatusoutput ( IPMI_PSU1_DATA )
97
+ ipmi_cmd = IPMI_PSU1_DATA
101
98
elif index == 2 :
102
- ret_status , ipmi_sdr_list = commands .getstatusoutput (IPMI_PSU2_DATA )
99
+ ipmi_cmd = IPMI_PSU2_DATA
100
+ if ipmi_cmd != '' :
101
+ ret_status , ipmi_sdr_list = getstatusoutput_noshell_pipe (ipmi_cmd , awk_cmd )
103
102
104
103
if ret_status :
105
- logging .error ('Failed to execute ipmitool : ' )
104
+ logging .error ('Failed to execute ipmitool' )
106
105
sys .exit (0 )
107
106
108
107
psu_status = ipmi_sdr_list
@@ -117,20 +116,23 @@ def get_psu_presence(self, index):
117
116
"""
118
117
psu_status = '0'
119
118
ret_status = 1
119
+ ipmi_cmd = ''
120
120
dockerenv = self .isDockerEnv ()
121
121
if dockerenv == True :
122
122
if index == 1 :
123
- ret_status , ipmi_sdr_list = commands . getstatusoutput ( IPMI_PSU1_DATA_DOCKER )
123
+ ipmi_cmd = IPMI_PSU1_DATA_DOCKER
124
124
elif index == 2 :
125
- ret_status , ipmi_sdr_list = commands . getstatusoutput ( IPMI_PSU2_DATA_DOCKER )
125
+ ipmi_cmd = IPMI_PSU2_DATA_DOCKER
126
126
else :
127
127
if index == 1 :
128
- ret_status , ipmi_sdr_list = commands . getstatusoutput ( IPMI_PSU1_DATA )
128
+ ipmi_cmd = IPMI_PSU1_DATA
129
129
elif index == 2 :
130
- ret_status , ipmi_sdr_list = commands .getstatusoutput (IPMI_PSU2_DATA )
130
+ ipmi_cmd = IPMI_PSU2_DATA
131
+ if ipmi_cmd != '' :
132
+ ret_status , ipmi_sdr_list = getstatusoutput_noshell_pipe (ipmi_cmd , awk_cmd )
131
133
132
134
if ret_status :
133
- logging .error ('Failed to execute ipmitool : ' )
135
+ logging .error ('Failed to execute ipmitool' )
134
136
sys .exit (0 )
135
137
136
138
psu_status = ipmi_sdr_list
0 commit comments