Merge "Adapt to the inspector api signature"
This commit is contained in:
commit
6bdc8ca7d7
@ -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.
|
||||
|
@ -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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user