Skip to content

Commit

Permalink
Replace subprocess getstatusoutput to subprocess run
Browse files Browse the repository at this point in the history
Signed-off-by: maipbui <[email protected]>
  • Loading branch information
maipbui committed Aug 31, 2022
1 parent 35945c9 commit 24bab7a
Show file tree
Hide file tree
Showing 13 changed files with 167 additions and 130 deletions.
13 changes: 7 additions & 6 deletions device/dell/x86_64-dellemc_n3248pxe_c3338-r0/plugins/fanutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
# Platform-specific FAN status interface for SONiC
#

import commands
import sys
import subprocess

SENSORS_CMD = "docker exec -i pmon /usr/bin/sensors"
SENSORS_CMD = ["docker", "exec", "-i", "pmon", "/usr/bin/sensors"]
DOCKER_SENSORS_CMD = "/usr/bin/sensors"


Expand Down Expand Up @@ -47,10 +47,11 @@ def get_direction(self, idx):
def get_speed(self, idx):
dockerenv = self.isDockerEnv()
if not dockerenv:
status, cmd_output = commands.getstatusoutput(SENSORS_CMD)
else :
status, cmd_output = commands.getstatusoutput(DOCKER_SENSORS_CMD)

p = subprocess.run(SENSORS_CMD, capture_output=True, universal_newlines=True)
status, cmd_output = p.returncode, p.stdout
else:
p = subprocess.run(DOCKER_SENSORS_CMD, capture_output=True, universal_newlines=True)
status, cmd_output = p.returncode, p.stdout
if status:
print('Failed to execute sensors command')
sys.exit(0)
Expand Down
13 changes: 7 additions & 6 deletions device/dell/x86_64-dellemc_n3248pxe_c3338-r0/plugins/psuutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
# Platform-specific PSU status interface for SONiC
#

import commands
import os
import sys
import subprocess

SENSORS_CMD = "docker exec -i pmon /usr/bin/sensors"
SENSORS_CMD = ["docker", "exec", "-i", "pmon", "/usr/bin/sensors"]
DOCKER_SENSORS_CMD = "/usr/bin/sensors"

try:
Expand Down Expand Up @@ -95,10 +95,11 @@ def get_psu_presence(self, index):
def get_sensor(self):
dockerenv = self.isDockerEnv()
if not dockerenv:
status, cmd_output = commands.getstatusoutput(SENSORS_CMD)
else :
status, cmd_output = commands.getstatusoutput(DOCKER_SENSORS_CMD)

p = subprocess.run(SENSORS_CMD, capture_output=True, universal_newlines=True)
status, cmd_output = p.returncode, p.stdout
else:
p = subprocess.run(DOCKER_SENSORS_CMD, capture_output=True, universal_newlines=True)
status, cmd_output = p.returncode, p.stdout
if status:
print('Failed to execute sensors command')
sys.exit(0)
Expand Down
11 changes: 6 additions & 5 deletions device/dell/x86_64-dellemc_n3248te_c3338-r0/plugins/fanutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import subprocess
import sys

SENSORS_CMD = "docker exec -i pmon /usr/bin/sensors"
SENSORS_CMD = ["docker", "exec", "-i", "pmon", "/usr/bin/sensors"]
DOCKER_SENSORS_CMD = "/usr/bin/sensors"


Expand Down Expand Up @@ -47,10 +47,11 @@ def get_direction(self, idx):
def get_speed(self, idx):
dockerenv = self.isDockerEnv()
if not dockerenv:
status, cmd_output = subprocess.getstatusoutput(SENSORS_CMD)
else :
status, cmd_output = subprocess.getstatusoutput(DOCKER_SENSORS_CMD)

p = subprocess.run(SENSORS_CMD, capture_output=True, universal_newlines=True)
status, cmd_output = p.returncode, p.stdout
else:
p = subprocess.run(DOCKER_SENSORS_CMD, capture_output=True, universal_newlines=True)
status, cmd_output = p.returncode, p.stdout
if status:
print('Failed to execute sensors command')
sys.exit(0)
Expand Down
13 changes: 7 additions & 6 deletions device/dell/x86_64-dellemc_n3248te_c3338-r0/plugins/psuutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
# Platform-specific PSU status interface for SONiC
#

import commands
import os
import sys
import subprocess

SENSORS_CMD = "docker exec -i pmon /usr/bin/sensors"
SENSORS_CMD = ["docker", "exec", "-i", "pmon", "/usr/bin/sensors"]
DOCKER_SENSORS_CMD = "/usr/bin/sensors"

try:
Expand Down Expand Up @@ -95,10 +95,11 @@ def get_psu_presence(self, index):
def get_sensor(self):
dockerenv = self.isDockerEnv()
if not dockerenv:
status, cmd_output = commands.getstatusoutput(SENSORS_CMD)
else :
status, cmd_output = commands.getstatusoutput(DOCKER_SENSORS_CMD)

