Reduce code duplication
Reduced source code by extracting duplicated code (ceilometer/compute/pollsters/disk.py) Change-Id: I6d938fc6dad983c374c5e477b3ed82eb1b778e83
This commit is contained in:
parent
3549f782d1
commit
cc249790d5
@ -42,6 +42,27 @@ class BaseComputePollster(plugin_base.PollsterBase):
|
||||
def default_discovery(self):
|
||||
return 'local_instances'
|
||||
|
||||
@staticmethod
|
||||
def _populate_cache_create(_i_cache, _instance, _inspector,
|
||||
_DiskData, _inspector_attr, _stats_attr):
|
||||
"""Settings and return cache."""
|
||||
if _instance.id not in _i_cache:
|
||||
_data = 0
|
||||
_per_device_data = {}
|
||||
disk_rates = getattr(_inspector, _inspector_attr)(_instance)
|
||||
for disk, stats in disk_rates:
|
||||
_data += getattr(stats, _stats_attr)
|
||||
_per_device_data[disk.device] = (
|
||||
getattr(stats, _stats_attr))
|
||||
_per_disk_data = {
|
||||
_stats_attr: _per_device_data
|
||||
}
|
||||
_i_cache[_instance.id] = _DiskData(
|
||||
_data,
|
||||
_per_disk_data
|
||||
)
|
||||
return _i_cache[_instance.id]
|
||||
|
||||
def _record_poll_time(self):
|
||||
"""Method records current time as the poll time.
|
||||
|
||||
|
@ -413,23 +413,10 @@ class _DiskLatencyPollsterBase(pollsters.BaseComputePollster):
|
||||
CACHE_KEY_DISK_LATENCY = 'disk-latency'
|
||||
|
||||
def _populate_cache(self, inspector, cache, instance):
|
||||
i_cache = cache.setdefault(self.CACHE_KEY_DISK_LATENCY, {})
|
||||
if instance.id not in i_cache:
|
||||
latency = 0
|
||||
per_device_latency = {}
|
||||
disk_rates = inspector.inspect_disk_latency(instance)
|
||||
for disk, stats in disk_rates:
|
||||
latency += stats.disk_latency
|
||||
per_device_latency[disk.device] = (
|
||||
stats.disk_latency)
|
||||
per_disk_latency = {
|
||||
'disk_latency': per_device_latency
|
||||
}
|
||||
i_cache[instance.id] = DiskLatencyData(
|
||||
latency,
|
||||
per_disk_latency
|
||||
)
|
||||
return i_cache[instance.id]
|
||||
return self._populate_cache_create(
|
||||
cache.setdefault(self.CACHE_KEY_DISK_LATENCY, {}),
|
||||
instance, inspector, DiskLatencyData,
|
||||
'inspect_disk_latency', 'disk_latency')
|
||||
|
||||
@abc.abstractmethod
|
||||
def _get_samples(self, instance, disk_rates_info):
|
||||
@ -496,22 +483,10 @@ class _DiskIOPSPollsterBase(pollsters.BaseComputePollster):
|
||||
CACHE_KEY_DISK_IOPS = 'disk-iops'
|
||||
|
||||
def _populate_cache(self, inspector, cache, instance):
|
||||
i_cache = cache.setdefault(self.CACHE_KEY_DISK_IOPS, {})
|
||||
if instance.id not in i_cache:
|
||||
iops = 0
|
||||
per_device_iops = {}
|
||||
disk_iops_count = inspector.inspect_disk_iops(instance)
|
||||
for disk, stats in disk_iops_count:
|
||||
iops += stats.iops_count
|
||||
per_device_iops[disk.device] = (stats.iops_count)
|
||||
per_disk_iops = {
|
||||
'iops_count': per_device_iops
|
||||
}
|
||||
i_cache[instance.id] = DiskIOPSData(
|
||||
iops,
|
||||
per_disk_iops
|
||||
)
|
||||
return i_cache[instance.id]
|
||||
return self._populate_cache_create(
|
||||
cache.setdefault(self.CACHE_KEY_DISK_IOPS, {}),
|
||||
instance, inspector, DiskIOPSData,
|
||||
'inspect_disk_iops', 'iops_count')
|
||||
|
||||
@abc.abstractmethod
|
||||
def _get_samples(self, instance, disk_rates_info):
|
||||
|
Loading…
Reference in New Issue
Block a user