Adding fix for nic_capacity calculation

This commits resolve calculation of nic_capacity bug
which gave CalledProcessError.

Change-Id: If64ad3a05a7cea9dd1c00e7f94a6ca0480a65d6c
Closes-bug: 1824510
This commit is contained in:
ankit 2019-04-12 10:10:21 +00:00
parent 86ef3b47b4
commit 62bf220e57
3 changed files with 32 additions and 7 deletions

View File

@ -25,6 +25,10 @@ DRIVER.
import subprocess
from proliantutils import log
LOG = log.get_logger(__name__)
MIN_SUGGESTED_FW_REV = 2.3
DEFAULT_FW_REV = 2.1
@ -47,7 +51,12 @@ def _exec_ipmitool(driver_info, command):
out = None
try:
out = subprocess.check_output(ipmi_cmd, shell=True)
process = subprocess.Popen(ipmi_cmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell=True)
out, err = process.communicate()
LOG.debug(("IPMI Command output: %(out)s and "
"IPMI Command error: %(err)s and returncode: (code)s"),
{'out': out, 'err': err, 'code': process.returncode})
except Exception:
pass
return out

View File

@ -16,6 +16,20 @@
"""Test Utils for iLO test modules."""
NIC_FRU_OUT_TUPLE = ((
"Board Mfg Date : Mon Apr 28 23:16:00 2014\n"
"Board Mfg : HP\n"
"Board Product : HP Ethernet 1Gb 4-port 331FLR Adapter\n"
"Board Serial : CN84170RX5\n"
"Board Part Number : 634025-001\n"
"Board Extra : d23041\n"
"Board Extra : d5629133b001\n"
"Product Manufacturer : HP\n"
"Product Name : HP Ethernet 1Gb 4-port 331FLR Adapter\n"
"Product Part Number : 629135-B21\n"
"Product Version : 00\n"
"Product Serial : CN84170RX5"), None)
NIC_FRU_OUT = (
"Board Mfg Date : Mon Apr 28 23:16:00 2014\n"
"Board Mfg : HP\n"

View File

@ -157,17 +157,19 @@ class IloIpmiTestCase(unittest.TestCase):
self.assertEqual(ipmi_mock.call_count, 9)
self.assertEqual(expected_out, actual_out)
@mock.patch.object(subprocess, 'check_output')
def test__exec_ipmitool(self, check_mock):
check_mock.return_value = constants.NIC_FRU_OUT
@mock.patch.object(subprocess, 'Popen')
def test__exec_ipmitool(self, popen_mock):
pro_obj = mock.MagicMock()
popen_mock.return_value = pro_obj
pro_obj.communicate.return_value = constants.NIC_FRU_OUT_TUPLE
expected_output = constants.NIC_FRU_OUT
cmd = "fru print 0x64"
actual_out = ipmi._exec_ipmitool(self.info, cmd)
self.assertEqual(expected_output, actual_out)
@mock.patch.object(subprocess, 'check_output')
def test__exec_ipmitool_none(self, check_mock):
check_mock.side_effect = Exception
@mock.patch.object(subprocess, 'Popen')
def test__exec_ipmitool_none(self, popen_mock):
popen_mock.side_effect = Exception
cmd = "fru print 0x2"
actual_out = ipmi._exec_ipmitool(self.info, cmd)
self.assertIsNone(actual_out)