Merge "Remove deprecated archive policy map for Gnocchi"
This commit is contained in:
commit
cc960ce7f8
@ -1,8 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright 2014 eNovance
|
# Copyright 2014-2015 eNovance
|
||||||
#
|
|
||||||
# Authors: Julien Danjou <julien@danjou.info>
|
|
||||||
# Mehdi Abaakouk <mehdi.abaakouk@enovance.com>
|
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
@ -51,11 +48,6 @@ dispatcher_opts = [
|
|||||||
default="low",
|
default="low",
|
||||||
help='The archive policy to use when the dispatcher '
|
help='The archive policy to use when the dispatcher '
|
||||||
'create a new metric.'),
|
'create a new metric.'),
|
||||||
cfg.StrOpt('archive_policy_file',
|
|
||||||
default='gnocchi_archive_policy_map.yaml',
|
|
||||||
deprecated_for_removal=True,
|
|
||||||
help=_('The Yaml file that defines per metric archive '
|
|
||||||
'policies.')),
|
|
||||||
cfg.StrOpt('resources_definition_file',
|
cfg.StrOpt('resources_definition_file',
|
||||||
default='gnocchi_resources.yaml',
|
default='gnocchi_resources.yaml',
|
||||||
help=_('The Yaml file that defines mapping between samples '
|
help=_('The Yaml file that defines mapping between samples '
|
||||||
@ -74,20 +66,6 @@ def log_and_ignore_unexpected_workflow_error(func):
|
|||||||
return log_and_ignore
|
return log_and_ignore
|
||||||
|
|
||||||
|
|
||||||
class LegacyArchivePolicyDefinition(object):
|
|
||||||
def __init__(self, definition_cfg):
|
|
||||||
self.cfg = definition_cfg
|
|
||||||
if self.cfg is None:
|
|
||||||
LOG.debug("No archive policy file found! Using default config.")
|
|
||||||
|
|
||||||
def get(self, metric_name):
|
|
||||||
if self.cfg is not None:
|
|
||||||
for metric, policy in self.cfg.items():
|
|
||||||
# Support wild cards such as disk.*
|
|
||||||
if fnmatch.fnmatch(metric_name, metric):
|
|
||||||
return policy
|
|
||||||
|
|
||||||
|
|
||||||
class ResourcesDefinitionException(Exception):
|
class ResourcesDefinitionException(Exception):
|
||||||
def __init__(self, message, definition_cfg):
|
def __init__(self, message, definition_cfg):
|
||||||
super(ResourcesDefinitionException, self).__init__(message)
|
super(ResourcesDefinitionException, self).__init__(message)
|
||||||
@ -105,11 +83,8 @@ class ResourcesDefinition(object):
|
|||||||
|
|
||||||
JSONPATH_RW_PARSER = parser.ExtentedJsonPathParser()
|
JSONPATH_RW_PARSER = parser.ExtentedJsonPathParser()
|
||||||
|
|
||||||
def __init__(self, definition_cfg, default_archive_policy,
|
def __init__(self, definition_cfg, default_archive_policy):
|
||||||
legacy_archive_policy_definition):
|
|
||||||
self._default_archive_policy = default_archive_policy
|
self._default_archive_policy = default_archive_policy
|
||||||
self._legacy_archive_policy_definition =\
|
|
||||||
legacy_archive_policy_definition
|
|
||||||
self.cfg = definition_cfg
|
self.cfg = definition_cfg
|
||||||
|
|
||||||
for field, field_type in self.MANDATORY_FIELDS.items():
|
for field, field_type in self.MANDATORY_FIELDS.items():
|
||||||
@ -163,9 +138,7 @@ class ResourcesDefinition(object):
|
|||||||
def metrics(self):
|
def metrics(self):
|
||||||
metrics = {}
|
metrics = {}
|
||||||
for t in self.cfg['metrics']:
|
for t in self.cfg['metrics']:
|
||||||
archive_policy = self.cfg.get(
|
archive_policy = self.cfg.get('archive_policy')
|
||||||
'archive_policy',
|
|
||||||
self._legacy_archive_policy_definition.get(t))
|
|
||||||
metrics[t] = dict(archive_policy_name=archive_policy or
|
metrics[t] = dict(archive_policy_name=archive_policy or
|
||||||
self._default_archive_policy)
|
self._default_archive_policy)
|
||||||
return metrics
|
return metrics
|
||||||
@ -178,7 +151,6 @@ class GnocchiDispatcher(dispatcher.Base):
|
|||||||
self.filter_service_activity = (
|
self.filter_service_activity = (
|
||||||
conf.dispatcher_gnocchi.filter_service_activity)
|
conf.dispatcher_gnocchi.filter_service_activity)
|
||||||
self._ks_client = keystone_client.get_client()
|
self._ks_client = keystone_client.get_client()
|
||||||
self.gnocchi_archive_policy_data = self._load_archive_policy(conf)
|
|
||||||
self.resources_definition = self._load_resources_definitions(conf)
|
self.resources_definition = self._load_resources_definitions(conf)
|
||||||
|
|
||||||
self._gnocchi_project_id = None
|
self._gnocchi_project_id = None
|
||||||
@ -207,24 +179,9 @@ class GnocchiDispatcher(dispatcher.Base):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
legacy_archive_policies = cls._load_archive_policy(conf)
|
return [ResourcesDefinition(r, conf.dispatcher_gnocchi.archive_policy)
|
||||||
return [ResourcesDefinition(r, conf.dispatcher_gnocchi.archive_policy,
|
|
||||||
legacy_archive_policies)
|
|
||||||
for r in data.get('resources', [])]
|
for r in data.get('resources', [])]
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def _load_archive_policy(cls, conf):
|
|
||||||
policy_config_file = cls._get_config_file(
|
|
||||||
conf, conf.dispatcher_gnocchi.archive_policy_file)
|
|
||||||
data = {}
|
|
||||||
if policy_config_file is not None:
|
|
||||||
with open(policy_config_file) as data_file:
|
|
||||||
try:
|
|
||||||
data = yaml.safe_load(data_file)
|
|
||||||
except ValueError:
|
|
||||||
data = {}
|
|
||||||
return LegacyArchivePolicyDefinition(data)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def gnocchi_project_id(self):
|
def gnocchi_project_id(self):
|
||||||
if self._gnocchi_project_id is not None:
|
if self._gnocchi_project_id is not None:
|
||||||
|
@ -26,9 +26,7 @@ from oslotest import mockpatch
|
|||||||
import requests
|
import requests
|
||||||
import six
|
import six
|
||||||
import six.moves.urllib.parse as urlparse
|
import six.moves.urllib.parse as urlparse
|
||||||
import tempfile
|
|
||||||
import testscenarios
|
import testscenarios
|
||||||
import yaml
|
|
||||||
|
|
||||||
from ceilometer.dispatcher import gnocchi
|
from ceilometer.dispatcher import gnocchi
|
||||||
from ceilometer import service as ceilometer_service
|
from ceilometer import service as ceilometer_service
|
||||||
@ -157,21 +155,6 @@ class DispatcherTest(base.BaseTestCase):
|
|||||||
fake_process_resource.assert_called_with(self.resource_id,
|
fake_process_resource.assert_called_with(self.resource_id,
|
||||||
mock.ANY)
|
mock.ANY)
|
||||||
|
|
||||||
def test_archive_policy_map_config(self):
|
|
||||||
archive_policy_map = yaml.dump({
|
|
||||||
'foo.*': 'low'
|
|
||||||
})
|
|
||||||
archive_policy_cfg_file = tempfile.NamedTemporaryFile(
|
|
||||||
mode='w+b', prefix="foo", suffix=".yaml")
|
|
||||||
archive_policy_cfg_file.write(archive_policy_map.encode())
|
|
||||||
archive_policy_cfg_file.seek(0)
|
|
||||||
self.conf.conf.dispatcher_gnocchi.archive_policy_file = (
|
|
||||||
archive_policy_cfg_file.name)
|
|
||||||
d = gnocchi.GnocchiDispatcher(self.conf.conf)
|
|
||||||
legacy = d._load_archive_policy(self.conf.conf)
|
|
||||||
self.assertEqual(legacy.get('foo.disk.rate'), "low")
|
|
||||||
archive_policy_cfg_file.close()
|
|
||||||
|
|
||||||
def test_activity_filter_match_project_id(self):
|
def test_activity_filter_match_project_id(self):
|
||||||
self.samples[0]['project_id'] = (
|
self.samples[0]['project_id'] = (
|
||||||
'a2d42c23-d518-46b6-96ab-3fba2e146859')
|
'a2d42c23-d518-46b6-96ab-3fba2e146859')
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
|
|
||||||
# This file is used to map a metric name to corresponding archive policy
|
|
||||||
# and used by the ceilometer dispatcher.
|
|
||||||
# Format: <metric_name>: <policy>
|
|
||||||
|
|
||||||
#cpu_utils: "high"
|
|
||||||
#disk.*: "low"
|
|
Loading…
Reference in New Issue
Block a user