p = subprocess.run(SENSORS_CMD, capture_output=True, universal_newlines=True)
status, cmd_output = p.returncode, p.stdout
else:
p = subprocess.run(DOCKER_SENSORS_CMD, capture_output=True, universal_newlines=True)
status, cmd_output = p.returncode, p.stdout
if status:
print('Failed to execute sensors command')
sys.exit(0)
Expand Down
12 changes: 8 additions & 4 deletions device/dell/x86_64-dellemc_s5212f_c3538-r0/plugins/psuutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
import subprocess

S5212F_MAX_PSUS = 2
IPMI_PSU_DATA = "docker exec -it pmon ipmitool sdr list"
IPMI_PSU_DATA_DOCKER = "ipmitool sdr list"
IPMI_PSU_DATA = ["docker", "exec", "-it", "pmon", "ipmitool", "sdr", "list"]
IPMI_PSU_DATA_DOCKER = ["ipmitool", "sdr", "list"]
PSU_PRESENCE = "PSU{0}_stat"
# Use this for older firmware
# PSU_PRESENCE="PSU{0}_prsnt"
Expand Down Expand Up @@ -44,7 +44,8 @@ def get_pmc_register(self, reg_name):
if dockerenv == True:
ipmi_cmd = IPMI_PSU_DATA_DOCKER

status, ipmi_sdr_list = subprocess.getstatusoutput(ipmi_cmd)
p = subprocess.run(ipmi_cmd, capture_output=True, universal_newlines=True)
status, ipmi_sdr_list = p.returncode, p.stdout

if status:
logging.error('Failed to execute:' + ipmi_sdr_list)
Expand Down Expand Up @@ -91,6 +92,9 @@ def get_psu_presence(self, index):
:param index: An integer, index of the PSU of which to query status
:return: Boolean, True if PSU is plugged, False if not
"""
cmd_status, psu_status = subprocess.getstatusoutput('ipmitool raw 0x04 0x2d ' + hex(0x30 + index) + " | awk '{print substr($0,9,1)}'")
cmd = ["ipmitool", "raw", "0x04", "0x2d", hex(0x30 + index)]
proc = subprocess.run(cmd, capture_output=True, universal_newlines=True)
line = proc.stdout
psu_status = line[8] if len(line) > 8 else ''
return 1 if psu_status == '1' else 0

8 changes: 6 additions & 2 deletions device/dell/x86_64-dellemc_s5224f_c3538-r0/plugins/psuutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ def get_pmc_register(self, reg_name):
if dockerenv == True:
ipmi_cmd = IPMI_PSU_DATA_DOCKER

status, ipmi_sdr_list = subprocess.getstatusoutput(ipmi_cmd)
p = subprocess.run(ipmi_cmd, capture_output=True, universal_newlines=True)
status, ipmi_sdr_list = p.returncode, p.stdout

if status:
logging.error('Failed to execute:' + ipmi_sdr_list)
Expand Down Expand Up @@ -92,6 +93,9 @@ def get_psu_presence(self, index):
:param index: An integer, index of the PSU of which to query status
:return: Boolean, True if PSU is plugged, False if not
"""
cmd_status, psu_status = subprocess.getstatusoutput('ipmitool raw 0x04 0x2d ' + hex(0x30 + index) + " | awk '{print substr($0,9,1)}'")
cmd = ["ipmitool", "raw", "0x04", "0x2d", hex(0x30 + index)]
proc = subprocess.run(cmd, capture_output=True, universal_newlines=True)
line = proc.stdout
psu_status = line[8] if len(line) > 8 else ''
return 1 if psu_status == '1' else 0

48 changes: 26 additions & 22 deletions device/dell/x86_64-dellemc_s5232f_c3538-r0/plugins/psuutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,13 @@
import os.path
import logging
import sys

if sys.version_info[0] < 3:
import commands
else:
import subprocess as commands

import subprocess

