Add support for psutil v1 as well as v2

Openstack global requirements updated to specify version 1 only, and we
only supported version 2.

Change-Id: Iee97e4b14cae00238028ef936d2f96fbc8e2604c
This commit is contained in:
Jay Faulkner
2014-07-29 13:25:27 -07:00
parent 83782018f7
commit 39819644e5
2 changed files with 16 additions and 5 deletions

View File

@@ -193,6 +193,14 @@ class GenericHardwareManager(HardwareManager):
for name in iface_names
if self._is_device(name)]
def _get_cpu_count(self):
if psutil.version_info[0] == 1:
return psutil.NUM_CPUS
elif psutil.version_info[0] == 2:
return psutil.cpu_count()
else:
raise AttributeError("Only psutil versions 1 and 2 supported")
def get_cpus(self):
model = None
freq = None
@@ -206,11 +214,14 @@ class GenericHardwareManager(HardwareManager):
if not freq and line.startswith('cpu MHz'):
freq = line.split(':')[1].strip()
return CPU(model, freq, psutil.cpu_count())
return CPU(model, freq, self._get_cpu_count())
def get_memory(self):
# psutil returns a long, force it to an int
return Memory(int(psutil.phymem_usage().total))
# psutil returns a long, so we force it to an int
if psutil.version_info[0] == 1:
return Memory(int(psutil.TOTAL_PHYMEM))
elif psutil.version_info[0] == 2:
return Memory(int(psutil.phymem_usage().total))
def list_block_devices(self):
"""List all physical block devices

View File

@@ -26,7 +26,6 @@ if six.PY2:
else:
OPEN_FUNCTION_NAME = 'builtins.open'
HDPARM_INFO_TEMPLATE = (
'/dev/sda:\n'
'\n'
@@ -200,7 +199,8 @@ class TestGenericHardwareManager(test_base.BaseTestCase):
mocked_execute.assert_called_once_with(
'lsblk', '-PbdioKNAME,MODEL,SIZE,ROTA,TYPE', check_exit_code=[0])
@mock.patch('psutil.cpu_count')
@mock.patch('ironic_python_agent.hardware.GenericHardwareManager.'
'_get_cpu_count')
@mock.patch(OPEN_FUNCTION_NAME)
def test_get_cpus(self, mocked_open, mocked_cpucount):
mocked_open.return_value.__enter__ = lambda s: s