Merge "Adapt to the inspector api signature"

This commit is contained in:
Zuul 2019-03-28 04:37:57 +00:00 committed by Gerrit Code Review
commit 6bdc8ca7d7
2 changed files with 50 additions and 34 deletions

View File

@ -1,4 +1,4 @@
# Copyright 2015, 2017 IBM Corp.
# Copyright 2015, 2019 IBM Corp.
#
# All Rights Reserved.
#
@ -83,7 +83,7 @@ class PowerVMInspector(virt_inspector.Inspector):
LOG.debug("Host UUID: %s" % hosts[0].uuid)
return hosts[0].uuid
def inspect_instance(self, instance, duration=None):
def inspect_instance(self, instance, duration):
"""Inspect the statistics for an instance.
:param instance: the target instance
@ -225,10 +225,15 @@ class PowerVMInspector(virt_inspector.Inspector):
child_type=pvm_net.CNA.schema_type)
return pvm_net.CNA.wrap(client_cna_resp)
def inspect_vnics(self, instance):
def inspect_vnics(self, instance, duration):
"""Inspect the vNIC statistics for an instance.
:param instance: the target instance
:param duration: the last 'n' seconds, over which the value should be
inspected.
The PowerVM implementation does not make use of the duration
field.
:return: for each vNIC, the number of bytes & packets
received and transmitted
"""
@ -277,7 +282,7 @@ class PowerVMInspector(virt_inspector.Inspector):
tx_drop=0,
tx_errors=0)
def inspect_vnic_rates(self, instance, duration=None):
def inspect_vnic_rates(self, instance, duration):
"""Inspect the vNIC rate statistics for an instance.
:param instance: the target instance
@ -358,12 +363,17 @@ class PowerVMInspector(virt_inspector.Inspector):
mac=mac, fref=None, parameters=None,
rx_bytes_rate=rx_rate, tx_bytes_rate=tx_rate)
def inspect_disks(self, instance):
def inspect_disks(self, instance, duration):
"""Inspect the disk statistics for an instance.
The response is a generator of the values.
:param instance: the target instance
:param duration: the last 'n' seconds, over which the value should be
inspected.
The PowerVM implementation does not make use of the duration
field.
:return disk: The Disk indicating the device for the storage device.
:return stats: The DiskStats indicating the read/write data to the
device.
@ -400,12 +410,17 @@ class PowerVMInspector(virt_inspector.Inspector):
write_bytes=adpt.write_bytes, errors=0, wr_total_times=0,
rd_total_times=0)
def inspect_disk_iops(self, instance):
def inspect_disk_iops(self, instance, duration):
"""Inspect the Disk Input/Output operations per second for an instance.
The response is a generator of the values.
:param instance: the target instance
:param duration: the last 'n' seconds, over which the value should be
inspected.
The PowerVM implementation does not make use of the duration
field.
:return disk: The Disk indicating the device for the storage device.
:return stats: The DiskIOPSStats indicating the I/O operations per
second for the device.

View File

