diff --git a/ceilometer/cmd/polling.py b/ceilometer/cmd/polling.py
index a7f7d982eb..e61c099ad0 100644
--- a/ceilometer/cmd/polling.py
+++ b/ceilometer/cmd/polling.py
@@ -14,7 +14,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-import os
import shlex
import cotyledon
@@ -89,16 +88,8 @@ def create_polling_service(worker_id, conf=None):
def main():
sm = cotyledon.ServiceManager()
- # On Windows, we can only initialize conf objects in the subprocess.
- # As a consequence, we can't use oslo_config_glue.setup() on Windows,
- # because cotyledon.ServiceManager objects are not picklable.
- if os.name == 'nt':
- LOG.warning("Support for Ceilometer on Windows operating systems is"
- "deprecated.")
- sm.add(create_polling_service)
- else:
- conf = _prepare_config()
- priv_context.init(root_helper=shlex.split(utils._get_root_helper()))
- oslo_config_glue.setup(sm, conf)
- sm.add(create_polling_service, args=(conf,))
+ conf = _prepare_config()
+ priv_context.init(root_helper=shlex.split(utils._get_root_helper()))
+ oslo_config_glue.setup(sm, conf)
+ sm.add(create_polling_service, args=(conf,))
sm.run()
diff --git a/ceilometer/compute/pollsters/disk.py b/ceilometer/compute/pollsters/disk.py
index 1afef2eaaa..90e8fcfca1 100644
--- a/ceilometer/compute/pollsters/disk.py
+++ b/ceilometer/compute/pollsters/disk.py
@@ -58,20 +58,6 @@ class PerDeviceWriteBytesPollster(PerDeviceDiskPollster):
sample_stats_key = 'write_bytes'
-class PerDeviceDiskLatencyPollster(PerDeviceDiskPollster):
- inspector_method = 'inspect_disk_latency'
- sample_name = 'disk.device.latency'
- sample_unit = 'ms'
- sample_stats_key = 'disk_latency'
-
-
-class PerDeviceDiskIOPSPollster(PerDeviceDiskPollster):
- inspector_method = 'inspect_disk_iops'
- sample_name = 'disk.device.iops'
- sample_unit = 'count/s'
- sample_stats_key = 'iops_count'
-
-
class PerDeviceCapacityPollster(PerDeviceDiskPollster):
inspector_method = 'inspect_disk_info'
sample_name = 'disk.device.capacity'
diff --git a/ceilometer/compute/virt/hyperv/__init__.py b/ceilometer/compute/virt/hyperv/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/ceilometer/compute/virt/hyperv/inspector.py b/ceilometer/compute/virt/hyperv/inspector.py
deleted file mode 100644
index 00fb5812fe..0000000000
--- a/ceilometer/compute/virt/hyperv/inspector.py
+++ /dev/null
@@ -1,161 +0,0 @@
-# Copyright 2013 Cloudbase Solutions Srl
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-"""Implementation of Inspector abstraction for Hyper-V"""
-
-import collections
-import functools
-import sys
-import warnings
-
-from os_win import exceptions as os_win_exc
-from os_win import utilsfactory
-from oslo_utils import units
-
-from ceilometer.compute.pollsters import util
-from ceilometer.compute.virt import inspector as virt_inspector
-
-
-def convert_exceptions(exception_map, yields=True):
- expected_exceptions = tuple(exception_map.keys())
-
- def _reraise_exception(exc):
- # exception might be a subclass of an expected exception.
- for expected in expected_exceptions:
- if isinstance(exc, expected):
- raised_exception = exception_map[expected]
- break
-
- exc_info = sys.exc_info()
- exc = raised_exception(str(exc_info[1]))
- raise exc.with_traceback(exc_info[2])
-
- def decorator(function):
- if yields:
- @functools.wraps(function)
- def wrapper(*args, **kwargs):
- try:
- # NOTE(claudiub): We're consuming the function's yield in
- # order to avoid yielding a generator.
- for item in function(*args, **kwargs):
- yield item
- except expected_exceptions as ex:
- _reraise_exception(ex)
- else:
- @functools.wraps(function)
- def wrapper(*args, **kwargs):
- try:
- return function(*args, **kwargs)
- except expected_exceptions as ex:
- _reraise_exception(ex)
-
- return wrapper
- return decorator
-
-
-exception_conversion_map = collections.OrderedDict([
- # NOTE(claudiub): order should be from the most specialized exception type
- # to the most generic exception type.
- # (expected_exception, converted_exception)
- (os_win_exc.NotFound, virt_inspector.InstanceNotFoundException),
- (os_win_exc.OSWinException, virt_inspector.InspectorException),
-])
-
-# NOTE(claudiub): the purpose of the decorators below is to prevent any
-# os_win exceptions (subclasses of OSWinException) to leak outside of the
-# HyperVInspector.
-
-
-class HyperVInspector(virt_inspector.Inspector):
-
- def __init__(self, conf):
- super(HyperVInspector, self).__init__(conf)
- self._utils = utilsfactory.get_metricsutils()
- self._host_max_cpu_clock = self._compute_host_max_cpu_clock()
-
- warnings.warn('Support for HyperV is deprecated.',
- category=DeprecationWarning, stacklevel=2)
-
- def _compute_host_max_cpu_clock(self):
- hostutils = utilsfactory.get_hostutils()
- # host's number of CPUs and CPU clock speed will not change.
- cpu_info = hostutils.get_cpus_info()
- host_cpu_count = len(cpu_info)
- host_cpu_clock = cpu_info[0]['MaxClockSpeed']
-
- return float(host_cpu_clock * host_cpu_count)
-
- @convert_exceptions(exception_conversion_map, yields=False)
- def inspect_instance(self, instance, duration):
- instance_name = util.instance_name(instance)
- (cpu_clock_used,
- cpu_count, uptime) = self._utils.get_cpu_metrics(instance_name)
- cpu_percent_used = cpu_clock_used / self._host_max_cpu_clock
- # Nanoseconds
- cpu_time = (int(uptime * cpu_percent_used) * units.k)
- memory_usage = self._utils.get_memory_metrics(instance_name)
-
- return virt_inspector.InstanceStats(
- cpu_number=cpu_count,
- cpu_time=cpu_time,
- memory_usage=memory_usage)
-
- @convert_exceptions(exception_conversion_map)
- def inspect_vnics(self, instance, duration):
- instance_name = util.instance_name(instance)
- for vnic_metrics in self._utils.get_vnic_metrics(instance_name):
- yield virt_inspector.InterfaceStats(
- name=vnic_metrics["element_name"],
- mac=vnic_metrics["address"],
- fref=None,
- parameters=None,
- rx_bytes=vnic_metrics['rx_mb'] * units.Mi,
- rx_packets=0,
- rx_drop=0,
- rx_errors=0,
- tx_bytes=vnic_metrics['tx_mb'] * units.Mi,
- tx_packets=0,
- tx_drop=0,
- tx_errors=0,
- rx_bytes_delta=0,
- tx_bytes_delta=0)
-
- @convert_exceptions(exception_conversion_map)
- def inspect_disks(self, instance, duration):
- instance_name = util.instance_name(instance)
- for disk_metrics in self._utils.get_disk_metrics(instance_name):
- yield virt_inspector.DiskStats(
- device=disk_metrics['instance_id'],
- read_requests=0,
- # Return bytes
- read_bytes=disk_metrics['read_mb'] * units.Mi,
- write_requests=0,
- write_bytes=disk_metrics['write_mb'] * units.Mi,
- errors=0, wr_total_times=0, rd_total_times=0)
-
- @convert_exceptions(exception_conversion_map)
- def inspect_disk_latency(self, instance, duration):
- instance_name = util.instance_name(instance)
- for disk_metrics in self._utils.get_disk_latency_metrics(
- instance_name):
- yield virt_inspector.DiskLatencyStats(
- device=disk_metrics['instance_id'],
- disk_latency=disk_metrics['disk_latency'] / 1000)
-
- @convert_exceptions(exception_conversion_map)
- def inspect_disk_iops(self, instance, duration):
- instance_name = util.instance_name(instance)
- for disk_metrics in self._utils.get_disk_iops_count(instance_name):
- yield virt_inspector.DiskIOPSStats(
- device=disk_metrics['instance_id'],
- iops_count=disk_metrics['iops_count'])
diff --git a/ceilometer/compute/virt/inspector.py b/ceilometer/compute/virt/inspector.py
index 921bc94472..52437692f2 100644
--- a/ceilometer/compute/virt/inspector.py
+++ b/ceilometer/compute/virt/inspector.py
@@ -27,7 +27,7 @@ OPTS = [
cfg.StrOpt('hypervisor_inspector',
default='libvirt',
help='Inspector to use for inspecting the hypervisor layer. '
- 'Known inspectors are libvirt, hyperv, and vsphere.'),
+ 'Known inspectors are libvirt and vsphere.'),
]
@@ -129,21 +129,6 @@ DiskRateStats = collections.namedtuple('DiskRateStats',
'write_bytes_rate',
'write_requests_rate'])
-# Named tuple representing disk latency statistics.
-#
-# disk_latency: average disk latency
-#
-DiskLatencyStats = collections.namedtuple('DiskLatencyStats',
- ['device', 'disk_latency'])
-
-# Named tuple representing disk iops statistics.
-#
-# iops: number of iops per second
-#
-DiskIOPSStats = collections.namedtuple('DiskIOPSStats',
- ['device', 'iops_count'])
-
-
# Named tuple representing disk Information.
#
# capacity: capacity of the disk
@@ -237,26 +222,6 @@ class Inspector(object):
"""
raise ceilometer.NotImplementedError
- def inspect_disk_latency(self, instance, duration):
- """Inspect the disk statistics as rates for an instance.
-
- :param instance: the target instance
- :param duration: the last 'n' seconds, over which the value should be
- inspected
- :return: for each disk, the average disk latency
- """
- raise ceilometer.NotImplementedError
-
- def inspect_disk_iops(self, instance, duration):
- """Inspect the disk statistics as rates for an instance.
-
- :param instance: the target instance
- :param duration: the last 'n' seconds, over which the value should be
- inspected
- :return: for each disk, the number of iops per second
- """
- raise ceilometer.NotImplementedError
-
def inspect_disk_info(self, instance, duration):
"""Inspect the disk information for an instance.
diff --git a/ceilometer/publisher/data/gnocchi_resources.yaml b/ceilometer/publisher/data/gnocchi_resources.yaml
index 2a22934ced..fd6dd126b6 100644
--- a/ceilometer/publisher/data/gnocchi_resources.yaml
+++ b/ceilometer/publisher/data/gnocchi_resources.yaml
@@ -156,10 +156,8 @@ resources:
archive_policy_name: ceilometer-low-rate
disk.device.write.bytes:
archive_policy_name: ceilometer-low-rate
- disk.device.latency:
disk.device.read.latency:
disk.device.write.latency:
- disk.device.iops:
disk.device.capacity:
disk.device.allocation:
disk.device.usage:
diff --git a/ceilometer/tests/unit/compute/pollsters/test_diskio.py b/ceilometer/tests/unit/compute/pollsters/test_diskio.py
index a56e43b577..f72973038f 100644
--- a/ceilometer/tests/unit/compute/pollsters/test_diskio.py
+++ b/ceilometer/tests/unit/compute/pollsters/test_diskio.py
@@ -164,47 +164,6 @@ class TestDiskPollsters(TestBaseDiskIO):
'disk.device.write.latency', 400, 'vda2')
-class TestDiskLatencyPollsters(TestBaseDiskIO):
-
- DISKS = [
- virt_inspector.DiskLatencyStats("disk1", 1),
- virt_inspector.DiskLatencyStats("disk2", 2)
- ]
- TYPE = 'gauge'
-
- def setUp(self):
- super(TestDiskLatencyPollsters, self).setUp()
- self.inspector.inspect_disk_latency = mock.Mock(
- return_value=self.DISKS)
-
- def test_per_device_latency(self):
- self._check_per_device_samples(disk.PerDeviceDiskLatencyPollster,
- 'disk.device.latency', 1, 'disk1')
-
- self._check_per_device_samples(disk.PerDeviceDiskLatencyPollster,
- 'disk.device.latency', 2, 'disk2')
-
-
-class TestDiskIOPSPollsters(TestBaseDiskIO):
-
- DISKS = [
- virt_inspector.DiskIOPSStats("disk1", 10),
- virt_inspector.DiskIOPSStats("disk2", 20),
- ]
- TYPE = 'gauge'
-
- def setUp(self):
- super(TestDiskIOPSPollsters, self).setUp()
- self.inspector.inspect_disk_iops = mock.Mock(return_value=self.DISKS)
-
- def test_per_device_iops(self):
- self._check_per_device_samples(disk.PerDeviceDiskIOPSPollster,
- 'disk.device.iops', 10, 'disk1')
-
- self._check_per_device_samples(disk.PerDeviceDiskIOPSPollster,
- 'disk.device.iops', 20, 'disk2')
-
-
class TestDiskInfoPollsters(TestBaseDiskIO):
DISKS = [
diff --git a/ceilometer/tests/unit/compute/virt/hyperv/__init__.py b/ceilometer/tests/unit/compute/virt/hyperv/__init__.py
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/ceilometer/tests/unit/compute/virt/hyperv/test_inspector.py b/ceilometer/tests/unit/compute/virt/hyperv/test_inspector.py
deleted file mode 100644
index e01ae2e862..0000000000
--- a/ceilometer/tests/unit/compute/virt/hyperv/test_inspector.py
+++ /dev/null
@@ -1,212 +0,0 @@
-# Copyright 2013 Cloudbase Solutions Srl
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-"""
-Tests for Hyper-V inspector.
-"""
-
-import sys
-from unittest import mock
-
-from os_win import exceptions as os_win_exc
-from oslo_utils import units
-from oslotest import base
-
-from ceilometer.compute.virt.hyperv import inspector as hyperv_inspector
-from ceilometer.compute.virt import inspector as virt_inspector
-from ceilometer import service
-
-
-class TestHyperVInspection(base.BaseTestCase):
-
- @mock.patch.object(hyperv_inspector, 'utilsfactory', mock.MagicMock())
- @mock.patch.object(hyperv_inspector.HyperVInspector,
- '_compute_host_max_cpu_clock')
- def setUp(self, mock_compute_host_cpu_clock):
- conf = service.prepare_service([], [])
- self._inspector = hyperv_inspector.HyperVInspector(conf)
- self._inspector._utils = mock.MagicMock()
-
- super(TestHyperVInspection, self).setUp()
-
- def test_converted_exception(self):
- self._inspector._utils.get_cpu_metrics.side_effect = (
- os_win_exc.OSWinException)
- self.assertRaises(virt_inspector.InspectorException,
- self._inspector.inspect_instance,
- mock.sentinel.instance, None)
-
- self._inspector._utils.get_cpu_metrics.side_effect = (
- os_win_exc.HyperVException)
- self.assertRaises(virt_inspector.InspectorException,
- self._inspector.inspect_instance,
- mock.sentinel.instance, None)
-
- self._inspector._utils.get_cpu_metrics.side_effect = (
- os_win_exc.NotFound(resource='foofoo'))
- self.assertRaises(virt_inspector.InstanceNotFoundException,
- self._inspector.inspect_instance,
- mock.sentinel.instance, None)
-
- def _yield_consumer(generator_method, *args, **kwargs):
- list(generator_method(*args, **kwargs))
-
- self._inspector._utils.get_vnic_metrics.side_effect = (
- os_win_exc.OSWinException)
- self.assertRaises(virt_inspector.InspectorException,
- _yield_consumer, self._inspector.inspect_vnics,
- mock.sentinel.instance, None)
-
- self._inspector._utils.get_vnic_metrics.side_effect = (
- os_win_exc.HyperVException)
- self.assertRaises(virt_inspector.InspectorException,
- _yield_consumer, self._inspector.inspect_vnics,
- mock.sentinel.instance, None)
-
- self._inspector._utils.get_vnic_metrics.side_effect = (
- os_win_exc.NotFound(resource='foofoo'))
- self.assertRaises(virt_inspector.InstanceNotFoundException,
- _yield_consumer, self._inspector.inspect_vnics,
- mock.sentinel.instance, None)
-
- def test_assert_original_traceback_maintained(self):
- def bar(self):
- foo = "foofoo"
- raise os_win_exc.NotFound(resource=foo)
-
- self._inspector._utils.get_cpu_metrics.side_effect = bar
- try:
- self._inspector.inspect_instance(mock.sentinel.instance, None)
- self.fail("Test expected exception, but it was not raised.")
- except virt_inspector.InstanceNotFoundException:
- # exception has been raised as expected.
- _, _, trace = sys.exc_info()
- while trace.tb_next:
- # iterate until the original exception source, bar.
- trace = trace.tb_next
-
- # original frame will contain the 'foo' variable.
- self.assertEqual('foofoo', trace.tb_frame.f_locals['foo'])
-
- @mock.patch.object(hyperv_inspector, 'utilsfactory')
- def test_compute_host_max_cpu_clock(self, mock_utilsfactory):
- mock_cpu = {'MaxClockSpeed': 1000}
- hostutils = mock_utilsfactory.get_hostutils.return_value.get_cpus_info
- hostutils.return_value = [mock_cpu, mock_cpu]
-
- cpu_clock = self._inspector._compute_host_max_cpu_clock()
- self.assertEqual(2000.0, cpu_clock)
-
- def test_inspect_instance(self):
- fake_instance_name = 'fake_instance_name'
- fake_cpu_clock_used = 2000
- fake_cpu_count = 3000
- fake_uptime = 4000
-
- self._inspector._host_max_cpu_clock = 4000.0
- fake_cpu_percent_used = (fake_cpu_clock_used /
- self._inspector._host_max_cpu_clock)
- fake_cpu_time = (int(fake_uptime * fake_cpu_percent_used) *
- 1000)
- self._inspector._utils.get_cpu_metrics.return_value = (
- fake_cpu_clock_used, fake_cpu_count, fake_uptime)
- fake_usage = self._inspector._utils.get_memory_metrics.return_value
-
- stats = self._inspector.inspect_instance(fake_instance_name, None)
-
- self.assertEqual(fake_cpu_count, stats.cpu_number)
- self.assertEqual(fake_cpu_time, stats.cpu_time)
- self.assertEqual(fake_usage, stats.memory_usage)
-
- def test_inspect_vnics(self):
- fake_instance_name = 'fake_instance_name'
- fake_rx_mb = 1000
- fake_tx_mb = 2000
- fake_element_name = 'fake_element_name'
- fake_address = 'fake_address'
-
- self._inspector._utils.get_vnic_metrics.return_value = [{
- 'rx_mb': fake_rx_mb,
- 'tx_mb': fake_tx_mb,
- 'element_name': fake_element_name,
- 'address': fake_address}]
-
- inspected_vnics = list(self._inspector.inspect_vnics(
- fake_instance_name, None))
-
- self.assertEqual(1, len(inspected_vnics))
-
- inspected_stats = inspected_vnics[0]
- self.assertEqual(fake_element_name, inspected_stats.name)
- self.assertEqual(fake_address, inspected_stats.mac)
- self.assertEqual(fake_rx_mb * units.Mi, inspected_stats.rx_bytes)
- self.assertEqual(fake_tx_mb * units.Mi, inspected_stats.tx_bytes)
-
- def test_inspect_disks(self):
- fake_instance_name = 'fake_instance_name'
- fake_read_mb = 1000
- fake_write_mb = 2000
- fake_instance_id = "fake_fake_instance_id"
- fake_host_resource = "fake_host_resource"
-
- self._inspector._utils.get_disk_metrics.return_value = [{
- 'read_mb': fake_read_mb,
- 'write_mb': fake_write_mb,
- 'instance_id': fake_instance_id,
- 'host_resource': fake_host_resource}]
-
- inspected_disks = list(self._inspector.inspect_disks(
- fake_instance_name, None))
-
- self.assertEqual(1, len(inspected_disks))
-
- inspected_stats = inspected_disks[0]
- self.assertEqual(fake_instance_id, inspected_stats.device)
- self.assertEqual(fake_read_mb * units.Mi, inspected_stats.read_bytes)
- self.assertEqual(fake_write_mb * units.Mi, inspected_stats.write_bytes)
-
- def test_inspect_disk_latency(self):
- fake_instance_name = mock.sentinel.INSTANCE_NAME
- fake_disk_latency = 1000
- fake_instance_id = mock.sentinel.INSTANCE_ID
-
- self._inspector._utils.get_disk_latency_metrics.return_value = [{
- 'disk_latency': fake_disk_latency,
- 'instance_id': fake_instance_id}]
-
- inspected_disks = list(self._inspector.inspect_disk_latency(
- fake_instance_name, None))
-
- self.assertEqual(1, len(inspected_disks))
-
- inspected_stats = inspected_disks[0]
- self.assertEqual(fake_instance_id, inspected_stats.device)
- self.assertEqual(1, inspected_stats.disk_latency)
-
- def test_inspect_disk_iops_count(self):
- fake_instance_name = mock.sentinel.INSTANCE_NAME
- fake_disk_iops_count = 53
- fake_instance_id = mock.sentinel.INSTANCE_ID
-
- self._inspector._utils.get_disk_iops_count.return_value = [{
- 'iops_count': fake_disk_iops_count,
- 'instance_id': fake_instance_id}]
-
- inspected_disks = list(self._inspector.inspect_disk_iops(
- fake_instance_name, None))
-
- self.assertEqual(1, len(inspected_disks))
-
- inspected_stats = inspected_disks[0]
- self.assertEqual(fake_instance_id, inspected_stats.device)
- self.assertEqual(53, inspected_stats.iops_count)
diff --git a/doc/source/admin/telemetry-measurements.rst b/doc/source/admin/telemetry-measurements.rst
index ace5855bdf..eeafd5ab0a 100644
--- a/doc/source/admin/telemetry-measurements.rst
+++ b/doc/source/admin/telemetry-measurements.rst
@@ -85,13 +85,13 @@ The following meters are collected for OpenStack Compute.
+===========+=======+======+==========+==========+=========+==================+
| **Meters added in the Mitaka release or earlier** |
+-----------+-------+------+----------+----------+---------+------------------+
-| memory | Gauge | MB | instance | Notific\ | Libvirt,| Volume of RAM |
-| | | | ID | ation | Hyper-V | allocated to the |
+| memory | Gauge | MB | instance | Notific\ | Libvirt | Volume of RAM |
+| | | | ID | ation | | allocated to the |
| | | | | | | instance |
+-----------+-------+------+----------+----------+---------+------------------+
| memory.\ | Gauge | MB | instance | Pollster | Libvirt,| Volume of RAM |
-| usage | | | ID | | Hyper-V,| used by the inst\|
-| | | | | | vSphere,| ance from the |
+| usage | | | ID | | vSphere,| used by the inst\|
+| | | | | | | ance from the |
| | | | | | | amount of its |
| | | | | | | allocated memory |
+-----------+-------+------+----------+----------+---------+------------------+
@@ -100,41 +100,34 @@ The following meters are collected for OpenStack Compute.
| | | | | | | ance on the phy\ |
| | | | | | | sical machine |
+-----------+-------+------+----------+----------+---------+------------------+
-| cpu | Cumu\ | ns | instance | Pollster | Libvirt,| CPU time used |
-| | lative| | ID | | Hyper-V | |
+| cpu | Cumu\ | ns | instance | Pollster | Libvirt | CPU time used |
+| | lative| | ID | | | |
+-----------+-------+------+----------+----------+---------+------------------+
-| vcpus | Gauge | vcpu | instance | Notific\ | Libvirt,| Number of virtual|
-| | | | ID | ation | Hyper-V | CPUs allocated to|
+| vcpus | Gauge | vcpu | instance | Notific\ | Libvirt | Number of virtual|
+| | | | ID | ation | | CPUs allocated to|
| | | | | | | the instance |
+-----------+-------+------+----------+----------+---------+------------------+
-| disk.dev\ | Cumu\ | req\ | disk ID | Pollster | Libvirt,| Number of read |
-| ice.read\ | lative| uest | | | Hyper-V | requests |
+| disk.dev\ | Cumu\ | req\ | disk ID | Pollster | Libvirt | Number of read |
+| ice.read\ | lative| uest | | | | requests |
| .requests | | | | | | |
+-----------+-------+------+----------+----------+---------+------------------+
-| disk.dev\ | Cumu\ | req\ | disk ID | Pollster | Libvirt,| Number of write |
-| ice.write\| lative| uest | | | Hyper-V | requests |
+| disk.dev\ | Cumu\ | req\ | disk ID | Pollster | Libvirt | Number of write |
+| ice.write\| lative| uest | | | | requests |
| .requests | | | | | | |
+-----------+-------+------+----------+----------+---------+------------------+
-| disk.dev\ | Cumu\ | B | disk ID | Pollster | Libvirt,| Volume of reads |
-| ice.read\ | lative| | | | Hyper-V | |
+| disk.dev\ | Cumu\ | B | disk ID | Pollster | Libvirt | Volume of reads |
+| ice.read\ | lative| | | | | |
| .bytes | | | | | | |
+-----------+-------+------+----------+----------+---------+------------------+
-| disk.dev\ | Cumu\ | B | disk ID | Pollster | Libvirt,| Volume of writes |
-| ice.write\| lative| | | | Hyper-V | |
+| disk.dev\ | Cumu\ | B | disk ID | Pollster | Libvirt | Volume of writes |
+| ice.write\| lative| | | | | |
| .bytes | | | | | | |
+-----------+-------+------+----------+----------+---------+------------------+
-| disk.root\| Gauge | GB | instance | Notific\ | Libvirt,| Size of root disk|
-| .size | | | ID | ation | Hyper-V | |
+| disk.root\| Gauge | GB | instance | Notific\ | Libvirt | Size of root disk|
+| .size | | | ID | ation | | |
+-----------+-------+------+----------+----------+---------+------------------+
-| disk.ephe\| Gauge | GB | instance | Notific\ | Libvirt,| Size of ephemeral|
-| meral.size| | | ID | ation | Hyper-V | disk |
-+-----------+-------+------+----------+----------+---------+------------------+
-| disk.dev\ | Gauge | ms | disk ID | Pollster | Hyper-V | Average disk la\ |
-| ice.late\ | | | | | | tency per device |
-| ncy | | | | | | |
-+-----------+-------+------+----------+----------+---------+------------------+
-| disk.dev\ | Gauge | coun\| disk ID | Pollster | Hyper-V | Average disk io\ |
-| ice.iops | | t/s | | | | ps per device |
+| disk.ephe\| Gauge | GB | instance | Notific\ | Libvirt | Size of ephemeral|
+| meral.size| | | ID | ation | | disk |
+-----------+-------+------+----------+----------+---------+------------------+
| disk.dev\ | Gauge | B | disk ID | Pollster | Libvirt | The amount of d\ |
| ice.capa\ | | | | | | isk per device |
@@ -153,20 +146,20 @@ The following meters are collected for OpenStack Compute.
| | | | | | | iner on the hos\ |
| | | | | | | t per device |
+-----------+-------+------+----------+----------+---------+------------------+
-| network.\ | Cumu\ | B | interface| Pollster | Libvirt,| Number of |
-| incoming.\| lative| | ID | | Hyper-V | incoming bytes |
+| network.\ | Cumu\ | B | interface| Pollster | Libvirt | Number of |
+| incoming.\| lative| | ID | | | incoming bytes |
| bytes | | | | | | |
+-----------+-------+------+----------+----------+---------+------------------+
-| network.\ | Cumu\ | B | interface| Pollster | Libvirt,| Number of |
-| outgoing\ | lative| | ID | | Hyper-V | outgoing bytes |
+| network.\ | Cumu\ | B | interface| Pollster | Libvirt | Number of |
+| outgoing\ | lative| | ID | | | outgoing bytes |
| .bytes | | | | | | |
+-----------+-------+------+----------+----------+---------+------------------+
-| network.\ | Cumu\ | pac\ | interface| Pollster | Libvirt,| Number of |
-| incoming\ | lative| ket | ID | | Hyper-V | incoming packets |
+| network.\ | Cumu\ | pac\ | interface| Pollster | Libvirt | Number of |
+| incoming\ | lative| ket | ID | | | incoming packets |
| .packets | | | | | | |
+-----------+-------+------+----------+----------+---------+------------------+
-| network.\ | Cumu\ | pac\ | interface| Pollster | Libvirt,| Number of |
-| outgoing\ | lative| ket | ID | | Hyper-V | outgoing packets |
+| network.\ | Cumu\ | pac\ | interface| Pollster | Libvirt | Number of |
+| outgoing\ | lative| ket | ID | | | outgoing packets |
| .packets | | | | | | |
+-----------+-------+------+----------+----------+---------+------------------+
| **Meters added in the Newton release** |
diff --git a/doc/source/admin/telemetry-system-architecture.rst b/doc/source/admin/telemetry-system-architecture.rst
index 05989a95cb..8d3f3d3463 100644
--- a/doc/source/admin/telemetry-system-architecture.rst
+++ b/doc/source/admin/telemetry-system-architecture.rst
@@ -78,8 +78,6 @@ compute hosts.
The following is a list of supported hypervisors.
- `Libvirt supported hypervisors `__ such as KVM and QEMU
-- `Hyper-V `__
-- `XEN `__
- `VMware vSphere `__
.. note::
diff --git a/releasenotes/notes/remove-windows-support-0d280cc7c7fffc61.yaml b/releasenotes/notes/remove-windows-support-0d280cc7c7fffc61.yaml
new file mode 100644
index 0000000000..f5bc09f28c
--- /dev/null
+++ b/releasenotes/notes/remove-windows-support-0d280cc7c7fffc61.yaml
@@ -0,0 +1,5 @@
+---
+upgrade:
+ - |
+ Support for running ceilometer in Windows operating systems has been
+ removed. Because of the removal, Hyper-V inspector has also been removed.
diff --git a/setup.cfg b/setup.cfg
index 50fde11784..7340ed1533 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -73,8 +73,6 @@ ceilometer.poll.compute =
disk.device.write.bytes = ceilometer.compute.pollsters.disk:PerDeviceWriteBytesPollster
disk.device.read.latency = ceilometer.compute.pollsters.disk:PerDeviceDiskReadLatencyPollster
disk.device.write.latency = ceilometer.compute.pollsters.disk:PerDeviceDiskWriteLatencyPollster
- disk.device.latency = ceilometer.compute.pollsters.disk:PerDeviceDiskLatencyPollster
- disk.device.iops = ceilometer.compute.pollsters.disk:PerDeviceDiskIOPSPollster
cpu = ceilometer.compute.pollsters.instance_stats:CPUPollster
cpu_util = ceilometer.compute.pollsters.instance_stats:CPUUtilPollster
cpu_l3_cache = ceilometer.compute.pollsters.instance_stats:CPUL3CachePollster
@@ -176,7 +174,6 @@ ceilometer.poll.central =
ceilometer.compute.virt =
libvirt = ceilometer.compute.virt.libvirt.inspector:LibvirtInspector
- hyperv = ceilometer.compute.virt.hyperv.inspector:HyperVInspector
vsphere = ceilometer.compute.virt.vmware.inspector:VsphereInspector
ceilometer.sample.publisher =
diff --git a/test-requirements.txt b/test-requirements.txt
index adb4c60f72..e60cf8995c 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -5,7 +5,6 @@
coverage!=4.4,>=4.0 # Apache-2.0
eventlet>=0.30.1 # MIT
fixtures>=3.0.0 # Apache-2.0/BSD
-os-win>=3.0.0 # Apache-2.0
oslo.messaging[kafka]>=8.0.0 # Apache-2.0
oslotest>=3.8.0 # Apache-2.0
oslo.vmware>=2.17.0 # Apache-2.0