S5232F_MAX_PSUS = 2
IPMI_PSU1_DATA = "docker exec -it pmon ipmitool raw 0x04 0x2d 0x31 | awk '{print substr($0,9,1)}'"
IPMI_PSU1_DATA_DOCKER = "ipmitool raw 0x04 0x2d 0x31 | awk '{print substr($0,9,1)}'"
IPMI_PSU2_DATA = "docker exec -it pmon ipmitool raw 0x04 0x2d 0x32 | awk '{print substr($0,9,1)}'"
IPMI_PSU2_DATA_DOCKER = "ipmitool raw 0x04 0x2d 0x32 | awk '{print substr($0,9,1)}'"
IPMI_PSU1_DATA = ["docker", "exec", "-it", "pmon", "ipmitool", "raw", "0x04", "0x2d", "0x31"]
IPMI_PSU1_DATA_DOCKER = ["ipmitool", "raw", "0x04", "0x2d", "0x31"]
IPMI_PSU2_DATA = ["docker", "exec", "-it", "pmon", "ipmitool", "raw", "0x04", "0x2d", "0x32"]
IPMI_PSU2_DATA_DOCKER = ["ipmitool", "raw", "0x04", "0x2d", "0x32"]
PSU_PRESENCE = "PSU{0}_stat"
# Use this for older firmware
# PSU_PRESENCE="PSU{0}_prsnt"
Expand Down Expand Up @@ -52,14 +47,17 @@ def get_pmc_register(self, reg_name):
dockerenv = self.isDockerEnv()
if dockerenv == True:
if index == 1:
status, ipmi_sdr_list = commands.getstatusoutput(IPMI_PSU1_DATA_DOCKER)
p = subprocess.run(IPMI_PSU1_DATA_DOCKER, capture_output=True, universal_newlines=True)
elif index == 2:
status, ipmi_sdr_list = commands.getstatusoutput(IPMI_PSU2_DATA_DOCKER)
p = subprocess.run(IPMI_PSU2_DATA_DOCKER, capture_output=True, universal_newlines=True)
else:
if index == 1:
status, ipmi_sdr_list = commands.getstatusoutput(IPMI_PSU1_DATA)
p = subprocess.run(IPMI_PSU1_DATA, capture_output=True, universal_newlines=True)
elif index == 2:
status, ipmi_sdr_list = commands.getstatusoutput(IPMI_PSU2_DATA)
p = subprocess.run(IPMI_PSU2_DATA, capture_output=True, universal_newlines=True)
status = p.returncode
line = p.stdout.replace('\n', '')
ipmi_sdr_list = line[8] if len(line) > 8 else ''

if status:
logging.error('Failed to execute ipmitool')
Expand Down Expand Up @@ -92,14 +90,17 @@ def get_psu_status(self, index):
dockerenv = self.isDockerEnv()
if dockerenv == True:
if index == 1:
ret_status, ipmi_sdr_list = commands.getstatusoutput(IPMI_PSU1_DATA_DOCKER)
p = subprocess.run(IPMI_PSU1_DATA_DOCKER, capture_output=True, universal_newlines=True)
elif index == 2:
ret_status, ipmi_sdr_list = commands.getstatusoutput(IPMI_PSU2_DATA_DOCKER)
p = subprocess.run(IPMI_PSU2_DATA_DOCKER, capture_output=True, universal_newlines=True)
else:
if index == 1:
ret_status, ipmi_sdr_list = commands.getstatusoutput(IPMI_PSU1_DATA)
p = subprocess.run(IPMI_PSU1_DATA, capture_output=True, universal_newlines=True)
elif index == 2:
ret_status, ipmi_sdr_list = commands.getstatusoutput(IPMI_PSU2_DATA)
p = subprocess.run(IPMI_PSU2_DATA, capture_output=True, universal_newlines=True)
ret_status = p.returncode
line = p.stdout.replace('\n', '')
ipmi_sdr_list = line[8] if len(line) > 8 else ''

if ret_status:
logging.error('Failed to execute ipmitool : ')
Expand All @@ -120,14 +121,17 @@ def get_psu_presence(self, index):
dockerenv = self.isDockerEnv()
if dockerenv == True:
if index == 1:
ret_status, ipmi_sdr_list = commands.getstatusoutput(IPMI_PSU1_DATA_DOCKER)
p = subprocess.run(IPMI_PSU1_DATA_DOCKER, capture_output=True, universal_newlines=True)
elif index == 2:
ret_status, ipmi_sdr_list = commands.getstatusoutput(IPMI_PSU2_DATA_DOCKER)
p = subprocess.run(IPMI_PSU2_DATA_DOCKER, capture_output=True, universal_newlines=True)
else:
if index == 1:
ret_status, ipmi_sdr_list = commands.getstatusoutput(IPMI_PSU1_DATA)
p = subprocess.run(IPMI_PSU1_DATA, capture_output=True, universal_newlines=True)
elif index == 2:
ret_status, ipmi_sdr_list = commands.getstatusoutput(IPMI_PSU2_DATA)
p = subprocess.run(IPMI_PSU2_DATA, capture_output=True, universal_newlines=True)
ret_status = p.returncode
line = p.stdout.replace('\n', '')
ipmi_sdr_list = line[8] if len(line) > 8 else ''

if ret_status:
logging.error('Failed to execute ipmitool : ')
Expand Down
13 changes: 5 additions & 8 deletions device/dell/x86_64-dellemc_s5248f_c3538-r0/plugins/psuutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,12 @@
import os.path
import logging
import sys