@ -1,4 +1,4 @@
# Copyright 2015, 2017 IBM Corp.
# Copyright 2015, 2019 IBM Corp.
#
# All Rights Reserved.
#
@ -85,7 +85,7 @@ class TestPowerVMInspector(base.BaseTestCase):
# in the sample
self.mock_metrics.get_latest_metric.return_value = None, None
self.assertRaises(virt_inspector.InstanceNotFoundException,
self.inspector.inspect_instance, mock.Mock())
self.inspector.inspect_instance, mock.Mock(), None)
def mock_metric(util_cap, util_uncap, idle, donated, entitled):
"""Helper method to create mock proc metrics."""
@ -103,7 +103,7 @@ class TestPowerVMInspector(base.BaseTestCase):
self.mock_metrics.get_latest_metric.return_value = (
mock.Mock(), mock_metric(7000, 50, 1000, 5000, 10000))
self.mock_metrics.get_previous_metric.return_value = None, None
resp = self.inspector.inspect_instance(mock.Mock())
resp = self.inspector.inspect_instance(mock.Mock(), None)
self.assertEqual(7050, resp.cpu_time)
self.assertEqual(12, resp.cpu_number)
@ -114,7 +114,7 @@ class TestPowerVMInspector(base.BaseTestCase):
self.mock_metrics.get_previous_metric.return_value = mock.Mock(), prev
# Execute and validate
resp = self.inspector.inspect_instance(mock.Mock())
resp = self.inspector.inspect_instance(mock.Mock(), None)
self.assertEqual(.5, resp.cpu_util)
# Mock an instance with a dedicated processor, but idling and donating
@ -126,7 +126,7 @@ class TestPowerVMInspector(base.BaseTestCase):
self.mock_metrics.get_previous_metric.return_value = mock.Mock(), prev
# Execute and validate
resp = self.inspector.inspect_instance(mock.Mock())
resp = self.inspector.inspect_instance(mock.Mock(), None)
self.assertEqual(51.0, resp.cpu_util)
# Mock an instance with a shared processor. By nature, this doesn't
@ -138,7 +138,7 @@ class TestPowerVMInspector(base.BaseTestCase):
self.mock_metrics.get_previous_metric.return_value = mock.Mock(), prev
# Execute and validate
resp = self.inspector.inspect_instance(mock.Mock())
resp = self.inspector.inspect_instance(mock.Mock(), None)
self.assertEqual(80.0, resp.cpu_util)
# Mock an instance with a shared processor - but using cycles from
@ -151,7 +151,7 @@ class TestPowerVMInspector(base.BaseTestCase):
# Execute and validate. This should be running at 300% CPU
# utilization. Fast!
resp = self.inspector.inspect_instance(mock.Mock())
resp = self.inspector.inspect_instance(mock.Mock(), None)
self.assertEqual(300.0, resp.cpu_util)
# Mock an instance that hasn't been started yet.
@ -161,7 +161,7 @@ class TestPowerVMInspector(base.BaseTestCase):
self.mock_metrics.get_previous_metric.return_value = mock.Mock(), prev
# This should have 0% utilization
resp = self.inspector.inspect_instance(mock.Mock())
resp = self.inspector.inspect_instance(mock.Mock(), None)
self.assertEqual(0.0, resp.cpu_util)
@staticmethod
@ -211,15 +211,16 @@ class TestPowerVMInspector(base.BaseTestCase):
# Validate that an error is raised if the instance can't be found in
# the sample data.
self.mock_metrics.get_latest_metric.return_value = None, None
self.assertRaises(virt_inspector.InstanceNotFoundException,
list, self.inspector.inspect_vnics(mock.Mock()))
self.assertRaises(virt_inspector.InstanceNotFoundException, list,
self.inspector.inspect_vnics(mock.Mock(), None))
# Validate that no data is returned if there is a current metric,
# just no network within it.
mock_empty_net = mock.MagicMock()
mock_empty_net.network = None
self.mock_metrics.get_latest_metric.return_value = None, mock_empty_net
self.assertEqual([], list(self.inspector.inspect_vnics(mock.Mock())))
self.assertEqual(
[], list(self.inspector.inspect_vnics(mock.Mock(), None)))
# Build a couple CNAs and verify we get the proper list back
mock_wrap.return_value = self._build_mock_cnas()
@ -227,7 +228,7 @@ class TestPowerVMInspector(base.BaseTestCase):
mock_metrics = self._build_cur_mock_vnic_metrics()
self.mock_metrics.get_latest_metric.return_value = None, mock_metrics
resp = list(self.inspector.inspect_vnics(mock.Mock()))
resp = list(self.inspector.inspect_vnics(mock.Mock(), None))
self.assertEqual(3, len(resp))
stats1 = resp[0]
@ -249,16 +250,16 @@ class TestPowerVMInspector(base.BaseTestCase):
# the sample data.
self.mock_metrics.get_latest_metric.return_value = None, None
self.mock_metrics.get_previous_metric.return_value = None, None
self.assertRaises(virt_inspector.InstanceNotFoundException,
list, self.inspector.inspect_vnic_rates(mock.Mock()))
self.assertRaises(virt_inspector.InstanceNotFoundException, list,
self.inspector.inspect_vnic_rates(mock.Mock(), None))
# Validate that no data is returned if there is a current metric,
# just no network within it.
mock_empty_net = mock.MagicMock()
mock_empty_net.network = None
self.mock_metrics.get_latest_metric.return_value = None, mock_empty_net
self.assertEqual([],
list(self.inspector.inspect_vnic_rates(mock.Mock())))
self.assertEqual(
[], list(self.inspector.inspect_vnic_rates(mock.Mock(), None)))
# Build the response LPAR data
mock_wrap.return_value = self._build_mock_cnas()
@ -276,7 +277,7 @@ class TestPowerVMInspector(base.BaseTestCase):
mock_prev)
# Execute
resp = list(self.inspector.inspect_vnic_rates(mock.Mock()))
resp = list(self.inspector.inspect_vnic_rates(mock.Mock(), None))
self.assertEqual(3, len(resp))
# First metric. No delta
@ -335,15 +336,15 @@ class TestPowerVMInspector(base.BaseTestCase):
# the sample data.
self.mock_metrics.get_latest_metric.return_value = None, None
self.mock_metrics.get_previous_metric.return_value = None, None
self.assertRaises(virt_inspector.InstanceNotFoundException,
list, self.inspector.inspect_disk_iops(mock.Mock()))
self.assertRaises(virt_inspector.InstanceNotFoundException, list,
self.inspector.inspect_disk_iops(mock.Mock(), None))
# Validate that no data is returned if there is a current metric,
# just no storage within it.
mock_empty_st = mock.MagicMock(storage=None)
self.mock_metrics.get_latest_metric.return_value = None, mock_empty_st
self.assertEqual([],
list(self.inspector.inspect_disk_iops(mock.Mock())))
self.assertEqual(
[], list(self.inspector.inspect_disk_iops(mock.Mock(), None)))
# Current metric data
mock_cur = self._build_cur_mock_stor_metrics()
@ -351,8 +352,8 @@ class TestPowerVMInspector(base.BaseTestCase):
self.mock_metrics.get_latest_metric.return_value = cur_date, mock_cur
# Validate that if there is no previous data, get no data back.
self.assertEqual([],
list(self.inspector.inspect_disk_iops(mock.Mock())))
self.assertEqual(
[], list(self.inspector.inspect_disk_iops(mock.Mock(), None)))
# Build the previous
mock_prev = self._build_prev_mock_stor_metrics()
@ -361,7 +362,7 @@ class TestPowerVMInspector(base.BaseTestCase):
mock_prev)
# Execute
resp = list(self.inspector.inspect_disk_iops(mock.Mock()))
resp = list(self.inspector.inspect_disk_iops(mock.Mock(), None))
self.assertEqual(3, len(resp))
# Two vSCSI's
@ -383,15 +384,15 @@ class TestPowerVMInspector(base.BaseTestCase):
# Validate that an error is raised if the instance can't be found in
# the sample data.
self.mock_metrics.get_latest_metric.return_value = None, None
self.assertRaises(virt_inspector.InstanceNotFoundException,
list, self.inspector.inspect_disks(mock.Mock()))
self.assertRaises(virt_inspector.InstanceNotFoundException, list,
self.inspector.inspect_disks(mock.Mock(), None))
# Validate that no data is returned if there is a current metric,
# just no storage within it.
mock_empty_st = mock.MagicMock(storage=None)
self.mock_metrics.get_latest_metric.return_value = None, mock_empty_st
self.assertEqual([],
list(self.inspector.inspect_disks(mock.Mock())))
list(self.inspector.inspect_disks(mock.Mock(), None)))
# Current metric data
mock_cur = self._build_cur_mock_stor_metrics()
@ -399,7 +400,7 @@ class TestPowerVMInspector(base.BaseTestCase):
self.mock_metrics.get_latest_metric.return_value = cur_date, mock_cur
# Execute
resp = list(self.inspector.inspect_disks(mock.Mock()))
resp = list(self.inspector.inspect_disks(mock.Mock(), None))
self.assertEqual(3, len(resp))
# Two vSCSIs.