Adapt to the inspector api signature

All of the inspector interface methods takes in instance being
inspected and duration of seconds over which metric needs to be
calculated. Though the duration parameter is not used, the
method signaures need to be updated to match ceilometer
changes [1].

[1] 90560e42fd1b589ebb03b8629cf591dee8e559a6

Change-Id: I3ad8da0dc9cd26e269bf18f26231063d122faf98
This commit is contained in:
Gautam Prasad 2019-03-13 01:41:41 -04:00
parent 7bf69d7bee
commit e8c77a02e0
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.