if sys.version_info[0] < 3:
import commands
else:
import subprocess as commands
import subprocess


S5248F_MAX_PSUS = 2
IPMI_PSU_DATA = "docker exec -it pmon ipmitool sdr list"
IPMI_PSU_DATA_DOCKER = "ipmitool sdr list"
IPMI_PSU_DATA = ["docker", "exec", "-it", "pmon", "ipmitool", "sdr", "list"]
IPMI_PSU_DATA_DOCKER = ["ipmitool", "sdr", "list"]
PSU_PRESENCE = "PSU{0}_stat"
# Use this for older firmware
# PSU_PRESENCE="PSU{0}_prsnt"
Expand Down Expand Up @@ -53,7 +49,8 @@ def get_pmc_register(self, reg_name):
if dockerenv == True:
ipmi_cmd = IPMI_PSU_DATA_DOCKER

status, ipmi_sdr_list = commands.getstatusoutput(ipmi_cmd)
p = subprocess.run(ipmi_cmd, capture_output=True, universal_newlines=True)
status, ipmi_sdr_list = p.returncode, p.stdout

if status:
logging.error('Failed to execute:' + ipmi_sdr_list)
Expand Down
19 changes: 9 additions & 10 deletions device/dell/x86_64-dellemc_s5296f_c3538-r0/plugins/psuutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,12 @@

import logging
import sys

if sys.version_info[0] < 3:
import commands
else:
import subprocess as commands
import subprocess


S5296F_MAX_PSUS = 2
IPMI_PSU_DATA = "docker exec -it pmon ipmitool sdr list"
IPMI_PSU_DATA_DOCKER = "ipmitool sdr list"
IPMI_PSU_DATA = ["docker", "exec", "-it", "pmon", "ipmitool", "sdr", "list"]
IPMI_PSU_DATA_DOCKER = ["ipmitool", "sdr", "list"]
PSU_PRESENCE = "PSU{0}_stat"
# Use this for older firmware
# PSU_PRESENCE="PSU{0}_prsnt"
Expand Down Expand Up @@ -50,7 +46,8 @@ def get_pmc_register(self, reg_name):
if dockerenv == True:
ipmi_cmd = IPMI_PSU_DATA_DOCKER

status, ipmi_sdr_list = commands.getstatusoutput(ipmi_cmd)
p = subprocess.run(ipmi_cmd, capture_output=True, universal_newlines=True)
status, ipmi_sdr_list = p.returncode, p.stdout

if status:
logging.error('Failed to execute:' + ipmi_sdr_list)
Expand Down Expand Up @@ -97,6 +94,8 @@ def get_psu_presence(self, index):
:param index: An integer, index of the PSU of which to query status
:return: Boolean, True if PSU is plugged, False if not
"""
cmd_status, psu_status = commands.getstatusoutput(
'ipmitool raw 0x04 0x2d ' + hex(0x30 + index) + " | awk '{print substr($0,9,1)}'")
cmd = ["ipmitool", "raw", "0x04", "0x2d", hex(0x30 + index)]
p = subprocess.run(cmd, capture_output=True, universal_newlines=True)
line = p.stdout.replace('\n', '')
psu_status = line[8] if len(line) > 8 else ''
return 1 if psu_status == '1' else 0
13 changes: 5 additions & 8 deletions device/dell/x86_64-dellemc_z9264f_c3538-r0/plugins/psuutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,12 @@
import os.path
import logging
import sys

if sys.version_info[0] < 3:
import commands
else:
import subprocess as commands
import subprocess


Z9264F_MAX_PSUS = 2
IPMI_PSU_DATA = "docker exec -it pmon ipmitool sdr list"
IPMI_PSU_DATA_DOCKER = "ipmitool sdr list"
IPMI_PSU_DATA = ["docker", "exec", "-it", "pmon", "ipmitool", "sdr", "list"]
IPMI_PSU_DATA_DOCKER = ["ipmitool", "sdr", "list"]
PSU_PRESENCE = "PSU{0}_state"
# Use this for older firmware
# PSU_PRESENCE="PSU{0}_prsnt"
Expand Down Expand Up @@ -53,7 +49,8 @@ def get_pmc_register(self, reg_name):
if dockerenv == True:
ipmi_cmd = IPMI_PSU_DATA_DOCKER

status, ipmi_sdr_list = commands.getstatusoutput(ipmi_cmd)
p = subprocess.run(ipmi_cmd, capture_output=True, universal_newlines=True)
status, ipmi_sdr_list = p.returncode, p.stdout

if status:
logging.error('Failed to execute:' + ipmi_sdr_list)
Expand Down
Loading

0 comments on commit 24bab7a

Please sign in to comment.